From 1d38db32d5cbb1a86276600bc06f660f9c521ec9 Mon Sep 17 00:00:00 2001 From: Tom Hennen Date: Sat, 5 Sep 2015 14:22:28 -0400 Subject: episodes fragment with tabs. layout of item info is messed up for some reason. --- .../antennapod/fragment/EpisodesFragment.java | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java') 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..698e1660b --- /dev/null +++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java @@ -0,0 +1,49 @@ +package de.danoeh.antennapod.fragment; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentTabHost; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import de.danoeh.antennapod.R; + +public class EpisodesFragment extends Fragment { + + public static final String TAG = "EpisodesFragment"; + + private FragmentTabHost mTabHost; + + //Mandatory Constructor + public EpisodesFragment() { + } + + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setRetainInstance(true); + + } + + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + + View rootView = inflater.inflate(R.layout.episodes_fragment, container, false); + + + mTabHost = (FragmentTabHost) rootView.findViewById(android.R.id.tabhost); + mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent); + + + mTabHost.addTab(mTabHost.newTabSpec(NewEpisodesFragment.TAG).setIndicator( + getResources().getString(R.string.new_episodes_label)), + NewEpisodesFragment.class, null); + + mTabHost.addTab(mTabHost.newTabSpec(AllEpisodesFragment.TAG).setIndicator( + getResources().getString(R.string.all_episodes_label)), + AllEpisodesFragment.class, null); + + return rootView; + } + +} -- cgit v1.2.3 From 9fe8750ecba38e2c2033d8ef964775a40ecee921 Mon Sep 17 00:00:00 2001 From: Tom Hennen Date: Sat, 5 Sep 2015 17:17:05 -0400 Subject: changed method of tab use --- .../antennapod/fragment/EpisodesFragment.java | 23 ++++++++-------------- 1 file changed, 8 insertions(+), 15 deletions(-) (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java') 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 698e1660b..a9ccd4cc1 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java @@ -1,20 +1,21 @@ package de.danoeh.antennapod.fragment; import android.os.Bundle; +import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTabHost; +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.adapter.EpisodesPagerAdapter; public class EpisodesFragment extends Fragment { public static final String TAG = "EpisodesFragment"; - private FragmentTabHost mTabHost; - //Mandatory Constructor public EpisodesFragment() { } @@ -22,26 +23,18 @@ public class EpisodesFragment extends Fragment { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); - } public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.episodes_fragment, container, false); + ViewPager pager = (ViewPager)rootView.findViewById(R.id.viewpager); + pager.setAdapter(new EpisodesPagerAdapter(getChildFragmentManager(), getActivity())); - - mTabHost = (FragmentTabHost) rootView.findViewById(android.R.id.tabhost); - mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent); - - - mTabHost.addTab(mTabHost.newTabSpec(NewEpisodesFragment.TAG).setIndicator( - getResources().getString(R.string.new_episodes_label)), - NewEpisodesFragment.class, null); - - mTabHost.addTab(mTabHost.newTabSpec(AllEpisodesFragment.TAG).setIndicator( - getResources().getString(R.string.all_episodes_label)), - AllEpisodesFragment.class, null); + // Give the TabLayout the ViewPager + TabLayout tabLayout = (TabLayout) rootView.findViewById(R.id.sliding_tabs); + tabLayout.setupWithViewPager(pager); return rootView; } -- cgit v1.2.3 From c63423c55829100d4579f6b251d2bb3aeee9221d Mon Sep 17 00:00:00 2001 From: Tom Hennen Date: Sat, 5 Sep 2015 17:41:37 -0400 Subject: Collapsed All and New Episodes in to 'Episodes' using tabs This is to make room for 'Favorites' in the future. I kept the counter for 'New Episodes' and am displaying it next to 'Episodes'. --- .../antennapod/fragment/EpisodesFragment.java | 37 +++++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java') 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 a9ccd4cc1..bab1c53c3 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java @@ -1,20 +1,25 @@ package de.danoeh.antennapod.fragment; +import android.content.Context; +import android.content.SharedPreferences; import android.os.Bundle; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentTabHost; 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; import de.danoeh.antennapod.adapter.EpisodesPagerAdapter; public class EpisodesFragment extends Fragment { public static final String TAG = "EpisodesFragment"; + private static final String PREF_LAST_TAB_POSITION = "tab_position"; + private TabLayout tabLayout; + private ViewPager viewPager; //Mandatory Constructor public EpisodesFragment() { @@ -27,16 +32,38 @@ public class EpisodesFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + super.onCreateView(inflater, container, savedInstanceState); + ((MainActivity) getActivity()).getSupportActionBar().setTitle(R.string.episodes_label); View rootView = inflater.inflate(R.layout.episodes_fragment, container, false); - ViewPager pager = (ViewPager)rootView.findViewById(R.id.viewpager); - pager.setAdapter(new EpisodesPagerAdapter(getChildFragmentManager(), getActivity())); + viewPager = (ViewPager)rootView.findViewById(R.id.viewpager); + viewPager.setAdapter(new EpisodesPagerAdapter(getChildFragmentManager(), getActivity())); // Give the TabLayout the ViewPager - TabLayout tabLayout = (TabLayout) rootView.findViewById(R.id.sliding_tabs); - tabLayout.setupWithViewPager(pager); + 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); + } + } -- cgit v1.2.3 From 661fcc6fd4b424772c6c85615132c2aaa9d04457 Mon Sep 17 00:00:00 2001 From: Tom Hennen Date: Sat, 5 Sep 2015 18:57:00 -0400 Subject: fix messed up ItemFragment toolbar --- app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java | 1 + 1 file changed, 1 insertion(+) (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java') 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 bab1c53c3..645cd1038 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java @@ -33,6 +33,7 @@ public class EpisodesFragment extends Fragment { 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.episodes_fragment, container, false); -- cgit v1.2.3 From 6ae33e1c5d5b90aef86a7f4bc437acd74f008137 Mon Sep 17 00:00:00 2001 From: Tom Hennen Date: Sun, 6 Sep 2015 09:03:09 -0400 Subject: normalized how we were using tab layouts between different fragments. --- .../antennapod/fragment/EpisodesFragment.java | 51 ++++++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java') 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 645cd1038..15a78d7e5 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java @@ -2,9 +2,12 @@ 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; @@ -12,12 +15,17 @@ import android.view.ViewGroup; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; -import de.danoeh.antennapod.adapter.EpisodesPagerAdapter; 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; @@ -36,9 +44,9 @@ public class EpisodesFragment extends Fragment { setHasOptionsMenu(true); ((MainActivity) getActivity()).getSupportActionBar().setTitle(R.string.episodes_label); - View rootView = inflater.inflate(R.layout.episodes_fragment, container, false); + View rootView = inflater.inflate(R.layout.pager_fragment, container, false); viewPager = (ViewPager)rootView.findViewById(R.id.viewpager); - viewPager.setAdapter(new EpisodesPagerAdapter(getChildFragmentManager(), getActivity())); + viewPager.setAdapter(new EpisodesPagerAdapter(getChildFragmentManager(), getResources())); // Give the TabLayout the ViewPager tabLayout = (TabLayout) rootView.findViewById(R.id.sliding_tabs); @@ -67,4 +75,41 @@ public class EpisodesFragment extends Fragment { 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_label); + case POS_NEW_EPISODES: + return resources.getString(R.string.new_episodes_label); + default: + return super.getPageTitle(position); + } + } + } } -- cgit v1.2.3 From b7ad88d70ff03880c4613608dc6a40d198133430 Mon Sep 17 00:00:00 2001 From: Tom Hennen Date: Mon, 7 Sep 2015 21:21:53 -0400 Subject: tabs fill all space and are remembered --- app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java') 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 15a78d7e5..231c161a2 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java @@ -104,9 +104,9 @@ public class EpisodesFragment extends Fragment { public CharSequence getPageTitle(int position) { switch (position) { case POS_ALL_EPISODES: - return resources.getString(R.string.all_episodes_label); + return resources.getString(R.string.all_episodes_short_label); case POS_NEW_EPISODES: - return resources.getString(R.string.new_episodes_label); + return resources.getString(R.string.new_episodes_short_label); default: return super.getPageTitle(position); } -- cgit v1.2.3 From d3d59c5c06287380d23bd74f0523f8bf67c12f19 Mon Sep 17 00:00:00 2001 From: Tom Hennen Date: Mon, 7 Sep 2015 21:29:24 -0400 Subject: update re-use old string, update tests --- app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java') 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 231c161a2..e234d95ad 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java @@ -106,7 +106,7 @@ public class EpisodesFragment extends Fragment { case POS_ALL_EPISODES: return resources.getString(R.string.all_episodes_short_label); case POS_NEW_EPISODES: - return resources.getString(R.string.new_episodes_short_label); + return resources.getString(R.string.new_label); default: return super.getPageTitle(position); } -- cgit v1.2.3 From 1993f779e8b25507a4096effd72618937c2f4ad0 Mon Sep 17 00:00:00 2001 From: Tom Hennen Date: Sat, 19 Sep 2015 14:40:01 -0400 Subject: basic favorite functionality --- .../main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java') 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 e234d95ad..f23981935 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java @@ -23,7 +23,8 @@ public class EpisodesFragment extends Fragment { public static final int POS_NEW_EPISODES = 0; public static final int POS_ALL_EPISODES = 1; - public static final int TOTAL_COUNT = 2; + public static final int POS_FAV_EPISODES = 2; + public static final int TOTAL_COUNT = 3; private TabLayout tabLayout; @@ -91,6 +92,8 @@ public class EpisodesFragment extends Fragment { return new AllEpisodesFragment(); case POS_NEW_EPISODES: return new NewEpisodesFragment(); + case POS_FAV_EPISODES: + return new FavoriteEpisodesFragment(); } return null; } @@ -107,6 +110,8 @@ public class EpisodesFragment extends Fragment { return resources.getString(R.string.all_episodes_short_label); case POS_NEW_EPISODES: return resources.getString(R.string.new_label); + case POS_FAV_EPISODES: + return resources.getString(R.string.favorite_episodes_label); default: return super.getPageTitle(position); } -- cgit v1.2.3