From 973138935dbebbfe190b283196541b443840a8d1 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 27 Nov 2011 15:22:03 +0300 Subject: add menus to toggle marked/published on active article --- src/org/fox/ttrss/ArticleFragment.java | 5 ++- src/org/fox/ttrss/ArticleOps.java | 10 +++++ src/org/fox/ttrss/HeadlinesFragment.java | 51 +++++----------------- src/org/fox/ttrss/MainActivity.java | 75 +++++++++++++++++++++++++++++++- 4 files changed, 99 insertions(+), 42 deletions(-) create mode 100644 src/org/fox/ttrss/ArticleOps.java (limited to 'src') diff --git a/src/org/fox/ttrss/ArticleFragment.java b/src/org/fox/ttrss/ArticleFragment.java index 60ac6090..205cfa5d 100644 --- a/src/org/fox/ttrss/ArticleFragment.java +++ b/src/org/fox/ttrss/ArticleFragment.java @@ -23,6 +23,7 @@ public class ArticleFragment extends Fragment { private SharedPreferences m_prefs; private Article m_article; + private ArticleOps m_articleOps; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -112,6 +113,8 @@ public class ArticleFragment extends Fragment { super.onAttach(activity); m_prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); - m_article = ((MainActivity)activity).getSelectedArticle(); + m_articleOps = (ArticleOps)activity; + m_article = m_articleOps.getSelectedArticle(); + } } diff --git a/src/org/fox/ttrss/ArticleOps.java b/src/org/fox/ttrss/ArticleOps.java new file mode 100644 index 00000000..32d76050 --- /dev/null +++ b/src/org/fox/ttrss/ArticleOps.java @@ -0,0 +1,10 @@ +package org.fox.ttrss; + +public interface ArticleOps { + public Article getSelectedArticle(); + public void saveArticleUnread(final Article article); + public void saveArticleMarked(final Article article); + public void saveArticlePublished(final Article article); + public void updateHeadlines(); +} + diff --git a/src/org/fox/ttrss/HeadlinesFragment.java b/src/org/fox/ttrss/HeadlinesFragment.java index 0165a05c..1e7e9ef4 100644 --- a/src/org/fox/ttrss/HeadlinesFragment.java +++ b/src/org/fox/ttrss/HeadlinesFragment.java @@ -53,6 +53,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener { private ArticleList m_selectedArticles = new ArticleList(); private OnArticleSelectedListener m_articleSelectedListener; + private ArticleOps m_articleOps; public interface OnArticleSelectedListener { public void onArticleSelected(Article article); @@ -76,7 +77,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener { m_adapter = new ArticleListAdapter(getActivity(), R.layout.headlines_row, (ArrayList
)m_articles); list.setAdapter(m_adapter); list.setOnItemClickListener(this); - + Log.d(TAG, "onCreateView, feed=" + m_feed); if (m_feed != null && (m_articles == null || m_articles.size() == 0)) @@ -104,6 +105,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener { m_prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); m_feed = ((MainActivity)activity).getActiveFeed(); m_articleSelectedListener = (OnArticleSelectedListener) activity; + m_articleOps = (ArticleOps) activity; } @Override @@ -118,7 +120,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener { m_selectedArticleId = article.id; m_adapter.notifyDataSetChanged(); - catchupArticle(article); + m_articleOps.saveArticleUnread(article); } } @@ -253,43 +255,6 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener { } } - public void catchupArticle(final Article article) { - ApiRequest req = new ApiRequest(getActivity().getApplicationContext()); - //req.setApi(m_prefs.getString("ttrss_url", null)); - //req.setTrustAny(m_prefs.getBoolean("ssl_trust_any", false)); - - final String sessionId = ((MainActivity)getActivity()).getSessionId(); - - HashMap map = new HashMap() { - { - put("sid", sessionId); - put("op", "updateArticle"); - put("article_ids", String.valueOf(article.id)); - put("mode", "0"); - put("field", "2"); - } - }; - - req.execute(map); - } - - public void setArticleMarked(final Article article) { - ApiRequest req = new ApiRequest(getActivity().getApplicationContext()); - - final String sessionId = ((MainActivity)getActivity()).getSessionId(); - - HashMap map = new HashMap() { - { - put("sid", sessionId); - put("op", "updateArticle"); - put("article_ids", String.valueOf(article.id)); - put("mode", article.marked ? "1" : "0"); - put("field", "0"); - } - }; - - req.execute(map); - } private class ArticleListAdapter extends ArrayAdapter
{ private ArrayList
items; @@ -362,7 +327,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener { article.marked = !article.marked; m_adapter.notifyDataSetChanged(); - setArticleMarked(article); + m_articleOps.saveArticleMarked(article); } }); } @@ -413,4 +378,10 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener { } } + + + public void notifyUpdated() { + m_adapter.notifyDataSetChanged(); + } + } diff --git a/src/org/fox/ttrss/MainActivity.java b/src/org/fox/ttrss/MainActivity.java index b00ce875..99509cde 100644 --- a/src/org/fox/ttrss/MainActivity.java +++ b/src/org/fox/ttrss/MainActivity.java @@ -26,7 +26,7 @@ import android.widget.TextView; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -public class MainActivity extends FragmentActivity implements FeedsFragment.OnFeedSelectedListener, HeadlinesFragment.OnArticleSelectedListener { +public class MainActivity extends FragmentActivity implements FeedsFragment.OnFeedSelectedListener, HeadlinesFragment.OnArticleSelectedListener, ArticleOps { private final String TAG = this.getClass().getSimpleName(); private SharedPreferences m_prefs; @@ -43,6 +43,61 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe private boolean m_canLoadMore = true; private boolean m_compatMode = false; + public void updateHeadlines() { + HeadlinesFragment frag = (HeadlinesFragment)getSupportFragmentManager().findFragmentById(R.id.headlines_fragment); + if (frag != null) { + frag.notifyUpdated(); + } + } + + public void saveArticleUnread(final Article article) { + ApiRequest req = new ApiRequest(getApplicationContext()); + + HashMap map = new HashMap() { + { + put("sid", m_sessionId); + put("op", "updateArticle"); + put("article_ids", String.valueOf(article.id)); + put("mode", "0"); + put("field", "2"); + } + }; + + req.execute(map); + } + + public void saveArticleMarked(final Article article) { + ApiRequest req = new ApiRequest(getApplicationContext()); + + HashMap map = new HashMap() { + { + put("sid", m_sessionId); + put("op", "updateArticle"); + put("article_ids", String.valueOf(article.id)); + put("mode", article.marked ? "1" : "0"); + put("field", "0"); + } + }; + + req.execute(map); + } + + public void saveArticlePublished(final Article article) { + ApiRequest req = new ApiRequest(getApplicationContext()); + + HashMap map = new HashMap() { + { + put("sid", m_sessionId); + put("op", "updateArticle"); + put("article_ids", String.valueOf(article.id)); + put("mode", article.published ? "1" : "0"); + put("field", "1"); + } + }; + + req.execute(map); + } + private class RefreshTask extends TimerTask { @Override @@ -318,6 +373,20 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe case R.id.share_article: shareArticle(m_selectedArticle); return true; + case R.id.toggle_marked: + if (m_selectedArticle != null) { + m_selectedArticle.marked = !m_selectedArticle.marked; + saveArticleMarked(m_selectedArticle); + updateHeadlines(); + } + return true; + case R.id.toggle_published: + if (m_selectedArticle != null) { + m_selectedArticle.published = !m_selectedArticle.published; + saveArticlePublished(m_selectedArticle); + updateHeadlines(); + } + return true; case R.id.show_feeds: setUnreadOnly(!getUnreadOnly()); @@ -389,12 +458,16 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe if (m_selectedArticle != null) { m_menu.findItem(R.id.close_article).setVisible(true); m_menu.findItem(R.id.share_article).setVisible(true); + m_menu.findItem(R.id.toggle_marked).setVisible(true); + m_menu.findItem(R.id.toggle_published).setVisible(true); m_menu.findItem(R.id.update_feeds).setVisible(false); m_menu.findItem(R.id.show_feeds).setVisible(false); } else { m_menu.findItem(R.id.close_article).setVisible(false); m_menu.findItem(R.id.share_article).setVisible(false); + m_menu.findItem(R.id.toggle_marked).setVisible(false); + m_menu.findItem(R.id.toggle_published).setVisible(false); if (!m_smallScreenMode || m_activeFeed == null) { m_menu.findItem(R.id.show_feeds).setVisible(true); -- cgit v1.2.3