Revert "Add context action bar on FolderList activity." - We are not ready for this

sort of future yet ;)

This reverts commit a5b8ce8064.

Conflicts:
	res/drawable-hdpi/ic_action_read_light.png
	res/drawable-ldpi/ic_action_read_light.png
	res/drawable-mdpi/ic_action_read_light.png
	res/drawable-xhdpi/ic_action_read_light.png
	res/menu/folder_context.xml
This commit is contained in:
Jesse Vincent 2012-09-10 07:41:37 -04:00
parent 7d4152fdd4
commit 297e859b90
2 changed files with 127 additions and 142 deletions

View File

@ -1,37 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/check_mail"
android:icon="?attr/iconActionRefresh"
android:showAsAction="always"
android:title="@string/check_mail_action"/>
<item
android:id="@+id/empty_trash"
android:icon="?attr/iconActionDelete"
android:showAsAction="always"
android:title="@string/empty_trash_action"/>
<item
android:id="@+id/folder_settings"
android:icon="?attr/iconActionSettings"
android:showAsAction="always"
android:title="@string/folder_settings_action"/>
android:id="@+id/open_folder"
android:title="@string/open_action"
/>
<item
android:id="@+id/mark_all_as_read"
android:icon="?attr/iconActionRead"
android:showAsAction="always"
android:title="@string/mark_all_as_read_action"/>
android:title="@string/mark_all_as_read_action"
/>
<item
android:id="@+id/empty_trash"
android:title="@string/empty_trash_action"
/>
<item
android:id="@+id/check_mail"
android:title="@string/check_mail_action"
/>
<item
android:id="@+id/send_messages"
android:showAsAction="never"
android:title="@string/send_messages_action"/>
android:title="@string/send_messages_action"
/>
<item
android:id="@+id/folder_settings"
android:title="@string/folder_settings_action"
/>
<item
android:id="@+id/clear_local_folder"
android:showAsAction="never"
android:title="@string/clear_local_folder_action"/>
android:title="@string/clear_local_folder_action"
/>
<item
android:id="@+id/expunge"
android:showAsAction="never"
android:title="@string/expunge_action"/>
</menu>
android:title="@string/expunge_action"
/>
</menu>

View File

