diff options
author | Andrew Dolgov <[email protected]> | 2012-09-19 16:59:08 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2012-09-19 16:59:08 +0400 |
commit | d70e6463ad7d48a24ede3da7ca98d675823e9999 (patch) | |
tree | 070781c94e5b28804dd70a96be093c6ab773ef79 | |
parent | d733127fa1531afad6b2f8472ef0ca64cb8b2a0f (diff) |
implement default browsing of articles
-rw-r--r-- | res/menu/category_menu.xml | 4 | ||||
-rw-r--r-- | res/menu/feed_menu.xml | 8 | ||||
-rw-r--r-- | res/values/arrays.xml | 10 | ||||
-rw-r--r-- | res/values/strings.xml | 3 | ||||
-rw-r--r-- | res/xml/preferences.xml | 9 | ||||
-rw-r--r-- | src/org/fox/ttrss/ArticlePager.java | 14 | ||||
-rw-r--r-- | src/org/fox/ttrss/FeedCategoriesFragment.java | 19 | ||||
-rw-r--r-- | src/org/fox/ttrss/FeedsActivity.java | 27 | ||||
-rw-r--r-- | 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,6 +1,10 @@ <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item + android:id="@+id/browse_headlines" + android:title="@string/category_browse_headlines"/> + + <item android:id="@+id/browse_articles" android:title="@string/category_browse_articles"/> 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,6 +1,14 @@ <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item + android:id="@+id/browse_headlines" + android:title="@string/category_browse_headlines"/> + + <item + android:id="@+id/browse_articles" + android:title="@string/category_browse_articles"/> + + <item android:id="@+id/catchup_feed" android:title="@string/catchup"/> 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 @@ <item>1</item> <item>2</item> </string-array> - + <string-array name="pref_view_mode_names"> + <item>@string/category_browse_headlines</item> + <item>@string/category_browse_articles</item> + </string-array> + <string-array name="pref_view_mode_values"> + <item>HEADLINES</item> + <item>ARTICLES</item> + </string-array> + </resources>
\ 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 @@ <string name="update_headlines">Refresh</string> <string name="attachment_share">Share</string> <string name="error_network_unavailable">Error: network unavailable</string> + <string name="category_browse_headlines">Browse headlines</string> + <string name="pref_default_view_mode">Default feed view</string> + <string name="pref_default_view_mode_long">Which feed view to open by default on smartphones</string> </resources>
\ 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" />
+
+ <ListPreference
+ android:defaultValue="HEADLINES"
+ android:entries="@array/pref_view_mode_names"
+ android:entryValues="@array/pref_view_mode_values"
+ android:key="default_view_mode"
+ android:summary="@string/pref_default_view_mode_long"
+ android:title="@string/pref_default_view_mode" />
+
</PreferenceCategory>
<PreferenceCategory android:title="@string/offline_mode" >
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 @@ -95,6 +95,15 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe 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) {
m_activity.onCatSelected(cat, true);
//setSelectedCategory(cat);
}
@@ -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())
|