diff options
| author | Andrew Dolgov <fox@madoka.volgo-balt.ru> | 2011-11-29 14:09:27 +0300 |
|---|---|---|
| committer | Andrew Dolgov <fox@madoka.volgo-balt.ru> | 2011-11-29 14:09:27 +0300 |
| commit | c8f79f546557bb624740c59ac44b8ed814c944db (patch) | |
| tree | 29900f624e89b27c0773fda0fc8033a6d96d2474 /src/org/fox/ttrss/MainActivity.java | |
| parent | 980b5696e34b7025cd62d829fa9032bc864c2ab6 (diff) | |
implement batch actions on selected articles
Diffstat (limited to 'src/org/fox/ttrss/MainActivity.java')
| -rw-r--r-- | src/org/fox/ttrss/MainActivity.java | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/src/org/fox/ttrss/MainActivity.java b/src/org/fox/ttrss/MainActivity.java index 66066465..50e4805e 100644 --- a/src/org/fox/ttrss/MainActivity.java +++ b/src/org/fox/ttrss/MainActivity.java @@ -110,6 +110,69 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe req.execute(map); } + public static String articlesToIdString(ArticleList articles) { + String tmp = ""; + + for (Article a : articles) + tmp += String.valueOf(a.id) + ","; + + return tmp.replaceAll(",$", ""); + } + + @SuppressWarnings("unchecked") + public void toggleArticlesMarked(final ArticleList articles) { + ApiRequest req = new ApiRequest(getApplicationContext()); + + @SuppressWarnings("serial") + HashMap<String,String> map = new HashMap<String,String>() { + { + put("sid", m_sessionId); + put("op", "updateArticle"); + put("article_ids", articlesToIdString(articles)); + put("mode", "2"); + put("field", "0"); + } + }; + + req.execute(map); + } + + @SuppressWarnings("unchecked") + public void toggleArticlesUnread(final ArticleList articles) { + ApiRequest req = new ApiRequest(getApplicationContext()); + + @SuppressWarnings("serial") + HashMap<String,String> map = new HashMap<String,String>() { + { + put("sid", m_sessionId); + put("op", "updateArticle"); + put("article_ids", articlesToIdString(articles)); + put("mode", "2"); + put("field", "2"); + } + }; + + req.execute(map); + } + + @SuppressWarnings("unchecked") + public void toggleArticlesPublished(final ArticleList articles) { + ApiRequest req = new ApiRequest(getApplicationContext()); + + @SuppressWarnings("serial") + HashMap<String,String> map = new HashMap<String,String>() { + { + put("sid", m_sessionId); + put("op", "updateArticle"); + put("article_ids", articlesToIdString(articles)); + put("mode", "2"); + put("field", "1"); + } + }; + + req.execute(map); + } + private class RefreshTask extends TimerTask { @Override @@ -436,6 +499,8 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe @Override public boolean onOptionsItemSelected(MenuItem item) { + HeadlinesFragment hf = (HeadlinesFragment)getSupportFragmentManager().findFragmentById(R.id.headlines_fragment); + switch (item.getItemId()) { case R.id.preferences: Intent intent = new Intent(this, PreferencesActivity.class); @@ -459,6 +524,54 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe case R.id.back_to_categories: closeCategory(); return true; + case R.id.headlines_select_all: + if (hf != null) hf.setSelection(HeadlinesFragment.ArticlesSelection.ALL); + return true; + case R.id.headlines_select_none: + if (hf != null) hf.setSelection(HeadlinesFragment.ArticlesSelection.NONE); + return true; + case R.id.headlines_select_unread: + if (hf != null) hf.setSelection(HeadlinesFragment.ArticlesSelection.UNREAD); + return true; + case R.id.selection_toggle_marked: + if (hf != null) { + ArticleList selected = hf.getSelectedArticles(); + + if (selected.size() > 0) { + for (Article a : selected) + a.marked = !a.marked; + + toggleArticlesMarked(selected); + hf.notifyUpdated(); + } + } + return true; + case R.id.selection_toggle_published: + if (hf != null) { + ArticleList selected = hf.getSelectedArticles(); + + if (selected.size() > 0) { + for (Article a : selected) + a.published = !a.published; + + toggleArticlesPublished(selected); + hf.notifyUpdated(); + } + } + return true; + case R.id.selection_toggle_unread: + if (hf != null) { + ArticleList selected = hf.getSelectedArticles(); + + if (selected.size() > 0) { + for (Article a : selected) + a.unread = !a.unread; + + toggleArticlesUnread(selected); + hf.notifyUpdated(); + } + } + return true; case R.id.load_more_articles: viewFeed(m_activeFeed, true); return true; @@ -698,6 +811,7 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe super(context); } + @SuppressWarnings("unchecked") protected void onPostExecute(JsonElement result) { if (result != null) { try { @@ -732,6 +846,7 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe } }; + @SuppressWarnings("serial") HashMap<String,String> map = new HashMap<String,String>() { { put("sid", m_sessionId); |