diff options
author | ByteHamster <info@bytehamster.com> | 2022-02-23 00:22:51 +0100 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2022-02-26 19:44:17 +0100 |
commit | 7451da112145f96ecddc314eea7b90fcb03737dd (patch) | |
tree | 437ad8df931d422eb0c5deebf19d6a9e93c0310c /ui/common/src/main/java | |
parent | 0d7555da8c291457cd8fe7b97036fd05c515bbd2 (diff) | |
download | AntennaPod-7451da112145f96ecddc314eea7b90fcb03737dd.zip |
Move statistics screens to new module
Diffstat (limited to 'ui/common/src/main/java')
-rw-r--r-- | ui/common/src/main/java/de/danoeh/antennapod/ui/common/PagedToolbarFragment.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/ui/common/src/main/java/de/danoeh/antennapod/ui/common/PagedToolbarFragment.java b/ui/common/src/main/java/de/danoeh/antennapod/ui/common/PagedToolbarFragment.java new file mode 100644 index 000000000..118d2ffb2 --- /dev/null +++ b/ui/common/src/main/java/de/danoeh/antennapod/ui/common/PagedToolbarFragment.java @@ -0,0 +1,48 @@ +package de.danoeh.antennapod.ui.common; + +import androidx.annotation.NonNull; +import androidx.appcompat.widget.Toolbar; +import androidx.fragment.app.Fragment; +import androidx.viewpager2.widget.ViewPager2; + +/** + * Fragment with a ViewPager where the displayed items influence the top toolbar's menu. + * All items share the same general menu items and are just allowed to show/hide them. + */ +public abstract class PagedToolbarFragment extends Fragment { + private Toolbar toolbar; + private ViewPager2 viewPager; + + /** + * Invalidate the toolbar menu if the current child fragment is visible. + * @param child The fragment to invalidate + */ + public void invalidateOptionsMenuIfActive(@NonNull Fragment child) { + Fragment visibleChild = getChildFragmentManager().findFragmentByTag("f" + viewPager.getCurrentItem()); + if (visibleChild == child) { + visibleChild.onPrepareOptionsMenu(toolbar.getMenu()); + } + } + + protected void setupPagedToolbar(Toolbar toolbar, ViewPager2 viewPager) { + this.toolbar = toolbar; + this.viewPager = viewPager; + + toolbar.setOnMenuItemClickListener(item -> { + Fragment child = getChildFragmentManager().findFragmentByTag("f" + viewPager.getCurrentItem()); + if (child != null) { + return child.onOptionsItemSelected(item); + } + return false; + }); + viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { + @Override + public void onPageSelected(int position) { + Fragment child = getChildFragmentManager().findFragmentByTag("f" + position); + if (child != null) { + child.onPrepareOptionsMenu(toolbar.getMenu()); + } + } + }); + } +} |