updating share episode dialog
This commit is contained in:
parent
1bc3639a39
commit
1b57b00fb3
@ -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:
|
||||
|
@ -1,89 +1,91 @@
|
||||
package de.danoeh.antennapod.dialog;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.RadioGroup;
|
||||
import android.widget.Switch;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
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));
|
||||
radioMediaFile.setVisibility(View.GONE);
|
||||
radioEpisodeWebsite.setChecked(true);
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
40
app/src/main/res/layout/share_episode_dialog.xml
Normal file
40
app/src/main/res/layout/share_episode_dialog.xml
Normal file
@ -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>
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user