summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2011-11-26 09:31:14 +0300
committerAndrew Dolgov <[email protected]>2011-11-26 09:31:14 +0300
commit10672b110fb20c40ec867f4ded87be8b6b826b17 (patch)
tree09b51edbcb338d23d0879fc162ff497280f396be
parenta950ebbddbfa4e01abad4b75d2a05c55ca9b667d (diff)
add preference to sort feeds by unread
-rw-r--r--AndroidManifest.xml2
-rw-r--r--res/values/strings.xml1
-rw-r--r--res/xml/preferences.xml4
-rw-r--r--src/org/fox/ttrss/FeedsFragment.java40
-rw-r--r--src/org/fox/ttrss/MainActivity.java9
5 files changed, 50 insertions, 6 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 34738f4c..3895ce87 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -3,7 +3,7 @@
package="org.fox.ttrss"
android:versionCode="4"
android:versionName="0.1.3">
- <uses-sdk android:minSdkVersion="10" />
+ <uses-sdk android:minSdkVersion="8" />
<supports-screens android:smallScreens="false" android:normalScreens="false" />
<uses-permission android:name="android.permission.INTERNET" />
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b951c291..84b0632c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -32,4 +32,5 @@
<string name="close_article">Close article</string>
<string name="share_article">Share article</string>
<string name="could_not_decode_content">Could not decode content (UnsupportedEncodingException)</string>
+ <string name="sort_feeds_by_unread">Sort feeds by unread count</string>
</resources>
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index 9f200274..10cb3cca 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -18,7 +18,9 @@
android:key="theme"
android:defaultValue="THEME_DARK"
android:entries="@array/pref_theme_names"
- android:entryValues="@array/pref_theme_values" android:summary="@string/pref_theme_long"/>
+ android:entryValues="@array/pref_theme_values" android:summary="@string/pref_theme_long"/>
+
+ <CheckBoxPreference android:title="@string/sort_feeds_by_unread" android:key="sort_feeds_by_unread"/>
</PreferenceCategory>
</PreferenceScreen> \ No newline at end of file
diff --git a/src/org/fox/ttrss/FeedsFragment.java b/src/org/fox/ttrss/FeedsFragment.java
index 9777f9b2..d4480dba 100644
--- a/src/org/fox/ttrss/FeedsFragment.java
+++ b/src/org/fox/ttrss/FeedsFragment.java
@@ -3,6 +3,7 @@ package org.fox.ttrss;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
@@ -39,6 +40,28 @@ public class FeedsFragment extends Fragment implements OnItemClickListener {
public void onFeedSelected(Feed feed);
}
+ class FeedUnreadComparator implements Comparator<Feed> {
+
+ @Override
+ public int compare(Feed a, Feed b) {
+ if (a.unread != b.unread)
+ return b.unread - a.unread;
+ else
+ return a.title.compareTo(b.title);
+ }
+
+ }
+
+
+ class FeedTitleComparator implements Comparator<Feed> {
+
+ @Override
+ public int compare(Feed a, Feed b) {
+ return a.title.compareTo(b.title);
+ }
+
+ }
+
public void showLoading(boolean show) {
View v = getView();
@@ -170,9 +193,7 @@ public class FeedsFragment extends Fragment implements OnItemClickListener {
for (Feed f : feeds)
m_feeds.add(f);
- Collections.sort(m_feeds);
-
- m_adapter.notifyDataSetInvalidated();
+ sortFeeds();
showLoading(false);
}
@@ -260,4 +281,17 @@ public class FeedsFragment extends Fragment implements OnItemClickListener {
return v;
}
}
+
+ public void sortFeeds() {
+ Comparator<Feed> cmp;
+
+ if (m_prefs.getBoolean("sort_feeds_by_unread", false)) {
+ cmp = new FeedUnreadComparator();
+ } else {
+ cmp = new FeedTitleComparator();
+ }
+
+ Collections.sort(m_feeds, cmp);
+ m_adapter.notifyDataSetInvalidated();
+ }
}
diff --git a/src/org/fox/ttrss/MainActivity.java b/src/org/fox/ttrss/MainActivity.java
index f815d974..1c7207bf 100644
--- a/src/org/fox/ttrss/MainActivity.java
+++ b/src/org/fox/ttrss/MainActivity.java
@@ -145,7 +145,14 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe
Intent refresh = new Intent(this, MainActivity.class);
startActivity(refresh);
finish();
- }
+ } else {
+ FeedsFragment frag = (FeedsFragment)getSupportFragmentManager().findFragmentById(R.id.feeds_fragment);
+
+ if (frag != null) {
+ frag.sortFeeds();
+ }
+ }
+
}
@Override