summaryrefslogtreecommitdiff
path: root/org.fox.ttrss
diff options
context:
space:
mode:
Diffstat (limited to 'org.fox.ttrss')
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java1
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java17
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java2
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java20
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java2
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java249
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java8
7 files changed, 110 insertions, 189 deletions
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java
index c8fde41d..13d68465 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java
@@ -130,6 +130,7 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
@Override
public void onResume() {
super.onResume();
+
m_activity.invalidateOptionsMenu();
}
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java
index 589ecc03..f336600e 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java
@@ -261,28 +261,11 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList
if (articleClone.unread) {
articleClone.unread = false;
saveArticleUnread(articleClone);
-
- Application.getArticlesModel().updateById(articleClone);
}
Application.getArticlesModel().setActive(articleClone);
if (!getSupportActionBar().isShowing()) getSupportActionBar().show();
-
- /* ArticlePager ap = (ArticlePager) DetailActivity.this.getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
- HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
-
- if (open) {
- if (ap != null) {
- ap.setActiveArticleId(article.id);
- }
- } else {
- if (hf != null) {
- hf.setActiveArticleId(article.id);
- }
- } */
-
- invalidateOptionsMenu();
}
@Override
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java
index b7450afa..48ae7c8c 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java
@@ -319,8 +319,6 @@ public class FeedsFragment extends Fragment implements OnSharedPreferenceChangeL
setSelectedFeed(m_activity.getActiveFeed());
refresh();
-
- m_activity.invalidateOptionsMenu();
}
public void refresh() {
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
index 38dc8e8e..17e0231f 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
@@ -146,8 +146,6 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
m_activity.saveArticleUnread(articleClone);
- Application.getArticlesModel().updateById(articleClone);
-
return true;
} else if (itemId == R.id.headlines_article_link_copy) {
m_activity.copyToClipboard(article.link);
@@ -160,8 +158,6 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
articleClone.unread = !articleClone.unread;
m_activity.saveArticleUnread(articleClone);
-
- Application.getArticlesModel().updateById(articleClone);
}
return true;
} else if (itemId == R.id.headlines_share_article) {
@@ -901,8 +897,6 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
article.marked = !article.marked;
m_activity.saveArticleMarked(article);
-
- Application.getArticlesModel().updateById(article);
}
});
}
@@ -932,8 +926,6 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
article.published = !article.published;
m_activity.saveArticlePublished(article);
-
- Application.getArticlesModel().updateById(article);
}
});
}
@@ -970,20 +962,18 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
if (position != -1) {
- Article article = new Article(getItem(position));
-
+ final Article articleClone = new Article(getItem(position));
final EditText edit = new EditText(getActivity());
- edit.setText(String.valueOf(article.score));
+
+ edit.setText(String.valueOf(articleClone.score));
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getContext())
.setTitle(R.string.score_for_this_article)
.setPositiveButton(R.string.set_score,
(dialog, which) -> {
try {
- article.score = Integer.parseInt(edit.getText().toString());
- m_activity.saveArticleScore(article);
-
- Application.getArticlesModel().updateById(article);
+ articleClone.score = Integer.parseInt(edit.getText().toString());
+ m_activity.saveArticleScore(articleClone);
} catch (NumberFormatException e) {
m_activity.toast(R.string.score_invalid);
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 6f188bf4..4e71b90d 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
@@ -421,8 +421,6 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList
if (articleClone.unread) {
articleClone.unread = false;
saveArticleUnread(articleClone);
-
- Application.getArticlesModel().updateById(articleClone);
}
if (open) {
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 3079ced7..22acf6d9 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
@@ -427,9 +427,6 @@ public class OnlineActivity extends CommonActivity {
ft.replace(R.id.headlines_fragment, hfnew, FRAG_HEADLINES);
ft.commit();
-
- invalidateOptionsMenu();
-
});
Dialog dialog = builder.create();
@@ -520,7 +517,6 @@ public class OnlineActivity extends CommonActivity {
break;
}
dialog.cancel();
- invalidateOptionsMenu();
});
Dialog dialog = builder.create();
@@ -539,23 +535,17 @@ public class OnlineActivity extends CommonActivity {
} else if (itemId == R.id.toggle_marked) {
if (activeArticle != null) {
Article articleClone = new Article(activeArticle);
-
articleClone.marked = !articleClone.marked;
saveArticleMarked(activeArticle);
-
- Application.getArticlesModel().updateById(articleClone);
}
return true;
} else if (itemId == R.id.toggle_unread) {
if (activeArticle != null) {
Article articleClone = new Article(activeArticle);
-
articleClone.unread = !articleClone.unread;
saveArticleUnread(activeArticle);
-
- Application.getArticlesModel().updateById(articleClone);
}
return true;
} else if (itemId == R.id.selection_toggle_unread) {
@@ -564,14 +554,10 @@ public class OnlineActivity extends CommonActivity {
if (!selected.isEmpty()) {
for (Article a : selected) {
Article articleClone = new Article(a);
-
articleClone.unread = !articleClone.unread;
-
- Application.getArticlesModel().updateById(articleClone);
}
toggleArticlesUnread(selected);
- invalidateOptionsMenu();
}
return true;
} else if (itemId == R.id.selection_toggle_marked) {
@@ -580,14 +566,10 @@ public class OnlineActivity extends CommonActivity {
if (!selected.isEmpty()) {
for (Article a : selected) {
Article articleClone = new Article(a);
-
articleClone.marked = !articleClone.marked;
-
- Application.getArticlesModel().updateById(articleClone);
}
toggleArticlesMarked(selected);
- invalidateOptionsMenu();
}
return true;
} else if (itemId == R.id.selection_toggle_published) {
@@ -596,24 +578,18 @@ public class OnlineActivity extends CommonActivity {
if (!selected.isEmpty()) {
for (Article a : selected) {
Article articleClone = new Article(a);
-
articleClone.published = !articleClone.published;
-
- Application.getArticlesModel().updateById(articleClone);
}
toggleArticlesPublished(selected);
- invalidateOptionsMenu();
}
return true;
} else if (itemId == R.id.toggle_published) {
if (activeArticle != null) {
Article articleClone = new Article(activeArticle);
-
articleClone.published = !articleClone.published;
- saveArticlePublished(articleClone);
- Application.getArticlesModel().updateById(articleClone);
+ saveArticlePublished(articleClone);
}
return true;
} else if (itemId == R.id.catchup_above) {
@@ -667,7 +643,6 @@ public class OnlineActivity extends CommonActivity {
if (!tmp.isEmpty()) {
setArticlesUnread(tmp, Article.UPDATE_SET_FALSE);
- invalidateOptionsMenu();
}
}
}
@@ -806,106 +781,6 @@ public class OnlineActivity extends CommonActivity {
Application.getInstance().setApiLevel(apiLevel);
}
- // TODO switch to setArticleField()
- public void saveArticleUnread(final Article article) {
- ApiRequest req = new ApiRequest(getApplicationContext()) {
- protected void onPostExecute(JsonElement result) {
- //toast(R.string.article_set_unread);
- invalidateOptionsMenu();
- }
- };
-
- HashMap<String, String> map = new HashMap<>();
- map.put("sid", getSessionId());
- map.put("op", "updateArticle");
- map.put("article_ids", String.valueOf(article.id));
- map.put("mode", article.unread ? "1" : "0");
- map.put("field", String.valueOf(Article.UPDATE_FIELD_UNREAD));
-
- req.execute(map);
- }
-
- // TODO switch to setArticleField()
- public void saveArticleScore(final Article article) {
- ApiRequest req = new ApiRequest(getApplicationContext()) {
- protected void onPostExecute(JsonElement result) {
- //toast(article.marked ? R.string.notify_article_marked : R.string.notify_article_unmarked);
- invalidateOptionsMenu();
- }
- };
-
- HashMap<String, String> map = new HashMap<>();
- map.put("sid", getSessionId());
- map.put("op", "updateArticle");
- map.put("article_ids", String.valueOf(article.id));
- map.put("data", String.valueOf(article.score));
- map.put("field", String.valueOf(Article.UPDATE_FIELD_SCORE));
-
- req.execute(map);
- }
-
- // TODO switch to setArticleField()
- public void saveArticleMarked(final Article article) {
- ApiRequest req = new ApiRequest(getApplicationContext()) {
- protected void onPostExecute(JsonElement result) {
- //toast(article.marked ? R.string.notify_article_marked : R.string.notify_article_unmarked);
- invalidateOptionsMenu();
- }
- };
-
- HashMap<String, String> map = new HashMap<>();
- map.put("sid", getSessionId());
- map.put("op", "updateArticle");
- map.put("article_ids", String.valueOf(article.id));
- map.put("mode", article.marked ? "1" : "0");
- map.put("field", String.valueOf(Article.UPDATE_FIELD_MARKED));
-
- req.execute(map);
- }
-
- // TODO switch to setArticleField()
- public void saveArticlePublished(final Article article) {
-
- ApiRequest req = new ApiRequest(getApplicationContext()) {
- protected void onPostExecute(JsonElement result) {
- //toast(article.published ? R.string.notify_article_published : R.string.notify_article_unpublished);
- invalidateOptionsMenu();
- }
- };
-
- HashMap<String, String> map = new HashMap<>();
- map.put("sid", getSessionId());
- map.put("op", "updateArticle");
- map.put("article_ids", String.valueOf(article.id));
- map.put("mode", article.published ? "1" : "0");
- map.put("field", String.valueOf(Article.UPDATE_FIELD_PUBLISHED));
-
- req.execute(map);
- }
-
- // TODO switch to setArticleField()
- public void saveArticleNote(final Article article, final String note) {
- ApiRequest req = new ApiRequest(getApplicationContext()) {
- protected void onPostExecute(JsonElement result) {
- Article articleClone = new Article(article);
-
- articleClone.note = note;
-
- Application.getArticlesModel().updateById(articleClone);
- }
- };
-
- HashMap<String, String> map = new HashMap<>();
- map.put("sid", getSessionId());
- map.put("op", "updateArticle");
- map.put("article_ids", String.valueOf(article.id));
- map.put("mode", "1");
- map.put("data", note);
- map.put("field", String.valueOf(Article.UPDATE_FIELD_NOTE));
-
- req.execute(map);
- }
-
public void shareArticle(Article article) {
if (article != null) {
shareText(article.link, article.title);
@@ -923,16 +798,10 @@ public class OnlineActivity extends CommonActivity {
try {
Article articleClone = new Article(article);
-
articleClone.score = Integer.parseInt(edit.getText().toString());
saveArticleScore(articleClone);
- int position = Application.getArticles().getPositionById(articleClone.id);
-
- if (position != -1)
- Application.getArticlesModel().updateById(articleClone);
-
} catch (NumberFormatException e) {
toast(R.string.score_invalid);
e.printStackTrace();
@@ -988,8 +857,6 @@ public class OnlineActivity extends CommonActivity {
if (selectedArticle != null) {
selectedArticle.unread = !selectedArticle.unread;
saveArticleUnread(selectedArticle);
-
- hf.notifyItemChanged(Application.getArticles().indexOf(selectedArticle));
}
}
return true;
@@ -1050,14 +917,35 @@ public class OnlineActivity extends CommonActivity {
req.execute(map);
}
+ public void saveArticleUnread(final Article article) {
+ setArticlesField(new ArticleList(article), Article.UPDATE_FIELD_UNREAD,
+ article.unread ? Article.UPDATE_SET_TRUE : Article.UPDATE_SET_FALSE);
+ }
+
+ public void saveArticleScore(final Article article) {
+ setArticlesField(new ArticleList(article), Article.UPDATE_FIELD_SCORE, Article.UPDATE_SET_TRUE);
+ }
+
+ public void saveArticleMarked(final Article article) {
+ setArticlesField(new ArticleList(article), Article.UPDATE_FIELD_MARKED,
+ article.marked ? Article.UPDATE_SET_TRUE : Article.UPDATE_SET_FALSE);
+ }
+
+ public void saveArticlePublished(final Article article) {
+ setArticlesField(new ArticleList(article), Article.UPDATE_FIELD_PUBLISHED,
+ article.published ? Article.UPDATE_SET_TRUE : Article.UPDATE_SET_FALSE);
+ }
+
+ public void saveArticleNote(final Article article, final String note) {
+ setArticlesField(new ArticleList(article), Article.UPDATE_FIELD_NOTE, Article.UPDATE_SET_TRUE);
+ }
+
public void toggleArticlesMarked(final ArticleList articles) {
setArticlesMarked(articles, Article.UPDATE_TOGGLE);
}
public void setArticlesMarked(final ArticleList articles, int mode) {
- ApiRequest req = new ApiRequest(getApplicationContext());
-
- setArticleField(articles, Article.UPDATE_FIELD_MARKED, mode);
+ setArticlesField(articles, Article.UPDATE_FIELD_MARKED, mode);
}
public void toggleArticlesUnread(final ArticleList articles) {
@@ -1065,7 +953,7 @@ public class OnlineActivity extends CommonActivity {
}
public void setArticlesUnread(final ArticleList articles, int mode) {
- setArticleField(articles, Article.UPDATE_FIELD_UNREAD, mode);
+ setArticlesField(articles, Article.UPDATE_FIELD_UNREAD, mode);
}
public void toggleArticlesPublished(final ArticleList articles) {
@@ -1073,27 +961,85 @@ public class OnlineActivity extends CommonActivity {
}
public void setArticlesPublished(final ArticleList articles, int mode) {
- setArticleField(articles, Article.UPDATE_FIELD_PUBLISHED, mode);
+ setArticlesField(articles, Article.UPDATE_FIELD_PUBLISHED, mode);
}
- public void setArticleField(final ArticleList articles, int field, int mode) {
+ public void setArticlesField(final ArticleList articles, int field, int mode) {
ApiRequest req = new ApiRequest(getApplicationContext()) {
protected void onPostExecute(JsonElement result) {
- Log.d(TAG, "setArticleField operation complete");
+ if (m_lastError == ApiCommon.ApiError.SUCCESS) {
+
+ if (BuildConfig.DEBUG)
+ Log.d(TAG, "setArticleField operation complete");
+
+ ArticleModel model = Application.getArticlesModel();
+
+ for (Article a : articles) {
+ Article articleClone = new Article(a);
+
+ switch (mode) {
+ case Article.UPDATE_SET_FALSE:
+ switch (field) {
+ case Article.UPDATE_FIELD_MARKED:
+ articleClone.marked = false;
+ break;
+ case Article.UPDATE_FIELD_PUBLISHED:
+ articleClone.published = false;
+ break;
+ case Article.UPDATE_FIELD_UNREAD:
+ articleClone.unread = false;
+ break;
+ }
+ break;
+ case Article.UPDATE_SET_TRUE:
+ switch (field) {
+ case Article.UPDATE_FIELD_MARKED:
+ articleClone.marked = true;
+ break;
+ case Article.UPDATE_FIELD_PUBLISHED:
+ articleClone.published = true;
+ break;
+ case Article.UPDATE_FIELD_UNREAD:
+ articleClone.unread = true;
+ break;
+ }
+ break;
+ case Article.UPDATE_TOGGLE:
+ switch (field) {
+ case Article.UPDATE_FIELD_MARKED:
+ articleClone.marked = !articleClone.marked;
+ break;
+ case Article.UPDATE_FIELD_PUBLISHED:
+ articleClone.published = !articleClone.published;
+ break;
+ case Article.UPDATE_FIELD_UNREAD:
+ articleClone.unread = !articleClone.unread;
+ break;
+ }
+ break;
+ }
- // currently this is generally handled before operation completes (but after POJO is modified)
- /* HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
- ArticlePager ap = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
+ if (BuildConfig.DEBUG)
+ Log.d(TAG, "updating article: " + articleClone);
- for (Article a : articles) {
- int position = Application.getArticles().getPositionById(a.id);
+ model.updateById(articleClone);
+ }
+
+ invalidateOptionsMenu();
+
+ return;
+ }
- if (position != -1) {
- if (hf != null) hf.notifyItemChanged(position);
- if (ap != null) ap.notifyItemChanged(position);
+ if (m_lastError != null && m_lastError == ApiCommon.ApiError.LOGIN_FAILED) {
+ login(true);
+ } else {
+ if (m_lastErrorMessage != null) {
+ toast(getString(getErrorMessage()) + "\n" + m_lastErrorMessage);
+ } else {
+ toast(getErrorMessage());
}
- } */
+ }
}
};
@@ -1375,9 +1321,6 @@ public class OnlineActivity extends CommonActivity {
m_headlinesActionMode.setTitle(String.valueOf(selectedCount));
} else if (m_headlinesActionMode != null) {
m_headlinesActionMode.finish();
-
- // is this needed?
- invalidateOptionsMenu();
}
}));
}
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java
index 87749e62..65e16afd 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java
@@ -1,5 +1,7 @@
package org.fox.ttrss.types;
+import java.util.Arrays;
+import java.util.Collection;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
@@ -20,6 +22,12 @@ public class ArticleList extends CopyOnWriteArrayList<Article> {
return null;
}
+ public ArticleList(Article... articles) {
+ super();
+
+ addAll(Arrays.asList(articles));
+ }
+
public ArticleList() { }
public ArticleList(ArticleList clone) {