diff options
author | ByteHamster <ByteHamster@users.noreply.github.com> | 2020-11-01 09:47:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-01 09:47:13 +0100 |
commit | ec7f639982857776e538d42ef1e8325e5fc1ed02 (patch) | |
tree | 3e091f1b171a5ed3985aeac854ea17e7a6f03bf7 /app/src | |
parent | 851ac4198d3698926dc616290a4ab2aa74c6c390 (diff) | |
parent | 96e68f69ded983bbb3eec5d45df6b11b7f815fda (diff) | |
download | AntennaPod-ec7f639982857776e538d42ef1e8325e5fc1ed02.zip |
Merge pull request #4617 from ByteHamster/duplicate-share-dialog
Do not display duplicate share menu
Diffstat (limited to 'app/src')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java | 63 | ||||
-rw-r--r-- | app/src/main/res/layout/share_episode_dialog.xml | 17 | ||||
-rw-r--r-- | app/src/main/res/menu/feeditemlist_context.xml | 25 |
3 files changed, 46 insertions, 59 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java index 8104d3539..614cc1e71 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java @@ -18,21 +18,21 @@ import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.util.ShareUtils; public class ShareDialog extends DialogFragment { - private static final String ARGUMENT_FEED_ITEM = "feedItem"; + private static final String PREF_NAME = "ShareDialog"; + private static final String PREF_SHARE_DIALOG_OPTION = "prefShareDialogOption"; + private static final String PREF_SHARE_EPISODE_START_AT = "prefShareEpisodeStartAt"; + private static final String PREF_VALUE_WEBSITE = "website"; + private static final String PREF_VALUE_MEDIA_URL = "media"; - private static final String TAG = "ShareDialog"; private Context ctx; private FeedItem item; + private SharedPreferences prefs; - private static final String PREF_SHARE_DIALOG_OPTION = "prefShareDialogOption"; - private static final String PREF_SHARE_EPISODE_START_AT = "prefShareEpisodeStartAt"; - - private RadioGroup radioGroup; private RadioButton radioEpisodeWebsite; + private RadioButton radioMediaFileUrl; private RadioButton radioMediaFile; private CheckBox checkBoxStartAt; - private SharedPreferences prefs; public ShareDialog() { // Empty constructor required for DialogFragment @@ -52,7 +52,7 @@ public class ShareDialog extends DialogFragment { if (getArguments() != null) { ctx = getActivity(); item = (FeedItem) getArguments().getSerializable(ARGUMENT_FEED_ITEM); - prefs = getActivity().getSharedPreferences("ShareDialog", Context.MODE_PRIVATE); + prefs = getActivity().getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); } View content = View.inflate(ctx, R.layout.share_episode_dialog, null); @@ -60,8 +60,12 @@ public class ShareDialog extends DialogFragment { builder.setTitle(R.string.share_label); builder.setView(content); - radioGroup = content.findViewById(R.id.share_dialog_radio_group); + RadioGroup radioGroup = content.findViewById(R.id.share_dialog_radio_group); + radioGroup.setOnCheckedChangeListener((group, checkedId) -> + checkBoxStartAt.setEnabled(checkedId != R.id.share_media_file_radio)); + radioEpisodeWebsite = content.findViewById(R.id.share_episode_website_radio); + radioMediaFileUrl = content.findViewById(R.id.share_media_file_url_radio); radioMediaFile = content.findViewById(R.id.share_media_file_radio); checkBoxStartAt = content.findViewById(R.id.share_start_at_timer_dialog); @@ -71,10 +75,14 @@ public class ShareDialog extends DialogFragment { boolean includePlaybackPosition = checkBoxStartAt.isChecked(); if (radioEpisodeWebsite.isChecked()) { ShareUtils.shareFeedItemLink(ctx, item, includePlaybackPosition); - prefs.edit().putString(PREF_SHARE_DIALOG_OPTION, "website").apply(); - } else { + prefs.edit().putString(PREF_SHARE_DIALOG_OPTION, PREF_VALUE_WEBSITE).apply(); + } else if (radioMediaFileUrl.isChecked()) { ShareUtils.shareFeedItemDownloadLink(ctx, item, includePlaybackPosition); - prefs.edit().putString(PREF_SHARE_DIALOG_OPTION, "media").apply(); + prefs.edit().putString(PREF_SHARE_DIALOG_OPTION, PREF_VALUE_MEDIA_URL).apply(); + } else if (radioMediaFile.isChecked()) { + ShareUtils.shareFeedItemFile(ctx, item.getMedia()); + } else { + throw new IllegalStateException("Unknown share method"); } prefs.edit().putBoolean(PREF_SHARE_EPISODE_START_AT, includePlaybackPosition).apply(); }).setNegativeButton(R.string.cancel_label, (dialog, id) -> dialog.dismiss()); @@ -85,26 +93,23 @@ public class ShareDialog extends DialogFragment { private void setupOptions() { final boolean hasMedia = item.getMedia() != null; - if (!ShareUtils.hasLinkToShare(item)) { - radioEpisodeWebsite.setVisibility(View.GONE); - radioMediaFile.setChecked(true); - } + boolean downloaded = hasMedia && item.getMedia().isDownloaded(); + radioMediaFile.setVisibility(downloaded ? View.VISIBLE : View.GONE); - if (!hasMedia || item.getMedia().getDownload_url() == null) { - radioMediaFile.setVisibility(View.GONE); - radioEpisodeWebsite.setChecked(true); - } + radioEpisodeWebsite.setVisibility(ShareUtils.hasLinkToShare(item) ? View.VISIBLE : View.GONE); - if (radioEpisodeWebsite.getVisibility() == View.VISIBLE && radioMediaFile.getVisibility() == View.VISIBLE) { - String option = prefs.getString(PREF_SHARE_DIALOG_OPTION, "website"); - if (option.equals("website")) { - radioEpisodeWebsite.setChecked(true); - radioMediaFile.setChecked(false); - } else { - radioEpisodeWebsite.setChecked(false); - radioMediaFile.setChecked(true); - } + boolean hasDownloadUrl = hasMedia && item.getMedia().getDownload_url() != null; + radioMediaFileUrl.setVisibility(hasDownloadUrl ? View.VISIBLE : View.GONE); + + String option = prefs.getString(PREF_SHARE_DIALOG_OPTION, PREF_VALUE_WEBSITE); + if (option.equals(PREF_VALUE_WEBSITE)) { + radioEpisodeWebsite.setChecked(true); + radioMediaFileUrl.setChecked(false); + } else { + radioEpisodeWebsite.setChecked(false); + radioMediaFileUrl.setChecked(true); } + radioMediaFile.setChecked(false); boolean switchIsChecked = prefs.getBoolean(PREF_SHARE_EPISODE_START_AT, false); checkBoxStartAt.setChecked(switchIsChecked); diff --git a/app/src/main/res/layout/share_episode_dialog.xml b/app/src/main/res/layout/share_episode_dialog.xml index 8cf955d4c..539efa5c8 100644 --- a/app/src/main/res/layout/share_episode_dialog.xml +++ b/app/src/main/res/layout/share_episode_dialog.xml @@ -13,17 +13,22 @@ android:layout_marginBottom="16dp" android:orientation="vertical"> - <RadioButton android:id="@+id/share_episode_website_radio" + <RadioButton + android:id="@+id/share_episode_website_radio" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/share_dialog_episode_website_label" - android:checked="true" - /> - <RadioButton android:id="@+id/share_media_file_radio" + android:checked="true" /> + <RadioButton + android:id="@+id/share_media_file_url_radio" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/share_dialog_media_file_label" - /> + android:text="@string/share_dialog_media_file_url_label" /> + <RadioButton + android:id="@+id/share_media_file_radio" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/share_dialog_media_file_label" /> </RadioGroup> <TextView diff --git a/app/src/main/res/menu/feeditemlist_context.xml b/app/src/main/res/menu/feeditemlist_context.xml index 6e4966206..84e45d4c9 100644 --- a/app/src/main/res/menu/feeditemlist_context.xml +++ b/app/src/main/res/menu/feeditemlist_context.xml @@ -64,28 +64,5 @@ <item android:id="@+id/share_item" android:menuCategory="container" - android:title="@string/share_label"> - <menu> - <item - android:id="@+id/share_link_item" - android:menuCategory="container" - android:title="@string/share_link_label" /> - <item - android:id="@+id/share_link_with_position_item" - android:menuCategory="container" - android:title="@string/share_link_with_position_label" /> - <item - android:id="@+id/share_download_url_item" - android:menuCategory="container" - android:title="@string/share_item_url_label" /> - <item - android:id="@+id/share_download_url_with_position_item" - android:menuCategory="container" - android:title="@string/share_item_url_with_position_label" /> - <item - android:id="@+id/share_file" - android:menuCategory="container" - android:title="@string/share_file_label" /> - </menu> - </item> + android:title="@string/share_label" /> </menu>
\ No newline at end of file |