From c580d8225a0ddb3596ff177cd457db2c6ffee4bf Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 16 Sep 2012 22:13:32 +0400 Subject: properly restore state when going back from headlinesactivity --- src/org/fox/ttrss/ArticlePager.java | 2 +- src/org/fox/ttrss/HeadlinesActivity.java | 12 +++++++++++- src/org/fox/ttrss/HeadlinesFragment.java | 20 ++++++++++++++++---- src/org/fox/ttrss/TinyApplication.java | 6 ++---- 4 files changed, 30 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/org/fox/ttrss/ArticlePager.java b/src/org/fox/ttrss/ArticlePager.java index 3a78c338..f9f7b1bd 100644 --- a/src/org/fox/ttrss/ArticlePager.java +++ b/src/org/fox/ttrss/ArticlePager.java @@ -123,7 +123,7 @@ public class ArticlePager extends Fragment { m_onlineServices = (HeadlinesEventListener)activity; - m_articles = TinyApplication.getInstance().m_articles; + m_articles = TinyApplication.getInstance().m_loadedArticles; } @Override diff --git a/src/org/fox/ttrss/HeadlinesActivity.java b/src/org/fox/ttrss/HeadlinesActivity.java index ad1a691b..6da308ba 100644 --- a/src/org/fox/ttrss/HeadlinesActivity.java +++ b/src/org/fox/ttrss/HeadlinesActivity.java @@ -135,6 +135,13 @@ private final String TAG = this.getClass().getSimpleName(); @Override public void onArticleSelected(Article article, boolean open) { + if (article.unread) { + article.unread = false; + saveArticleUnread(article); + } + + //TinyApplication.getInstance().m_activeArticle = article; + if (open) { FragmentTransaction ft = getSupportFragmentManager() .beginTransaction(); @@ -145,11 +152,14 @@ private final String TAG = this.getClass().getSimpleName(); ft.replace(R.id.article_fragment, frag, FRAG_ARTICLE); //ft.addToBackStack(null); + + hf.notifyUpdated(); ft.commit(); } else { HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); - if (hf != null) hf.setActiveArticle(article); + hf.setActiveArticle(article); + initMenu(); } diff --git a/src/org/fox/ttrss/HeadlinesFragment.java b/src/org/fox/ttrss/HeadlinesFragment.java index 8b087fa8..a312c237 100644 --- a/src/org/fox/ttrss/HeadlinesFragment.java +++ b/src/org/fox/ttrss/HeadlinesFragment.java @@ -75,7 +75,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, private SharedPreferences m_prefs; private ArticleListAdapter m_adapter; - private ArticleList m_articles = TinyApplication.getInstance().m_articles; + private ArticleList m_articles = TinyApplication.getInstance().m_loadedArticles; private ArticleList m_selectedArticles = new ArticleList(); private HeadlinesEventListener m_listener; @@ -295,9 +295,17 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, public void onResume() { super.onResume(); - if (m_articles.size() == 0 || !m_feed.equals(TinyApplication.getInstance().m_feed)) { + /* if (TinyApplication.getInstance().m_activeArticle != null) { + m_activeArticle = TinyApplication.getInstance().m_activeArticle; + notifyUpdated(); + TinyApplication.getInstance().m_activeArticle = null; + } */ + + if (m_articles.size() == 0 || !m_feed.equals(TinyApplication.getInstance().m_activeFeed)) { refresh(false); - TinyApplication.getInstance().m_feed = m_feed; + TinyApplication.getInstance().m_activeFeed = m_feed; + } else { + notifyUpdated(); } m_activity.initMenu(); @@ -329,7 +337,11 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, m_listener.onArticleSelected(article); } - m_activeArticle = article; + // only set active article when it makes sense (in HeadlinesActivity) + if (getActivity().findViewById(R.id.article_fragment) != null) { + m_activeArticle = article; + } + m_adapter.notifyDataSetChanged(); } } diff --git a/src/org/fox/ttrss/TinyApplication.java b/src/org/fox/ttrss/TinyApplication.java index 135de75f..ddd06115 100644 --- a/src/org/fox/ttrss/TinyApplication.java +++ b/src/org/fox/ttrss/TinyApplication.java @@ -1,6 +1,5 @@ package org.fox.ttrss; -import org.fox.ttrss.types.Article; import org.fox.ttrss.types.ArticleList; import org.fox.ttrss.types.Feed; @@ -9,9 +8,8 @@ import android.app.Application; public class TinyApplication extends Application { private static TinyApplication m_singleton; - public ArticleList m_articles = new ArticleList(); - public Feed m_feed; - public Article m_selectedArticle; + public ArticleList m_loadedArticles = new ArticleList(); + public Feed m_activeFeed; public static TinyApplication getInstance(){ return m_singleton; -- cgit v1.2.3