summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2012-09-16 22:53:58 +0400
committerAndrew Dolgov <[email protected]>2012-09-16 22:53:58 +0400
commit67752b2c573711cf0f7ccf8c6941d36cc8742ede (patch)
tree0c7dc219afacd3b5a273c2f09777dee3e8b22704 /src
parent721c98ce98f8220f1d43d2e38591ed8638287174 (diff)
reimplement action mode for headlines selection
Diffstat (limited to 'src')
-rw-r--r--src/org/fox/ttrss/HeadlinesActivity.java8
-rw-r--r--src/org/fox/ttrss/OnlineActivity.java57
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
@@ -98,12 +98,6 @@ private final String TAG = this.getClass().getSimpleName();
}
@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 = "";