summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2021-05-18 19:19:25 +0300
committerAndrew Dolgov <[email protected]>2021-05-18 19:19:25 +0300
commit5ca65381ad2a0a4a4aa2b8e1a93f667e64b3e5bd (patch)
tree3a002dddeb04427b79b5222ef92f9a7f868918d1
parentae7c663397fde903ecea7a537ff512871cc8272e (diff)
support custom article sorting (i.e. scored_oldest_first)
-rwxr-xr-xorg.fox.ttrss/src/main/AndroidManifest.xml4
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/Application.java14
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java57
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java27
4 files changed, 54 insertions, 48 deletions
diff --git a/org.fox.ttrss/src/main/AndroidManifest.xml b/org.fox.ttrss/src/main/AndroidManifest.xml
index 83dd8a6b..4b3cabfb 100755
--- a/org.fox.ttrss/src/main/AndroidManifest.xml
+++ b/org.fox.ttrss/src/main/AndroidManifest.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.fox.ttrss"
- android:versionCode="532"
- android:versionName="1.298">
+ android:versionCode="533"
+ android:versionName="1.299">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/Application.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/Application.java
index a9a54fb4..94857855 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/Application.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/Application.java
@@ -1,7 +1,6 @@
package org.fox.ttrss;
import android.os.Bundle;
-import android.util.ArraySet;
import com.livefront.bridge.Bridge;
import com.livefront.bridge.SavedStateHandler;
@@ -12,7 +11,7 @@ import org.fox.ttrss.types.ArticleList;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import icepick.Icepick;
@@ -25,7 +24,7 @@ public class Application extends android.app.Application {
public int m_selectedArticleId;
public String m_sessionId;
public int m_apiLevel;
- public HashMap<String, String> m_customSortTypes = new HashMap<>();
+ public LinkedHashMap<String, String> m_customSortModes = new LinkedHashMap<String, String>();
public static Application getInstance(){
return m_singleton;
@@ -56,7 +55,7 @@ public class Application extends android.app.Application {
out.putString("gs:sessionId", m_sessionId);
out.putInt("gs:apiLevel", m_apiLevel);
out.putInt("gs:selectedArticleId", m_selectedArticleId);
- out.putSerializable("gs:customSortTypes", m_customSortTypes);
+ out.putSerializable("gs:customSortTypes", m_customSortModes);
}
public void load(Bundle in) {
@@ -64,7 +63,12 @@ public class Application extends android.app.Application {
m_sessionId = in.getString("gs:sessionId");
m_apiLevel = in.getInt("gs:apiLevel");
m_selectedArticleId = in.getInt("gs:selectedArticleId");
- m_customSortTypes = (HashMap<String, String>) in.getSerializable("gs:customSortTypes");
+
+ try {
+ m_customSortModes = (LinkedHashMap<String, String>) in.getSerializable("gs:customSortTypes");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
}
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java
index 12c2d5ad..f7681e42 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java
@@ -27,7 +27,6 @@ import org.fox.ttrss.types.FeedCategory;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
-import java.util.stream.Stream;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.widget.Toolbar;
@@ -369,53 +368,43 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList
case R.id.headlines_toggle_sort_order:
Dialog dialog = new Dialog(this);
- String sortMode = getSortMode();
+ LinkedHashMap<String, String> sortModes = getSortModes();
- LinkedHashMap<String, String> sortTypes = new LinkedHashMap<String, String>();
+ CharSequence[] sortTitles = sortModes.values().toArray(new CharSequence[0]);
+ final CharSequence[] sortNames = sortModes.keySet().toArray(new CharSequence[0]);
- sortTypes.put("", getString(R.string.headlines_sort_default));
- sortTypes.put("feed_dates", getString(R.string.headlines_sort_newest_first));
- sortTypes.put("date_reverse", getString(R.string.headlines_sort_oldest_first));
- sortTypes.put("title", getString(R.string.headlines_sort_title));
+ String currentMode = getSortMode();
- sortTypes.putAll(Application.getInstance().m_customSortTypes);
+ int i = 0;
+ int selectedIndex = 0;
+ for (CharSequence tmp : sortNames) {
+ if (tmp.equals(currentMode)) {
+ selectedIndex = i;
+ break;
+ }
- /*if (sortMode.equals("feed_dates")) {
- selectedIndex = 1;
- } else if (sortMode.equals("date_reverse")) {
- selectedIndex = 2;
- } else if (sortMode.equals("title")) {
- selectedIndex = 3;
- }*/
-
- int selectedIndex = 0;
+ ++i;
+ }
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle(getString(R.string.headlines_sort_articles_title))
.setSingleChoiceItems(
- (CharSequence[])sortTypes.keySet().toArray(),
+ sortTitles,
selectedIndex, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
- Log.d(TAG, "sort selected index:" + which);
-
- switch (which) {
- case 0:
- setSortMode("default");
- break;
- case 1:
- setSortMode("feed_dates");
- break;
- case 2:
- setSortMode("date_reverse");
- break;
- case 3:
- setSortMode("title");
- break;
- }
+ try {
+// Log.d(TAG, "sort selected index:" + which + ": " + sortNames[which]);
+
+ setSortMode((String)sortNames[which]);
+
+ } catch (IndexOutOfBoundsException e) {
+ e.printStackTrace();
+ }
+
dialog.cancel();
refresh();
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java
index 64e1dfed..246d56d2 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java
@@ -35,7 +35,6 @@ import android.widget.TextView;
import com.github.javiersantos.appupdater.AppUpdater;
import com.github.javiersantos.appupdater.enums.UpdateFrom;
import com.google.gson.Gson;
-import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
@@ -52,6 +51,7 @@ import org.fox.ttrss.util.ImageCacheService;
import java.lang.reflect.Type;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -1196,11 +1196,6 @@ public class OnlineActivity extends CommonActivity {
return Application.getInstance().m_apiLevel;
}
- private void setCustomSortTypes(Map<String, String> customSortTypes) {
- Application.getInstance().m_customSortTypes.clear();
- Application.getInstance().m_customSortTypes.putAll(customSortTypes);
- }
-
protected void setApiLevel(int apiLevel) {
Application.getInstance().m_apiLevel = apiLevel;
}
@@ -1609,7 +1604,7 @@ public class OnlineActivity extends CommonActivity {
Type hashType = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> customSortTypes = new Gson().fromJson(config.get("custom_sort_types"), hashType);
- setCustomSortTypes(customSortTypes);
+ setCustomSortModes(customSortTypes);
Log.d(TAG, "test");
}
@@ -1694,6 +1689,19 @@ public class OnlineActivity extends CommonActivity {
}
+ public LinkedHashMap<String, String> getSortModes() {
+ LinkedHashMap<String, String> tmp = new LinkedHashMap<String, String>();
+
+ tmp.put("default", getString(R.string.headlines_sort_default));
+ tmp.put("feed_dates", getString(R.string.headlines_sort_newest_first));
+ tmp.put("date_reverse", getString(R.string.headlines_sort_oldest_first));
+ tmp.put("title", getString(R.string.headlines_sort_title));
+
+ tmp.putAll(Application.getInstance().m_customSortModes);
+
+ return tmp;
+ }
+
public String getSortMode() {
return m_prefs.getString("headlines_sort_mode", "default");
}
@@ -1704,6 +1712,11 @@ public class OnlineActivity extends CommonActivity {
editor.apply();
}
+ private synchronized void setCustomSortModes(Map<String, String> modes) {
+ Application.getInstance().m_customSortModes.clear();
+ Application.getInstance().m_customSortModes.putAll(modes);
+ }
+
public void setViewMode(String viewMode) {
SharedPreferences.Editor editor = m_prefs.edit();
editor.putString("view_mode", viewMode);