summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh
diff options
context:
space:
mode:
authorTom Hennen <TomHennen@users.noreply.github.com>2015-09-09 16:44:37 -0400
committerTom Hennen <TomHennen@users.noreply.github.com>2015-09-09 16:44:37 -0400
commit4697607e926898afac3c81d5c9e46d2a1c05f5bd (patch)
tree2fe8c0524185d40fde7952d5b743733af6f86833 /app/src/main/java/de/danoeh
parent98a0b46bed65b6489923be7364bb9894901ae6fc (diff)
parentd3d59c5c06287380d23bd74f0523f8bf67c12f19 (diff)
downloadAntennaPod-4697607e926898afac3c81d5c9e46d2a1c05f5bd.zip
Merge pull request #1175 from TomHennen/episode_tablayout
Collapsed "New Episodes" and "All Episodes" in to "Episodes"
Diffstat (limited to 'app/src/main/java/de/danoeh')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java30
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java6
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java7
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/DownloadsFragment.java40
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java115
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java40
7 files changed, 215 insertions, 25 deletions
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 e10e8041e..7f3e2399f 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
@@ -45,11 +45,10 @@ import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.util.StorageUtils;
import de.danoeh.antennapod.fragment.AddFeedFragment;
-import de.danoeh.antennapod.fragment.AllEpisodesFragment;
import de.danoeh.antennapod.fragment.DownloadsFragment;
+import de.danoeh.antennapod.fragment.EpisodesFragment;
import de.danoeh.antennapod.fragment.ExternalPlayerFragment;
import de.danoeh.antennapod.fragment.ItemlistFragment;
-import de.danoeh.antennapod.fragment.NewEpisodesFragment;
import de.danoeh.antennapod.fragment.PlaybackHistoryFragment;
import de.danoeh.antennapod.fragment.QueueFragment;
import de.danoeh.antennapod.menuhandler.NavDrawerActivity;
@@ -82,8 +81,7 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity
public static final String[] NAV_DRAWER_TAGS = {
QueueFragment.TAG,
- NewEpisodesFragment.TAG,
- AllEpisodesFragment.TAG,
+ EpisodesFragment.TAG,
DownloadsFragment.TAG,
PlaybackHistoryFragment.TAG,
AddFeedFragment.TAG
@@ -169,10 +167,17 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity
transaction.replace(R.id.main_view, mainFragment);
} else {
String lastFragment = getLastNavFragment();
- if(ArrayUtils.contains(NAV_DRAWER_TAGS, lastFragment)) {
+ if (ArrayUtils.contains(NAV_DRAWER_TAGS, lastFragment)) {
loadFragment(lastFragment, null);
} else {
- loadFeedFragmentById(Integer.valueOf(lastFragment), null);
+ try {
+ loadFeedFragmentById(Integer.valueOf(lastFragment), null);
+ } catch (NumberFormatException e) {
+ // it's not a number, this happens if we removed
+ // a label from the NAV_DRAWER_TAGS
+ // give them a nice default...
+ loadFragment(QueueFragment.TAG, null);
+ }
}
}
externalPlayerFragment = new ExternalPlayerFragment();
@@ -281,11 +286,8 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity
case QueueFragment.TAG:
fragment = new QueueFragment();
break;
- case NewEpisodesFragment.TAG:
- fragment = new NewEpisodesFragment();
- break;
- case AllEpisodesFragment.TAG:
- fragment = new AllEpisodesFragment();
+ case EpisodesFragment.TAG:
+ fragment = new EpisodesFragment();
break;
case DownloadsFragment.TAG:
fragment = new DownloadsFragment();
@@ -296,6 +298,10 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity
case AddFeedFragment.TAG:
fragment = new AddFeedFragment();
break;
+ default:
+ // default to the queue
+ fragment = new QueueFragment();
+ break;
}
currentTitle = navAdapter.getLabel(tag);
getSupportActionBar().setTitle(currentTitle);
@@ -538,7 +544,7 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if(getSelectedNavListIndex() == position) {
- loadFragment(NewEpisodesFragment.TAG, null);
+ loadFragment(EpisodesFragment.TAG, null);
}
}
};
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 c3bf8faa5..183c1a44e 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java
@@ -33,6 +33,7 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.fragment.AddFeedFragment;
import de.danoeh.antennapod.fragment.AllEpisodesFragment;
import de.danoeh.antennapod.fragment.DownloadsFragment;
+import de.danoeh.antennapod.fragment.EpisodesFragment;
import de.danoeh.antennapod.fragment.NewEpisodesFragment;
import de.danoeh.antennapod.fragment.PlaybackHistoryFragment;
import de.danoeh.antennapod.fragment.QueueFragment;
@@ -94,6 +95,9 @@ public class NavListAdapter extends BaseAdapter
case NewEpisodesFragment.TAG:
icon = R.attr.ic_new;
break;
+ case EpisodesFragment.TAG:
+ icon = R.attr.feed;
+ break;
case AllEpisodesFragment.TAG:
icon = R.attr.feed;
break;
@@ -212,7 +216,7 @@ public class NavListAdapter extends BaseAdapter
} else {
holder.count.setVisibility(View.GONE);
}
- } else if (tags.get(position).equals(NewEpisodesFragment.TAG)) {
+ } else if (tags.get(position).equals(EpisodesFragment.TAG)) {
int unreadItems = itemAccess.getNumberOfNewItems();
if (unreadItems > 0) {
holder.count.setVisibility(View.VISIBLE);
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 b0ccbfbea..6c2271d79 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/NewEpisodesFragment.java
@@ -63,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
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 {