reimplement action mode for headlines selection

This commit is contained in:
Andrew Dolgov 2012-09-16 22:53:58 +04:00
parent 721c98ce98
commit 67752b2c57
2 changed files with 57 additions and 8 deletions

View File

@ -97,12 +97,6 @@ private final String TAG = this.getClass().getSimpleName();
super.onResume(); super.onResume();
} }
@Override
public boolean getUnreadArticlesOnly() {
// TODO Auto-generated method stub
return true;
}
@Override @Override
protected void initMenu() { protected void initMenu() {
super.initMenu(); super.initMenu();
@ -139,8 +133,6 @@ private final String TAG = this.getClass().getSimpleName();
saveArticleUnread(article); saveArticleUnread(article);
} }
//TinyApplication.getInstance().m_activeArticle = article;
if (open) { if (open) {
FragmentTransaction ft = getSupportFragmentManager() FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction(); .beginTransaction();

View File

@ -26,6 +26,7 @@ import android.os.Bundle;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.support.v4.app.FragmentTransaction; import android.support.v4.app.FragmentTransaction;
import android.util.Log; import android.util.Log;
import android.view.ActionMode;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
@ -46,6 +47,48 @@ public class OnlineActivity extends CommonActivity {
protected boolean m_unreadOnly = true; protected boolean m_unreadOnly = true;
protected boolean m_unreadArticlesOnly = 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 @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
m_prefs = PreferenceManager m_prefs = PreferenceManager
@ -78,6 +121,10 @@ public class OnlineActivity extends CommonActivity {
m_unreadArticlesOnly = savedInstanceState.getBoolean("unreadArticlesOnly"); m_unreadArticlesOnly = savedInstanceState.getBoolean("unreadArticlesOnly");
} }
if (!isCompatMode()) {
m_headlinesActionModeCallback = new HeadlinesActionModeCallback();
}
Log.d(TAG, "m_sessionId=" + m_sessionId); Log.d(TAG, "m_sessionId=" + m_sessionId);
Log.d(TAG, "m_apiLevel=" + m_apiLevel); Log.d(TAG, "m_apiLevel=" + m_apiLevel);
@ -774,6 +821,16 @@ public class OnlineActivity extends CommonActivity {
} }
if (!isCompatMode()) { 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 searchView = (SearchView) search.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
private String query = ""; private String query = "";