Replace enum by int
Change-Id: I0d7aafa509f6d2747e78493b67dc65de52c9bb68
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index 0260ca6..3024418 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -77,27 +77,16 @@
private boolean mShowHomeIcon;
private boolean mShowTabsAsText;
- public enum TabState {
- GROUPS,
- ALL,
- FAVORITES;
+ public interface TabState {
+ public static int GROUPS = 0;
+ public static int ALL = 1;
+ public static int FAVORITES = 2;
- public static TabState fromInt(int value) {
- if (GROUPS.ordinal() == value) {
- return GROUPS;
- }
- if (ALL.ordinal() == value) {
- return ALL;
- }
- if (FAVORITES.ordinal() == value) {
- return FAVORITES;
- }
- throw new IllegalArgumentException("Invalid value: " + value);
- }
+ public static int COUNT = 3;
+ public static int DEFAULT = ALL;
}
- private static final TabState DEFAULT_TAB = TabState.ALL;
- private TabState mCurrentTab = DEFAULT_TAB;
+ private int mCurrentTab = TabState.DEFAULT;
public ActionBarAdapter(Context context, Listener listener, ActionBar actionBar,
boolean isUsingTwoPanes) {
@@ -149,7 +138,7 @@
mQueryString = savedState.getString(EXTRA_KEY_QUERY);
// Just set to the field here. The listener will be notified by update().
- mCurrentTab = TabState.fromInt(savedState.getInt(EXTRA_KEY_SELECTED_TAB));
+ mCurrentTab = savedState.getInt(EXTRA_KEY_SELECTED_TAB);
}
// Show tabs or the expanded {@link SearchView}, depending on whether or not we are in
// search mode.
@@ -165,9 +154,8 @@
mListener = listener;
}
- private void addTab(TabState tabState, int icon, int description) {
+ private void addTab(int expectedTabIndex, int icon, int description) {
final Tab tab = mActionBar.newTab();
- tab.setTag(tabState);
tab.setTabListener(mTabListener);
if (mShowTabsAsText) {
tab.setText(description);
@@ -176,6 +164,9 @@
tab.setContentDescription(description);
}
mActionBar.addTab(tab);
+ if (expectedTabIndex != tab.getPosition()) {
+ throw new IllegalStateException("Tabs must be created in the right order");
+ }
}
private class MyTabListener implements ActionBar.TabListener {
@@ -191,7 +182,7 @@
@Override public void onTabSelected(Tab tab, FragmentTransaction ft) {
if (!mIgnoreTabSelected) {
- setCurrentTab((TabState)tab.getTag());
+ setCurrentTab(tab.getPosition());
}
}
}
@@ -199,31 +190,29 @@
/**
* Change the current tab, and notify the listener.
*/
- public void setCurrentTab(TabState tab) {
+ public void setCurrentTab(int tab) {
setCurrentTab(tab, true);
}
/**
* Change the current tab
*/
- public void setCurrentTab(TabState tab, boolean notifyListener) {
- if (tab == null) throw new NullPointerException();
+ public void setCurrentTab(int tab, boolean notifyListener) {
if (tab == mCurrentTab) {
return;
}
mCurrentTab = tab;
- int index = mCurrentTab.ordinal();
if ((mActionBar.getNavigationMode() == ActionBar.NAVIGATION_MODE_TABS)
- && (index != mActionBar.getSelectedNavigationIndex())) {
- mActionBar.setSelectedNavigationItem(index);
+ && (mCurrentTab != mActionBar.getSelectedNavigationIndex())) {
+ mActionBar.setSelectedNavigationItem(mCurrentTab);
}
if (notifyListener && mListener != null) mListener.onSelectedTabChanged();
saveLastTabPreference(mCurrentTab);
}
- public TabState getCurrentTab() {
+ public int getCurrentTab() {
return mCurrentTab;
}
@@ -320,7 +309,7 @@
// after this anyway.
mTabListener.mIgnoreTabSelected = true;
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
- mActionBar.setSelectedNavigationItem(mCurrentTab.ordinal());
+ mActionBar.setSelectedNavigationItem(mCurrentTab);
mTabListener.mIgnoreTabSelected = false;
}
mActionBar.setTitle(null);
@@ -379,7 +368,7 @@
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean(EXTRA_KEY_SEARCH_MODE, mSearchMode);
outState.putString(EXTRA_KEY_QUERY, mQueryString);
- outState.putInt(EXTRA_KEY_SELECTED_TAB, mCurrentTab.ordinal());
+ outState.putInt(EXTRA_KEY_SELECTED_TAB, mCurrentTab);
}
/**
@@ -399,16 +388,16 @@
mSearchView.setIconified(false); // Workaround for the "IME not popping up" issue.
}
- private void saveLastTabPreference(TabState tab) {
- mPrefs.edit().putInt(PERSISTENT_LAST_TAB, tab.ordinal()).apply();
+ private void saveLastTabPreference(int tab) {
+ mPrefs.edit().putInt(PERSISTENT_LAST_TAB, tab).apply();
}
- private TabState loadLastTabPreference() {
+ private int loadLastTabPreference() {
try {
- return TabState.fromInt(mPrefs.getInt(PERSISTENT_LAST_TAB, DEFAULT_TAB.ordinal()));
+ return mPrefs.getInt(PERSISTENT_LAST_TAB, TabState.DEFAULT);
} catch (IllegalArgumentException e) {
// Preference is corrupt?
- return DEFAULT_TAB;
+ return TabState.DEFAULT;
}
}
}
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 0d226d8..3300008 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -529,7 +529,7 @@
ContactListFilter filter = null;
int actionCode = mRequest.getActionCode();
boolean searchMode = mRequest.isSearchMode();
- TabState tabToOpen = null;
+ final int tabToOpen;
switch (actionCode) {
case ContactsRequest.ACTION_ALL_CONTACTS:
filter = ContactListFilter.createFilterWithType(
@@ -555,8 +555,11 @@
case ContactsRequest.ACTION_GROUP:
tabToOpen = TabState.GROUPS;
break;
+ default:
+ tabToOpen = -1;
+ break;
}
- if (tabToOpen != null) {
+ if (tabToOpen != -1) {
mActionBarAdapter.setCurrentTab(tabToOpen);
}
@@ -640,7 +643,7 @@
* {@link ActionBarAdapter#isSearchMode()} and {@link ActionBarAdapter#getCurrentTab()}.
*/
private void updateFragmentsVisibility() {
- TabState tab = mActionBarAdapter.getCurrentTab();
+ int tab = mActionBarAdapter.getCurrentTab();
// We use ViewPager on 1-pane.
if (!PhoneCapabilityTester.isUsingTwoPanes(this)) {
@@ -650,9 +653,8 @@
// No smooth scrolling if quitting from the search mode.
final boolean wasSearchMode = mTabPagerAdapter.isSearchMode();
mTabPagerAdapter.setSearchMode(false);
- int tabIndex = tab.ordinal();
- if (mTabPager.getCurrentItem() != tabIndex) {
- mTabPager.setCurrentItem(tabIndex, !wasSearchMode);
+ if (mTabPager.getCurrentItem() != tab) {
+ mTabPager.setCurrentItem(tab, !wasSearchMode);
}
}
invalidateOptionsMenu();
@@ -670,20 +672,20 @@
tab = TabState.ALL;
}
switch (tab) {
- case FAVORITES:
+ case TabState.FAVORITES:
mFavoritesView.setVisibility(View.VISIBLE);
mBrowserView.setVisibility(View.GONE);
mGroupDetailsView.setVisibility(View.GONE);
mContactDetailsView.setVisibility(View.GONE);
break;
- case GROUPS:
+ case TabState.GROUPS:
mFavoritesView.setVisibility(View.GONE);
mBrowserView.setVisibility(View.VISIBLE);
mGroupDetailsView.setVisibility(View.VISIBLE);
mContactDetailsView.setVisibility(View.GONE);
mGroupsFragment.setAddAccountsVisibility(!areGroupWritableAccountsAvailable());
break;
- case ALL:
+ case TabState.ALL:
mFavoritesView.setVisibility(View.GONE);
mBrowserView.setVisibility(View.VISIBLE);
mContactDetailsView.setVisibility(View.VISIBLE);
@@ -696,7 +698,7 @@
// Note mContactDetailLoaderFragment is an invisible fragment, but we still have to show/
// hide it so its options menu will be shown/hidden.
switch (tab) {
- case FAVORITES:
+ case TabState.FAVORITES:
showFragment(ft, mFavoritesFragment);
showFragment(ft, mFrequentFragment);
hideFragment(ft, mAllFragment);
@@ -705,7 +707,7 @@
hideFragment(ft, mGroupsFragment);
hideFragment(ft, mGroupDetailFragment);
break;
- case ALL:
+ case TabState.ALL:
hideFragment(ft, mFavoritesFragment);
hideFragment(ft, mFrequentFragment);
showFragment(ft, mAllFragment);
@@ -714,7 +716,7 @@
hideFragment(ft, mGroupsFragment);
hideFragment(ft, mGroupDetailFragment);
break;
- case GROUPS:
+ case TabState.GROUPS:
hideFragment(ft, mFavoritesFragment);
hideFragment(ft, mFrequentFragment);
hideFragment(ft, mAllFragment);
@@ -734,18 +736,18 @@
showEmptyStateForTab(tab);
}
- private void showEmptyStateForTab(TabState tab) {
+ private void showEmptyStateForTab(int tab) {
if (mContactsUnavailableFragment != null) {
switch (tab) {
- case FAVORITES:
+ case TabState.FAVORITES:
mContactsUnavailableFragment.setMessageText(
R.string.listTotalAllContactsZeroStarred, -1);
break;
- case GROUPS:
+ case TabState.GROUPS:
mContactsUnavailableFragment.setMessageText(R.string.noGroups,
areGroupWritableAccountsAvailable() ? -1 : R.string.noAccounts);
break;
- case ALL:
+ case TabState.ALL:
mContactsUnavailableFragment.setMessageText(R.string.noContacts, -1);
break;
}
@@ -765,10 +767,9 @@
public void onPageSelected(int position) {
// Make sure not in the search mode, in which case position != TabState.ordinal().
if (!mTabPagerAdapter.isSearchMode()) {
- TabState selectedTab = TabState.fromInt(position);
- mActionBarAdapter.setCurrentTab(selectedTab, false);
- showEmptyStateForTab(selectedTab);
- if (selectedTab == TabState.GROUPS) {
+ mActionBarAdapter.setCurrentTab(position, false);
+ showEmptyStateForTab(position);
+ if (position == TabState.GROUPS) {
mGroupsFragment.setAddAccountsVisibility(!areGroupWritableAccountsAvailable());
}
invalidateOptionsMenu();
@@ -812,7 +813,7 @@
@Override
public int getCount() {
- return mTabPagerAdapterSearchMode ? 1 : TabState.values().length;
+ return mTabPagerAdapterSearchMode ? 1 : TabState.COUNT;
}
/** Gets called when the number of items changes. */
@@ -824,13 +825,13 @@
}
} else {
if (object == mFavoritesFragment) {
- return TabState.FAVORITES.ordinal();
+ return TabState.FAVORITES;
}
if (object == mAllFragment) {
- return TabState.ALL.ordinal();
+ return TabState.ALL;
}
if (object == mGroupsFragment) {
- return TabState.GROUPS.ordinal();
+ return TabState.GROUPS;
}
}
return POSITION_NONE;
@@ -846,11 +847,11 @@
return mAllFragment;
}
} else {
- if (position == TabState.FAVORITES.ordinal()) {
+ if (position == TabState.FAVORITES) {
return mFavoritesFragment;
- } else if (position == TabState.ALL.ordinal()) {
+ } else if (position == TabState.ALL) {
return mAllFragment;
- } else if (position == TabState.GROUPS.ordinal()) {
+ } else if (position == TabState.GROUPS) {
return mGroupsFragment;
}
}
@@ -1032,8 +1033,7 @@
mainView.setVisibility(View.INVISIBLE);
}
- TabState tab = mActionBarAdapter.getCurrentTab();
- showEmptyStateForTab(tab);
+ showEmptyStateForTab(mActionBarAdapter.getCurrentTab());
}
invalidateOptionsMenuIfNeeded();
@@ -1404,17 +1404,17 @@
contactsFilterMenu.setVisible(false);
} else {
switch (mActionBarAdapter.getCurrentTab()) {
- case FAVORITES:
+ case TabState.FAVORITES:
addContactMenu.setVisible(false);
addGroupMenu.setVisible(false);
contactsFilterMenu.setVisible(false);
break;
- case ALL:
+ case TabState.ALL:
addContactMenu.setVisible(true);
addGroupMenu.setVisible(false);
contactsFilterMenu.setVisible(true);
break;
- case GROUPS:
+ case TabState.GROUPS:
// Do not display the "new group" button if no accounts are available
if (areGroupWritableAccountsAvailable()) {
addGroupMenu.setVisible(true);