From d6e2b869e9194bfffd1ed65d500ac5ed70f88e89 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 19 Jun 2012 19:12:01 +0400 Subject: [PATCH] find fragments by tags, misc stuff --- src/org/fox/ttrss/ArticlePager.java | 2 +- src/org/fox/ttrss/HeadlinesFragment.java | 5 +- src/org/fox/ttrss/MainActivity.java | 79 ++++++++++++------------ src/org/fox/ttrss/OnlineServices.java | 4 +- 4 files changed, 48 insertions(+), 42 deletions(-) diff --git a/src/org/fox/ttrss/ArticlePager.java b/src/org/fox/ttrss/ArticlePager.java index cc47128b..6ab1ecbb 100644 --- a/src/org/fox/ttrss/ArticlePager.java +++ b/src/org/fox/ttrss/ArticlePager.java @@ -96,7 +96,7 @@ public class ArticlePager extends Fragment { public void onAttach(Activity activity) { super.onAttach(activity); - m_hf = (HeadlinesFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.headlines_fragment); + m_hf = (HeadlinesFragment) getActivity().getSupportFragmentManager().findFragmentByTag(MainActivity.FRAG_HEADLINES); m_onlineServices = (OnlineServices)activity; } diff --git a/src/org/fox/ttrss/HeadlinesFragment.java b/src/org/fox/ttrss/HeadlinesFragment.java index b26fab42..a64c94b0 100644 --- a/src/org/fox/ttrss/HeadlinesFragment.java +++ b/src/org/fox/ttrss/HeadlinesFragment.java @@ -92,6 +92,10 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, return m_selectedArticles; } + public HeadlinesFragment(Feed feed) { + m_feed = feed; + } + @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { @@ -150,7 +154,6 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, super.onAttach(activity); m_prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); m_onlineServices = (OnlineServices) activity; - m_feed = m_onlineServices.getActiveFeed(); m_combinedMode = m_prefs.getBoolean("combined_mode", false); } diff --git a/src/org/fox/ttrss/MainActivity.java b/src/org/fox/ttrss/MainActivity.java index 64180369..612289a3 100644 --- a/src/org/fox/ttrss/MainActivity.java +++ b/src/org/fox/ttrss/MainActivity.java @@ -64,6 +64,11 @@ import com.google.gson.reflect.TypeToken; public class MainActivity extends FragmentActivity implements OnlineServices { private final String TAG = this.getClass().getSimpleName(); + protected final static String FRAG_HEADLINES = "headlines"; + protected final static String FRAG_ARTICLE = "article"; + protected final static String FRAG_FEEDS = "feeds"; + protected final static String FRAG_CATS = "cats"; + private SharedPreferences m_prefs; private String m_themeName = ""; private String m_sessionId; @@ -147,7 +152,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { public void updateHeadlines() { HeadlinesFragment frag = (HeadlinesFragment) getSupportFragmentManager() - .findFragmentById(R.id.headlines_fragment); + .findFragmentByTag(FRAG_HEADLINES); if (frag != null) { frag.notifyUpdated(); } @@ -365,7 +370,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { private synchronized void refreshFeeds() { if (m_sessionId != null) { FeedsFragment frag = (FeedsFragment) getSupportFragmentManager() - .findFragmentById(R.id.feeds_fragment); + .findFragmentByTag(FRAG_FEEDS); Log.d(TAG, "Refreshing feeds..."); @@ -378,7 +383,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { private synchronized void refreshHeadlines() { if (m_sessionId != null) { HeadlinesFragment frag = (HeadlinesFragment) getSupportFragmentManager() - .findFragmentById(R.id.headlines_fragment); + .findFragmentByTag(FRAG_HEADLINES); Log.d(TAG, "Refreshing headlines..."); @@ -391,7 +396,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { private synchronized void refreshCategories() { if (m_sessionId != null) { FeedCategoriesFragment frag = (FeedCategoriesFragment) getSupportFragmentManager() - .findFragmentById(R.id.cats_fragment); + .findFragmentByTag(FRAG_CATS); Log.d(TAG, "Refreshing categories..."); @@ -768,7 +773,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { m_activeCategory = null; FeedCategoriesFragment cf = (FeedCategoriesFragment) getSupportFragmentManager() - .findFragmentById(R.id.cats_fragment); + .findFragmentByTag(FRAG_CATS); if (cf != null) { cf.setSelectedCategory(null); @@ -780,7 +785,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { private void deselectAllArticles() { HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager() - .findFragmentById(R.id.headlines_fragment); + .findFragmentByTag(FRAG_HEADLINES); if (hf != null) { ArticleList selected = hf.getSelectedArticles(); @@ -810,11 +815,11 @@ public class MainActivity extends FragmentActivity implements OnlineServices { .setVisibility(View.VISIBLE); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - ft.replace(R.id.headlines_fragment, new HeadlinesFragment()); + ft.replace(R.id.headlines_fragment, new HeadlinesFragment(m_activeFeed), FRAG_HEADLINES); ft.commit(); FeedCategoriesFragment cf = (FeedCategoriesFragment) getSupportFragmentManager() - .findFragmentById(R.id.cats_fragment); + .findFragmentByTag(FRAG_CATS); if (cf != null) { cf.setSelectedCategory(null); @@ -828,14 +833,14 @@ public class MainActivity extends FragmentActivity implements OnlineServices { View.VISIBLE); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - ft.replace(R.id.headlines_fragment, new HeadlinesFragment()); + ft.replace(R.id.headlines_fragment, new HeadlinesFragment(m_activeFeed), FRAG_HEADLINES); ft.commit(); refreshFeeds(); } FeedsFragment ff = (FeedsFragment) getSupportFragmentManager() - .findFragmentById(R.id.feeds_fragment); + .findFragmentByTag(FRAG_FEEDS); if (ff != null) { ff.setSelectedFeed(null); @@ -867,7 +872,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { View.INVISIBLE); FeedsFragment ff = (FeedsFragment) getSupportFragmentManager() - .findFragmentById(R.id.feeds_fragment); + .findFragmentByTag(FRAG_FEEDS); if (ff != null) { ff.setSelectedFeed(null); @@ -876,7 +881,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { m_activeFeed = null; FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - ft.replace(R.id.headlines_fragment, new HeadlinesFragment()); + ft.replace(R.id.headlines_fragment, new HeadlinesFragment(m_activeFeed), FRAG_HEADLINES); ft.commit(); refreshFeeds(); @@ -892,7 +897,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { @Override public boolean onOptionsItemSelected(MenuItem item) { final HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager() - .findFragmentById(R.id.headlines_fragment); + .findFragmentByTag(FRAG_HEADLINES); switch (item.getItemId()) { case R.id.donate: @@ -1288,7 +1293,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { m_selectedArticle = null; FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - ft.replace(R.id.article_fragment, new DummyFragment()); + ft.replace(R.id.article_fragment, new DummyFragment(), FRAG_ARTICLE); ft.commit(); initMainMenu(); @@ -1315,7 +1320,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { m_menu.setGroupVisible(R.id.menu_group_logged_out, false); HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager() - .findFragmentById(R.id.headlines_fragment); + .findFragmentByTag(FRAG_HEADLINES); int numSelected = 0; @@ -1347,7 +1352,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { @Override public boolean onQueryTextSubmit(String query) { HeadlinesFragment frag = (HeadlinesFragment) getSupportFragmentManager() - .findFragmentById(R.id.headlines_fragment); + .findFragmentByTag(FRAG_HEADLINES); if (frag != null) { frag.setSearchQuery(query); @@ -1361,7 +1366,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { public boolean onQueryTextChange(String newText) { if (newText.equals("") && !newText.equals(this.query)) { HeadlinesFragment frag = (HeadlinesFragment) getSupportFragmentManager() - .findFragmentById(R.id.headlines_fragment); + .findFragmentByTag(FRAG_HEADLINES); if (frag != null) { frag.setSearchQuery(newText); @@ -1524,12 +1529,12 @@ public class MainActivity extends FragmentActivity implements OnlineServices { if (m_enableCats) { FeedCategoriesFragment frag = new FeedCategoriesFragment(); - ft.replace(R.id.cats_fragment, frag); + ft.replace(R.id.cats_fragment, frag, FRAG_CATS); findViewById(R.id.cats_fragment).setVisibility(View.VISIBLE); } else { FeedsFragment frag = new FeedsFragment(); - ft.replace(R.id.feeds_fragment, frag); + ft.replace(R.id.feeds_fragment, frag, FRAG_FEEDS); findViewById(R.id.feeds_fragment).setVisibility(View.VISIBLE); } @@ -1632,15 +1637,15 @@ public class MainActivity extends FragmentActivity implements OnlineServices { } } - HeadlinesFragment hf = new HeadlinesFragment(); + HeadlinesFragment hf = new HeadlinesFragment(feed); FragmentTransaction ft = getSupportFragmentManager() .beginTransaction(); - ft.replace(R.id.headlines_fragment, hf); + ft.replace(R.id.headlines_fragment, hf, FRAG_HEADLINES); ft.commit(); } else { HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager() - .findFragmentById(R.id.headlines_fragment); + .findFragmentByTag(FRAG_HEADLINES); if (hf != null) { hf.refresh(true); } @@ -1657,11 +1662,11 @@ public class MainActivity extends FragmentActivity implements OnlineServices { m_activeCategory = cat; - FeedsFragment frag = new FeedsFragment(); + FeedsFragment frag = new FeedsFragment(cat); FragmentTransaction ft = getSupportFragmentManager() .beginTransaction(); - ft.replace(R.id.feeds_fragment, frag); + ft.replace(R.id.feeds_fragment, frag, FRAG_FEEDS); ft.commit(); } else { if (m_smallScreenMode) @@ -1680,11 +1685,11 @@ public class MainActivity extends FragmentActivity implements OnlineServices { } } - HeadlinesFragment frag = new HeadlinesFragment(); + HeadlinesFragment frag = new HeadlinesFragment(m_activeFeed); FragmentTransaction ft = getSupportFragmentManager() .beginTransaction(); - ft.replace(R.id.headlines_fragment, frag); + ft.replace(R.id.headlines_fragment, frag, FRAG_HEADLINES); ft.commit(); } @@ -1703,7 +1708,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { initMainMenu(); HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager() - .findFragmentById(R.id.headlines_fragment); + .findFragmentByTag(FRAG_HEADLINES); if (hf != null) { hf.setActiveArticleId(article.id); @@ -1727,7 +1732,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { } FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - ft.replace(R.id.article_fragment, frag); + ft.replace(R.id.article_fragment, frag, FRAG_ARTICLE); ft.commit(); if (m_smallScreenMode) { @@ -1740,13 +1745,11 @@ public class MainActivity extends FragmentActivity implements OnlineServices { } } - @Override - public Feed getActiveFeed() { + private Feed getActiveFeed() { return m_activeFeed; } - @Override - public FeedCategory getActiveCategory() { + private FeedCategory getActiveCategory() { return m_activeCategory; } @@ -1822,11 +1825,11 @@ public class MainActivity extends FragmentActivity implements OnlineServices { .getMenuInfo(); HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager() - .findFragmentById(R.id.headlines_fragment); + .findFragmentByTag(FRAG_HEADLINES); FeedsFragment ff = (FeedsFragment) getSupportFragmentManager() - .findFragmentById(R.id.feeds_fragment); + .findFragmentByTag(FRAG_FEEDS); FeedCategoriesFragment cf = (FeedCategoriesFragment) getSupportFragmentManager() - .findFragmentById(R.id.cats_fragment); + .findFragmentByTag(FRAG_CATS); switch (item.getItemId()) { case R.id.article_link_copy: @@ -1984,7 +1987,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { @Override public Article getRelativeArticle(Article article, RelativeArticle ra) { HeadlinesFragment frag = (HeadlinesFragment) getSupportFragmentManager() - .findFragmentById(R.id.headlines_fragment); + .findFragmentByTag(FRAG_HEADLINES); if (frag != null) { ArticleList articles = frag.getAllArticles(); for (int i = 0; i < articles.size(); i++) { @@ -2018,7 +2021,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { case KeyEvent.KEYCODE_VOLUME_DOWN: if (action == KeyEvent.ACTION_DOWN) { HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager() - .findFragmentById(R.id.headlines_fragment); + .findFragmentByTag(FRAG_HEADLINES); if (hf != null && m_activeFeed != null) { Article base = hf.getArticleById(hf.getActiveArticleId()); @@ -2045,7 +2048,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices { case KeyEvent.KEYCODE_VOLUME_UP: if (action == KeyEvent.ACTION_UP) { HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager() - .findFragmentById(R.id.headlines_fragment); + .findFragmentByTag(FRAG_HEADLINES); if (hf != null && m_activeFeed != null) { Article base = hf.getArticleById(hf.getActiveArticleId()); diff --git a/src/org/fox/ttrss/OnlineServices.java b/src/org/fox/ttrss/OnlineServices.java index 3f61276a..7b3916da 100644 --- a/src/org/fox/ttrss/OnlineServices.java +++ b/src/org/fox/ttrss/OnlineServices.java @@ -20,8 +20,8 @@ public interface OnlineServices { public void initMainMenu(); public void login(); - public Feed getActiveFeed(); - public FeedCategory getActiveCategory(); + //public Feed getActiveFeed(); + //public FeedCategory getActiveCategory(); public String getSessionId(); public boolean getUnreadArticlesOnly(); public boolean isSmallScreen();