From d70e6463ad7d48a24ede3da7ca98d675823e9999 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 19 Sep 2012 16:59:08 +0400 Subject: implement default browsing of articles --- res/menu/category_menu.xml | 4 ++++ res/menu/feed_menu.xml | 8 +++++++ res/values/arrays.xml | 10 ++++++++- res/values/strings.xml | 3 +++ res/xml/preferences.xml | 9 ++++++++ src/org/fox/ttrss/ArticlePager.java | 14 +++++++++++-- src/org/fox/ttrss/FeedCategoriesFragment.java | 19 ++++++++++++++++- src/org/fox/ttrss/FeedsActivity.java | 27 ++++++++++++++++-------- src/org/fox/ttrss/FeedsFragment.java | 30 +++++++++++++++++++++++++-- 9 files changed, 109 insertions(+), 15 deletions(-) diff --git a/res/menu/category_menu.xml b/res/menu/category_menu.xml index a1e5f81b..69f26554 100644 --- a/res/menu/category_menu.xml +++ b/res/menu/category_menu.xml @@ -1,5 +1,9 @@ + + diff --git a/res/menu/feed_menu.xml b/res/menu/feed_menu.xml index ff58a881..df8e4862 100644 --- a/res/menu/feed_menu.xml +++ b/res/menu/feed_menu.xml @@ -1,5 +1,13 @@ + + + + diff --git a/res/values/arrays.xml b/res/values/arrays.xml index ef479753..961bd955 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -17,5 +17,13 @@ 1 2 - + + @string/category_browse_headlines + @string/category_browse_articles + + + HEADLINES + ARTICLES + + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 84fd1ed5..fec2ef4c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -131,4 +131,7 @@ Refresh Share Error: network unavailable + Browse headlines + Default feed view + Which feed view to open by default on smartphones \ No newline at end of file diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index d2bae786..400d8a6d 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -98,6 +98,15 @@ android:defaultValue="true" android:key="justify_article_text" android:title="@string/justify_article_text" /> + + + diff --git a/src/org/fox/ttrss/ArticlePager.java b/src/org/fox/ttrss/ArticlePager.java index 35779843..0608679b 100644 --- a/src/org/fox/ttrss/ArticlePager.java +++ b/src/org/fox/ttrss/ArticlePager.java @@ -104,10 +104,11 @@ public class ArticlePager extends Fragment { if (article != null) { m_article = article; - if (article.unread) { + /* if (article.unread) { article.unread = false; m_activity.saveArticleUnread(article); - } + } */ + m_listener.onArticleSelected(article, false); //Log.d(TAG, "Page #" + position + "/" + m_adapter.getCount()); @@ -147,6 +148,15 @@ public class ArticlePager extends Fragment { if (result != null) { m_adapter.notifyDataSetChanged(); + + if (m_article.id == 0) { + if (m_articles.size() > 0) { + Log.d(TAG, "blank id on refresh"); + m_article = m_articles.get(0); + m_listener.onArticleSelected(m_article, false); + } + } + } else { if (m_lastError == ApiError.LOGIN_FAILED) { m_activity.login(); diff --git a/src/org/fox/ttrss/FeedCategoriesFragment.java b/src/org/fox/ttrss/FeedCategoriesFragment.java index 64561cf9..ac5c0046 100644 --- a/src/org/fox/ttrss/FeedCategoriesFragment.java +++ b/src/org/fox/ttrss/FeedCategoriesFragment.java @@ -92,6 +92,15 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe switch (item.getItemId()) { case R.id.browse_articles: + if (true) { + FeedCategory cat = getCategoryAtPosition(info.position); + if (cat != null) { + m_activity.openFeedArticles(new Feed(cat.id, cat.title, true)); + //setSelectedCategory(cat); + } + } + return true; + case R.id.browse_headlines: if (true) { FeedCategory cat = getCategoryAtPosition(info.position); if (cat != null) { @@ -392,7 +401,15 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe if (list != null) { FeedCategory cat = (FeedCategory)list.getItemAtPosition(position); - m_activity.onCatSelected(cat); + + if ("ARTICLES".equals(m_prefs.getString("default_view_mode", "HEADLINES")) && + m_prefs.getBoolean("browse_cats_like_feeds", false)) { + + m_activity.openFeedArticles(new Feed(cat.id, cat.title, true)); + + } else { + m_activity.onCatSelected(cat); + } if (!m_activity.isSmallScreen()) m_selectedCat = cat; diff --git a/src/org/fox/ttrss/FeedsActivity.java b/src/org/fox/ttrss/FeedsActivity.java index fd01606c..e1126fe5 100644 --- a/src/org/fox/ttrss/FeedsActivity.java +++ b/src/org/fox/ttrss/FeedsActivity.java @@ -68,7 +68,7 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe ap.setSearchQuery(intent.getStringExtra("searchQuery")); - setTitle(intent.getStringExtra("feedTitle")); + setTitle(feed.title); } else { if (feed != null) { HeadlinesFragment hf = new HeadlinesFragment(feed); @@ -136,20 +136,14 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe } } - public void onFeedSelected(Feed feed) { GlobalState.getInstance().m_loadedArticles.clear(); if (isSmallScreen()) { - Intent intent = new Intent(FeedsActivity.this, FeedsActivity.class); intent.putExtra("feed", feed); - + startActivityForResult(intent, 0); - - //HeadlinesFragment hf = new HeadlinesFragment(feed); - //ft.replace(R.id.feeds_fragment, hf, FRAG_HEADLINES); - //ft.addToBackStack(null); } else { FragmentTransaction ft = getSupportFragmentManager() .beginTransaction(); @@ -240,6 +234,22 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe initMenu(); } + public void openFeedArticles(Feed feed) { + if (isSmallScreen()) { + Intent intent = new Intent(FeedsActivity.this, FeedsActivity.class); + + GlobalState.getInstance().m_activeFeed = feed; + GlobalState.getInstance().m_loadedArticles.clear(); + + intent.putExtra("feed", feed); + intent.putExtra("article", new Article()); + startActivityForResult(intent, 0); + + } else { + + } + } + public void onArticleSelected(Article article, boolean open) { if (article.unread) { article.unread = false; @@ -252,7 +262,6 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe if (isSmallScreen()) { Intent intent = new Intent(FeedsActivity.this, FeedsActivity.class); - intent.putExtra("feedTitle", hf.getFeed().title); intent.putExtra("feed", hf.getFeed()); intent.putExtra("article", article); intent.putExtra("searchQuery", hf.getSearchQuery()); diff --git a/src/org/fox/ttrss/FeedsFragment.java b/src/org/fox/ttrss/FeedsFragment.java index 1a82534f..a8284c76 100644 --- a/src/org/fox/ttrss/FeedsFragment.java +++ b/src/org/fox/ttrss/FeedsFragment.java @@ -20,6 +20,7 @@ import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; +import org.fox.ttrss.types.Article; import org.fox.ttrss.types.Feed; import org.fox.ttrss.types.FeedCategory; import org.fox.ttrss.types.FeedList; @@ -136,6 +137,22 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); switch (item.getItemId()) { + case R.id.browse_articles: + if (true) { + Feed feed = getFeedAtPosition(info.position); + if (feed != null) { + m_activity.openFeedArticles(feed); + } + } + return true; + case R.id.browse_headlines: + if (true) { + Feed feed = getFeedAtPosition(info.position); + if (feed != null) { + m_activity.onFeedSelected(feed); + } + } + return true; case R.id.catchup_feed: if (true) { Feed feed = getFeedAtPosition(info.position); @@ -163,6 +180,11 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh if (feed != null) menu.setHeaderTitle(feed.title); + if (!m_activity.isSmallScreen()) { + menu.findItem(R.id.browse_headlines).setVisible(false); + menu.findItem(R.id.browse_feeds).setVisible(false); + } + super.onCreateContextMenu(menu, v, menuInfo); } @@ -239,8 +261,12 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh cat.title = feed.title; m_activity.onCatSelected(cat); - } else { - m_activity.onFeedSelected(feed); + } else { + if ("ARTICLES".equals(m_prefs.getString("default_view_mode", "HEADLINES"))) { + m_activity.openFeedArticles(feed); + } else { + m_activity.onFeedSelected(feed); + } } if (!m_activity.isSmallScreen()) -- cgit v1.2.3