summaryrefslogtreecommitdiff
path: root/app/src/main
diff options
context:
space:
mode:
authorH. Lehmann <ByteHamster@users.noreply.github.com>2020-05-04 10:11:12 +0200
committerGitHub <noreply@github.com>2020-05-04 10:11:12 +0200
commit4a81dc29f0121cd0e3dd3b76847b809902911edc (patch)
tree42ef6e289890fd189aa73aef273c121324c58015 /app/src/main
parentd6d8ec43e1d061dbe04d98f3d53625dda75762e1 (diff)
parentf5d289d776bcd21d54adf3e7d6e10479be61ddff (diff)
downloadAntennaPod-4a81dc29f0121cd0e3dd3b76847b809902911edc.zip
Merge branch 'develop' into develop
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/assets/licenses.xml12
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java29
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java10
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java9
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java10
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java5
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/MobileDownloadHelper.java3
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PlayActionButton.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/StreamActionButton.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/AuthenticationDialog.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java14
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java6
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java3
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java5
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java6
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java6
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java5
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java3
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java3
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/ItemPagerFragment.java1
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java27
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java8
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderPreferencesFragment.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java17
-rw-r--r--app/src/main/java/de/danoeh/antennapod/preferences/NumberPickerPreference.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/PagerIndicatorView.java22
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/ShownotesWebView.java5
-rw-r--r--app/src/main/res/anim/fade_in.xml2
-rw-r--r--app/src/main/res/anim/fade_out.xml2
-rw-r--r--app/src/main/res/anim/slide_left_in.xml3
-rw-r--r--app/src/main/res/anim/slide_left_out.xml3
-rw-r--r--app/src/main/res/anim/slide_right_in.xml3
-rw-r--r--app/src/main/res/anim/slide_right_out.xml3
-rw-r--r--app/src/main/res/layout/feed_item_list_fragment.xml3
-rw-r--r--app/src/main/res/layout/feedinfo.xml3
-rw-r--r--app/src/main/res/layout/quick_feed_discovery.xml4
-rw-r--r--app/src/main/res/layout/searchlist_item_feed.xml1
-rw-r--r--app/src/main/res/layout/subscription_item.xml6
-rw-r--r--app/src/main/res/layout/time_dialog.xml6
-rw-r--r--app/src/main/res/xml/feed_settings.xml2
42 files changed, 161 insertions, 105 deletions
diff --git a/app/src/main/assets/licenses.xml b/app/src/main/assets/licenses.xml
index c69f692cf..4f0255182 100644
--- a/app/src/main/assets/licenses.xml
+++ b/app/src/main/assets/licenses.xml
@@ -13,6 +13,12 @@
license="Apache 2.0"
licenseText="LICENSE_APACHE-2.0.txt" />
<library
+ name="Android Jetpack"
+ author="Google"
+ website="https://developer.android.com/jetpack"
+ license="Apache 2.0"
+ licenseText="LICENSE_APACHE-2.0.txt" />
+ <library
name="Apache Commons"
author="The Apache Software Foundation"
website="http://commons.apache.org/"
@@ -67,6 +73,12 @@
license="SIL Open Font, Version 1.1"
licenseText="LICENSE_SIL.txt" />
<library
+ name="Material Components"
+ author="Google"
+ website="https://github.com/material-components/material-components-android"
+ license="Apache 2.0"
+ licenseText="LICENSE_APACHE-2.0.txt" />
+ <library
name="OkHttp"
author="Square"
website="https://github.com/square/okhttp"
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
index fe07dda95..38b032272 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
@@ -415,12 +415,17 @@ public class MainActivity extends CastEnabledActivity {
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(MessageEvent event) {
Log.d(TAG, "onEvent(" + event + ")");
- View parentLayout = findViewById(R.id.drawer_layout);
- Snackbar snackbar = Snackbar.make(parentLayout, event.message, Snackbar.LENGTH_SHORT);
+
+ Snackbar snackbar;
+ if (getBottomSheet().getState() == BottomSheetBehavior.STATE_COLLAPSED) {
+ snackbar = showSnackbarAbovePlayer(event.message, Snackbar.LENGTH_SHORT);
+ } else {
+ snackbar = Snackbar.make(findViewById(android.R.id.content), event.message, Snackbar.LENGTH_SHORT);
+ snackbar.show();
+ }
if (event.action != null) {
snackbar.setAction(getString(R.string.undo), v -> event.action.run());
}
- snackbar.show();
}
private void handleNavIntent() {
@@ -454,4 +459,22 @@ public class MainActivity extends CastEnabledActivity {
super.onNewIntent(intent);
setIntent(intent);
}
+
+ public Snackbar showSnackbarAbovePlayer(int text, int duration) {
+ Snackbar s = Snackbar.make(findViewById(R.id.main_view), text, duration);
+ if (findViewById(R.id.audioplayerFragment).getVisibility() == View.VISIBLE) {
+ s.setAnchorView(findViewById(R.id.audioplayerFragment));
+ }
+ s.show();
+ return s;
+ }
+
+ public Snackbar showSnackbarAbovePlayer(String text, int duration) {
+ Snackbar s = Snackbar.make(findViewById(R.id.main_view), text, duration);
+ if (findViewById(R.id.audioplayerFragment).getVisibility() == View.VISIBLE) {
+ s.setAnchorView(findViewById(R.id.audioplayerFragment));
+ }
+ s.show();
+ return s;
+ }
}
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 9a4a5ef3a..34c7e3aba 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
@@ -62,6 +62,8 @@ import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
+import java.text.NumberFormat;
+
/**
* Provides general features which are both needed for playing audio and video
@@ -364,8 +366,6 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
DBWriter.addFavoriteItem(feedItem);
isFavorite = true;
invalidateOptionsMenu();
- Toast.makeText(this, R.string.added_to_favorites, Toast.LENGTH_SHORT)
- .show();
}
break;
case R.id.remove_from_favorites_item:
@@ -373,8 +373,6 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
DBWriter.removeFavoriteItem(feedItem);
isFavorite = false;
invalidateOptionsMenu();
- Toast.makeText(this, R.string.removed_from_favorites, Toast.LENGTH_SHORT)
- .show();
}
break;
case R.id.disable_sleeptimer_item: // Fall-through
@@ -555,13 +553,13 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
butRev = findViewById(R.id.butRev);
txtvRev = findViewById(R.id.txtvRev);
if (txtvRev != null) {
- txtvRev.setText(String.valueOf(UserPreferences.getRewindSecs()));
+ txtvRev.setText(NumberFormat.getInstance().format(UserPreferences.getRewindSecs()));
}
butPlay = findViewById(R.id.butPlay);
butFF = findViewById(R.id.butFF);
txtvFF = findViewById(R.id.txtvFF);
if (txtvFF != null) {
- txtvFF.setText(String.valueOf(UserPreferences.getFastForwardSecs()));
+ txtvFF.setText(NumberFormat.getInstance().format(UserPreferences.getFastForwardSecs()));
}
butSkip = findViewById(R.id.butSkip);
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
index 90ac6ea1b..153f4abc3 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
@@ -1,5 +1,6 @@
package de.danoeh.antennapod.adapter;
+import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.text.Layout;
@@ -18,6 +19,7 @@ import com.joanzapata.iconify.widget.IconButton;
import com.joanzapata.iconify.widget.IconTextView;
import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator;
import de.danoeh.antennapod.core.feed.Feed;
import de.danoeh.antennapod.core.feed.FeedMedia;
@@ -35,10 +37,10 @@ import de.danoeh.antennapod.view.viewholder.DownloadItemViewHolder;
public class DownloadLogAdapter extends BaseAdapter {
private static final String TAG = "DownloadLogAdapter";
- private final Context context;
+ private final Activity context;
private final ItemAccess itemAccess;
- public DownloadLogAdapter(Context context, ItemAccess itemAccess) {
+ public DownloadLogAdapter(Activity context, ItemAccess itemAccess) {
super();
this.itemAccess = itemAccess;
this.context = context;
@@ -116,7 +118,8 @@ public class DownloadLogAdapter extends BaseAdapter {
}
try {
DownloadRequester.getInstance().downloadMedia(context, true, media.getItem());
- Toast.makeText(context, R.string.status_downloading_label, Toast.LENGTH_SHORT).show();
+ ((MainActivity) context).showSnackbarAbovePlayer(
+ R.string.status_downloading_label, Toast.LENGTH_SHORT);
} catch (DownloadRequestException e) {
e.printStackTrace();
DownloadRequestErrorDialogCreator.newRequestErrorDialog(context, e.getMessage());
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java
index f491a8b29..e66032e11 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java
@@ -33,11 +33,11 @@ import de.danoeh.antennapod.fragment.SubscriptionFragment;
import org.apache.commons.lang3.ArrayUtils;
import java.lang.ref.WeakReference;
+import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-import java.util.Locale;
/**
* BaseAdapter for the navigation drawer
@@ -247,19 +247,19 @@ public class NavListAdapter extends BaseAdapter
if (tag.equals(QueueFragment.TAG)) {
int queueSize = itemAccess.getQueueSize();
if (queueSize > 0) {
- holder.count.setText(String.format(Locale.getDefault(), "%d", queueSize));
+ holder.count.setText(NumberFormat.getInstance().format(queueSize));
holder.count.setVisibility(View.VISIBLE);
}
} else if (tag.equals(EpisodesFragment.TAG)) {
int unreadItems = itemAccess.getNumberOfNewItems();
if (unreadItems > 0) {
- holder.count.setText(String.format(Locale.getDefault(), "%d", unreadItems));
+ holder.count.setText(NumberFormat.getInstance().format(unreadItems));
holder.count.setVisibility(View.VISIBLE);
}
} else if (tag.equals(SubscriptionFragment.TAG)) {
int sum = itemAccess.getFeedCounterSum();
if (sum > 0) {
- holder.count.setText(String.format(Locale.getDefault(), "%d", sum));
+ holder.count.setText(NumberFormat.getInstance().format(sum));
holder.count.setVisibility(View.VISIBLE);
}
} else if(tag.equals(DownloadsFragment.TAG) && UserPreferences.isEnableAutodownload()) {
@@ -352,7 +352,7 @@ public class NavListAdapter extends BaseAdapter
int counter = itemAccess.getFeedCounter(feed.getId());
if(counter > 0) {
holder.count.setVisibility(View.VISIBLE);
- holder.count.setText(String.format(Locale.getDefault(), "%d", counter));
+ holder.count.setText(NumberFormat.getInstance().format(counter));
} else {
holder.count.setVisibility(View.GONE);
}
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java
index 970d2e535..fdda526ff 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java
@@ -16,6 +16,7 @@ import android.widget.TextView;
import com.bumptech.glide.Glide;
import java.lang.ref.WeakReference;
+import java.text.NumberFormat;
import java.util.Locale;
import de.danoeh.antennapod.R;
@@ -99,8 +100,8 @@ public class SubscriptionsAdapter extends BaseAdapter implements AdapterView.OnI
int count = itemAccess.getFeedCounter(feed.getId());
if(count > 0) {
- holder.count.setPrimaryText(String.format(Locale.getDefault(), "%d",
- itemAccess.getFeedCounter(feed.getId())));
+ holder.count.setPrimaryText(
+ NumberFormat.getInstance().format(itemAccess.getFeedCounter(feed.getId())));
holder.count.setVisibility(View.VISIBLE);
} else {
holder.count.setVisibility(View.GONE);
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java
index 3b5baadef..a31d2fdc0 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java
@@ -37,8 +37,6 @@ public class CancelDownloadActionButton extends ItemActionButton {
if (UserPreferences.isEnableAutodownload()) {
DBWriter.setFeedItemAutoDownload(media.getItem(), false);
Toast.makeText(context, R.string.download_canceled_autodownload_enabled_msg, Toast.LENGTH_LONG).show();
- } else {
- Toast.makeText(context, R.string.download_canceled_msg, Toast.LENGTH_LONG).show();
}
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/MobileDownloadHelper.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/MobileDownloadHelper.java
index 80ecd4994..49b785056 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/MobileDownloadHelper.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/MobileDownloadHelper.java
@@ -1,7 +1,6 @@
package de.danoeh.antennapod.adapter.actionbutton;
import android.content.Context;
-import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import de.danoeh.antennapod.R;
@@ -42,14 +41,12 @@ class MobileDownloadHelper {
private static void addToQueue(Context context, FeedItem item) {
addToQueueTimestamp = System.currentTimeMillis();
DBWriter.addQueueItem(context, item);
- Toast.makeText(context, R.string.added_to_queue_label, Toast.LENGTH_SHORT).show();
}
private static void downloadFeedItems(Context context, FeedItem item) {
allowMobileDownloadTimestamp = System.currentTimeMillis();
try {
DownloadRequester.getInstance().downloadMedia(context, true, item);
- Toast.makeText(context, R.string.status_downloading_label, Toast.LENGTH_SHORT).show();
} catch (DownloadRequestException e) {
e.printStackTrace();
DownloadRequestErrorDialogCreator.newRequestErrorDialog(context, e.getMessage());
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PlayActionButton.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PlayActionButton.java
index dd3a57288..512f1a512 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PlayActionButton.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/PlayActionButton.java
@@ -46,7 +46,7 @@ public class PlayActionButton extends ItemActionButton {
.start();
if (media.getMediaType() == MediaType.VIDEO) {
- context.startActivity(PlaybackService.getPlayerActivityIntent(context));
+ context.startActivity(PlaybackService.getPlayerActivityIntent(context, media));
}
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/StreamActionButton.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/StreamActionButton.java
index 8db28f5a8..88e0fc7ed 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/StreamActionButton.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/StreamActionButton.java
@@ -49,7 +49,7 @@ public class StreamActionButton extends ItemActionButton {
.start();
if (media.getMediaType() == MediaType.VIDEO) {
- context.startActivity(PlaybackService.getPlayerActivityIntent(context));
+ context.startActivity(PlaybackService.getPlayerActivityIntent(context, media));
}
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/AuthenticationDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/AuthenticationDialog.java
index fb2f92742..39d321f18 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/AuthenticationDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/AuthenticationDialog.java
@@ -1,9 +1,9 @@
package de.danoeh.antennapod.dialog;
-import android.app.AlertDialog;
import android.content.Context;
import android.view.View;
import android.widget.EditText;
+import androidx.appcompat.app.AlertDialog;
import de.danoeh.antennapod.R;
/**
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java
index 9198c7a3e..abab94852 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java
@@ -1,6 +1,5 @@
package de.danoeh.antennapod.dialog;
-import android.app.AlertDialog;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -17,6 +16,7 @@ import androidx.annotation.IdRes;
import androidx.annotation.NonNull;
import androidx.annotation.PluralsRes;
import androidx.annotation.StringRes;
+import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.collection.ArrayMap;
@@ -25,6 +25,7 @@ import androidx.fragment.app.Fragment;
import com.google.android.material.snackbar.Snackbar;
import com.leinardi.android.speeddial.SpeedDialView;
import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.storage.DBWriter;
@@ -313,8 +314,7 @@ public class EpisodesApplyActionFragment extends Fragment {
}
}
if (resId != 0) {
- Snackbar.make(getActivity().findViewById(android.R.id.content), resId, Snackbar.LENGTH_SHORT)
- .show();
+ ((MainActivity) getActivity()).showSnackbarAbovePlayer(resId, Snackbar.LENGTH_SHORT);
return true;
} else {
return false;
@@ -470,12 +470,8 @@ public class EpisodesApplyActionFragment extends Fragment {
private void close(@PluralsRes int msgId, int numItems) {
if (numItems > 0) {
- Snackbar.make(getActivity().findViewById(android.R.id.content),
- getResources().getQuantityString(msgId, numItems, numItems),
- Snackbar.LENGTH_LONG
- )
- .setAction(android.R.string.ok, v -> { })
- .show();
+ ((MainActivity) getActivity()).showSnackbarAbovePlayer(
+ getResources().getQuantityString(msgId, numItems, numItems), Snackbar.LENGTH_LONG);
}
getActivity().getSupportFragmentManager().popBackStack();
}
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java
index b2774292f..2b8976635 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java
@@ -4,6 +4,7 @@ import android.content.Context;
import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
+import java.text.NumberFormat;
import java.util.Locale;
import de.danoeh.antennapod.R;
@@ -29,7 +30,8 @@ public class SkipPreferenceDialog {
if (skipSecs == values[i]) {
checked = i;
}
- choices[i] = values[i] + " " + context.getString(R.string.time_seconds);
+ choices[i] = String.format(Locale.getDefault(),
+ "%d %s", values[i], context.getString(R.string.time_seconds));
}
AlertDialog.Builder builder = new AlertDialog.Builder(context);
@@ -48,7 +50,7 @@ public class SkipPreferenceDialog {
UserPreferences.setRewindSecs(seconds);
}
if (textView != null) {
- textView.setText(String.format(Locale.getDefault(), "%d", seconds));
+ textView.setText(NumberFormat.getInstance().format(seconds));
}
}
});
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java
index 0a35c95ff..fafe888ee 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java
@@ -18,6 +18,7 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
+import com.google.android.material.snackbar.Snackbar;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.preferences.SleepTimerPreferences;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
@@ -141,7 +142,7 @@ public class SleepTimerDialog extends DialogFragment {
Button setButton = content.findViewById(R.id.setSleeptimerButton);
setButton.setOnClickListener(v -> {
if (!PlaybackService.isRunning) {
- Toast.makeText(getContext(), R.string.no_media_playing_label, Toast.LENGTH_LONG).show();
+ Snackbar.make(content, R.string.no_media_playing_label, Snackbar.LENGTH_LONG).show();
}
try {
savePreferences();
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
index e905ccd95..8e1d6c734 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
@@ -29,6 +29,7 @@ import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.text.DecimalFormat;
+import java.text.NumberFormat;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.CastEnabledActivity;
@@ -124,8 +125,8 @@ public class AudioPlayerFragment extends Fragment implements
setupLengthTextView();
setupControlButtons();
setupPlaybackSpeedButton();
- txtvRev.setText(String.valueOf(UserPreferences.getRewindSecs()));
- txtvFF.setText(String.valueOf(UserPreferences.getFastForwardSecs()));
+ txtvRev.setText(NumberFormat.getInstance().format(UserPreferences.getRewindSecs()));
+ txtvFF.setText(NumberFormat.getInstance().format(UserPreferences.getFastForwardSecs()));
sbPosition.setOnSeekBarChangeListener(this);
pager = root.findViewById(R.id.pager);
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java
index a2fea9f24..312e3cb62 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java
@@ -1,9 +1,9 @@
package de.danoeh.antennapod.fragment;
-import android.app.AlertDialog;
import android.app.Dialog;
import android.content.res.TypedArray;
import android.os.Bundle;
+import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.ListFragment;
import androidx.core.view.MenuItemCompat;
import android.util.Log;
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java
index 4f283a9ab..29b6a1b16 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java
@@ -146,7 +146,8 @@ public abstract class EpisodesListFragment extends Fragment {
public void onConfirmButtonPressed(DialogInterface dialog) {
dialog.dismiss();
DBWriter.markAllItemsRead();
- Toast.makeText(getActivity(), R.string.mark_all_read_msg, Toast.LENGTH_SHORT).show();
+ ((MainActivity) getActivity()).showSnackbarAbovePlayer(
+ R.string.mark_all_read_msg, Toast.LENGTH_SHORT);
}
};
markAllReadConfirmationDialog.createNewDialog().show();
@@ -160,7 +161,8 @@ public abstract class EpisodesListFragment extends Fragment {
public void onConfirmButtonPressed(DialogInterface dialog) {
dialog.dismiss();
DBWriter.removeAllNewFlags();
- Toast.makeText(getActivity(), R.string.removed_all_new_flags_msg, Toast.LENGTH_SHORT).show();
+ ((MainActivity) getActivity()).showSnackbarAbovePlayer(
+ R.string.removed_all_new_flags_msg, Toast.LENGTH_SHORT);
}
};
removeAllNewFlagsConfirmationDialog.createNewDialog().show();
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java
index 4953ccc6c..4f8b4f00c 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java
@@ -10,6 +10,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.view.viewholder.EpisodeItemViewHolder;
import org.greenrobot.eventbus.Subscribe;
@@ -68,9 +69,8 @@ public class FavoriteEpisodesFragment extends EpisodesListFragment {
if (item != null) {
DBWriter.removeFavoriteItem(item);
- Snackbar snackbar = Snackbar.make(root, getString(R.string.removed_item), Snackbar.LENGTH_LONG);
- snackbar.setAction(getString(R.string.undo), v -> DBWriter.addFavoriteItem(item));
- snackbar.show();
+ ((MainActivity) getActivity()).showSnackbarAbovePlayer(R.string.removed_item, Snackbar.LENGTH_LONG)
+ .setAction(getString(R.string.undo), v -> DBWriter.addFavoriteItem(item));
}
}
};
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java
index af3c5d303..c58e6c15f 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java
@@ -91,7 +91,7 @@ public class FeedInfoFragment extends Fragment {
android.content.ClipboardManager cm = (android.content.ClipboardManager) getContext()
.getSystemService(Context.CLIPBOARD_SERVICE);
cm.setPrimaryClip(clipData);
- Snackbar.make(getView(), R.string.copied_url_msg, Snackbar.LENGTH_SHORT).show();
+ ((MainActivity) getActivity()).showSnackbarAbovePlayer(R.string.copied_url_msg, Snackbar.LENGTH_SHORT);
}
}
};
@@ -234,7 +234,8 @@ public class FeedInfoFragment extends Fragment {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (feed == null) {
- Toast.makeText(getContext(), R.string.please_wait_for_data, Toast.LENGTH_LONG).show();
+ ((MainActivity) getActivity()).showSnackbarAbovePlayer(
+ R.string.please_wait_for_data, Toast.LENGTH_LONG);
return super.onOptionsItemSelected(item);
}
boolean handled = false;
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
index 9bfb4d6dc..1f96c12f2 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
@@ -249,7 +249,8 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem
public boolean onOptionsItemSelected(MenuItem item) {
if (!super.onOptionsItemSelected(item)) {
if (feed == null) {
- Toast.makeText(getContext(), R.string.please_wait_for_data, Toast.LENGTH_LONG).show();
+ ((MainActivity) getActivity()).showSnackbarAbovePlayer(
+ R.string.please_wait_for_data, Toast.LENGTH_LONG);
return true;
}
try {
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java
index 84a303b3d..72dd0e0c7 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java
@@ -142,7 +142,8 @@ public class ItemFragment extends Fragment {
&& ObjectsCompat.equals(item.getMedia().getIdentifier(), controller.getMedia().getIdentifier())) {
controller.seekTo(time);
} else {
- Snackbar.make(getView(), R.string.play_this_to_seek_position, Snackbar.LENGTH_LONG).show();
+ ((MainActivity) getActivity()).showSnackbarAbovePlayer(R.string.play_this_to_seek_position,
+ Snackbar.LENGTH_LONG);
}
});
registerForContextMenu(webvDescription);
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemPagerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemPagerFragment.java
index 0c7eb23d2..c198ce258 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemPagerFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemPagerFragment.java
@@ -86,6 +86,7 @@ public class ItemPagerFragment extends Fragment {
pager.setId(newId);
pager.setAdapter(new ItemPagerAdapter(this));
pager.setCurrentItem(feedItemPos, false);
+ pager.setOffscreenPageLimit(1);
loadItem(feedItems[feedItemPos]);
pager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
index 390e1facd..49c53627f 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
@@ -16,6 +16,7 @@ import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.view.ViewCompat;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.RecyclerView;
@@ -388,11 +389,9 @@ public class QueueFragment extends Fragment {
recyclerAdapter.setLocked(locked);
}
if (locked) {
- Snackbar.make(getActivity().findViewById(android.R.id.content),
- R.string.queue_locked, Snackbar.LENGTH_SHORT).show();
+ ((MainActivity) getActivity()).showSnackbarAbovePlayer(R.string.queue_locked, Snackbar.LENGTH_SHORT);
} else {
- Snackbar.make(getActivity().findViewById(android.R.id.content),
- R.string.queue_unlocked, Snackbar.LENGTH_SHORT).show();
+ ((MainActivity) getActivity()).showSnackbarAbovePlayer(R.string.queue_unlocked, Snackbar.LENGTH_SHORT);
}
}
@@ -497,16 +496,16 @@ public class QueueFragment extends Fragment {
final boolean isRead = item.isPlayed();
DBWriter.markItemPlayed(FeedItem.PLAYED, false, item.getId());
DBWriter.removeQueueItem(getActivity(), true, item);
- Snackbar snackbar = Snackbar.make(root, getString(item.hasMedia()
- ? R.string.marked_as_read_label : R.string.marked_as_read_no_media_label),
- Snackbar.LENGTH_LONG);
- snackbar.setAction(getString(R.string.undo), v -> {
- DBWriter.addQueueItemAt(getActivity(), item.getId(), position, false);
- if(!isRead) {
- DBWriter.markItemPlayed(FeedItem.UNPLAYED, item.getId());
- }
- });
- snackbar.show();
+
+ ((MainActivity) getActivity()).showSnackbarAbovePlayer(
+ item.hasMedia() ? R.string.marked_as_read_label : R.string.marked_as_read_no_media_label,
+ Snackbar.LENGTH_LONG)
+ .setAction(getString(R.string.undo), v -> {
+ DBWriter.addQueueItemAt(getActivity(), item.getId(), position, false);
+ if (!isRead) {
+ DBWriter.markItemPlayed(FeedItem.UNPLAYED, item.getId());
+ }
+ });
}
@Override
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java
index 1bfbd2d78..ddcf09992 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java
@@ -7,6 +7,7 @@ import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
+import de.danoeh.antennapod.activity.MainActivity;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -108,10 +109,9 @@ public class RunningDownloadsFragment extends ListFragment {
&& UserPreferences.isEnableAutodownload()) {
FeedMedia media = DBReader.getFeedMedia(downloadRequest.getFeedfileId());
DBWriter.setFeedItemAutoDownload(media.getItem(), false);
- Toast.makeText(getActivity(), R.string.download_canceled_autodownload_enabled_msg,
- Toast.LENGTH_SHORT).show();
- } else {
- Toast.makeText(getActivity(), R.string.download_canceled_msg, Toast.LENGTH_SHORT).show();
+
+ ((MainActivity) getActivity()).showSnackbarAbovePlayer(
+ R.string.download_canceled_autodownload_enabled_msg, Toast.LENGTH_SHORT);
}
}
};
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderPreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderPreferencesFragment.java
index 11afb9b4f..8f8b4675d 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderPreferencesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderPreferencesFragment.java
@@ -8,6 +8,7 @@ import androidx.preference.PreferenceFragmentCompat;
import android.text.Html;
import android.text.format.DateUtils;
import android.widget.Toast;
+import com.google.android.material.snackbar.Snackbar;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.PreferenceActivity;
import de.danoeh.antennapod.core.event.SyncServiceEvent;
@@ -91,8 +92,7 @@ public class GpodderPreferencesFragment extends PreferenceFragmentCompat {
});
findPreference(PREF_GPODNET_LOGOUT).setOnPreferenceClickListener(preference -> {
GpodnetPreferences.logout();
- Toast toast = Toast.makeText(activity, R.string.pref_gpodnet_logout_toast, Toast.LENGTH_SHORT);
- toast.show();
+ Snackbar.make(getView(), R.string.pref_gpodnet_logout_toast, Snackbar.LENGTH_LONG).show();
updateGpodnetPreferenceScreen();
return true;
});
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 c9c7b6190..1f15f66ec 100644
--- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
+++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
@@ -10,6 +10,7 @@ import android.view.Menu;
import android.view.MenuItem;
import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.preferences.GpodnetPreferences;
@@ -290,14 +291,14 @@ public class FeedItemMenuHandler {
}
};
- Snackbar snackbar = Snackbar.make(fragment.getView(), fragment.getString(R.string.removed_new_flag_label),
- Snackbar.LENGTH_LONG);
- snackbar.setAction(fragment.getString(R.string.undo), v -> {
- DBWriter.markItemPlayed(FeedItem.NEW, item.getId());
- // don't forget to cancel the thing that's going to remove the media
- h.removeCallbacks(r);
- });
- snackbar.show();
+
+ Snackbar snackbar = ((MainActivity) fragment.getActivity()).showSnackbarAbovePlayer(
+ R.string.removed_new_flag_label, Snackbar.LENGTH_LONG)
+ .setAction(fragment.getString(R.string.undo), v -> {
+ DBWriter.markItemPlayed(FeedItem.NEW, item.getId());
+ // don't forget to cancel the thing that's going to remove the media
+ h.removeCallbacks(r);
+ });
h.postDelayed(r, (int) Math.ceil(snackbar.getDuration() * 1.05f));
}
diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/NumberPickerPreference.java b/app/src/main/java/de/danoeh/antennapod/preferences/NumberPickerPreference.java
index a58986241..484d56e96 100644
--- a/app/src/main/java/de/danoeh/antennapod/preferences/NumberPickerPreference.java
+++ b/app/src/main/java/de/danoeh/antennapod/preferences/NumberPickerPreference.java
@@ -1,7 +1,7 @@
package de.danoeh.antennapod.preferences;
-import android.app.AlertDialog;
import android.content.Context;
+import androidx.appcompat.app.AlertDialog;
import androidx.preference.Preference;
import android.text.InputFilter;
import android.util.AttributeSet;
diff --git a/app/src/main/java/de/danoeh/antennapod/view/PagerIndicatorView.java b/app/src/main/java/de/danoeh/antennapod/view/PagerIndicatorView.java
index 240a565c8..10ed98769 100644
--- a/app/src/main/java/de/danoeh/antennapod/view/PagerIndicatorView.java
+++ b/app/src/main/java/de/danoeh/antennapod/view/PagerIndicatorView.java
@@ -23,6 +23,7 @@ public class PagerIndicatorView extends View {
private int disabledPage = -1;
private int circleColor = 0;
private int circleColorHighlight = -1;
+ private boolean isLocaleRtl = false;
public PagerIndicatorView(Context context) {
super(context);
@@ -40,6 +41,9 @@ public class PagerIndicatorView extends View {
}
private void setup() {
+ isLocaleRtl = TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault())
+ == ViewCompat.LAYOUT_DIRECTION_RTL;
+
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);
@@ -50,6 +54,14 @@ public class PagerIndicatorView extends View {
a.recycle();
}
+ /**
+ * Visual and logical position distinction only happens in RTL locales (e.g. Persian)
+ * where pages positions are flipped thus it does nothing in LTR locales (e.g. English)
+ */
+ private float logicalPositionToVisual(float position) {
+ return isLocaleRtl ? numPages - 1 - position : position;
+ }
+
public void setViewPager(ViewPager2 pager) {
numPages = pager.getAdapter().getItemCount();
pager.getAdapter().registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@@ -59,22 +71,18 @@ public class PagerIndicatorView extends View {
invalidate();
}
});
- boolean isLocaleRtl = TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault())
- == ViewCompat.LAYOUT_DIRECTION_RTL;
pager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
- PagerIndicatorView.this.position = position + positionOffset;
- if (isLocaleRtl) {
- PagerIndicatorView.this.position = numPages - 1 - PagerIndicatorView.this.position;
- }
+ PagerIndicatorView.this.position = logicalPositionToVisual(
+ position + positionOffset);
invalidate();
}
});
}
public void setDisabledPage(int disabledPage) {
- this.disabledPage = disabledPage;
+ this.disabledPage = (int) logicalPositionToVisual(disabledPage);
invalidate();
}
diff --git a/app/src/main/java/de/danoeh/antennapod/view/ShownotesWebView.java b/app/src/main/java/de/danoeh/antennapod/view/ShownotesWebView.java
index 88efc1f84..701fe1ff6 100644
--- a/app/src/main/java/de/danoeh/antennapod/view/ShownotesWebView.java
+++ b/app/src/main/java/de/danoeh/antennapod/view/ShownotesWebView.java
@@ -16,6 +16,7 @@ import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.core.util.Consumer;
+import androidx.core.view.ViewCompat;
import com.google.android.material.snackbar.Snackbar;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.util.Converter;
@@ -115,7 +116,9 @@ public class ShownotesWebView extends WebView implements View.OnLongClickListene
android.content.ClipboardManager cm = (android.content.ClipboardManager) getContext()
.getSystemService(Context.CLIPBOARD_SERVICE);
cm.setPrimaryClip(clipData);
- Snackbar.make(this, R.string.copied_url_msg, Snackbar.LENGTH_LONG).show();
+ Snackbar s = Snackbar.make(this, R.string.copied_url_msg, Snackbar.LENGTH_LONG);
+ ViewCompat.setElevation(s.getView(), 100);
+ s.show();
break;
case R.id.go_to_position_item:
if (Timeline.isTimecodeLink(selectedUrl) && timecodeSelectedListener != null) {
diff --git a/app/src/main/res/anim/fade_in.xml b/app/src/main/res/anim/fade_in.xml
index fa1ba9ade..7d2fea5a6 100644
--- a/app/src/main/res/anim/fade_in.xml
+++ b/app/src/main/res/anim/fade_in.xml
@@ -2,7 +2,7 @@
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
- android:duration="@android:integer/config_mediumAnimTime"
+ android:duration="@integer/fragment_transition_duration"
android:fromAlpha="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="1.0" />
diff --git a/app/src/main/res/anim/fade_out.xml b/app/src/main/res/anim/fade_out.xml
index 392ec4277..ecfb092ae 100644
--- a/app/src/main/res/anim/fade_out.xml
+++ b/app/src/main/res/anim/fade_out.xml
@@ -2,7 +2,7 @@
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
- android:duration="@android:integer/config_mediumAnimTime"
+ android:duration="@integer/fragment_transition_duration"
android:fromAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="0.0" />
diff --git a/app/src/main/res/anim/slide_left_in.xml b/app/src/main/res/anim/slide_left_in.xml
index 6effe70f4..288e06dd8 100644
--- a/app/src/main/res/anim/slide_left_in.xml
+++ b/app/src/main/res/anim/slide_left_in.xml
@@ -4,5 +4,6 @@
<translate
android:fromXDelta="-100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
- android:duration="@android:integer/config_mediumAnimTime"/>
+ android:duration="@integer/fragment_transition_duration"
+ android:interpolator="@android:anim/accelerate_decelerate_interpolator" />
</set>
diff --git a/app/src/main/res/anim/slide_left_out.xml b/app/src/main/res/anim/slide_left_out.xml
index ee28900e9..873947de4 100644
--- a/app/src/main/res/anim/slide_left_out.xml
+++ b/app/src/main/res/anim/slide_left_out.xml
@@ -4,5 +4,6 @@
<translate
android:fromXDelta="0%" android:toXDelta="-100%"
android:fromYDelta="0%" android:toYDelta="0%"
- android:duration="@android:integer/config_mediumAnimTime" />
+ android:duration="@integer/fragment_transition_duration"
+ android:interpolator="@android:anim/accelerate_decelerate_interpolator" />
</set>
diff --git a/app/src/main/res/anim/slide_right_in.xml b/app/src/main/res/anim/slide_right_in.xml
index 368927438..a00815052 100644
--- a/app/src/main/res/anim/slide_right_in.xml
+++ b/app/src/main/res/anim/slide_right_in.xml
@@ -4,5 +4,6 @@
<translate
android:fromXDelta="100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
- android:duration="@android:integer/config_mediumAnimTime"/>
+ android:duration="@integer/fragment_transition_duration"
+ android:interpolator="@android:anim/accelerate_decelerate_interpolator" />
</set>
diff --git a/app/src/main/res/anim/slide_right_out.xml b/app/src/main/res/anim/slide_right_out.xml
index 13567b256..46de69db3 100644
--- a/app/src/main/res/anim/slide_right_out.xml
+++ b/app/src/main/res/anim/slide_right_out.xml
@@ -4,5 +4,6 @@
<translate
android:fromXDelta="0%" android:toXDelta="100%"
android:fromYDelta="0%" android:toYDelta="0%"
- android:duration="@android:integer/config_mediumAnimTime" />
+ android:duration="@integer/fragment_transition_duration"
+ android:interpolator="@android:anim/accelerate_decelerate_interpolator" />
</set>
diff --git a/app/src/main/res/layout/feed_item_list_fragment.xml b/app/src/main/res/layout/feed_item_list_fragment.xml
index 38496dd4f..d6c7409a8 100644
--- a/app/src/main/res/layout/feed_item_list_fragment.xml
+++ b/app/src/main/res/layout/feed_item_list_fragment.xml
@@ -14,7 +14,8 @@
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
- app:contentScrim="?attr/colorPrimary"
+ android:background="?android:attr/windowBackground"
+ app:contentScrim="?android:attr/windowBackground"
app:scrimAnimationDuration="200"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
diff --git a/app/src/main/res/layout/feedinfo.xml b/app/src/main/res/layout/feedinfo.xml
index d2e077be1..fa6aac251 100644
--- a/app/src/main/res/layout/feedinfo.xml
+++ b/app/src/main/res/layout/feedinfo.xml
@@ -14,7 +14,8 @@
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
- app:contentScrim="?attr/colorPrimary"
+ android:background="?android:attr/windowBackground"
+ app:contentScrim="?android:attr/windowBackground"
app:scrimAnimationDuration="200"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
diff --git a/app/src/main/res/layout/quick_feed_discovery.xml b/app/src/main/res/layout/quick_feed_discovery.xml
index 78a59c7eb..a274fcdc7 100644
--- a/app/src/main/res/layout/quick_feed_discovery.xml
+++ b/app/src/main/res/layout/quick_feed_discovery.xml
@@ -25,8 +25,8 @@
android:minHeight="0dp"
android:minWidth="0dp"
android:text="@string/discover_more"
- android:id="@+id/discover_more"
- style="?android:attr/buttonBarButtonStyle"/>
+ style="@style/Widget.MaterialComponents.Button.TextButton"
+ android:id="@+id/discover_more"/>
</LinearLayout>
<RelativeLayout
diff --git a/app/src/main/res/layout/searchlist_item_feed.xml b/app/src/main/res/layout/searchlist_item_feed.xml
index f5e76801e..607a3197f 100644
--- a/app/src/main/res/layout/searchlist_item_feed.xml
+++ b/app/src/main/res/layout/searchlist_item_feed.xml
@@ -14,6 +14,7 @@
android:elevation="4dp"
android:outlineProvider="bounds"
android:foreground="?android:attr/selectableItemBackground"
+ android:background="?android:attr/windowBackground"
squareImageView:direction="height" />
</LinearLayout>
diff --git a/app/src/main/res/layout/subscription_item.xml b/app/src/main/res/layout/subscription_item.xml
index 43c3d99fa..a01b6d070 100644
--- a/app/src/main/res/layout/subscription_item.xml
+++ b/app/src/main/res/layout/subscription_item.xml
@@ -11,7 +11,7 @@
android:id="@+id/imgvCover"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:scaleType="centerCrop"
+ android:scaleType="fitCenter"
tools:src="@mipmap/ic_launcher_round"
squareImageView:direction="width"/>
@@ -37,9 +37,9 @@
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
- app:backgroundColor="?attr/colorAccent"
+ app:backgroundColor="?attr/colorSecondary"
app:corner="rightTop"
app:primaryText="Test"
- app:primaryTextColor="@color/white"
+ app:primaryTextColor="?attr/colorOnSecondary"
app:primaryTextSize="12sp" />
</RelativeLayout>
diff --git a/app/src/main/res/layout/time_dialog.xml b/app/src/main/res/layout/time_dialog.xml
index 8ada0d6cf..6523bb1be 100644
--- a/app/src/main/res/layout/time_dialog.xml
+++ b/app/src/main/res/layout/time_dialog.xml
@@ -75,19 +75,19 @@
<CheckBox
android:id="@+id/cbShakeToReset"
- android:layout_width="wrap_content"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/shake_to_reset_label"/>
<CheckBox
android:id="@+id/cbVibrate"
- android:layout_width="wrap_content"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/timer_vibration_label"/>
<CheckBox
android:id="@+id/chAutoEnable"
- android:layout_width="wrap_content"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/auto_enable_label"/>
diff --git a/app/src/main/res/xml/feed_settings.xml b/app/src/main/res/xml/feed_settings.xml
index 9a3a4f438..f85c9ef3c 100644
--- a/app/src/main/res/xml/feed_settings.xml
+++ b/app/src/main/res/xml/feed_settings.xml
@@ -22,7 +22,7 @@
android:summary="@string/pref_feed_playback_speed_sum"/>
<Preference
- android:key="skipping"
+ android:key="feedAutoSkip"
android:summary="@string/pref_feed_skip_sum"
android:title="@string/pref_feed_skip" />