diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/fragment')
5 files changed, 196 insertions, 15 deletions
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 b4c4f1822..d55466b10 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java @@ -105,7 +105,6 @@ public class AllEpisodesFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setRetainInstance(true); setHasOptionsMenu(true); } @@ -270,16 +269,14 @@ public class AllEpisodesFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return onCreateViewHelper(inflater, container, savedInstanceState, - R.layout.all_episodes_fragment, R.string.all_episodes_label); + R.layout.all_episodes_fragment); } protected View onCreateViewHelper(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState, - int fragmentResource, - int titleString) { + int fragmentResource) { super.onCreateView(inflater, container, savedInstanceState); - ((MainActivity) getActivity()).getSupportActionBar().setTitle(titleString); View root = inflater.inflate(fragmentResource, container, false); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadsFragment.java index 1ce379cf8..52a38ccb9 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadsFragment.java @@ -1,7 +1,10 @@ package de.danoeh.antennapod.fragment; +import android.content.Context; +import android.content.SharedPreferences; import android.content.res.Resources; import android.os.Bundle; +import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; @@ -25,15 +28,24 @@ public class DownloadsFragment extends Fragment { public static final int POS_COMPLETED = 1; public static final int POS_LOG = 2; - private ViewPager pager; + private static final String PREF_LAST_TAB_POSITION = "tab_position"; + + private ViewPager viewPager; + private TabLayout tabLayout; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View root = inflater.inflate(R.layout.pager_fragment, container, false); - pager = (ViewPager) root.findViewById(R.id.pager); + + viewPager = (ViewPager)root.findViewById(R.id.viewpager); DownloadsPagerAdapter pagerAdapter = new DownloadsPagerAdapter(getChildFragmentManager(), getResources()); - pager.setAdapter(pagerAdapter); + viewPager.setAdapter(pagerAdapter); + + // Give the TabLayout the ViewPager + tabLayout = (TabLayout) root.findViewById(R.id.sliding_tabs); + tabLayout.setupWithViewPager(viewPager); + return root; } @@ -42,10 +54,30 @@ public class DownloadsFragment extends Fragment { super.onViewCreated(view, savedInstanceState); if (getArguments() != null) { int tab = getArguments().getInt(ARG_SELECTED_TAB); - pager.setCurrentItem(tab, false); + viewPager.setCurrentItem(tab, false); } } + @Override + public void onPause() { + super.onPause(); + // save our tab selection + SharedPreferences prefs = getActivity().getSharedPreferences(TAG, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = prefs.edit(); + editor.putInt(PREF_LAST_TAB_POSITION, tabLayout.getSelectedTabPosition()); + editor.apply(); + } + + @Override + public void onStart() { + super.onStart(); + + // restore our last position + SharedPreferences prefs = getActivity().getSharedPreferences(TAG, Context.MODE_PRIVATE); + int lastPosition = prefs.getInt(PREF_LAST_TAB_POSITION, 0); + viewPager.setCurrentItem(lastPosition); + } + public class DownloadsPagerAdapter extends FragmentPagerAdapter { Resources resources; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java new file mode 100644 index 000000000..e234d95ad --- /dev/null +++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java @@ -0,0 +1,115 @@ +package de.danoeh.antennapod.fragment; + +import android.content.Context; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.os.Bundle; +import android.support.design.widget.TabLayout; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.ViewPager; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import de.danoeh.antennapod.R; +import de.danoeh.antennapod.activity.MainActivity; + +public class EpisodesFragment extends Fragment { + + public static final String TAG = "EpisodesFragment"; + private static final String PREF_LAST_TAB_POSITION = "tab_position"; + + public static final int POS_NEW_EPISODES = 0; + public static final int POS_ALL_EPISODES = 1; + public static final int TOTAL_COUNT = 2; + + + private TabLayout tabLayout; + private ViewPager viewPager; + + //Mandatory Constructor + public EpisodesFragment() { + } + + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setRetainInstance(true); + } + + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + super.onCreateView(inflater, container, savedInstanceState); + setHasOptionsMenu(true); + ((MainActivity) getActivity()).getSupportActionBar().setTitle(R.string.episodes_label); + + View rootView = inflater.inflate(R.layout.pager_fragment, container, false); + viewPager = (ViewPager)rootView.findViewById(R.id.viewpager); + viewPager.setAdapter(new EpisodesPagerAdapter(getChildFragmentManager(), getResources())); + + // Give the TabLayout the ViewPager + tabLayout = (TabLayout) rootView.findViewById(R.id.sliding_tabs); + tabLayout.setupWithViewPager(viewPager); + + return rootView; + } + + @Override + public void onPause() { + super.onPause(); + // save our tab selection + SharedPreferences prefs = getActivity().getSharedPreferences(TAG, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = prefs.edit(); + editor.putInt(PREF_LAST_TAB_POSITION, tabLayout.getSelectedTabPosition()); + editor.apply(); + } + + @Override + public void onStart() { + super.onStart(); + + // restore our last position + SharedPreferences prefs = getActivity().getSharedPreferences(TAG, Context.MODE_PRIVATE); + int lastPosition = prefs.getInt(PREF_LAST_TAB_POSITION, 0); + viewPager.setCurrentItem(lastPosition); + } + + public static class EpisodesPagerAdapter extends FragmentPagerAdapter { + + private final Resources resources; + + public EpisodesPagerAdapter(FragmentManager fm, Resources resources) { + super(fm); + this.resources = resources; + } + + @Override + public Fragment getItem(int position) { + switch (position) { + case POS_ALL_EPISODES: + return new AllEpisodesFragment(); + case POS_NEW_EPISODES: + return new NewEpisodesFragment(); + } + return null; + } + + @Override + public int getCount() { + return TOTAL_COUNT; + } + + @Override + public CharSequence getPageTitle(int position) { + switch (position) { + case POS_ALL_EPISODES: + return resources.getString(R.string.all_episodes_short_label); + case POS_NEW_EPISODES: + return resources.getString(R.string.new_label); + default: + return super.getPageTitle(position); + } + } + } +} 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 9a25674b6..6c2271d79 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java @@ -13,7 +13,6 @@ import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.feed.QueueEvent; -import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.core.util.gui.FeedItemUndoToken; @@ -64,7 +63,7 @@ public class NewEpisodesFragment extends AllEpisodesFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = super.onCreateViewHelper(inflater, container, savedInstanceState, - R.layout.new_episodes_fragment, R.string.new_episodes_label); + R.layout.new_episodes_fragment); listView.setRemoveListener(new DragSortListView.RemoveListener() { @Override @@ -72,7 +71,9 @@ public class NewEpisodesFragment extends AllEpisodesFragment { Log.d(TAG, "remove(" + which + ")"); stopItemLoader(); FeedItem item = (FeedItem) listView.getAdapter().getItem(which); - DBWriter.markItemRead(getActivity(), true, item.getId()); + // we're marking it as unplayed since the user didn't actually play it + // but they don't want it considered 'NEW' anymore + DBWriter.markItemPlayed(getActivity(), FeedItem.UNPLAYED, item.getId()); undoBarController.showUndoBar(false, getString(R.string.marked_as_read_label), new FeedItemUndoToken(item, which) @@ -88,7 +89,7 @@ public class NewEpisodesFragment extends AllEpisodesFragment { public void onUndo(FeedItemUndoToken token) { if (token != null) { long itemId = token.getFeedItemId(); - DBWriter.markItemRead(context, false, itemId); + DBWriter.markItemPlayed(context, FeedItem.NEW, itemId); } } @Override diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java index 55d4b940f..aff5069c6 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java @@ -1,7 +1,10 @@ package de.danoeh.antennapod.fragment.gpodnet; +import android.content.Context; +import android.content.SharedPreferences; import android.content.res.Resources; import android.os.Bundle; +import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; @@ -17,16 +20,49 @@ import de.danoeh.antennapod.R; */ public class GpodnetMainFragment extends Fragment { + public static final String TAG = "GpodnetMainFragment"; + + private static final String PREF_LAST_TAB_POSITION = "tab_position"; + private TabLayout tabLayout; + private ViewPager viewPager; + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View root = inflater.inflate(R.layout.pager_fragment, container, false); - ViewPager pager = (ViewPager) root.findViewById(R.id.pager); + + viewPager = (ViewPager)root.findViewById(R.id.viewpager); GpodnetPagerAdapter pagerAdapter = new GpodnetPagerAdapter(getChildFragmentManager(), getResources()); - pager.setAdapter(pagerAdapter); + viewPager.setAdapter(pagerAdapter); + + // Give the TabLayout the ViewPager + tabLayout = (TabLayout) root.findViewById(R.id.sliding_tabs); + tabLayout.setupWithViewPager(viewPager); + return root; } + + @Override + public void onPause() { + super.onPause(); + // save our tab selection + SharedPreferences prefs = getActivity().getSharedPreferences(TAG, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = prefs.edit(); + editor.putInt(PREF_LAST_TAB_POSITION, tabLayout.getSelectedTabPosition()); + editor.apply(); + } + + @Override + public void onStart() { + super.onStart(); + + // restore our last position + SharedPreferences prefs = getActivity().getSharedPreferences(TAG, Context.MODE_PRIVATE); + int lastPosition = prefs.getInt(PREF_LAST_TAB_POSITION, 0); + viewPager.setCurrentItem(lastPosition); + } + public class GpodnetPagerAdapter extends FragmentPagerAdapter { |