Bug 1297127 - Move HomeScreen specific code into ActivityStreamHomeScreen r?sebastian
We can keep the general ActivityStream code in the ActivityStream class/widget, allowing
reuse inside a HomePanel (for use in the HomePager). ActivityStreamHomeScreen then
wraps this for use as a HomePager replacement (which is the long-term goal for AS).
MozReview-Commit-ID: 1aWBh1YyARY
--- a/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStream.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStream.java
@@ -19,80 +19,44 @@ import org.mozilla.gecko.GeckoProfile;
import org.mozilla.gecko.R;
import org.mozilla.gecko.animation.PropertyAnimator;
import org.mozilla.gecko.home.HomeBanner;
import org.mozilla.gecko.home.HomeFragment;
import org.mozilla.gecko.home.HomeScreen;
import org.mozilla.gecko.home.SimpleCursorLoader;
import org.mozilla.gecko.home.activitystream.topsites.TopSitesPagerAdapter;
-public class ActivityStream extends FrameLayout implements HomeScreen {
+public class ActivityStream extends FrameLayout {
private StreamRecyclerAdapter adapter;
private static final int LOADER_ID_HIGHLIGHTS = 0;
private static final int LOADER_ID_TOPSITES = 1;
public ActivityStream(Context context, AttributeSet attrs) {
super(context, attrs);
inflate(context, R.layout.as_content, this);
}
- @Override
- public boolean isVisible() {
- // This is dependent on the loading state - currently we're a dumb panel so we're always
- // "visible"
- return true;
- }
-
- @Override
- public void onToolbarFocusChange(boolean hasFocus) {
- // We don't care: this is HomePager specific
- }
-
- @Override
- public void showPanel(String panelId, Bundle restoreData) {
- // We could use this to restore Panel data. In practice this isn't likely to be relevant for
- // AS and can be ignore for now.
- }
-
- @Override
- public void setOnPanelChangeListener(OnPanelChangeListener listener) {
- // As with showPanel: not relevant yet, could be used for persistence (scroll position?)
- }
-
- @Override
- public void setPanelStateChangeListener(HomeFragment.PanelStateChangeListener listener) {
- // See setOnPanelChangeListener
- }
-
- @Override
- public void setBanner(HomeBanner banner) {
- // TODO: we should probably implement this to show snippets.
- }
-
- @Override
- public void load(LoaderManager lm, FragmentManager fm, String panelId, Bundle restoreData,
- PropertyAnimator animator) {
+ public void load(LoaderManager lm) {
// Signal to load data from storage as needed, compare with HomePager
RecyclerView rv = (RecyclerView) findViewById(R.id.activity_stream_main_recyclerview);
// TODO: we need to retrieve BrowserApp and pass it in as onUrlOpenListener. That will
// be simpler once we're a HomeFragment, but isn't so simple while we're still a View.
adapter = new StreamRecyclerAdapter(lm, null);
rv.setAdapter(adapter);
rv.setLayoutManager(new LinearLayoutManager(getContext()));
rv.setHasFixedSize(true);
CursorLoaderCallbacks callbacks = new CursorLoaderCallbacks();
lm.initLoader(LOADER_ID_HIGHLIGHTS, null, callbacks);
lm.initLoader(LOADER_ID_TOPSITES, null, callbacks);
}
- @Override
public void unload() {
adapter.swapHighlightsCursor(null);
adapter.swapTopSitesCursor(null);
// Signal to clear data that has been loaded, compare with HomePager
}
/**
* This is a temporary cursor loader. We'll probably need a completely new query for AS,
new file mode 100644
--- /dev/null
+++ b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStreamHomeScreen.java
@@ -0,0 +1,73 @@
+/* -*- 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.home.activitystream;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.LoaderManager;
+import android.util.AttributeSet;
+
+import org.mozilla.gecko.animation.PropertyAnimator;
+import org.mozilla.gecko.home.HomeBanner;
+import org.mozilla.gecko.home.HomeFragment;
+import org.mozilla.gecko.home.HomeScreen;
+
+/**
+ * HomeScreen implementation that displays ActivityStream.
+ */
+public class ActivityStreamHomeScreen
+ extends ActivityStream
+ implements HomeScreen {
+
+ private boolean visible = false;
+
+ public ActivityStreamHomeScreen(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ public boolean isVisible() {
+ return visible;
+ }
+
+ @Override
+ public void onToolbarFocusChange(boolean hasFocus) {
+
+ }
+
+ @Override
+ public void showPanel(String panelId, Bundle restoreData) {
+
+ }
+
+ @Override
+ public void setOnPanelChangeListener(OnPanelChangeListener listener) {
+
+ }
+
+ @Override
+ public void setPanelStateChangeListener(HomeFragment.PanelStateChangeListener listener) {
+
+ }
+
+ @Override
+ public void setBanner(HomeBanner banner) {
+
+ }
+
+ @Override
+ public void load(LoaderManager lm, FragmentManager fm, String panelId, Bundle restoreData,
+ PropertyAnimator animator) {
+ super.load(lm);
+ visible = true;
+ }
+
+ @Override
+ public void unload() {
+ super.unload();
+ visible = false;
+ }
+}
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -425,16 +425,17 @@ gbjar.sources += ['java/org/mozilla/geck
'GeckoProfilesProvider.java',
'GeckoUpdateReceiver.java',
'GlobalHistory.java',
'GuestSession.java',
'health/HealthRecorder.java',
'health/SessionInformation.java',
'health/StubbedHealthRecorder.java',
'home/activitystream/ActivityStream.java',
+ 'home/activitystream/ActivityStreamHomeScreen.java',
'home/activitystream/StreamItem.java',
'home/activitystream/StreamRecyclerAdapter.java',
'home/activitystream/topsites/CirclePageIndicator.java',
'home/activitystream/topsites/PageIndicator.java',
'home/activitystream/topsites/TopSitesCard.java',
'home/activitystream/topsites/TopSitesPage.java',
'home/activitystream/topsites/TopSitesPageAdapter.java',
'home/activitystream/topsites/TopSitesPagerAdapter.java',
--- a/mobile/android/base/resources/layout/activity_stream.xml
+++ b/mobile/android/base/resources/layout/activity_stream.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
-<org.mozilla.gecko.home.activitystream.ActivityStream xmlns:android="http://schemas.android.com/apk/res/android"
+<org.mozilla.gecko.home.activitystream.ActivityStreamHomeScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FAFAFA">
<android.support.v7.widget.RecyclerView
android:id="@+id/activity_stream_main_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
-</org.mozilla.gecko.home.activitystream.ActivityStream>
+</org.mozilla.gecko.home.activitystream.ActivityStreamHomeScreen>