summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerardo Vázquez <gerardolgvr0310@gmail.com>2020-06-26 10:58:37 -0500
committerGerardo Vázquez <gerardolgvr0310@gmail.com>2020-06-26 10:58:37 -0500
commit1b57b00fb32940c1de0baeffc91f2ca92bd90822 (patch)
tree79151768e91972d7c8c1a164f63203642f0de5f5
parent1bc3639a39facc4c730fc5e1e7f1ae68b92b899e (diff)
downloadAntennaPod-1b57b00fb32940c1de0baeffc91f2ca92bd90822.zip
updating share episode dialog
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java108
-rw-r--r--app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java4
-rw-r--r--app/src/main/res/layout/share_episode_dialog.xml40
-rw-r--r--core/src/main/res/values/strings.xml7
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>