summaryrefslogtreecommitdiff
path: root/org.fox.ttrss/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'org.fox.ttrss/src/main/java/org')
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleModel.java22
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java8
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java2
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java23
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java9
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java4
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java17
7 files changed, 31 insertions, 54 deletions
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleModel.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleModel.java
index b1d5479a..1e004f99 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleModel.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleModel.java
@@ -52,7 +52,7 @@ public class ArticleModel extends AndroidViewModel implements ApiCommon.ApiCalle
private Handler m_mainHandler = new Handler(Looper.getMainLooper());
private MutableLiveData<Long> m_lastUpdate = new MutableLiveData<>(Long.valueOf(0));
private MutableLiveData<Integer> m_loadingProgress = new MutableLiveData<>(Integer.valueOf(0));
- private MutableLiveData<Integer> m_activeArticleId = new MutableLiveData<>(Integer.valueOf(0));
+ private MutableLiveData<Article> m_activeArticle = new MutableLiveData<>(null);
public ArticleModel(@NonNull Application application) {
super(application);
@@ -71,8 +71,8 @@ public class ArticleModel extends AndroidViewModel implements ApiCommon.ApiCalle
return m_articles;
}
- public void updateById(@NonNull Article article) {
- int position = m_articles.getValue().getPositionById(article.id);
+ public void update(@NonNull Article article) {
+ int position = m_articles.getValue().indexOf(article);
if (position != -1)
update(position, article);
@@ -87,14 +87,12 @@ public class ArticleModel extends AndroidViewModel implements ApiCommon.ApiCalle
m_articles.postValue(articles);
}
- public LiveData<Integer> getActive() {
- return m_activeArticleId;
+ public LiveData<Article> getActive() {
+ return m_activeArticle;
}
public Article getActiveArticle() {
- int activeId = m_activeArticleId.getValue();
-
- return m_articles.getValue().getById(activeId);
+ return m_activeArticle.getValue();
}
// we store .active flag in articleview for UI update and a separate observable for easy access
@@ -107,18 +105,18 @@ public class ArticleModel extends AndroidViewModel implements ApiCommon.ApiCalle
Article currentlyActiveClone = new Article(currentlyActive);
currentlyActiveClone.active = false;
- updateById(currentlyActiveClone);
+ update(currentlyActiveClone);
}
if (article != null) {
Article articleClone = new Article(article);
articleClone.active = true;
- updateById(articleClone);
+ update(articleClone);
- m_activeArticleId.postValue(articleClone.id);
+ m_activeArticle.postValue(articleClone);
} else {
- m_activeArticleId.postValue(0);
+ m_activeArticle.postValue(null);
}
}
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 13d68465..2a80eb03 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
@@ -86,11 +86,11 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
m_adapter.submitList(articles);
});
- model.getActive().observe(getActivity(), (activeArticleId) -> {
- Log.d(TAG, "observed active article=" + activeArticleId);
+ model.getActive().observe(getActivity(), (activeArticle) -> {
+ Log.d(TAG, "observed active article=" + activeArticle);
- if (activeArticleId != null) {
- int position = model.getArticles().getValue().getPositionById(activeArticleId);
+ if (activeArticle != null) {
+ int position = model.getArticles().getValue().indexOf(activeArticle);
if (position != -1 && position != m_pager.getCurrentItem())
m_pager.setCurrentItem(position, false);
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 f336600e..63c46edd 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
@@ -94,7 +94,7 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList
articleClone.unread = !articleClone.unread;
saveArticleUnread(articleClone);
- Application.getArticlesModel().updateById(articleClone);
+ Application.getArticlesModel().update(articleClone);
}
}
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 17e0231f..d51ab02a 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
@@ -196,7 +196,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
articleClone.unread = false;
tmp.add(articleClone);
- Application.getArticlesModel().updateById(articleClone);
+ Application.getArticlesModel().update(articleClone);
}
}
@@ -410,7 +410,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
articleClone.unread = false;
- Application.getArticlesModel().updateById(articleClone);
+ Application.getArticlesModel().update(articleClone);
}
m_readArticles.clear();
@@ -477,11 +477,11 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
});
// this gets notified if active article changes
- model.getActive().observe(getActivity(), (activeArticleId) -> {
- Log.d(TAG, "observed active article=" + activeArticleId);
+ model.getActive().observe(getActivity(), (activeArticle) -> {
+ Log.d(TAG, "observed active article=" + activeArticle);
- if (activeArticleId > 0) {
- scrollToArticleId(activeArticleId);
+ if (activeArticle != null) {
+ scrollToArticle(activeArticle);
}
});
@@ -912,7 +912,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
article.selected = cb.isChecked();
- Application.getArticlesModel().updateById(article);
+ Application.getArticlesModel().update(article);
}
});
}
@@ -938,7 +938,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
Article article = new Article(getItem(position));
article.selected = !article.selected;
- Application.getArticlesModel().updateById(article);
+ Application.getArticlesModel().update(article);
}
});
@@ -1592,16 +1592,13 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
}
public void scrollToArticle(Article article) {
- scrollToArticleId(article.id);
- }
-
- public void scrollToArticleId(int id) {
- int position = Application.getArticles().getPositionById(id);
+ int position = Application.getArticles().indexOf(article);
if (position != -1)
m_list.scrollToPosition(position);
}
+
public Feed getFeed() {
return m_feed;
}
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 4e71b90d..66bf8cf8 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
@@ -478,12 +478,11 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList
HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
if (hf != null) {
- // data might be null if detailactivity crashed
- if (data != null) {
- int activeArticleId = data.getIntExtra("activeArticleId", 0);
+ Article activeArticle = Application.getArticlesModel().getActiveArticle();
- Log.d(TAG, "got back from detail activity, scrolling to id=" + activeArticleId);
- hf.scrollToArticleId(activeArticleId);
+ if (activeArticle != null) {
+ Log.d(TAG, "got back from detail activity, scrolling to active article=" + activeArticle);
+ hf.scrollToArticle(activeArticle);
}
}
}
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 e3bb16f5..5a97976c 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
@@ -637,7 +637,7 @@ public class OnlineActivity extends CommonActivity {
tmp.add(articleClone);
- Application.getArticlesModel().updateById(articleClone);
+ Application.getArticlesModel().update(articleClone);
}
}
@@ -1023,7 +1023,7 @@ public class OnlineActivity extends CommonActivity {
if (BuildConfig.DEBUG)
Log.d(TAG, "updating article: " + articleClone);
- model.updateById(articleClone);
+ model.update(articleClone);
}
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 65e16afd..da25882c 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
@@ -50,23 +50,6 @@ public class ArticleList extends CopyOnWriteArrayList<Article> {
return getSelected().size();
}
- public int getPositionById(int id) {
- for (int i = 0; i < size(); i++) {
- if (get(i).id == id) {
- return i;
- }
- }
-
- return -1;
- }
-
- public Article getById(int id) {
- for (Article a : this) {
- if (a.id == id)
- return a;
- }
- return null;
- }
public String getAsCommaSeparatedIds() {
return this.stream().map(a -> String.valueOf(a.id))
.collect(Collectors.joining(","));