diff options
author | Gerardo Vázquez <gerardolgvr0310@gmail.com> | 2020-06-26 10:58:37 -0500 |
---|---|---|
committer | Gerardo Vázquez <gerardolgvr0310@gmail.com> | 2020-06-26 10:58:37 -0500 |
commit | 1b57b00fb32940c1de0baeffc91f2ca92bd90822 (patch) | |
tree | 79151768e91972d7c8c1a164f63203642f0de5f5 | |
parent | 1bc3639a39facc4c730fc5e1e7f1ae68b92b899e (diff) | |
download | AntennaPod-1b57b00fb32940c1de0baeffc91f2ca92bd90822.zip |
updating share episode dialog
5 files changed, 106 insertions, 57 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java index d0f7eb63b..a148ddb4f 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -31,6 +31,7 @@ import java.text.NumberFormat; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityOptionsCompat; import androidx.core.content.ContextCompat; @@ -390,8 +391,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements break; case R.id.share_item: if (feedItem != null) { - ShareDialog shareDialog = new ShareDialog(getApplicationContext(), feedItem); - shareDialog.createDialog().show(); + new ShareDialog(this, feedItem).show(((AppCompatActivity) this).getSupportFragmentManager(), "ShareEpisodeDialog"); } break; default: 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 9f075e98e..2a8364199 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java @@ -1,89 +1,91 @@ package de.danoeh.antennapod.dialog; +import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; - -import java.util.ArrayList; -import java.util.List; - +import android.os.Bundle; +import android.view.View; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.Switch; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.DialogFragment; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.util.ShareUtils; -public class ShareDialog { +public class ShareDialog extends DialogFragment { private static final String TAG = "ShareDialog"; private final Context ctx; - private AlertDialog dialog; - private List<String> shareDialogOptions; - private String[] items; private FeedItem item; + private RadioGroup radioGroup; + private RadioButton radioEpisodeWebsite; + private RadioButton radioMediaFile; + private Switch switchStartAt; + public ShareDialog(Context ctx, FeedItem item) { this.ctx = ctx; this.item = item; - shareDialogOptions = new ArrayList<>(); } - public AlertDialog createDialog() { + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + View content = View.inflate(ctx, R.layout.share_episode_dialog, null); + AlertDialog.Builder builder = new AlertDialog.Builder(ctx); + builder.setTitle(R.string.share_episode_label); + builder.setView(content); + + radioGroup = content.findViewById(R.id.share_dialog_radio_group); + radioEpisodeWebsite = content.findViewById(R.id.share_episode_website_radio); + radioMediaFile = content.findViewById(R.id.share_media_file_radio); + switchStartAt = content.findViewById(R.id.share_start_at_timer_dialog); + setupOptions(); - dialog = new AlertDialog.Builder(ctx) - .setTitle(R.string.share_label) - .setItems(items, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int i) { - // The 'which' argument contains the index position - // of the selected item - if (items[i].equals(ctx.getString(R.string.share_link_label))) { - ShareUtils.shareFeedItemLink(ctx, item); - } else if (items[i].equals(ctx.getString(R.string.share_item_url_label))) { - ShareUtils.shareFeedItemDownloadLink(ctx, item); - } else if (items[i].equals(ctx.getString(R.string.share_link_with_position_label))) { - ShareUtils.shareFeedItemLink(ctx, item, true); - } else if (items[i].equals(ctx.getString(R.string.share_item_url_with_position_label))) { - ShareUtils.shareFeedItemDownloadLink(ctx, item, true); - } else if (items[i].equals(ctx.getString(R.string.share_file_label))) { - ShareUtils.shareFeedItemFile(ctx, item.getMedia()); + builder + .setPositiveButton(R.string.share_label, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + if (radioEpisodeWebsite.isChecked()) { + if (switchStartAt.isChecked()) { + ShareUtils.shareFeedItemLink(ctx, item, true); + } else { + ShareUtils.shareFeedItemLink(ctx, item); + } + } else { + if (switchStartAt.isChecked()) { + ShareUtils.shareFeedItemDownloadLink(ctx, item, true); + } else { + ShareUtils.shareFeedItemDownloadLink(ctx, item); + } } } }) - .create(); - - return dialog; + .setNegativeButton(R.string.cancel_label, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + dialog.dismiss(); + } + }); + return builder.create(); } private void setupOptions() { final boolean hasMedia = item.getMedia() != null; - shareDialogOptions.add(ctx.getString(R.string.share_link_label)); - shareDialogOptions.add(ctx.getString(R.string.share_link_with_position_label)); - shareDialogOptions.add(ctx.getString(R.string.share_item_url_label)); - shareDialogOptions.add(ctx.getString(R.string.share_item_url_with_position_label)); - shareDialogOptions.add(ctx.getString(R.string.share_file_label)); - if (!ShareUtils.hasLinkToShare(item)) { - shareDialogOptions.remove(ctx.getString(R.string.share_link_label)); - shareDialogOptions.remove(ctx.getString(R.string.share_link_with_position_label)); + radioEpisodeWebsite.setVisibility(View.GONE); + radioMediaFile.setChecked(true); } if (!hasMedia || item.getMedia().getDownload_url() == null) { - shareDialogOptions.remove(ctx.getString(R.string.share_item_url_label)); - shareDialogOptions.remove(ctx.getString(R.string.share_item_url_with_position_label)); - } - - if (!hasMedia || item.getMedia().getPosition() <= 0) { - shareDialogOptions.remove(ctx.getString(R.string.share_item_url_with_position_label)); - shareDialogOptions.remove(ctx.getString(R.string.share_link_with_position_label)); + radioMediaFile.setVisibility(View.GONE); + radioEpisodeWebsite.setChecked(true); } - - boolean fileDownloaded = hasMedia && item.getMedia().fileExists(); - if (!fileDownloaded) { - shareDialogOptions.remove(ctx.getString(R.string.share_file_label)); - } - - // preparing the resulting shareOptions for dialog - items = new String[shareDialogOptions.size()]; - shareDialogOptions.toArray(items); } } diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java index 734124c1e..92a88263a 100644 --- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java @@ -9,6 +9,7 @@ import android.view.MenuItem; import com.google.android.material.snackbar.Snackbar; import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; @@ -235,8 +236,7 @@ public class FeedItemMenuHandler { IntentUtils.openInBrowser(context, FeedItemUtil.getLinkWithFallback(selectedItem)); break; case R.id.share_item: - ShareDialog shareDialog = new ShareDialog(context, selectedItem); - shareDialog.createDialog().show(); + new ShareDialog(context, selectedItem).show(((AppCompatActivity) context).getSupportFragmentManager(), "ShareEpisodeDialog"); break; default: Log.d(TAG, "Unknown menuItemId: " + menuItemId); diff --git a/app/src/main/res/layout/share_episode_dialog.xml b/app/src/main/res/layout/share_episode_dialog.xml new file mode 100644 index 000000000..a7f09deb9 --- /dev/null +++ b/app/src/main/res/layout/share_episode_dialog.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center" + android:padding="16dp"> + + <RadioGroup + android:id="@+id/share_dialog_radio_group" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="16dp" + android:orientation="vertical"> + + <RadioButton android:id="@+id/share_episode_website_radio" + android:layout_width="wrap_content" + 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:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/share_dialog_media_file_label" + /> + </RadioGroup> + + <TextView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:text="@string/share_dialog_include_label"/> + + <Switch + android:id="@+id/share_start_at_timer_dialog" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/share_start_at_timer_dialog_label" /> + +</LinearLayout>
\ No newline at end of file diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 93a21ef13..071e18119 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -765,6 +765,13 @@ <string name="rating_later_label">Remind me later</string> <string name="rating_now_label">Sure, let\'s do this!</string> + <!-- Share epidose dialog --> + <string name="share_episode_label">Share…</string> + <string name="share_dialog_include_label">Include:</string> + <string name="share_start_at_timer_dialog_label">Start at (timer)</string> + <string name="share_dialog_media_file_label">Media file URL</string> + <string name="share_dialog_episode_website_label">Episode website</string> + <!-- Audio controls --> <string name="audio_controls">Audio controls</string> <string name="playback_speed">Playback Speed</string> |