Renaming NavigationBar to ActionBarAdapter

Also, moving browser modes to a class of their own.

Change-Id: Ie2745581537e09717a2c7a58ecebec1b7ada0c81
diff --git a/src/com/android/contacts/activities/NavigationBar.java b/src/com/android/contacts/activities/ActionBarAdapter.java
similarity index 79%
rename from src/com/android/contacts/activities/NavigationBar.java
rename to src/com/android/contacts/activities/ActionBarAdapter.java
index 5b6caa6..2247d93 100644
--- a/src/com/android/contacts/activities/NavigationBar.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007 The Android Open Source Project
+ * Copyright (C) 2010 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -33,12 +33,12 @@
 import java.util.HashMap;
 
 /**
- * Navigation bar at the top of the Contacts activity.
+ * Adapter for the action bar at the top of the Contacts activity.
  */
-public class NavigationBar implements OnFilterTextListener, OnClickListener {
+public class ActionBarAdapter implements OnFilterTextListener, OnClickListener {
 
     public interface Listener {
-        void onNavigationBarChange();
+        void onAction();
     }
 
     private static final String EXTRA_KEY_DEFAULT_MODE = "navBar.defaultMode";
@@ -49,12 +49,8 @@
     private static final String KEY_MODE_FAVORITES = "mode_favorites";
     private static final String KEY_MODE_SEARCH = "mode_search";
 
-    public static final int MODE_CONTACTS = 0;
-    public static final int MODE_FAVORITES = 1;
-    public static final int MODE_SEARCH = 2;
-
-    private int mMode = MODE_CONTACTS;
-    private int mDefaultMode = MODE_CONTACTS;
+    private int mMode = ContactBrowserMode.MODE_CONTACTS;
+    private int mDefaultMode = ContactBrowserMode.MODE_CONTACTS;
     private String mQueryString;
     private HashMap<Integer, Bundle> mSavedStateByMode = new HashMap<Integer, Bundle>();
 
@@ -71,7 +67,7 @@
     private ToggleButton mSearchButton;
     private ImageView mCancelSearchButton;
 
-    public NavigationBar(Context context) {
+    public ActionBarAdapter(Context context) {
         mContext = context;
     }
 
@@ -83,19 +79,19 @@
             mDefaultMode = savedState.getInt(EXTRA_KEY_DEFAULT_MODE, -1);
             mMode = savedState.getInt(EXTRA_KEY_MODE, -1);
             mQueryString = savedState.getString(EXTRA_KEY_QUERY);
-            restoreSavedState(savedState, MODE_CONTACTS, KEY_MODE_CONTACTS);
-            restoreSavedState(savedState, MODE_FAVORITES, KEY_MODE_FAVORITES);
-            restoreSavedState(savedState, MODE_SEARCH, KEY_MODE_SEARCH);
+            restoreSavedState(savedState, ContactBrowserMode.MODE_CONTACTS, KEY_MODE_CONTACTS);
+            restoreSavedState(savedState, ContactBrowserMode.MODE_FAVORITES, KEY_MODE_FAVORITES);
+            restoreSavedState(savedState, ContactBrowserMode.MODE_SEARCH, KEY_MODE_SEARCH);
         }
 
         int actionCode = request.getActionCode();
         if (mDefaultMode == -1) {
             mDefaultMode = actionCode == ContactsRequest.ACTION_DEFAULT
-                    ? NavigationBar.MODE_CONTACTS
-                    : NavigationBar.MODE_FAVORITES;
+                    ? ContactBrowserMode.MODE_CONTACTS
+                    : ContactBrowserMode.MODE_FAVORITES;
         }
         if (mMode == -1) {
-            mMode = request.isSearchMode() ? NavigationBar.MODE_SEARCH : mDefaultMode;
+            mMode = request.isSearchMode() ? ContactBrowserMode.MODE_SEARCH : mDefaultMode;
         }
         if (mQueryString == null) {
             mQueryString = request.getQueryString();
@@ -133,7 +129,7 @@
         mMode = mode;
         update();
         if (mListener != null) {
-            mListener.onNavigationBarChange();
+            mListener.onAction();
         }
     }
 
@@ -156,7 +152,7 @@
 
     public void update() {
         switch(mMode) {
-            case MODE_CONTACTS:
+            case ContactBrowserMode.MODE_CONTACTS:
                 mContactsButton.setChecked(true);
                 mFavoritesButton.setChecked(false);
                 mSearchButton.setChecked(false);
@@ -164,7 +160,7 @@
                 mSearchEditText.setVisibility(View.GONE);
                 mCancelSearchButton.setVisibility(View.GONE);
                 break;
-            case MODE_FAVORITES:
+            case ContactBrowserMode.MODE_FAVORITES:
                 mContactsButton.setChecked(false);
                 mFavoritesButton.setChecked(true);
                 mSearchButton.setChecked(false);
@@ -172,7 +168,7 @@
                 mSearchEditText.setVisibility(View.GONE);
                 mCancelSearchButton.setVisibility(View.GONE);
                 break;
-            case MODE_SEARCH:
+            case ContactBrowserMode.MODE_SEARCH:
                 mContactsButton.setChecked(false);
                 mFavoritesButton.setChecked(false);
                 mSearchButton.setVisibility(View.GONE);
@@ -187,19 +183,21 @@
     }
 
     public void toggleSearchMode() {
-        setMode(mMode == MODE_SEARCH ? mDefaultMode : MODE_SEARCH);
+        setMode(mMode == ContactBrowserMode.MODE_SEARCH
+                ? mDefaultMode
+                : ContactBrowserMode.MODE_SEARCH);
     }
 
     @Override
     public void onClick(View view) {
         if (view == mSearchButton) {
-            setMode(MODE_SEARCH);
+            setMode(ContactBrowserMode.MODE_SEARCH);
         } else if (view == mContactsButton) {
-            setMode(MODE_CONTACTS);
-            setDefaultMode(MODE_CONTACTS);
+            setMode(ContactBrowserMode.MODE_CONTACTS);
+            setDefaultMode(ContactBrowserMode.MODE_CONTACTS);
         } else if (view == mFavoritesButton) {
-            setMode(MODE_FAVORITES);
-            setDefaultMode(MODE_FAVORITES);
+            setMode(ContactBrowserMode.MODE_FAVORITES);
+            setDefaultMode(ContactBrowserMode.MODE_FAVORITES);
         } else {        // mCancelSearchButton
             setMode(mDefaultMode);
         }
@@ -209,7 +207,7 @@
     public void onFilterChange(String queryString) {
         mQueryString = queryString;
         if (mListener != null) {
-            mListener.onNavigationBarChange();
+            mListener.onAction();
         }
     }
 
@@ -230,9 +228,9 @@
         outState.putInt(EXTRA_KEY_DEFAULT_MODE, mDefaultMode);
         outState.putInt(EXTRA_KEY_MODE, mMode);
         outState.putString(EXTRA_KEY_QUERY, mQueryString);
-        saveInstanceState(outState, MODE_CONTACTS, KEY_MODE_CONTACTS);
-        saveInstanceState(outState, MODE_FAVORITES, KEY_MODE_FAVORITES);
-        saveInstanceState(outState, MODE_SEARCH, KEY_MODE_SEARCH);
+        saveInstanceState(outState, ContactBrowserMode.MODE_CONTACTS, KEY_MODE_CONTACTS);
+        saveInstanceState(outState, ContactBrowserMode.MODE_FAVORITES, KEY_MODE_FAVORITES);
+        saveInstanceState(outState, ContactBrowserMode.MODE_SEARCH, KEY_MODE_SEARCH);
     }
 
     private void saveInstanceState(Bundle outState, int mode, String key) {
diff --git a/src/com/android/contacts/activities/ContactBrowserActivity.java b/src/com/android/contacts/activities/ContactBrowserActivity.java
index 40b5693..eb951d2 100644
--- a/src/com/android/contacts/activities/ContactBrowserActivity.java
+++ b/src/com/android/contacts/activities/ContactBrowserActivity.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007 The Android Open Source Project
+ * Copyright (C) 2010 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -60,7 +60,7 @@
  * the right
  */
 public class ContactBrowserActivity extends Activity
-        implements View.OnCreateContextMenuListener, NavigationBar.Listener,
+        implements View.OnCreateContextMenuListener, ActionBarAdapter.Listener,
         DialogManager.DialogShowingViewActivity {
 
     private static final String TAG = "ContactBrowserActivity";
@@ -79,31 +79,33 @@
             DIALOG_MANAGER_ID_2);
 
     private ContactsIntentResolver mIntentResolver;
+    private ContactsRequest mRequest;
+
+    private boolean mHasActionBar;
+    private ActionBarAdapter mActionBarAdapter;
+
+    /**
+     * Contact browser mode, see {@link ContactBrowserMode}.
+     */
+    private int mMode = -1;
+
     private ContactBrowseListFragment mListFragment;
-
-    private PhoneNumberInteraction mPhoneNumberCallInteraction;
-    private PhoneNumberInteraction mSendTextMessageInteraction;
-    private ContactDeletionInteraction mContactDeletionInteraction;
-    private ImportExportInteraction mImportExportInteraction;
-
     private ContactNoneFragment mEmptyFragment;
 
+    private boolean mContactContentDisplayed;
     private ContactDetailFragment mDetailFragment;
     private DetailFragmentListener mDetailFragmentListener = new DetailFragmentListener();
 
     private ContactEditorFragment mEditorFragment;
     private EditorFragmentListener mEditorFragmentListener = new EditorFragmentListener();
 
+    private PhoneNumberInteraction mPhoneNumberCallInteraction;
+    private PhoneNumberInteraction mSendTextMessageInteraction;
+    private ContactDeletionInteraction mContactDeletionInteraction;
+    private ImportExportInteraction mImportExportInteraction;
+
     private boolean mSearchInitiated;
 
-    private ContactsRequest mRequest;
-
-    private boolean mContactContentDisplayed;
-    private NavigationBar mNavigationBar;
-    private int mMode = -1;
-
-    private boolean mHasActionBar;
-
     public ContactBrowserActivity() {
         mIntentResolver = new ContactsIntentResolver(this);
     }
@@ -151,15 +153,14 @@
         setTitle(mRequest.getActivityTitle());
         setContentView(R.layout.contact_browser);
 
-
         mHasActionBar = getWindow().hasFeature(Window.FEATURE_ACTION_BAR);
         if (mHasActionBar) {
-            mNavigationBar = new NavigationBar(this);
-            mNavigationBar.onCreate(savedState, mRequest);
-            mNavigationBar.setListener(this);
+            mActionBarAdapter = new ActionBarAdapter(this);
+            mActionBarAdapter.onCreate(savedState, mRequest);
+            mActionBarAdapter.setListener(this);
 
             ActionBar actionBar = getActionBar();
-            View navBarView = mNavigationBar.onCreateView(getLayoutInflater());
+            View navBarView = mActionBarAdapter.onCreateView(getLayoutInflater());
             actionBar.setCustomNavigationMode(navBarView);
         }
 
@@ -174,19 +175,19 @@
     private void configureListFragment() {
         int mode = -1;
         if (mHasActionBar) {
-            mode = mNavigationBar.getMode();
-            if (mode == NavigationBar.MODE_SEARCH
-                    && TextUtils.isEmpty(mNavigationBar.getQueryString())) {
-                mode = mNavigationBar.getDefaultMode();
+            mode = mActionBarAdapter.getMode();
+            if (mode == ContactBrowserMode.MODE_SEARCH
+                    && TextUtils.isEmpty(mActionBarAdapter.getQueryString())) {
+                mode = mActionBarAdapter.getDefaultMode();
             }
         } else {
             int actionCode = mRequest.getActionCode();
             if (actionCode == ContactsRequest.ACTION_FREQUENT ||
                     actionCode == ContactsRequest.ACTION_STARRED ||
                     actionCode == ContactsRequest.ACTION_STREQUENT) {
-                mode = NavigationBar.MODE_FAVORITES;
+                mode = ContactBrowserMode.MODE_FAVORITES;
             } else {
-                mode = NavigationBar.MODE_CONTACTS;
+                mode = ContactBrowserMode.MODE_CONTACTS;
             }
         }
 
@@ -195,11 +196,11 @@
             closeListFragment();
             mMode = mode;
             switch (mMode) {
-                case NavigationBar.MODE_CONTACTS: {
+                case ContactBrowserMode.MODE_CONTACTS: {
                     mListFragment = createListFragment(ContactsRequest.ACTION_DEFAULT);
                     break;
                 }
-                case NavigationBar.MODE_FAVORITES: {
+                case ContactBrowserMode.MODE_FAVORITES: {
                     int favoritesAction = mRequest.getActionCode();
                     if (favoritesAction == ContactsRequest.ACTION_DEFAULT) {
                         favoritesAction = ContactsRequest.ACTION_STREQUENT;
@@ -207,19 +208,19 @@
                     mListFragment = createListFragment(favoritesAction);
                     break;
                 }
-                case NavigationBar.MODE_SEARCH: {
+                case ContactBrowserMode.MODE_SEARCH: {
                     mListFragment = createContactSearchFragment();
                     break;
                 }
             }
         }
 
-        if (mMode == NavigationBar.MODE_SEARCH) {
-            mListFragment.setQueryString(mNavigationBar.getQueryString());
+        if (mMode == ContactBrowserMode.MODE_SEARCH) {
+            mListFragment.setQueryString(mActionBarAdapter.getQueryString());
         }
 
         if (mHasActionBar) {
-            Bundle savedStateForMode = mNavigationBar.getSavedStateForMode(mMode);
+            Bundle savedStateForMode = mActionBarAdapter.getSavedStateForMode(mMode);
             if (savedStateForMode != null) {
                 mListFragment.restoreSavedState(savedStateForMode);
             }
@@ -239,7 +240,7 @@
             if (mHasActionBar) {
                 Bundle state = new Bundle();
                 mListFragment.onSaveInstanceState(state);
-                mNavigationBar.saveStateForMode(mMode, state);
+                mActionBarAdapter.saveStateForMode(mMode, state);
             }
 
             mListFragment = null;
@@ -328,8 +329,11 @@
         mEmptyFragment = null;
     }
 
+    /**
+     * Handler for action bar actions.
+     */
     @Override
-    public void onNavigationBarChange() {
+    public void onAction() {
         configureListFragment();
         setupContactDetailFragment(mListFragment.getSelectedContactUri());
     }
@@ -551,7 +555,7 @@
         super.onCreateOptionsMenu(menu);
 
         MenuInflater inflater = getMenuInflater();
-        if (mContactContentDisplayed) {
+        if (mHasActionBar) {
             inflater.inflate(R.menu.actions, menu);
             return true;
         } else if (mRequest.getActionCode() == ContactsRequest.ACTION_DEFAULT ||
@@ -740,10 +744,10 @@
 
                 if (unicodeChar != 0) {
                     String query = new String(new int[]{ unicodeChar }, 0, 1);
-                    if (mContactContentDisplayed) {
-                        if (mNavigationBar.getMode() != NavigationBar.MODE_SEARCH) {
-                            mNavigationBar.setQueryString(query);
-                            mNavigationBar.setMode(NavigationBar.MODE_SEARCH);
+                    if (mHasActionBar) {
+                        if (mActionBarAdapter.getMode() != ContactBrowserMode.MODE_SEARCH) {
+                            mActionBarAdapter.setQueryString(query);
+                            mActionBarAdapter.setMode(ContactBrowserMode.MODE_SEARCH);
                             return true;
                         }
                     } else if (!mRequest.isSearchMode()) {
@@ -779,8 +783,8 @@
     protected void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
         outState.putInt(KEY_MODE, mMode);
-        if (mNavigationBar != null) {
-            mNavigationBar.onSaveInstanceState(outState);
+        if (mActionBarAdapter != null) {
+            mActionBarAdapter.onSaveInstanceState(outState);
         }
     }
 
diff --git a/src/com/android/contacts/activities/ContactBrowserMode.java b/src/com/android/contacts/activities/ContactBrowserMode.java
new file mode 100644
index 0000000..c135c1d
--- /dev/null
+++ b/src/com/android/contacts/activities/ContactBrowserMode.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.contacts.activities;
+
+/**
+ * Contact browser mode constants.
+ */
+public class ContactBrowserMode {
+
+    public static final int MODE_CONTACTS = 0;
+    public static final int MODE_FAVORITES = 1;
+    public static final int MODE_SEARCH = 2;
+
+}