summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java
diff options
context:
space:
mode:
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.java108
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);
}
}