From 67752b2c573711cf0f7ccf8c6941d36cc8742ede Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 16 Sep 2012 22:53:58 +0400 Subject: [PATCH] reimplement action mode for headlines selection --- src/org/fox/ttrss/HeadlinesActivity.java | 8 ---- src/org/fox/ttrss/OnlineActivity.java | 57 ++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 8 deletions(-) diff --git a/src/org/fox/ttrss/HeadlinesActivity.java b/src/org/fox/ttrss/HeadlinesActivity.java index e98101cc..66456c3c 100644 --- a/src/org/fox/ttrss/HeadlinesActivity.java +++ b/src/org/fox/ttrss/HeadlinesActivity.java @@ -97,12 +97,6 @@ private final String TAG = this.getClass().getSimpleName(); super.onResume(); } - @Override - public boolean getUnreadArticlesOnly() { - // TODO Auto-generated method stub - return true; - } - @Override protected void initMenu() { super.initMenu(); @@ -138,8 +132,6 @@ private final String TAG = this.getClass().getSimpleName(); article.unread = false; saveArticleUnread(article); } - - //TinyApplication.getInstance().m_activeArticle = article; if (open) { FragmentTransaction ft = getSupportFragmentManager() diff --git a/src/org/fox/ttrss/OnlineActivity.java b/src/org/fox/ttrss/OnlineActivity.java index 140b21e5..d47e11dc 100644 --- a/src/org/fox/ttrss/OnlineActivity.java +++ b/src/org/fox/ttrss/OnlineActivity.java @@ -26,6 +26,7 @@ import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.FragmentTransaction; import android.util.Log; +import android.view.ActionMode; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -46,6 +47,48 @@ public class OnlineActivity extends CommonActivity { protected boolean m_unreadOnly = true; protected boolean m_unreadArticlesOnly = true; + private ActionMode m_headlinesActionMode; + private HeadlinesActionModeCallback m_headlinesActionModeCallback; + + private class HeadlinesActionModeCallback implements ActionMode.Callback { + + @Override + public boolean onPrepareActionMode(ActionMode mode, Menu menu) { + return false; + } + + @Override + public void onDestroyActionMode(ActionMode mode) { + HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); + + if (hf != null) { + ArticleList selected = hf.getSelectedArticles(); + if (selected.size() > 0) { + selected.clear(); + initMenu(); + hf.notifyUpdated(); + } + } + + m_headlinesActionMode = null; + } + + @Override + public boolean onCreateActionMode(ActionMode mode, Menu menu) { + + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.headlines_action_menu, menu); + + return true; + } + + @Override + public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + onOptionsItemSelected(item); + return false; + } + }; + @Override public void onCreate(Bundle savedInstanceState) { m_prefs = PreferenceManager @@ -78,6 +121,10 @@ public class OnlineActivity extends CommonActivity { m_unreadArticlesOnly = savedInstanceState.getBoolean("unreadArticlesOnly"); } + if (!isCompatMode()) { + m_headlinesActionModeCallback = new HeadlinesActionModeCallback(); + } + Log.d(TAG, "m_sessionId=" + m_sessionId); Log.d(TAG, "m_apiLevel=" + m_apiLevel); @@ -774,6 +821,16 @@ public class OnlineActivity extends CommonActivity { } if (!isCompatMode()) { + HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); + + if (hf != null) { + if (hf.getSelectedArticles().size() > 0 && m_headlinesActionMode == null) { + m_headlinesActionMode = startActionMode(m_headlinesActionModeCallback); + } else if (hf.getSelectedArticles().size() == 0 && m_headlinesActionMode != null) { + m_headlinesActionMode.finish(); + } + } + SearchView searchView = (SearchView) search.getActionView(); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { private String query = "";