summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/src/main/AndroidManifest.xml29
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java42
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java20
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java2
-rw-r--r--app/src/main/res/layout/statistics_listitem_total.xml7
6 files changed, 54 insertions, 48 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 11b539b81..62335b5e6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -37,16 +37,14 @@
android:usesCleartextTraffic="true"
android:logo="@mipmap/ic_launcher">
- <activity
- android:name=".activity.WidgetConfigActivity"
- android:label="@string/widget_settings">
- <intent-filter>
- <action android:name="android.appwidget.action.APPWIDGET_CONFIGUR"/>
- </intent-filter>
- </activity>
+ <meta-data android:name="android.webkit.WebView.MetricsOptOut"
+ android:value="true"/>
<meta-data android:name="com.google.android.gms.car.notification.SmallIcon"
- android:resource="@drawable/ic_antenna" />
+ android:resource="@drawable/ic_antenna"/>
+ <meta-data
+ android:name="com.google.android.gms.car.application"
+ android:resource="@xml/automotive_app_desc"/>
<meta-data
android:name="com.google.android.backup.api_key"
android:value="AEdPqrEAAAAI3a05VToCTlqBymJrbFGaKQMvF-bBAuLsOdavBA"/>
@@ -67,12 +65,14 @@
"android.intent.category.DEFAULT" />
</intent-filter>
</activity>
+
<activity
android:name=".activity.MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTask"
android:label="@string/app_name">
</activity>
+
<activity
android:name=".activity.AudioplayerActivity"
android:launchMode="singleTop">
@@ -89,6 +89,7 @@
<data android:mimeType="audio/*"/>
</intent-filter>
</activity>
+
<activity
android:name=".activity.CastplayerActivity"
android:launchMode="singleTop">
@@ -110,6 +111,14 @@
android:value="de.danoeh.antennapod.activity.MainActivity"/>
</activity>
+ <activity
+ android:name=".activity.WidgetConfigActivity"
+ android:label="@string/widget_settings">
+ <intent-filter>
+ <action android:name="android.appwidget.action.APPWIDGET_CONFIGUR"/>
+ </intent-filter>
+ </activity>
+
<service
android:name=".core.service.PlayerWidgetJobService"
android:permission="android.permission.BIND_JOB_SERVICE"
@@ -343,10 +352,6 @@
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
-
- <meta-data
- android:name="com.google.android.gms.car.application"
- android:resource="@xml/automotive_app_desc"/>
</application>
</manifest>
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java
index edcc566f2..216c8cc57 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java
@@ -62,7 +62,7 @@ public class AllEpisodesFragment extends EpisodesListFragment {
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.findItem(R.id.filter_items).setVisible(true);
- menu.findItem(R.id.mark_all_read_item).setVisible(!episodes.isEmpty());
+ menu.findItem(R.id.mark_all_read_item).setVisible(true);
}
@Override
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java
index 8cdec9f38..49398d104 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java
@@ -4,6 +4,7 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Bundle;
+import androidx.annotation.NonNull;
import com.google.android.material.tabs.TabLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
@@ -47,7 +48,7 @@ public class EpisodesFragment extends Fragment {
View rootView = inflater.inflate(R.layout.pager_fragment, container, false);
viewPager = rootView.findViewById(R.id.viewpager);
- viewPager.setAdapter(new EpisodesPagerAdapter(getChildFragmentManager(), getResources()));
+ viewPager.setAdapter(new EpisodesPagerAdapter());
// Give the TabLayout the ViewPager
tabLayout = rootView.findViewById(R.id.sliding_tabs);
@@ -76,23 +77,23 @@ public class EpisodesFragment extends Fragment {
viewPager.setCurrentItem(lastPosition);
}
- public static class EpisodesPagerAdapter extends FragmentPagerAdapter {
+ public class EpisodesPagerAdapter extends FragmentPagerAdapter {
- private final Resources resources;
- private final EpisodesListFragment[] fragments = {
- new NewEpisodesFragment(),
- new AllEpisodesFragment(),
- new FavoriteEpisodesFragment()
- };
-
- public EpisodesPagerAdapter(FragmentManager fm, Resources resources) {
- super(fm);
- this.resources = resources;
+ public EpisodesPagerAdapter() {
+ super(getChildFragmentManager());
}
@Override
+ @NonNull
public Fragment getItem(int position) {
- return fragments[position];
+ switch (position) {
+ case 0:
+ return new NewEpisodesFragment();
+ case 1:
+ return new AllEpisodesFragment();
+ default:
+ return new FavoriteEpisodesFragment();
+ }
}
@Override
@@ -104,23 +105,14 @@ public class EpisodesFragment extends Fragment {
public CharSequence getPageTitle(int position) {
switch (position) {
case POS_ALL_EPISODES:
- return resources.getString(R.string.all_episodes_short_label);
+ return getString(R.string.all_episodes_short_label);
case POS_NEW_EPISODES:
- return resources.getString(R.string.new_episodes_label);
+ return getString(R.string.new_episodes_label);
case POS_FAV_EPISODES:
- return resources.getString(R.string.favorite_episodes_label);
+ return getString(R.string.favorite_episodes_label);
default:
return super.getPageTitle(position);
}
}
-
- @Override
- public void setPrimaryItem(ViewGroup container, int position, Object object) {
- super.setPrimaryItem(container, position, object);
- for (int i = 0; i < TOTAL_COUNT; i++) {
- // Invalidating the OptionsMenu is only allowed for the currently active fragment
- fragments[i].isMenuInvalidationAllowed = (i == position);
- }
- }
}
}
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 6176ca410..7258aec8e 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java
@@ -81,9 +81,8 @@ public abstract class EpisodesListFragment extends Fragment {
@NonNull
List<FeedItem> episodes = new ArrayList<>();
- private boolean isUpdatingFeeds;
- boolean isMenuInvalidationAllowed = false;
-
+ private volatile boolean isUpdatingFeeds;
+ private boolean isMenuVisible = true;
protected Disposable disposable;
private LinearLayoutManager layoutManager;
protected TextView txtvInformation;
@@ -157,6 +156,12 @@ public abstract class EpisodesListFragment extends Fragment {
() -> DownloadService.isRunning && DownloadRequester.getInstance().isDownloadingFeeds();
@Override
+ public void setMenuVisibility(final boolean visible) {
+ super.setMenuVisibility(visible);
+ isMenuVisible = visible;
+ }
+
+ @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
if (!isAdded()) {
return;
@@ -346,7 +351,9 @@ public abstract class EpisodesListFragment extends Fragment {
}
restoreScrollPosition();
- requireActivity().invalidateOptionsMenu();
+ if (isMenuVisible && isUpdatingFeeds != updateRefreshMenuItemChecker.isRefreshing()) {
+ requireActivity().invalidateOptionsMenu();
+ }
}
/**
@@ -400,8 +407,7 @@ public abstract class EpisodesListFragment extends Fragment {
public void onEventMainThread(DownloadEvent event) {
Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]");
DownloaderUpdate update = event.update;
- List<Downloader> downloaderList = update.downloaders;
- if (isMenuInvalidationAllowed && event.hasChangedFeedUpdateStatus(isUpdatingFeeds)) {
+ if (isMenuVisible && event.hasChangedFeedUpdateStatus(isUpdatingFeeds)) {
requireActivity().invalidateOptionsMenu();
}
if (update.mediaIds.length > 0) {
@@ -416,7 +422,7 @@ public abstract class EpisodesListFragment extends Fragment {
private void updateUi() {
loadItems();
- if (isUpdatingFeeds != updateRefreshMenuItemChecker.isRefreshing()) {
+ if (isMenuVisible && isUpdatingFeeds != updateRefreshMenuItemChecker.isRefreshing()) {
requireActivity().invalidateOptionsMenu();
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java
index 33e686a90..94f71894b 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java
@@ -40,7 +40,7 @@ public class NewEpisodesFragment extends EpisodesListFragment {
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
- menu.findItem(R.id.remove_all_new_flags_item).setVisible(!episodes.isEmpty());
+ menu.findItem(R.id.remove_all_new_flags_item).setVisible(true);
}
@NonNull
diff --git a/app/src/main/res/layout/statistics_listitem_total.xml b/app/src/main/res/layout/statistics_listitem_total.xml
index f24f13398..2efe37bfe 100644
--- a/app/src/main/res/layout/statistics_listitem_total.xml
+++ b/app/src/main/res/layout/statistics_listitem_total.xml
@@ -7,10 +7,13 @@
<de.danoeh.antennapod.view.PieChartView
android:id="@+id/pie_chart"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerInParent="true"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"/>
+ android:maxWidth="800dp"
+ android:minWidth="460dp" />
<TextView
android:layout_width="match_parent"