diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java | 108 |
1 files changed, 55 insertions, 53 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 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); } } |