Bug 1395792 - Add listener for AS SharedPreferences. r?mcomella
MozReview-Commit-ID: 9bW9bYjVyhr
--- a/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/ActivityStreamHomeFragment.java
+++ b/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/ActivityStreamHomeFragment.java
@@ -1,33 +1,65 @@
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.gecko.activitystream.homepanel;
+import android.app.Activity;
+import android.content.Context;
+import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.Nullable;
+import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import org.mozilla.gecko.GeckoSharedPrefs;
import org.mozilla.gecko.R;
import org.mozilla.gecko.Telemetry;
import org.mozilla.gecko.TelemetryContract;
+import org.mozilla.gecko.activitystream.ActivityStream;
import org.mozilla.gecko.home.HomeFragment;
/**
* Simple wrapper around the ActivityStream view that allows embedding as a HomePager panel.
*/
public class ActivityStreamHomeFragment
- extends HomeFragment {
+ extends HomeFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
private ActivityStreamPanel activityStreamPanel;
private boolean isSessionActive;
+ private SharedPreferences sharedPreferences;
+
+ @Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ sharedPreferences = GeckoSharedPrefs.forProfile(getContext());
+ sharedPreferences.registerOnSharedPreferenceChangeListener(this);
+ }
+
+ @Override
+ public void onDetach() {
+ super.onDetach();
+ sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
+ }
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
+ final boolean shouldReload = TextUtils.equals(s, ActivityStreamPanel.PREF_BOOKMARKS_ENABLED)
+ || TextUtils.equals(s, ActivityStreamPanel.PREF_VISITED_ENABLED)
+ || TextUtils.equals(s, ActivityStreamPanel.PREF_POCKET_ENABLED);
+
+ if (shouldReload) {
+ activityStreamPanel.reload(getLoaderManager());
+ }
+
+ }
@Override
protected void load() {
activityStreamPanel.load(getLoaderManager());
}
@Nullable
@Override
--- a/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/ActivityStreamPanel.java
+++ b/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/ActivityStreamPanel.java
@@ -108,16 +108,21 @@ public class ActivityStreamPanel extends
}
public void unload() {
adapter.swapHighlights(Collections.<Highlight>emptyList());
adapter.swapTopSitesCursor(null);
}
+ public void reload(LoaderManager lm) {
+ adapter.reset();
+ load(lm);
+ }
+
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
// This code does two things:
// * Calculate the size of the tiles we want to display (using a desired width as anchor point)
// * Add padding to the left/right side if there's too much space that we do not need
--- a/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/StreamRecyclerAdapter.java
+++ b/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/StreamRecyclerAdapter.java
@@ -95,16 +95,20 @@ public class StreamRecyclerAdapter exten
setHasStableIds(true);
recyclerViewModel = new LinkedList<>();
for (RowItemType type : ACTIVITY_STREAM_SECTIONS) {
recyclerViewModel.add(makeRowModelFromType(type));
}
topStoriesQueue = Collections.emptyList();
}
+ public void reset() {
+ // TODO: Reset adapter
+ }
+
void setOnUrlOpenListeners(HomePager.OnUrlOpenListener onUrlOpenListener, HomePager.OnUrlOpenInBackgroundListener onUrlOpenInBackgroundListener) {
this.onUrlOpenListener = onUrlOpenListener;
this.onUrlOpenInBackgroundListener = onUrlOpenInBackgroundListener;
}
public void setTileSize(int tilesSize) {
this.tilesSize = tilesSize;
notifyDataSetChanged();