Merge "Implement sticky tab"
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index a12154d..863c2f4 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -25,8 +25,10 @@
import android.app.ActionBar.Tab;
import android.app.FragmentTransaction;
import android.content.Context;
+import android.content.SharedPreferences;
import android.content.res.TypedArray;
import android.os.Bundle;
+import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
@@ -57,6 +59,8 @@
private static final String EXTRA_KEY_QUERY = "navBar.query";
private static final String EXTRA_KEY_SELECTED_TAB = "navBar.selectedTab";
+ private static final String PERSISTENT_LAST_TAB = "actionBarAdapter.lastTab";
+
private boolean mSearchMode;
private String mQueryString;
@@ -64,6 +68,7 @@
private SearchView mSearchView;
private final Context mContext;
+ private final SharedPreferences mPrefs;
private final boolean mAlwaysShowSearchView;
private Listener mListener;
@@ -89,12 +94,14 @@
}
}
- private TabState mCurrentTab = TabState.FAVORITES;
+ private static final TabState DEFAULT_TAB = TabState.ALL;
+ private TabState mCurrentTab = DEFAULT_TAB;
public ActionBarAdapter(Context context, Listener listener, ActionBar actionBar) {
mContext = context;
mListener = listener;
mActionBar = actionBar;
+ mPrefs = PreferenceManager.getDefaultSharedPreferences(mContext);
mSearchLabelText = mContext.getString(R.string.search_label);
mAlwaysShowSearchView = mContext.getResources().getBoolean(R.bool.always_show_search_view);
@@ -126,6 +133,7 @@
if (savedState == null) {
mSearchMode = request.isSearchMode();
mQueryString = request.getQueryString();
+ mCurrentTab = loadLastTabPreference();
} else {
mSearchMode = savedState.getBoolean(EXTRA_KEY_SEARCH_MODE);
mQueryString = savedState.getString(EXTRA_KEY_QUERY);
@@ -190,6 +198,7 @@
}
if (notifyListener && mListener != null) mListener.onSelectedTabChanged();
+ saveLastTabPreference(mCurrentTab);
}
public TabState getCurrentTab() {
@@ -340,4 +349,17 @@
mSearchView.requestFocus();
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 TabState loadLastTabPreference() {
+ try {
+ return TabState.fromInt(mPrefs.getInt(PERSISTENT_LAST_TAB, DEFAULT_TAB.ordinal()));
+ } catch (IllegalArgumentException e) {
+ // Preference is corrupt?
+ return DEFAULT_TAB;
+ }
+ }
}