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 /app/src/main/java | |
parent | 1bc3639a39facc4c730fc5e1e7f1ae68b92b899e (diff) | |
download | AntennaPod-1b57b00fb32940c1de0baeffc91f2ca92bd90822.zip |
updating share episode dialog
Diffstat (limited to 'app/src/main/java')
3 files changed, 59 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); |