diff options
Diffstat (limited to 'src/com/android/browser/BrowserBookmarksPage.java')
-rw-r--r-- | src/com/android/browser/BrowserBookmarksPage.java | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java index 2c38334..bf96597 100644 --- a/src/com/android/browser/BrowserBookmarksPage.java +++ b/src/com/android/browser/BrowserBookmarksPage.java @@ -26,6 +26,7 @@ import android.content.Context; import android.content.CursorLoader; import android.content.Intent; import android.content.Loader; +import android.content.SharedPreferences; import android.content.res.Configuration; import android.content.res.Resources; import android.database.Cursor; @@ -57,6 +58,9 @@ import com.android.browser.provider.BrowserProvider2; import com.android.browser.view.BookmarkExpandableView; import com.android.browser.view.BookmarkExpandableView.BookmarkContextMenuInfo; +import org.json.JSONException; +import org.json.JSONObject; + import java.util.HashMap; interface BookmarksPageCallbacks { @@ -84,6 +88,7 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte static final int LOADER_BOOKMARKS = 100; static final String EXTRA_DISABLE_WINDOW = "disable_new_window"; + static final String PREF_GROUP_STATE = "bbp_group_state"; static final String ACCOUNT_TYPE = "account_type"; static final String ACCOUNT_NAME = "account_name"; @@ -100,6 +105,7 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte View mHeader; HashMap<Integer, BrowserBookmarksAdapter> mBookmarkAdapters = new HashMap<Integer, BrowserBookmarksAdapter>(); BookmarkDragHandler mDragHandler; + JSONObject mState; @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { @@ -130,7 +136,12 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte BrowserBookmarksAdapter adapter = new BrowserBookmarksAdapter( getActivity(), VIEW_THUMBNAILS); mBookmarkAdapters.put(id, adapter); - mGrid.addAccount(accountName, adapter); + boolean expand = true; + try { + expand = mState.getBoolean(accountName != null ? accountName + : BookmarkExpandableView.LOCAL_ACCOUNT_NAME); + } catch (JSONException e) {} // no state for accountName + mGrid.addAccount(accountName, adapter, expand); lm.restartLoader(id, args, this); id++; } @@ -300,6 +311,14 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); + SharedPreferences prefs = BrowserSettings.getInstance().getPreferences(); + try { + mState = new JSONObject(prefs.getString(PREF_GROUP_STATE, "{}")); + } catch (JSONException e) { + // Parse failed, clear preference and start with empty state + prefs.edit().remove(PREF_GROUP_STATE).apply(); + mState = new JSONObject(); + } Bundle args = getArguments(); mDisableNewWindow = args == null ? false : args.getBoolean(EXTRA_DISABLE_WINDOW, false); setHasOptionsMenu(true); @@ -309,6 +328,21 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte } } + @Override + public void onPause() { + super.onPause(); + try { + mState = mGrid.saveGroupState(); + // Save state + SharedPreferences prefs = BrowserSettings.getInstance().getPreferences(); + prefs.edit() + .putString(PREF_GROUP_STATE, mState.toString()) + .apply(); + } catch (JSONException e) { + // Not critical, ignore + } + } + private static class CombinedBookmarksCallbackWrapper implements BookmarksPageCallbacks { |