am f642b812: Don\'t flicker the actionbar folder/account

* commit 'f642b8128392890d84845ba8793192da0f9125ae':
  Don't flicker the actionbar folder/account
diff --git a/src/com/android/mail/ui/MailActionBarView.java b/src/com/android/mail/ui/MailActionBarView.java
index 090649b..9e94d33 100644
--- a/src/com/android/mail/ui/MailActionBarView.java
+++ b/src/com/android/mail/ui/MailActionBarView.java
@@ -55,7 +55,6 @@
 import android.widget.SearchView;
 import android.widget.SearchView.OnQueryTextListener;
 import android.widget.SearchView.OnSuggestionListener;
-import android.widget.TextView;
 
 /**
  * View to manage the various states of the Mail Action Bar.
@@ -95,6 +94,8 @@
     private MenuItem mRefreshItem;
     private MenuItem mFolderSettingsItem;
     private View mRefreshActionView;
+    /** True if the current device is a tablet, false otherwise. */
+    private boolean mIsOnTablet;
     private boolean mRefreshInProgress;
     private Conversation mCurrentConversation;
     private AllAccountObserver mAllAccountObserver;
@@ -175,6 +176,7 @@
         super(context, attrs, defStyle);
         final Resources r = getResources();
         mShowConversationSubject = r.getBoolean(R.bool.show_conversation_subject);
+        mIsOnTablet = Utils.useTabletUI(r);
     }
 
     @Override
@@ -289,9 +291,7 @@
             bundle.putParcelable(UIProvider.SetCurrentAccountColumns.ACCOUNT, account);
             resolver.call(mAccount.uri, UIProvider.AccountCallMethods.SET_CURRENT_ACCOUNT,
                     mAccount.uri.toString(), bundle);
-            if (mHaveMultipleAccounts && mActionBar != null) {
-                mActionBar.setSubtitle(account.name);
-            }
+            setFolderAndAccount();
         }
     }
 
@@ -309,7 +309,7 @@
     public void setFolder(Folder folder) {
         setRefreshInProgress(false);
         mFolder = folder;
-        updateFolder(folder);
+        setFolderAndAccount();
         mActivity.invalidateOptionsMenu();
     }
 
@@ -435,6 +435,7 @@
     private void showNavList() {
         setTitleModeFlags(ActionBar.DISPLAY_SHOW_TITLE);
         mSubjectView.setVisibility(View.GONE);
+        setFolderAndAccount();
     }
 
     /**
@@ -445,7 +446,6 @@
     protected void setSnippetMode() {
         setTitleModeFlags(ActionBar.DISPLAY_SHOW_CUSTOM);
         mSubjectView.setVisibility(View.VISIBLE);
-
         mSubjectView.addOnLayoutChangeListener(mSnippetLayoutListener);
     }
 
@@ -569,8 +569,23 @@
         return true;
     }
 
-    private void updateFolder(Folder in) {
-        mActionBar.setTitle(in.name);
+    /**
+     * Uses the current state to update the current folder {@link #mFolder} and the current
+     * account {@link #mAccount} shown in the actionbar.
+     */
+    private void setFolderAndAccount() {
+        // Check if we should be changing the actionbar at all, and back off if not.
+        final boolean isShowingFolderAndAccount =
+                (mActionBar != null && (mIsOnTablet || ViewMode.isListMode(mMode)));
+        if (!isShowingFolderAndAccount) {
+            return;
+        }
+        if (mFolder != null) {
+            mActionBar.setTitle(mFolder.name);
+        }
+        if (mAccount != null && mHaveMultipleAccounts) {
+            mActionBar.setSubtitle(mAccount.name);
+        }
         // TODO(viki): Show unread count.
     }
 
@@ -578,7 +593,7 @@
      * Notify that the folder has changed.
      */
     public void onFolderUpdated(Folder folder) {
-        updateFolder(folder);
+        setFolderAndAccount();
         if (folder.isSyncInProgress()) {
             onRefreshStarted();
         } else {