Bug 1319254 - Add welcome panel to Activity Stream r?sebastian draft
authorAndrzej Hunt <ahunt@mozilla.com>
Mon, 12 Dec 2016 15:52:13 -0800
changeset 448794 b3246aa7bbe4e2e12d7e8fe702848fac485d4020
parent 448766 05100cca473f4681d6d53e7388bd49b0f5af24cc
child 448795 ea97f01af0b573a39bbec2ba35b06f3ba63f7d9f
push id38432
push userahunt@mozilla.com
push dateMon, 12 Dec 2016 23:53:27 +0000
reviewerssebastian
bugs1319254
milestone53.0a1
Bug 1319254 - Add welcome panel to Activity Stream r?sebastian MozReview-Commit-ID: FayZbZhvT7k
mobile/android/base/java/org/mozilla/gecko/home/activitystream/StreamItem.java
mobile/android/base/java/org/mozilla/gecko/home/activitystream/StreamRecyclerAdapter.java
mobile/android/base/locales/en-US/android_strings.dtd
mobile/android/base/resources/drawable-hdpi/foxfinder.webp
mobile/android/base/resources/drawable-xhdpi/foxfinder.webp
mobile/android/base/resources/drawable-xxhdpi/foxfinder.webp
mobile/android/base/resources/layout/activity_stream_main_highlightstitle.xml
mobile/android/base/resources/values/styles.xml
mobile/android/base/strings.xml.in
--- a/mobile/android/base/java/org/mozilla/gecko/home/activitystream/StreamItem.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/StreamItem.java
@@ -1,26 +1,30 @@
 /* -*- 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.content.SharedPreferences;
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.graphics.Color;
 import android.support.v4.view.ViewPager;
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
 import android.text.format.DateUtils;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import org.mozilla.gecko.GeckoSharedPrefs;
 import org.mozilla.gecko.R;
 import org.mozilla.gecko.activitystream.ActivityStream.LabelCallback;
 import org.mozilla.gecko.db.BrowserContract;
 import org.mozilla.gecko.home.HomePager;
 import org.mozilla.gecko.home.activitystream.menu.ActivityStreamContextMenu;
 import org.mozilla.gecko.home.activitystream.topsites.CirclePageIndicator;
 import org.mozilla.gecko.home.activitystream.topsites.TopSitesPagerAdapter;
 import org.mozilla.gecko.icons.IconCallback;
@@ -35,21 +39,61 @@ import java.util.concurrent.Future;
 
 import static org.mozilla.gecko.activitystream.ActivityStream.extractLabel;
 
 public abstract class StreamItem extends RecyclerView.ViewHolder {
     public StreamItem(View itemView) {
         super(itemView);
     }
 
-    public static class HighlightsTitle extends StreamItem {
+    public static class HighlightsHeaderPanel
+            extends StreamItem
+            implements View.OnClickListener {
         public static final int LAYOUT_ID = R.layout.activity_stream_main_highlightstitle;
 
-        public HighlightsTitle(View itemView) {
+        public static final String PREF_WELCOME_DISMISSED = "activitystream.welcome_dismissed";
+
+        private final RecyclerView.Adapter<StreamItem> adapter;
+        private final Context context;
+
+        public HighlightsHeaderPanel(final View itemView, final RecyclerView.Adapter<StreamItem> adapter) {
             super(itemView);
+
+            this.adapter = adapter;
+            this.context = itemView.getContext();
+
+            final View wrapper = itemView.findViewById(R.id.welcome_panel);
+
+            final SharedPreferences sharedPrefs = GeckoSharedPrefs.forApp(itemView.getContext());
+
+            if (sharedPrefs.getBoolean(PREF_WELCOME_DISMISSED, false)) {
+                wrapper.setVisibility(View.GONE);
+            } else {
+                final Button dismissButton = (Button) itemView.findViewById(R.id.dismiss_welcomepanel);
+
+                dismissButton.setOnClickListener(this);
+            }
+        }
+
+        @Override
+        public void onClick(View v) {
+            // To animate between item changes, RecyclerView keeps around the old version of the view,
+            // and creates a new equivalent item (which is bound using the new data) - followed by
+            // animating between those two versions. Hence we just need to make sure that
+            // any future calls to onCreateViewHolder create a version of the Header Item
+            // with the welcome panel hidden (i.e. we don't need to care about animations ourselves).
+            // We communicate this state change via the pref.
+
+            final SharedPreferences sharedPrefs = GeckoSharedPrefs.forApp(context);
+
+            sharedPrefs.edit()
+                    .putBoolean(StreamItem.HighlightsHeaderPanel.PREF_WELCOME_DISMISSED, true)
+                    .apply();
+
+            adapter.notifyItemChanged(getAdapterPosition());
         }
     }
 
     public static class TopPanel extends StreamItem {
         public static final int LAYOUT_ID = R.layout.activity_stream_main_toppanel;
 
         private final ViewPager topSitesPager;
 
--- a/mobile/android/base/java/org/mozilla/gecko/home/activitystream/StreamRecyclerAdapter.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/StreamRecyclerAdapter.java
@@ -11,16 +11,17 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
 import org.mozilla.gecko.Telemetry;
 import org.mozilla.gecko.TelemetryContract;
 import org.mozilla.gecko.db.BrowserContract;
 import org.mozilla.gecko.home.HomePager;
 import org.mozilla.gecko.home.activitystream.StreamItem.HighlightItem;
+import org.mozilla.gecko.home.activitystream.StreamItem.HighlightsHeaderPanel;
 import org.mozilla.gecko.home.activitystream.StreamItem.TopPanel;
 import org.mozilla.gecko.widget.RecyclerViewClickSupport;
 
 import java.util.EnumSet;
 
 public class StreamRecyclerAdapter extends RecyclerView.Adapter<StreamItem> implements RecyclerViewClickSupport.OnItemClickListener {
     private Cursor highlightsCursor;
     private Cursor topSitesCursor;
@@ -49,32 +50,32 @@ public class StreamRecyclerAdapter exten
         notifyDataSetChanged();
     }
 
     @Override
     public int getItemViewType(int position) {
         if (position == 0) {
             return TopPanel.LAYOUT_ID;
         } else if (position == 1) {
-            return StreamItem.HighlightsTitle.LAYOUT_ID;
+            return HighlightsHeaderPanel.LAYOUT_ID;
         } else if (position < getItemCount()) {
             return HighlightItem.LAYOUT_ID;
         } else {
             throw new IllegalArgumentException("Requested position does not exist");
         }
     }
 
     @Override
     public StreamItem onCreateViewHolder(ViewGroup parent, final int type) {
         final LayoutInflater inflater = LayoutInflater.from(parent.getContext());
 
         if (type == TopPanel.LAYOUT_ID) {
             return new TopPanel(inflater.inflate(type, parent, false), onUrlOpenListener, onUrlOpenInBackgroundListener);
-        } else if (type == StreamItem.HighlightsTitle.LAYOUT_ID) {
-            return new StreamItem.HighlightsTitle(inflater.inflate(type, parent, false));
+        } else if (type == HighlightsHeaderPanel.LAYOUT_ID) {
+            return new HighlightsHeaderPanel(inflater.inflate(type, parent, false), this);
         } else if (type == HighlightItem.LAYOUT_ID) {
             return new HighlightItem(inflater.inflate(type, parent, false), onUrlOpenListener, onUrlOpenInBackgroundListener);
         } else {
             throw new IllegalStateException("Missing inflation for ViewType " + type);
         }
     }
 
     private int translatePositionToCursor(int position) {
--- a/mobile/android/base/locales/en-US/android_strings.dtd
+++ b/mobile/android/base/locales/en-US/android_strings.dtd
@@ -846,8 +846,11 @@ Stream list for highlights sourced from 
 Stream list for highlights sourced from th user's bookmarks. -->
 <!ENTITY activity_stream_highlight_label_visited "Visited">
 
 <!-- LOCALIZATION NOTE (activity_stream_dismiss): This label is shown in the Activity Stream context menu,
 and allows hiding a URL/page from highlights or topsites. The page remains in history/bookmarks, but
 is simply hidden from the Activity Stream panel. -->
 <!ENTITY activity_stream_dismiss "Dismiss">
 <!ENTITY activity_stream_delete_history "Delete from History">
+
+<!ENTITY activity_stream_welcome_title "Welcome to your Highlights">
+<!ENTITY activity_stream_welcome_content "Firefox now creates highlights of things you\'ve discovered on the web so you can find your way back to great articles, videos, bookmarks, and other pages.">
new file mode 100644
index 0000000000000000000000000000000000000000..ca6d920858b704e29617b77175cd68d336b073f0
GIT binary patch
literal 6786
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
new file mode 100644
index 0000000000000000000000000000000000000000..b90f5a9cd8444cdc065c273314ac6ab86e7bb79e
GIT binary patch
literal 9842
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
Y1-q*id#IaEI&vA9oY*sifS#ZL0OyYxQ~&?~
new file mode 100644
index 0000000000000000000000000000000000000000..49acdf4d808e12fb56c02ef3e22c5d5c72a592c1
GIT binary patch
literal 16298
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
--- a/mobile/android/base/resources/layout/activity_stream_main_highlightstitle.xml
+++ b/mobile/android/base/resources/layout/activity_stream_main_highlightstitle.xml
@@ -1,15 +1,80 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="wrap_content">
+
+    <RelativeLayout
+        android:id="@+id/welcome_panel"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <View
+            android:id="@+id/divider0"
+            android:layout_width="match_parent"
+            android:layout_height="0.5dp"
+            android:padding="4dp"
+            android:background="#ffe0e0e0" />
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/foxfinder"
+            android:adjustViewBounds="true"
+            android:scaleType="fitXY"
+            android:id="@+id/welcome_fox"
+            android:layout_marginTop="@dimen/activity_stream_base_margin"
+            android:layout_marginBottom="@dimen/activity_stream_base_margin"
+            android:layout_marginLeft="-30dp"
+            android:layout_alignParentRight="true" />
+
+        <TextView
+            android:id="@+id/title_welcome"
+            android:layout_marginLeft="@dimen/activity_stream_base_margin"
+            android:layout_marginStart="@dimen/activity_stream_base_margin"
+            android:layout_marginTop="@dimen/activity_stream_base_margin"
+            android:layout_marginBottom="@dimen/activity_stream_base_margin"
+            android:layout_marginRight="@dimen/activity_stream_base_margin"
+            android:layout_marginEnd="@dimen/activity_stream_base_margin"
+            android:text="@string/activity_stream_welcome_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textStyle="bold"
+            android:textSize="16sp"
+            android:textColor="#FF858585" />
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/activity_stream_welcome_content"
+            android:textColor="#FF858585"
+            android:layout_below="@+id/title_welcome"
+            android:layout_alignLeft="@+id/title_welcome"
+            android:layout_alignStart="@+id/title_welcome"
+            android:layout_toLeftOf="@+id/welcome_fox"
+            android:layout_toStartOf="@+id/welcome_fox"
+            android:id="@+id/welcome_text"/>
+
+        <Button
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/activity_stream_dismiss"
+            android:theme="@style/ActivityStreamButton"
+            android:elevation="1dp"
+            android:id="@+id/dismiss_welcomepanel"
+            android:layout_alignBottom="@+id/welcome_fox"
+            android:layout_alignLeft="@+id/title_welcome"
+            android:layout_alignStart="@+id/title_welcome"/>
+
+    </RelativeLayout>
+
     <View
-        android:id="@+id/divider"
+        android:id="@+id/divider1"
         android:layout_width="match_parent"
         android:layout_height="0.5dp"
         android:padding="4dp"
         android:background="#ffe0e0e0" />
 
     <TextView
         android:id="@+id/title_highlights"
         android:layout_marginLeft="@dimen/activity_stream_base_margin"
--- a/mobile/android/base/resources/values/styles.xml
+++ b/mobile/android/base/resources/values/styles.xml
@@ -758,9 +758,14 @@
         <item name="android:textSize">16sp</item>
     </style>
 
     <!-- We use this style to provide our own divider that has an inset on the left side -->
     <style name="ActivityStreamContextMenuStyle">
         <item name="android:listDivider">@drawable/as_contextmenu_divider</item>
     </style>
 
+    <style name="ActivityStreamButton" parent="Widget.AppCompat.Button.Colored">
+        <item name="colorButtonNormal">@color/link_blue</item>
+        <item name="android:textColor">@android:color/white</item>
+    </style>
+
 </resources>
--- a/mobile/android/base/strings.xml.in
+++ b/mobile/android/base/strings.xml.in
@@ -634,9 +634,12 @@
   <string name="helper_triple_readerview_open_button">&helper_triple_readerview_open_button;</string>
 
   <string name="activity_stream_topsites">&activity_stream_topsites;</string>
   <string name="activity_stream_highlights">&activity_stream_highlights;</string>
   <string name="activity_stream_highlight_label_bookmarked">&activity_stream_highlight_label_bookmarked;</string>
   <string name="activity_stream_highlight_label_visited">&activity_stream_highlight_label_visited;</string>
   <string name="activity_stream_dismiss">&activity_stream_dismiss;</string>
   <string name="activity_stream_delete_history">&activity_stream_delete_history;</string>
+
+  <string name="activity_stream_welcome_title">&activity_stream_welcome_title;</string>
+  <string name="activity_stream_welcome_content">&activity_stream_welcome_content;</string>
 </resources>