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

View File

@ -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 = "";