mirror of
https://github.com/moparisthebest/k-9
synced 2024-08-13 17:03:48 -04:00
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:
parent
7d4152fdd4
commit
297e859b90
@ -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>
|
||||
|
@ -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;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user