@ -19,14 +19,16 @@ import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.util.TypedValue;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.Filter;
@ -38,10 +40,11 @@ import android.widget.TextView;
import android.widget.Toast;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.OnNavigationListener;
import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.actionbarsherlock.view.Window;
import com.fsck.k9.Account;
import com.fsck.k9.Account.FolderMode;
import com.fsck.k9.AccountStats;
@ -52,6 +55,7 @@ import com.fsck.k9.Preferences;
import com.fsck.k9.R;
import com.fsck.k9.SearchSpecification;
import com.fsck.k9.activity.FolderList.FolderListAdapter.FolderListFilter;
import com.fsck.k9.activity.misc.ActionBarNavigationSpinner;
import com.fsck.k9.activity.setup.AccountSettings;
import com.fsck.k9.activity.setup.FolderSettings;
import com.fsck.k9.activity.setup.Prefs;
@ -72,7 +76,7 @@ import com.fsck.k9.service.MailService;
* Activity shows list of the Account's folders
*/
public class FolderList extends K9ListActivity {
public class FolderList extends K9ListActivity implements OnNavigationListener {
/*
* Constants for showDialog() etc.
*/
@ -99,8 +103,6 @@ public class FolderList extends K9ListActivity {
private int mUnreadMessageCount;
private FolderInfoHolder mSelectedContextFolder = null;
private FontSizes mFontSizes = K9.getFontSizes();
private Context context;
@ -304,27 +306,6 @@ public class FolderList extends K9ListActivity {
onOpenFolder(((FolderInfoHolder)mAdapter.getItem(position)).name);
}
});
// Enable context action bar behaviour
mListView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// is already in selection mode we ignore the next long presses
if (mSelectedContextFolder != null) {
return false;
}
// this cast will always be safe
mSelectedContextFolder = (FolderInfoHolder) mAdapter.getItem(position);
mActionMode = FolderList.this.startActionMode(mActionModeCallback);
mActionMode.invalidate();
mActionMode.setTitle(String.format(getString(R.string.actionbar_string_selected),
mSelectedContextFolder.displayName));
return true;
}});
registerForContextMenu(mListView);
mListView.setSaveEnabled(true);
@ -348,6 +329,19 @@ public class FolderList extends K9ListActivity {
mActionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
if (itemId == ActionBarNavigationSpinner.AB_NAVIGATION_INBOX) {
onOpenFolder(mAccount.getInboxFolderName());
return true;
} else if (itemId == ActionBarNavigationSpinner.AB_NAVIGATION_ACCOUNTS) {
onAccounts();
return true;
}
return false;
}
@Override
public void onNewIntent(Intent intent) {
setIntent(intent); // onNewIntent doesn't autoset our "internal" intent
@ -666,6 +660,54 @@ public class FolderList extends K9ListActivity {
return true;
}
@Override public boolean onContextItemSelected(android.view.MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo();
FolderInfoHolder folder = (FolderInfoHolder) mAdapter.getItem(info.position);
switch (item.getItemId()) {
case R.id.open_folder:
onOpenFolder(folder.name);
break;
case R.id.mark_all_as_read:
onMarkAllAsRead(mAccount, folder.name);
break;
case R.id.send_messages:
sendMail(mAccount);
break;
case R.id.check_mail:
checkMail(folder);
break;
case R.id.folder_settings:
onEditFolder(mAccount, folder.name);
break;
case R.id.empty_trash:
onEmptyTrash(mAccount);
break;
case R.id.expunge:
onExpunge(mAccount, folder.name);
break;
case R.id.clear_local_folder:
onClearFolder(mAccount, folder.name);
break;
}
return super.onContextItemSelected(item);
}
private FolderInfoHolder mSelectedContextFolder = null;
private void onMarkAllAsRead(final Account account, final String folder) {
mSelectedContextFolder = mAdapter.getFolder(folder);
if (K9.confirmMarkAllAsRead()) {
@ -778,6 +820,39 @@ public class FolderList extends K9ListActivity {
}
}
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
getMenuInflater().inflate(R.menu.folder_context, menu);
FolderInfoHolder folder = (FolderInfoHolder) mAdapter.getItem(info.position);
menu.setHeaderTitle(folder.displayName);
if (!folder.name.equals(mAccount.getTrashFolderName()))
menu.findItem(R.id.empty_trash).setVisible(false);
if (folder.name.equals(mAccount.getOutboxFolderName())) {
menu.findItem(R.id.check_mail).setVisible(false);
} else {
menu.findItem(R.id.send_messages).setVisible(false);
}
if (K9.ERROR_FOLDER_NAME.equals(folder.name)) {
menu.findItem(R.id.expunge).setVisible(false);
}
if (!MessagingController.getInstance(getApplication()).isMoveCapable(mAccount)) {
// FIXME: Really we want to do this for all local-only folders
if (!mAccount.getInboxFolderName().equals(folder.name)) {
menu.findItem(R.id.check_mail).setVisible(false);
}
menu.findItem(R.id.expunge).setVisible(false);
}
menu.setHeaderTitle(folder.displayName);
}
class FolderListAdapter extends BaseAdapter implements Filterable {
private ArrayList<FolderInfoHolder> mFolders = new ArrayList<FolderInfoHolder>();
private List<FolderInfoHolder> mFilteredFolders = Collections.unmodifiableList(mFolders);
@ -1384,93 +1459,4 @@ public class FolderList extends K9ListActivity {
MessageList.actionHandle(context, description, searchSpec);
}
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
FolderInfoHolder folder = mSelectedContextFolder;
menu.findItem(R.id.empty_trash).setVisible(
folder.name.equals(mAccount.getTrashFolderName()) ? false : true);
if (folder.name.equals(mAccount.getOutboxFolderName())) {
menu.findItem(R.id.check_mail).setVisible(false);
menu.findItem(R.id.send_messages).setVisible(true);
} else {
menu.findItem(R.id.send_messages).setVisible(false);
menu.findItem(R.id.check_mail).setVisible(true);
}
menu.findItem(R.id.expunge).setVisible(
K9.ERROR_FOLDER_NAME.equals(folder.name) ? false : true);
if (!MessagingController.getInstance(getApplication()).isMoveCapable(mAccount)) {
// FIXME: Really we want to do this for all local-only folders
if (!mAccount.getInboxFolderName().equals(folder.name)) {
menu.findItem(R.id.check_mail).setVisible(false);
} else {
menu.findItem(R.id.check_mail).setVisible(true);
}
menu.findItem(R.id.expunge).setVisible(false);
} else {
menu.findItem(R.id.expunge).setVisible(true);
}
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
mSelectedContextFolder = null;
mActionMode = null;
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.folder_context, menu);
return true;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {;
FolderInfoHolder folder= mSelectedContextFolder;
switch (item.getItemId()) {
case R.id.mark_all_as_read:
onMarkAllAsRead(mAccount, folder.name);
break;
case R.id.send_messages:
sendMail(mAccount);
break;
case R.id.check_mail:
checkMail(folder);
break;
case R.id.folder_settings:
onEditFolder(mAccount, folder.name);
break;
case R.id.empty_trash:
onEmptyTrash(mAccount);
break;
case R.id.expunge:
onExpunge(mAccount, folder.name);
break;
case R.id.clear_local_folder:
onClearFolder(mAccount, folder.name);
break;
}
return true;
}
};
}