Make inside conversation unread work; merge twopane/onepane controller logic.

These were the same!
Also inside conversation unread was not going back to the conv list.

Change-Id: Ia06bc9f33e424bb8677a9bb360e05dc7de91e811
diff --git a/src/com/android/mail/ui/AbstractActivityController.java b/src/com/android/mail/ui/AbstractActivityController.java
index f481cd5..07efd27 100644
--- a/src/com/android/mail/ui/AbstractActivityController.java
+++ b/src/com/android/mail/ui/AbstractActivityController.java
@@ -612,7 +612,39 @@
         final int id = item.getItemId();
         LogUtils.d(LOG_TAG, "AbstractController.onOptionsItemSelected(%d) called.", id);
         boolean handled = true;
+        final Collection<Conversation> target = Conversation.listOf(mCurrentConversation);
+        final Settings settings = mAccount.settings;
         switch (id) {
+            case R.id.archive: {
+                final boolean showDialog = (settings != null && settings.confirmArchive);
+                confirmAndDelete(target, showDialog, R.plurals.confirm_archive_conversation,
+                        getAction(R.id.archive, target));
+                break;
+            }
+            case R.id.delete: {
+                final boolean showDialog = (settings != null && settings.confirmDelete);
+                confirmAndDelete(target, showDialog, R.plurals.confirm_delete_conversation,
+                        getAction(R.id.delete, target));
+                break;
+            }
+            case R.id.mark_important:
+                updateCurrentConversation(ConversationColumns.PRIORITY,
+                        UIProvider.ConversationPriority.HIGH);
+                break;
+            case R.id.mark_not_important:
+                updateCurrentConversation(ConversationColumns.PRIORITY,
+                        UIProvider.ConversationPriority.LOW);
+                break;
+            case R.id.mute:
+                requestDelete(target, getAction(R.id.mute, target));
+                break;
+            case R.id.report_spam:
+                requestDelete(target, getAction(R.id.report_spam, target));
+                break;
+            case R.id.inside_conversation_unread:
+                updateCurrentConversation(ConversationColumns.READ, false);
+                mViewMode.enterConversationListMode();
+                break;
             case android.R.id.home:
                 onUpPressed();
                 break;
@@ -1512,12 +1544,6 @@
                     mConversationListCursor.updateInt(mContext, mTarget,
                             ConversationColumns.PRIORITY, UIProvider.ConversationPriority.LOW);
                     break;
-                case R.id.inside_conversation_unread:
-                    LogUtils.d(LOG_TAG, "Marking conversation unread");
-                    mConversationListCursor.updateBoolean(mContext, mTarget,
-                            ConversationColumns.READ, false);
-                    undoEnabled = false;
-                    onBackPressed();
             }
             if (undoEnabled) {
                 onUndoAvailable(new UndoOperation(mTarget.size(), mAction));
diff --git a/src/com/android/mail/ui/OnePaneController.java b/src/com/android/mail/ui/OnePaneController.java
index eb8bcb0..edcbacb 100644
--- a/src/com/android/mail/ui/OnePaneController.java
+++ b/src/com/android/mail/ui/OnePaneController.java
@@ -416,50 +416,6 @@
     }
 
     @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        boolean handled = true;
-        final Collection<Conversation> target = Conversation.listOf(mCurrentConversation);
-        final Settings settings = mAccount.settings;
-        switch (item.getItemId()) {
-            case R.id.archive: {
-                LogUtils.d(LOG_TAG, "Entering archive");
-                final boolean showDialog = (settings != null && settings.confirmArchive);
-                confirmAndDelete(target, showDialog, R.plurals.confirm_archive_conversation,
-                        getAction(R.id.archive, target));
-                break;
-            }
-            case R.id.delete: {
-                final boolean showDialog = (settings != null && settings.confirmDelete);
-                confirmAndDelete(target, showDialog,
-                        R.plurals.confirm_delete_conversation, getAction(R.id.delete, target));
-                break;
-            }
-            case R.id.inside_conversation_unread:
-                // Mark as unread and advance.
-                requestUpdate(target, getAction(R.id.inside_conversation_unread, target));
-                break;
-            case R.id.mark_important:
-                updateCurrentConversation(ConversationColumns.PRIORITY,
-                        UIProvider.ConversationPriority.HIGH);
-                break;
-            case R.id.mark_not_important:
-                updateCurrentConversation(ConversationColumns.PRIORITY,
-                        UIProvider.ConversationPriority.LOW);
-                break;
-            case R.id.mute:
-                requestDelete(target, getAction(R.id.mute, target));
-                break;
-            case R.id.report_spam:
-                requestDelete(target, getAction(R.id.report_spam, target));
-                break;
-            default:
-                handled = false;
-                break;
-        }
-        return handled || super.onOptionsItemSelected(item);
-    }
-
-    @Override
     public void onUndoAvailable(UndoOperation op) {
         if (op != null && mAccount.supportsCapability(UIProvider.AccountCapabilities.UNDO)) {
             final int mode = mViewMode.getMode();
diff --git a/src/com/android/mail/ui/TwoPaneController.java b/src/com/android/mail/ui/TwoPaneController.java
index 3fd9bfe..9022d46 100644
--- a/src/com/android/mail/ui/TwoPaneController.java
+++ b/src/com/android/mail/ui/TwoPaneController.java
@@ -353,55 +353,6 @@
     }
 
     @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        boolean handled = true;
-        LogUtils.d(LOG_TAG, "TwoPane.onOptionsItemSelected(%d) called.", item.getItemId());
-        final Collection<Conversation> target = Conversation.listOf(mCurrentConversation);
-        final Settings settings = mAccount.settings;
-        switch (item.getItemId()) {
-            case R.id.archive: {
-                final boolean showDialog = (settings != null && settings.confirmArchive);
-                confirmAndDelete(target, showDialog, R.plurals.confirm_archive_conversation,
-                        getAction(R.id.archive, target));
-                break;
-            }
-            case R.id.delete: {
-                final boolean showDialog = (settings != null && settings.confirmDelete);
-                confirmAndDelete(target, showDialog, R.plurals.confirm_delete_conversation,
-                        getAction(R.id.delete, target));
-                break;
-            }
-            case R.id.inside_conversation_unread:
-                updateCurrentConversation(ConversationColumns.READ, false);
-                break;
-            case R.id.mark_important:
-                updateCurrentConversation(ConversationColumns.PRIORITY,
-                        UIProvider.ConversationPriority.HIGH);
-                break;
-            case R.id.mark_not_important:
-                updateCurrentConversation(ConversationColumns.PRIORITY,
-                        UIProvider.ConversationPriority.LOW);
-                break;
-            case R.id.mute:
-                ConversationListFragment convList = getConversationListFragment();
-                if (convList != null) {
-                    convList.requestDelete(target, getAction(R.id.mute, target));
-                }
-                break;
-            case R.id.report_spam:
-                convList = getConversationListFragment();
-                if (convList != null) {
-                    convList.requestDelete(target, getAction(R.id.report_spam, target));
-                }
-                break;
-            default:
-                handled = false;
-                break;
-        }
-        return handled || super.onOptionsItemSelected(item);
-    }
-
-    @Override
     public void onUndoAvailable(UndoOperation op) {
         final int mode = mViewMode.getMode();
         final FrameLayout.LayoutParams params;