summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/src/androidTest/java/de/test/antennapod/dialogs/ShareDialogTest.java29
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java30
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/AddToQueueSwipeAction.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/DeleteSwipeAction.java7
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/MarkFavoriteSwipeAction.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/RemoveFromInboxSwipeAction.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/RemoveFromQueueSwipeAction.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/ShowFirstSwipeDialogAction.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/StartDownloadSwipeAction.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/SwipeAction.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/SwipeActions.java7
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/TogglePlaybackStateSwipeAction.java4
-rw-r--r--app/src/main/res/layout/share_episode_dialog.xml17
14 files changed, 60 insertions, 56 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/dialogs/ShareDialogTest.java b/app/src/androidTest/java/de/test/antennapod/dialogs/ShareDialogTest.java
index 29cea18dc..3c32407a5 100644
--- a/app/src/androidTest/java/de/test/antennapod/dialogs/ShareDialogTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/dialogs/ShareDialogTest.java
@@ -3,27 +3,23 @@ package de.test.antennapod.dialogs;
import android.content.Context;
import android.content.Intent;
import android.view.View;
-
-import org.hamcrest.Matcher;
-import org.hamcrest.Matchers;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
import androidx.test.espresso.intent.rule.IntentsTestRule;
-import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.fragment.EpisodesFragment;
import de.test.antennapod.EspressoTestUtils;
import de.test.antennapod.ui.UITestUtils;
+import org.hamcrest.Matcher;
+import org.hamcrest.Matchers;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
-import static androidx.test.espresso.action.ViewActions.scrollTo;
-import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.contrib.RecyclerViewActions.actionOnItemAtPosition;
import static androidx.test.espresso.matcher.ViewMatchers.hasMinimumChildCount;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
@@ -45,7 +41,6 @@ public class ShareDialogTest {
@Rule
public IntentsTestRule<MainActivity> activityRule = new IntentsTestRule<>(MainActivity.class, false, false);
- private UITestUtils uiTestUtils;
protected Context context;
@Before
@@ -54,7 +49,7 @@ public class ShareDialogTest {
EspressoTestUtils.clearPreferences();
EspressoTestUtils.clearDatabase();
EspressoTestUtils.setLastNavFragment(EpisodesFragment.TAG);
- uiTestUtils = new UITestUtils(context);
+ UITestUtils uiTestUtils = new UITestUtils(context);
uiTestUtils.setup();
uiTestUtils.addLocalFeedData(true);
@@ -73,15 +68,9 @@ public class ShareDialogTest {
}
@Test
- public void testShareDialogDisplayed() throws InterruptedException {
+ public void testShareDialogDisplayed() {
onView(withText(R.string.share_label)).perform(click());
onView(allOf(isDisplayed(), withText(R.string.share_label)));
}
- @Test
- public void testShareDialogCancelButton() {
- onView(withText(R.string.share_label)).perform(scrollTo()).perform(click());
- onView(withText(R.string.cancel_label)).check(matches(isDisplayed())).perform(scrollTo()).perform(click());
- }
-
}
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 dbd4cdb59..79a2d0005 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/ShareDialog.java
@@ -1,21 +1,19 @@
package de.danoeh.antennapod.dialog;
-import android.app.Dialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
+import android.view.LayoutInflater;
import android.view.View;
-
+import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.DialogFragment;
-import de.danoeh.antennapod.R;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
+import de.danoeh.antennapod.core.util.ShareUtils;
import de.danoeh.antennapod.databinding.ShareEpisodeDialogBinding;
import de.danoeh.antennapod.model.feed.FeedItem;
-import de.danoeh.antennapod.core.util.ShareUtils;
-public class ShareDialog extends DialogFragment {
+public class ShareDialog extends BottomSheetDialogFragment {
private static final String ARGUMENT_FEED_ITEM = "feedItem";
private static final String PREF_NAME = "ShareDialog";
private static final String PREF_SHARE_EPISODE_START_AT = "prefShareEpisodeStartAt";
@@ -39,25 +37,23 @@ public class ShareDialog extends DialogFragment {
return dialog;
}
- @NonNull
+ @Nullable
@Override
- public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
if (getArguments() != null) {
ctx = getActivity();
item = (FeedItem) getArguments().getSerializable(ARGUMENT_FEED_ITEM);
prefs = getActivity().getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
}
- viewBinding = ShareEpisodeDialogBinding.inflate(getLayoutInflater());
+ viewBinding = ShareEpisodeDialogBinding.inflate(inflater);
viewBinding.shareDialogRadioGroup.setOnCheckedChangeListener((group, checkedId) ->
viewBinding.sharePositionCheckbox.setEnabled(checkedId == viewBinding.shareSocialRadio.getId()));
- AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
- builder.setTitle(R.string.share_label);
- builder.setView(viewBinding.getRoot());
setupOptions();
- builder.setPositiveButton(R.string.share_label, (dialog, id) -> {
+ viewBinding.shareButton.setOnClickListener((v) -> {
boolean includePlaybackPosition = viewBinding.sharePositionCheckbox.isChecked();
int position;
if (viewBinding.shareSocialRadio.isChecked()) {
@@ -76,9 +72,9 @@ public class ShareDialog extends DialogFragment {
.putBoolean(PREF_SHARE_EPISODE_START_AT, includePlaybackPosition)
.putInt(PREF_SHARE_EPISODE_TYPE, position)
.apply();
- }).setNegativeButton(R.string.cancel_label, (dialog, id) -> dialog.dismiss());
-
- return builder.create();
+ dismiss();
+ });
+ return viewBinding.getRoot();
}
private void setupOptions() {
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java
index a0722f0f0..18c5d8514 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java
@@ -12,7 +12,6 @@ import android.widget.ProgressBar;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
-import androidx.core.util.ObjectsCompat;
import androidx.fragment.app.Fragment;
import com.google.android.material.snackbar.Snackbar;
import com.leinardi.android.speeddial.SpeedDialView;
@@ -48,6 +47,7 @@ import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
/**
@@ -188,7 +188,7 @@ public class CompletedDownloadsFragment extends Fragment
if (event.hasChangedFeedUpdateStatus(isUpdatingFeeds)) {
refreshToolbarState();
}
- if (!ObjectsCompat.equals(event.update.mediaIds, runningDownloads)) {
+ if (!Arrays.equals(event.update.mediaIds, runningDownloads)) {
runningDownloads = event.update.mediaIds;
loadItems();
return; // Refreshed anyway
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/AddToQueueSwipeAction.java b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/AddToQueueSwipeAction.java
index 514ba9764..3580121df 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/AddToQueueSwipeAction.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/AddToQueueSwipeAction.java
@@ -41,7 +41,7 @@ public class AddToQueueSwipeAction implements SwipeAction {
}
@Override
- public boolean willRemove(FeedItemFilter filter) {
+ public boolean willRemove(FeedItemFilter filter, FeedItem item) {
return filter.showQueued || filter.showNew;
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/DeleteSwipeAction.java b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/DeleteSwipeAction.java
index 767f5c6c1..a4c69eb2b 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/DeleteSwipeAction.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/DeleteSwipeAction.java
@@ -31,11 +31,14 @@ public class DeleteSwipeAction implements SwipeAction {
@Override
public void performAction(FeedItem item, Fragment fragment, FeedItemFilter filter) {
+ if (!item.isDownloaded()) {
+ return;
+ }
DBWriter.deleteFeedMediaOfItem(fragment.requireContext(), item.getMedia().getId());
}
@Override
- public boolean willRemove(FeedItemFilter filter) {
- return filter.showDownloaded;
+ public boolean willRemove(FeedItemFilter filter, FeedItem item) {
+ return filter.showDownloaded && item.isDownloaded();
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/MarkFavoriteSwipeAction.java b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/MarkFavoriteSwipeAction.java
index 2458657a0..162003fab 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/MarkFavoriteSwipeAction.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/MarkFavoriteSwipeAction.java
@@ -37,7 +37,7 @@ public class MarkFavoriteSwipeAction implements SwipeAction {
}
@Override
- public boolean willRemove(FeedItemFilter filter) {
+ public boolean willRemove(FeedItemFilter filter, FeedItem item) {
return filter.showIsFavorite || filter.showNotFavorite;
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/RemoveFromInboxSwipeAction.java b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/RemoveFromInboxSwipeAction.java
index df1ef42c1..41d79a711 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/RemoveFromInboxSwipeAction.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/RemoveFromInboxSwipeAction.java
@@ -34,12 +34,12 @@ public class RemoveFromInboxSwipeAction implements SwipeAction {
@Override
public void performAction(FeedItem item, Fragment fragment, FeedItemFilter filter) {
if (item.isNew()) {
- FeedItemMenuHandler.markReadWithUndo(fragment, item, FeedItem.UNPLAYED, willRemove(filter));
+ FeedItemMenuHandler.markReadWithUndo(fragment, item, FeedItem.UNPLAYED, willRemove(filter, item));
}
}
@Override
- public boolean willRemove(FeedItemFilter filter) {
+ public boolean willRemove(FeedItemFilter filter, FeedItem item) {
return filter.showNew;
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/RemoveFromQueueSwipeAction.java b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/RemoveFromQueueSwipeAction.java
index 87cf97f56..9687ab643 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/RemoveFromQueueSwipeAction.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/RemoveFromQueueSwipeAction.java
@@ -41,7 +41,7 @@ public class RemoveFromQueueSwipeAction implements SwipeAction {
DBWriter.removeQueueItem(fragment.requireActivity(), true, item);
- if (willRemove(filter)) {
+ if (willRemove(filter, item)) {
((MainActivity) fragment.requireActivity()).showSnackbarAbovePlayer(
fragment.getResources().getQuantityString(R.plurals.removed_from_queue_batch_label, 1, 1),
Snackbar.LENGTH_LONG)
@@ -51,7 +51,7 @@ public class RemoveFromQueueSwipeAction implements SwipeAction {
}
@Override
- public boolean willRemove(FeedItemFilter filter) {
+ public boolean willRemove(FeedItemFilter filter, FeedItem item) {
return filter.showQueued || filter.showNotQueued;
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/ShowFirstSwipeDialogAction.java b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/ShowFirstSwipeDialogAction.java
index 7d626134d..3a6174e8f 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/ShowFirstSwipeDialogAction.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/ShowFirstSwipeDialogAction.java
@@ -36,7 +36,7 @@ public class ShowFirstSwipeDialogAction implements SwipeAction {
}
@Override
- public boolean willRemove(FeedItemFilter filter) {
+ public boolean willRemove(FeedItemFilter filter, FeedItem item) {
return false;
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/StartDownloadSwipeAction.java b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/StartDownloadSwipeAction.java
index 2c0110822..84dc8f417 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/StartDownloadSwipeAction.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/StartDownloadSwipeAction.java
@@ -38,7 +38,7 @@ public class StartDownloadSwipeAction implements SwipeAction {
}
@Override
- public boolean willRemove(FeedItemFilter filter) {
+ public boolean willRemove(FeedItemFilter filter, FeedItem item) {
return false;
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/SwipeAction.java b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/SwipeAction.java
index 23bf99a55..89360fdeb 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/SwipeAction.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/SwipeAction.java
@@ -31,5 +31,5 @@ public interface SwipeAction {
void performAction(FeedItem item, Fragment fragment, FeedItemFilter filter);
- boolean willRemove(FeedItemFilter filter);
+ boolean willRemove(FeedItemFilter filter, FeedItem item);
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/SwipeActions.java b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/SwipeActions.java
index 726c1de1a..be35f6503 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/SwipeActions.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/SwipeActions.java
@@ -158,8 +158,9 @@ public class SwipeActions extends ItemTouchHelper.SimpleCallback implements Life
}
//check if it will be removed
- boolean rightWillRemove = right.willRemove(filter);
- boolean leftWillRemove = left.willRemove(filter);
+ FeedItem item = ((EpisodeItemViewHolder) viewHolder).getFeedItem();
+ boolean rightWillRemove = right.willRemove(filter, item);
+ boolean leftWillRemove = left.willRemove(filter, item);
boolean wontLeave = (dx > 0 && !rightWillRemove) || (dx < 0 && !leftWillRemove);
//Limit swipe if it's not removed
@@ -251,7 +252,7 @@ public class SwipeActions extends ItemTouchHelper.SimpleCallback implements Life
String[] actions = prefs.split(",");
if (actions.length == 2) {
this.right = Stream.of(swipeActions)
- .filter(a -> a.getId().equals(actions[0])).single();;
+ .filter(a -> a.getId().equals(actions[0])).single();
this.left = Stream.of(swipeActions)
.filter(a -> a.getId().equals(actions[1])).single();
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/TogglePlaybackStateSwipeAction.java b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/TogglePlaybackStateSwipeAction.java
index 4ff07d13c..d4ce8b1d2 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/TogglePlaybackStateSwipeAction.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/swipeactions/TogglePlaybackStateSwipeAction.java
@@ -34,11 +34,11 @@ public class TogglePlaybackStateSwipeAction implements SwipeAction {
@Override
public void performAction(FeedItem item, Fragment fragment, FeedItemFilter filter) {
int newState = item.getPlayState() == FeedItem.UNPLAYED ? FeedItem.PLAYED : FeedItem.UNPLAYED;
- FeedItemMenuHandler.markReadWithUndo(fragment, item, newState, willRemove(filter));
+ FeedItemMenuHandler.markReadWithUndo(fragment, item, newState, willRemove(filter, item));
}
@Override
- public boolean willRemove(FeedItemFilter filter) {
+ public boolean willRemove(FeedItemFilter filter, FeedItem item) {
return filter.showUnplayed || filter.showPlayed || filter.showNew;
}
}
diff --git a/app/src/main/res/layout/share_episode_dialog.xml b/app/src/main/res/layout/share_episode_dialog.xml
index f03899671..9d0a2f38d 100644
--- a/app/src/main/res/layout/share_episode_dialog.xml
+++ b/app/src/main/res/layout/share_episode_dialog.xml
@@ -7,6 +7,13 @@
android:gravity="center"
android:padding="16dp">
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/share_label"
+ android:layout_marginBottom="8dp"
+ style="@style/AntennaPod.TextView.Heading" />
+
<RadioGroup
android:id="@+id/share_dialog_radio_group"
android:layout_width="match_parent"
@@ -38,7 +45,7 @@
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginVertical="8dp"
- android:background="?android:attr/listDivider" />
+ android:background="?attr/background_elevated" />
<CheckBox
android:id="@+id/share_position_checkbox"
@@ -46,4 +53,12 @@
android:layout_height="wrap_content"
android:text="@string/share_playback_position_dialog_label" />
+ <Button
+ android:id="@+id/shareButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="end"
+ android:text="@string/share_label"
+ style="@style/Widget.MaterialComponents.Button.TextButton" />
+
</LinearLayout>