diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2014-04-17 20:33:02 +0200 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2014-04-17 20:33:02 +0200 |
commit | 8b6f16b918a017426c953612a6a24d7471b5c831 (patch) | |
tree | 9353a6b51528a8dc21ae0d1078c4cf73f245dd6a /src/de/danoeh/antennapod/activity/MainActivity.java | |
parent | 628103de45194d7bb126b6fbaffda07b1b0a0ae7 (diff) | |
download | AntennaPod-8b6f16b918a017426c953612a6a24d7471b5c831.zip |
Added fragment for adding new podcasts
Diffstat (limited to 'src/de/danoeh/antennapod/activity/MainActivity.java')
-rw-r--r-- | src/de/danoeh/antennapod/activity/MainActivity.java | 62 |
1 files changed, 50 insertions, 12 deletions
diff --git a/src/de/danoeh/antennapod/activity/MainActivity.java b/src/de/danoeh/antennapod/activity/MainActivity.java index eb9d55f74..1a4138d35 100644 --- a/src/de/danoeh/antennapod/activity/MainActivity.java +++ b/src/de/danoeh/antennapod/activity/MainActivity.java @@ -31,7 +31,7 @@ import de.danoeh.antennapod.fragment.*; import de.danoeh.antennapod.preferences.UserPreferences; import de.danoeh.antennapod.storage.DBReader; import de.danoeh.antennapod.util.StorageUtils; -import de.danoeh.antennapod.util.ThemeUtils; +import org.apache.commons.lang3.StringUtils; import java.util.List; @@ -96,7 +96,6 @@ public class MainActivity extends ActionBarActivity { transaction.replace(R.id.playerFragment, externalPlayerFragment); - transaction.commit(); Fragment mainFragment = fm.findFragmentByTag("main"); @@ -105,7 +104,7 @@ public class MainActivity extends ActionBarActivity { transaction.replace(R.id.main_view, mainFragment); transaction.commit(); } else { - loadFragment(NavListAdapter.VIEW_TYPE_NAV, 0); + loadFragment(NavListAdapter.VIEW_TYPE_NAV, NavListAdapter.POS_NEW, null); } getSupportActionBar().setDisplayHomeAsUpEnabled(true); @@ -123,24 +122,33 @@ public class MainActivity extends ActionBarActivity { return getSupportActionBar(); } - private void loadFragment(int viewType, int relPos) { + private void loadFragment(int viewType, int relPos, Bundle args) { FragmentManager fragmentManager = getSupportFragmentManager(); + // clear back stack + for (int i = 0; i < fragmentManager.getBackStackEntryCount(); i++) { + fragmentManager.popBackStack(); + } + FragmentTransaction fT = fragmentManager.beginTransaction(); Fragment fragment = null; if (viewType == NavListAdapter.VIEW_TYPE_NAV) { switch (relPos) { - case 0: + case NavListAdapter.POS_NEW: fragment = new NewEpisodesFragment(); break; - case 1: + case NavListAdapter.POS_QUEUE: fragment = new QueueFragment(); break; - case 2: + case NavListAdapter.POS_DOWNLOADS: fragment = new DownloadsFragment(); break; - case 3: + case NavListAdapter.POS_HISTORY: fragment = new PlaybackHistoryFragment(); break; + case NavListAdapter.POS_ADD: + fragment = new AddFeedFragment(); + break; + } currentTitle = getString(NavListAdapter.NAV_TITLES[relPos]); @@ -151,18 +159,30 @@ public class MainActivity extends ActionBarActivity { } if (fragment != null) { - fT.replace(R.id.main_view, fragment, "main"); + if (args != null) { + fragment.setArguments(args); + } + fT.replace(R.id.main_view, fragment, "main");fragmentManager.popBackStack(); } fT.commit(); } + public void loadChildFragment(Fragment fragment) { + if (fragment == null) throw new IllegalArgumentException("fragment = null"); + FragmentManager fm = getSupportFragmentManager(); + fm.beginTransaction() + .replace(R.id.main_view, fragment, "main") + .addToBackStack(null) + .commit(); + } + private AdapterView.OnItemClickListener navListClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { int viewType = parent.getAdapter().getItemViewType(position); if (viewType != NavListAdapter.VIEW_TYPE_SECTION_DIVIDER && position != selectedNavListIndex) { int relPos = (viewType == NavListAdapter.VIEW_TYPE_NAV) ? position : position - NavListAdapter.SUBSCRIPTION_OFFSET; - loadFragment(viewType, relPos); + loadFragment(viewType, relPos, null); selectedNavListIndex = position; navAdapter.notifyDataSetChanged(); } @@ -207,6 +227,18 @@ public class MainActivity extends ActionBarActivity { super.onResume(); StorageUtils.checkStorageAvailability(this); EventDistributor.getInstance().register(contentUpdate); + + Intent intent = getIntent(); + if (StringUtils.equals(intent.getAction(), Intent.ACTION_SEND)) { + String extra = intent.getStringExtra(Intent.EXTRA_TEXT); + if (extra != null) { + Bundle args = new Bundle(); + args.putString(AddFeedFragment.ARG_FEED_URL, extra); + loadFragment(NavListAdapter.VIEW_TYPE_NAV, NavListAdapter.POS_ADD, args); + selectedNavListIndex = NavListAdapter.POS_ADD; + navAdapter.notifyDataSetChanged(); + } + } } @Override @@ -335,6 +367,12 @@ public class MainActivity extends ActionBarActivity { static final int VIEW_TYPE_SECTION_DIVIDER = 1; static final int VIEW_TYPE_SUBSCRIPTION = 2; + static final int POS_NEW = 0, + POS_QUEUE = 1, + POS_DOWNLOADS = 2, + POS_HISTORY = 3, + POS_ADD = 4; + static final int[] NAV_TITLES = {R.string.new_episodes_label, R.string.queue_label, R.string.downloads_label, R.string.playback_history_label, R.string.add_feed_label}; @@ -393,9 +431,9 @@ public class MainActivity extends ActionBarActivity { if (viewType == VIEW_TYPE_NAV) { v = getNavView((String) getItem(position), position, convertView, parent); } else if (viewType == VIEW_TYPE_SECTION_DIVIDER) { - v = getSectionDividerView((String) getItem(position), position, convertView, parent); + v = getSectionDividerView((String) getItem(position), position, convertView, parent); } else { - v = getFeedView(position - SUBSCRIPTION_OFFSET, convertView, parent); + v = getFeedView(position - SUBSCRIPTION_OFFSET, convertView, parent); } if (v != null) { TextView txtvTitle = (TextView) v.findViewById(R.id.txtvTitle); |