jenkins-bot has submitted this change and it was merged.

Change subject: Add TOC floating action button
......................................................................


Add TOC floating action button

This patch adds a floating action button for TOC interaction (and removes the
TOC button from the Toolbar).  This declutters the Toolbar and brings the app
more in line with Material Design.

Bug: T104654
Change-Id: I4b2d2db0366e28d6cc66858a859d4ec8b3b54191
---
M wikipedia/build.gradle
A wikipedia/res/anim/fade_in_toc.xml
A wikipedia/res/anim/fade_out_toc.xml
M wikipedia/res/layout/fragment_page.xml
D wikipedia/res/layout/group_toc_intro.xml
A wikipedia/res/layout/inflate_tool_tip_toc_button.xml
M wikipedia/res/menu/menu_page_actions.xml
D wikipedia/res/values-h480dp/dimens.xml
M wikipedia/res/values-qq/strings.xml
M wikipedia/res/values-sw600dp/dimens.xml
A wikipedia/res/values-v21/dimens.xml
M wikipedia/res/values/colors.xml
M wikipedia/res/values/dimens.xml
M wikipedia/res/values/preference_keys.xml
M wikipedia/res/values/strings.xml
M wikipedia/res/values/styles.xml
M wikipedia/res/xml/developer_preferences.xml
M wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
M wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java
M 
wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
M wikipedia/src/main/java/org/wikipedia/settings/Prefs.java
21 files changed, 182 insertions(+), 149 deletions(-)

Approvals:
  Dbrant: Looks good to me, approved
  Niedzielski: Looks good to me, but someone else must approve
  jenkins-bot: Verified



diff --git a/wikipedia/build.gradle b/wikipedia/build.gradle
index 62e4e67..fdaec23 100644
--- a/wikipedia/build.gradle
+++ b/wikipedia/build.gradle
@@ -94,6 +94,7 @@
     // Debug with ./gradlew -q wikipedia:dependencies --configuration compile
 
     compile 'com.android.support:appcompat-v7:22.2.0' // includes support-v4
+    compile 'com.android.support:design:22.2.0'
     compile('org.mediawiki.api:json:1.3.1') {
         exclude group: 'org.json', module: 'json'
     }
diff --git a/wikipedia/res/anim/fade_in_toc.xml 
b/wikipedia/res/anim/fade_in_toc.xml
new file mode 100644
index 0000000..b07490e
--- /dev/null
+++ b/wikipedia/res/anim/fade_in_toc.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<alpha
+    xmlns:android="http://schemas.android.com/apk/res/android";
+    android:interpolator="@android:anim/linear_interpolator"
+    android:fillAfter="true"
+    android:fromAlpha="0.5"
+    android:toAlpha="1.0"
+    android:duration="@android:integer/config_shortAnimTime"
+    />
\ No newline at end of file
diff --git a/wikipedia/res/anim/fade_out_toc.xml 
b/wikipedia/res/anim/fade_out_toc.xml
new file mode 100644
index 0000000..b7169fe
--- /dev/null
+++ b/wikipedia/res/anim/fade_out_toc.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<alpha
+    xmlns:android="http://schemas.android.com/apk/res/android";
+    android:interpolator="@android:anim/linear_interpolator"
+    android:fillAfter="true"
+    android:fromAlpha="1.0"
+    android:toAlpha="0.5"
+    android:duration="@android:integer/config_shortAnimTime"
+    />
\ No newline at end of file
diff --git a/wikipedia/res/layout/fragment_page.xml 
b/wikipedia/res/layout/fragment_page.xml
index 78698d4..f282290 100644
--- a/wikipedia/res/layout/fragment_page.xml
+++ b/wikipedia/res/layout/fragment_page.xml
@@ -2,6 +2,7 @@
 
 <FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android";
+    xmlns:app="http://schemas.android.com/apk/res-auto";
     xmlns:tools="http://schemas.android.com/tools";
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -18,7 +19,7 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent">
 
-        <FrameLayout
+        <android.support.design.widget.CoordinatorLayout
             android:id="@+id/page_contents_container"
             android:layout_width="match_parent"
             android:layout_height="match_parent">
@@ -166,7 +167,23 @@
                 </LinearLayout>
             </LinearLayout>
 
-        </FrameLayout>
+            <android.support.design.widget.FloatingActionButton
+                android:id="@+id/floating_toc_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                style="@style/FloatingActionButton"
+                android:color="@color/toc_button"
+                android:layout_gravity="bottom|end"
+                android:src="@drawable/ic_toc"
+                android:contentDescription="@string/menu_show_toc"
+                app:fabSize="mini"
+                app:elevation="4sp"
+                app:borderWidth="0dp"
+                app:layout_anchor="@id/page_web_view"
+                app:layout_anchorGravity="bottom|right|end"
+                />
+
+        </android.support.design.widget.CoordinatorLayout>
 
         </org.wikipedia.views.SwipeRefreshLayoutWithScroll>
 
@@ -210,11 +227,6 @@
                             android:visibility="gone"
                             android:choiceMode="singleChoice"
                             />
-
-                    <include layout="@layout/group_toc_intro"
-                             android:id="@+id/know_toc_intro_container"
-                             android:visibility="gone"
-                        />
                 </LinearLayout>
 
             </LinearLayout>
diff --git a/wikipedia/res/layout/group_toc_intro.xml 
b/wikipedia/res/layout/group_toc_intro.xml
deleted file mode 100644
index 72d2f94..0000000
--- a/wikipedia/res/layout/group_toc_intro.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android";
-    xmlns:tools="http://schemas.android.com/tools";
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:layout_gravity="center"
-    android:layout_marginTop="?attr/actionBarSize"
-    android:gravity="center"
-    android:orientation="vertical"
-    android:paddingLeft="32dp"
-    android:paddingRight="32dp"
-    android:background="?attr/toc_background_color"
-    >
-
-    <TextView
-        style="?android:textAppearanceMedium"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:gravity="start|center"
-        android:lineSpacingMultiplier="1.4"
-        android:text="@string/toc_hint"
-        android:textColor="?attr/toc_section_text_color"
-        android:textSize="20sp"
-        />
-
-    <ImageView
-        android:layout_width="@dimen/toc_intro_image_size"
-        android:layout_height="@dimen/toc_intro_image_size"
-        android:layout_marginBottom="@dimen/toc_intro_image_marginBottom"
-        android:layout_marginTop="@dimen/toc_intro_image_marginTop"
-        android:contentDescription="@null"
-        android:src="@drawable/swipe_left"/>
-
-    <Button
-        android:id="@+id/know_toc_drawer_button"
-        style="@style/button_progressive"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_horizontal"
-        android:paddingLeft="48dp"
-        android:paddingRight="48dp"
-        android:text="@string/toc_know_it"
-        android:textColor="@color/white_progressive_dark"
-        android:visibility="invisible"
-        tools:visibility="visible"
-        />
-</LinearLayout>
\ No newline at end of file
diff --git a/wikipedia/res/layout/inflate_tool_tip_toc_button.xml 
b/wikipedia/res/layout/inflate_tool_tip_toc_button.xml
new file mode 100644
index 0000000..61ed168
--- /dev/null
+++ b/wikipedia/res/layout/inflate_tool_tip_toc_button.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<TextView xmlns:android="http://schemas.android.com/apk/res/android";
+    style="@style/RtlAwareTextView"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layoutDirection="locale"
+    android:padding="8dp"
+    android:maxWidth="@dimen/tool_tip_max_width"
+    android:text="@string/tool_tip_toc_button"
+    android:textColor="@android:color/white" />
\ No newline at end of file
diff --git a/wikipedia/res/menu/menu_page_actions.xml 
b/wikipedia/res/menu/menu_page_actions.xml
index 8f538b7..6751c78 100644
--- a/wikipedia/res/menu/menu_page_actions.xml
+++ b/wikipedia/res/menu/menu_page_actions.xml
@@ -8,11 +8,6 @@
         android:icon="@drawable/ic_tab_list"
         app:showAsAction="ifRoom"
         />
-    <item android:id="@+id/menu_toc"
-          android:title="@string/menu_show_toc"
-          android:icon="@drawable/ic_toc"
-          app:showAsAction="ifRoom"
-          />
     <item android:id="@+id/menu_other_languages"
           android:title="@string/menu_other_languages"
           android:enabled="false"
diff --git a/wikipedia/res/values-h480dp/dimens.xml 
b/wikipedia/res/values-h480dp/dimens.xml
deleted file mode 100644
index 02c73e5..0000000
--- a/wikipedia/res/values-h480dp/dimens.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <!--
-        ToC Intro
-    -->
-    <dimen name="toc_intro_image_size">128dp</dimen>
-    <dimen name="toc_intro_image_marginTop">16dp</dimen>
-    <dimen name="toc_intro_image_marginBottom">48dp</dimen>
-
-</resources>
\ No newline at end of file
diff --git a/wikipedia/res/values-qq/strings.xml 
b/wikipedia/res/values-qq/strings.xml
index 4596476..995a415 100644
--- a/wikipedia/res/values-qq/strings.xml
+++ b/wikipedia/res/values-qq/strings.xml
@@ -317,8 +317,6 @@
   <string name="search_recent_header">Label at the top of the list of recent 
searches that the user performed.</string>
   <string name="button_clear_all_recent_searches">Button hint for clearing 
search history;  visible when in search mode.</string>
   <string name="clear_recent_searches_confirm">Dialog message that asks if the 
user really wants to clear the search history.</string>
-  <string name="toc_hint">Instructions how to open the Table of Contents 
drawer. In left-to-right languages (most) this means to swipe left from the 
right edge. In right-to-left languages (Hebrew, Arabic, etc.) this means to 
swipe right from the left edge. \'\'\'In RTL languages\'\'\' please adjust the 
text to say right swipe instead of left swipe.</string>
-  <string name="toc_know_it">Button text to acknowledge instructions for 
opening Table of Contents drawer.</string>
   <string name="error_browser_not_found">Toast message shown when we try to 
open an external browser but none seems to be installed.</string>
   <string name="table_infobox">Text shown on the panel which, when tapped, 
displays the full infobox to the user, therefore exposing a set of information 
usually composed of factual and short statements.</string>
   <string name="table_other">{{Identical|More information}}</string>
@@ -380,4 +378,5 @@
   <string name="tool_tip_select_text">Very short advice on how to highlight 
text for copying to the clipboard or sharing.</string>
   <string name="tool_tip_share">Very short advice on sharing highlighted text 
on social networks.</string>
   <string name="page_view_in_browser">Text for a link that will open the 
current page in an external browser app on the device.</string>
+  <string name="tool_tip_toc_button">Advice on accessing the table of contents 
for a page. In left-to-right languages (most) this means to swipe left from the 
right edge. In right-to-left languages (Hebrew, Arabic, etc.) this means to 
swipe right from the left edge. \'\'\'In RTL languages\'\'\' please adjust the 
text to say right swipe instead of left swipe.</string>
 </resources>
diff --git a/wikipedia/res/values-sw600dp/dimens.xml 
b/wikipedia/res/values-sw600dp/dimens.xml
index 839eccf..d45b4f3 100644
--- a/wikipedia/res/values-sw600dp/dimens.xml
+++ b/wikipedia/res/values-sw600dp/dimens.xml
@@ -8,4 +8,6 @@
 
     <dimen name="textSize">16sp</dimen>
 
+    <dimen name="toc_button_layout_margin">24dp</dimen>
+
 </resources>
\ No newline at end of file
diff --git a/wikipedia/res/values-v21/dimens.xml 
b/wikipedia/res/values-v21/dimens.xml
new file mode 100644
index 0000000..927a7ee
--- /dev/null
+++ b/wikipedia/res/values-v21/dimens.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <!-- Floating action button -->
+    <dimen name="floating_action_button_margin_left">16dp</dimen>
+    <dimen name="floating_action_button_margin_top">16dp</dimen>
+    <dimen name="floating_action_button_margin_right">16dp</dimen>
+    <dimen name="floating_action_button_margin_bottom">16dp</dimen>
+
+</resources>
\ No newline at end of file
diff --git a/wikipedia/res/values/colors.xml b/wikipedia/res/values/colors.xml
index 44d439c..00abc7f 100644
--- a/wikipedia/res/values/colors.xml
+++ b/wikipedia/res/values/colors.xml
@@ -26,6 +26,8 @@
     <color name="search_bar">#ff404040</color>
     <color name="search_text_hint">#ff808080</color>
     <color name="lead_gradient_start">#b8000000</color>
+    <color name="toc_button">#71eeb8</color>
+    <color name="tool_tip_default">@android:color/black</color>
 
     <!-- Make the main toolbar have its own unique color (but 
indistinguishable from
     actionbar_background). This is because we'll be setting its opacity 
programmatically
diff --git a/wikipedia/res/values/dimens.xml b/wikipedia/res/values/dimens.xml
index 24ddfd0..c64ef19 100644
--- a/wikipedia/res/values/dimens.xml
+++ b/wikipedia/res/values/dimens.xml
@@ -31,12 +31,14 @@
 
     <dimen name="drawer_drag_margin">16dp</dimen>
 
-    <!-- ToC intro -->
-    <dimen name="toc_intro_image_size">48dp</dimen>
-    <dimen name="toc_intro_image_marginTop">8dp</dimen>
-    <dimen name="toc_intro_image_marginBottom">8dp</dimen>
-
     <!-- Tool tips -->
     <dimen 
name="fragment_page_tool_tip_select_text_target_offset">100dp</dimen>
     <dimen name="tool_tip_max_width">250dp</dimen>
+
+    <!-- Floating action button -->
+    <dimen name="floating_action_button_margin_left">0dp</dimen>
+    <dimen name="floating_action_button_margin_top">0dp</dimen>
+    <dimen name="floating_action_button_margin_right">8dp</dimen>
+    <dimen name="floating_action_button_margin_bottom">0dp</dimen>
+
 </resources>
diff --git a/wikipedia/res/values/preference_keys.xml 
b/wikipedia/res/values/preference_keys.xml
index 5b1c36b..27f0eff 100644
--- a/wikipedia/res/values/preference_keys.xml
+++ b/wikipedia/res/values/preference_keys.xml
@@ -19,7 +19,7 @@
     <string 
name="preference_key_select_text_tutorial_enabled">selectTextTutorialEnabled</string>
     <string 
name="preference_key_share_tutorial_enabled">shareTutorialEnabled</string>
     <string 
name="preference_key_feature_select_text_and_share_tutorials_enabled">featureSelectTextAndShareTutorialsEnabled</string>
-    <string name="preference_key_know_toc_drawer">knowToC</string>
+    <string 
name="preference_key_toc_tutorial_enabled">tocTutorialEnabled</string>
     <string name="preference_key_show_images">showImages</string>
     <string name="preference_key_exp_page_load">expPageLoad</string>
     <string name="preference_key_login_username">username</string>
diff --git a/wikipedia/res/values/strings.xml b/wikipedia/res/values/strings.xml
index 46a0714..f0637eb 100644
--- a/wikipedia/res/values/strings.xml
+++ b/wikipedia/res/values/strings.xml
@@ -224,8 +224,6 @@
     <string name="search_recent_header">Recent searches:</string>
     <string name="button_clear_all_recent_searches">Clear recent 
searches</string>
     <string name="clear_recent_searches_confirm">Are you sure you want to 
clear your search history?</string>
-    <string name="toc_hint">Swipe left for sections, or use the menu button on 
the top right.</string>
-    <string name="toc_know_it">Got it</string>
     <string name="error_browser_not_found">Could not open web page (no browser 
app found).</string>
     <string name="table_infobox">Quick facts</string>
     <string name="table_other">More information</string>
@@ -291,4 +289,5 @@
     <string name="tool_tip_select_text">Press and hold anywhere in the text to 
highlight it for copying and sharing.</string>
     <string name="tool_tip_share">After highlighting an interesting fact, try 
sharing it on your favorite networks!</string>
     <string name="page_view_in_browser">View in browser</string>
+    <string name="tool_tip_toc_button">See the table of contents anytime by 
tapping this button, or sliding from the right edge of the screen.</string>
 </resources>
diff --git a/wikipedia/res/values/styles.xml b/wikipedia/res/values/styles.xml
index d21f3d4..36e7e0b 100644
--- a/wikipedia/res/values/styles.xml
+++ b/wikipedia/res/values/styles.xml
@@ -121,6 +121,14 @@
         <!-- 
parent="@android:style/Preference.DialogPreference.EditTextPreference" is not 
exposed. -->
     </style>
 
+    <!-- Default style for floating action buttons -->
+    <style name="FloatingActionButton">
+        <item 
name="android:layout_marginLeft">@dimen/floating_action_button_margin_left</item>
+        <item 
name="android:layout_marginTop">@dimen/floating_action_button_margin_top</item>
+        <item 
name="android:layout_marginRight">@dimen/floating_action_button_margin_right</item>
+        <item 
name="android:layout_marginBottom">@dimen/floating_action_button_margin_bottom</item>
+    </style>
+
     <style name="IntPreference" parent="EditTextAutoSummarizePreference">
         <item name="android:inputType">number</item>
         <item name="android:maxLength">8</item>
diff --git a/wikipedia/res/xml/developer_preferences.xml 
b/wikipedia/res/xml/developer_preferences.xml
index 209bc5f..dcb2454 100644
--- a/wikipedia/res/xml/developer_preferences.xml
+++ b/wikipedia/res/xml/developer_preferences.xml
@@ -4,8 +4,8 @@
     <PreferenceCategory 
android:title="@string/preferences_developer_onboarding_heading">
 
         <CheckBoxPreference
-            android:key="@string/preference_key_know_toc_drawer"
-            android:title="@string/preference_key_know_toc_drawer" />
+            android:key="@string/preference_key_toc_tutorial_enabled"
+            android:title="@string/preference_key_toc_tutorial_enabled" />
 
         <CheckBoxPreference
             
android:key="@string/preference_key_feature_select_text_and_share_tutorials_enabled"
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java 
b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
index 2c26773..93b8ea4 100755
--- a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
@@ -29,6 +29,7 @@
 import org.wikipedia.settings.Prefs;
 import org.wikipedia.staticdata.MainPageNameData;
 import org.wikipedia.tooltip.ToolTipUtil;
+import org.wikipedia.util.ApiUtil;
 import org.wikipedia.util.NetworkUtils;
 import org.wikipedia.views.ObservableWebView;
 import org.wikipedia.views.SwipeRefreshLayoutWithScroll;
@@ -39,12 +40,15 @@
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import android.annotation.TargetApi;
 import android.app.AlertDialog;
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.graphics.Color;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
+import android.support.annotation.NonNull;
 import android.support.v4.app.Fragment;
 import android.support.v4.view.MenuItemCompat;
 import android.support.v4.widget.SwipeRefreshLayout;
@@ -58,8 +62,11 @@
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -115,6 +122,9 @@
     private View pageDoesNotExistError;
     private WikiDrawerLayout tocDrawer;
 
+    private View tocButton;
+    private boolean isToCButtonFadedIn;
+
     private CommunicationBridge bridge;
     private LinkHandler linkHandler;
     private ReferenceDialog referenceDialog;
@@ -130,6 +140,54 @@
     private ShareHandler shareHandler;
 
     private TabsProvider tabsProvider;
+
+    @NonNull
+    private final SwipeRefreshLayout.OnRefreshListener pageRefreshListener = 
new SwipeRefreshLayout.OnRefreshListener() {
+        @Override
+        public void onRefresh() {
+            // don't refresh if it's still loading...
+            if (pageLoadStrategy.isLoading()) {
+                refreshView.setRefreshing(false);
+                return;
+            }
+            if (model.getCurEntry().getSource() == 
HistoryEntry.SOURCE_SAVED_PAGE) {
+                // if it's a saved page, then refresh it and re-save!
+                refreshPage(true);
+            } else {
+                // otherwise, refresh the page normally
+                refreshPage(false);
+            }
+        }
+    };
+
+    @NonNull
+    private final View.OnClickListener tocButtonOnClickListener = new 
View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            Utils.hideSoftKeyboard(getActivity());
+            setToCButtonFadedIn(true);
+            toggleToC(TOC_ACTION_TOGGLE);
+        }
+    };
+
+    @NonNull
+    private final View.OnTouchListener webViewTouchListener = new 
View.OnTouchListener() {
+        @Override
+        public boolean onTouch(View v, MotionEvent event) {
+            switch (event.getAction()) {
+                case MotionEvent.ACTION_DOWN:
+                    setToCButtonFadedIn(true);
+                    break;
+                case MotionEvent.ACTION_UP:
+                case MotionEvent.ACTION_CANCEL:
+                    setToCButtonFadedIn(false);
+                    break;
+                default:
+                    break;
+            }
+            return false;
+        }
+    };
 
     public ObservableWebView getWebView() {
         return webView;
@@ -166,12 +224,15 @@
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
                              final Bundle savedInstanceState) {
         View rootView = inflater.inflate(R.layout.fragment_page, container, 
false);
+
         webView = (ObservableWebView) 
rootView.findViewById(R.id.page_web_view);
-        networkError = rootView.findViewById(R.id.page_error);
-        retryButton = rootView.findViewById(R.id.page_error_retry);
-        pageDoesNotExistError = 
rootView.findViewById(R.id.page_does_not_exist);
+        webView.setOnTouchListener(webViewTouchListener);
+
         tocDrawer = (WikiDrawerLayout) 
rootView.findViewById(R.id.page_toc_drawer);
         
tocDrawer.setDragEdgeWidth(getResources().getDimensionPixelSize(R.dimen.drawer_drag_margin));
+
+        tocButton = rootView.findViewById(R.id.floating_toc_button);
+        tocButton.setOnClickListener(tocButtonOnClickListener);
 
         refreshView = (SwipeRefreshLayoutWithScroll) rootView
                 .findViewById(R.id.page_refresh_container);
@@ -181,23 +242,11 @@
         // if we want to give it a custom color:
         //refreshView.setProgressBackgroundColor(R.color.swipe_refresh_circle);
         refreshView.setScrollableChild(webView);
-        refreshView.setOnRefreshListener(new 
SwipeRefreshLayout.OnRefreshListener() {
-            @Override
-            public void onRefresh() {
-                // don't refresh if it's still loading...
-                if (pageLoadStrategy.isLoading()) {
-                    refreshView.setRefreshing(false);
-                    return;
-                }
-                if (model.getCurEntry().getSource() == 
HistoryEntry.SOURCE_SAVED_PAGE) {
-                    // if it's a saved page, then refresh it and re-save!
-                    refreshPage(true);
-                } else {
-                    // otherwise, refresh the page normally
-                    refreshPage(false);
-                }
-            }
-        });
+        refreshView.setOnRefreshListener(pageRefreshListener);
+
+        networkError = rootView.findViewById(R.id.page_error);
+        retryButton = rootView.findViewById(R.id.page_error_retry);
+        pageDoesNotExistError = 
rootView.findViewById(R.id.page_does_not_exist);
 
         return rootView;
     }
@@ -484,6 +533,7 @@
                                boolean pushBackStack, int stagedScrollY) {
         // disable sliding of the ToC while sections are loading
         tocHandler.setEnabled(false);
+        setToCButtonFadedIn(true);
 
         networkError.setVisibility(View.GONE);
         pageDoesNotExistError.setVisibility(View.GONE);
@@ -648,10 +698,6 @@
         switch (item.getItemId()) {
             case R.id.homeAsUp:
                 // TODO SEARCH: add up navigation, see also 
http://developer.android.com/training/implementing-navigation/ancestral.html
-                return true;
-            case R.id.menu_toc:
-                Utils.hideSoftKeyboard(getActivity());
-                toggleToC(TOC_ACTION_TOGGLE);
                 return true;
             case R.id.menu_save_page:
                 // This means the user explicitly chose to save a new saved 
page
@@ -981,6 +1027,16 @@
         tocHandler.setEnabled(true);
     }
 
+    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+    private void setToCButtonFadedIn(boolean shouldFadeIn) {
+        if (!ApiUtil.hasHoneyComb() || shouldFadeIn == isToCButtonFadedIn) {
+            return;
+        }
+        Animation anim = AnimationUtils.loadAnimation(getActivity(), 
shouldFadeIn ? R.anim.fade_in_toc : R.anim.fade_out_toc);
+        tocButton.startAnimation(anim);
+        isToCButtonFadedIn = shouldFadeIn;
+    }
+
     @Override
     public boolean onBackPressed() {
         if (tocHandler != null && tocHandler.isVisible()) {
diff --git a/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java 
b/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java
index c911d83..56f9bcb 100755
--- a/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java
@@ -3,13 +3,14 @@
 import org.wikipedia.R;
 import org.wikipedia.Site;
 import org.wikipedia.Utils;
-import org.wikipedia.ViewAnimations;
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.analytics.ToCInteractionFunnel;
 import org.wikipedia.bridge.CommunicationBridge;
+import org.wikipedia.tooltip.ToolTipUtil;
 import org.wikipedia.views.WikiDrawerLayout;
 import org.json.JSONException;
 import org.json.JSONObject;
+
 import android.support.v4.view.GravityCompat;
 import android.support.v4.widget.DrawerLayout;
 import android.support.v7.app.AppCompatActivity;
@@ -25,13 +26,15 @@
 import android.widget.ListView;
 import android.widget.ProgressBar;
 import android.widget.TextView;
+
+import com.appenguin.onboarding.ToolTip;
+
 import java.util.ArrayList;
 
 public class ToCHandler {
     private static final int MAX_LEVELS = 3;
     private static final int INDENTATION_WIDTH_DP = 16;
     private static final int READ_MORE_SECTION_ID = -1;
-    private final View knowToCContainer;
     private final ListView tocList;
     private final ProgressBar tocProgress;
     private final CommunicationBridge bridge;
@@ -56,7 +59,6 @@
 
         this.tocList = (ListView) slidingPane.findViewById(R.id.page_toc_list);
         this.tocProgress = (ProgressBar) 
slidingPane.findViewById(R.id.page_toc_in_progress);
-        knowToCContainer = 
slidingPane.findViewById(R.id.know_toc_intro_container);
 
         bridge.addListener("currentSectionResponse", new 
CommunicationBridge.JSEventListener() {
             @Override
@@ -100,9 +102,6 @@
                 parentActivity.supportInvalidateOptionsMenu();
                 funnel.logOpen();
                 wasClicked = false;
-                if 
(WikipediaApp.getInstance().getOnboardingStateMachine().isTocTutorialEnabled()) 
{
-                    showToCIntro(slidingPane);
-                }
             }
 
             @Override
@@ -129,35 +128,6 @@
                 }
             }
         });
-    }
-
-    private void showToCIntro(WikiDrawerLayout slidingPane) {
-        if (openedViaSwipe) {
-            knowSwipe();
-        } else {
-            final View gotItButton = 
slidingPane.findViewById(R.id.know_toc_drawer_button);
-            if (!knowToCContainer.isShown()) {
-                ViewAnimations.crossFade(tocList, knowToCContainer, new 
Runnable() {
-                    @Override
-                    public void run() {
-                        ViewAnimations.fadeIn(gotItButton);
-                    }
-                });
-            }
-            gotItButton.setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    knowSwipe();
-                }
-            });
-        }
-    }
-
-    private void knowSwipe() {
-        
WikipediaApp.getInstance().getOnboardingStateMachine().setTocTutorial();
-        if (knowToCContainer.isShown()) {
-            ViewAnimations.crossFade(knowToCContainer, tocList);
-        }
     }
 
     public void scrollToSection(String sectionAnchor) {
@@ -215,8 +185,7 @@
         if (!page.isMainPage() && !firstPage) {
             if 
(WikipediaApp.getInstance().getOnboardingStateMachine().isTocTutorialEnabled()) 
{
                 openedViaSwipe = false;
-                slidingPane.openDrawer(GravityCompat.END);
-                showToCIntro(slidingPane);
+                showTocOnboarding();
             }
         }
     }
@@ -297,4 +266,14 @@
             return convertView;
         }
     }
+
+    private void showTocOnboarding() {
+        View tocButton = parentActivity.findViewById(R.id.floating_toc_button);
+        ToolTipUtil.showToolTip(parentActivity,
+                                tocButton,
+                                R.layout.inflate_tool_tip_toc_button,
+                                
parentActivity.getResources().getColor(R.color.tool_tip_default),
+                                ToolTip.Position.CENTER);
+        
WikipediaApp.getInstance().getOnboardingStateMachine().setTocTutorial();
+    }
 }
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
 
b/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
index 488479e..3c2ec28 100644
--- 
a/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
+++ 
b/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java
@@ -2,6 +2,7 @@
 
 import android.graphics.Paint;
 import android.net.Uri;
+import android.support.design.widget.CoordinatorLayout;
 import android.text.Html;
 import android.text.TextUtils;
 import android.util.Log;
@@ -13,7 +14,6 @@
 import android.webkit.WebView;
 import android.widget.AdapterView;
 import android.widget.BaseAdapter;
-import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.ListAdapter;
 import android.widget.ListView;
@@ -160,7 +160,7 @@
         int contentHeight = (int)(webView.getContentHeight() * displayDensity);
         int bottomOffset = contentHeight - scrollY - webView.getHeight();
         int bottomHeight = bottomContentContainer.getHeight();
-        FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) 
bottomContentContainer.getLayoutParams();
+        CoordinatorLayout.LayoutParams params = 
(CoordinatorLayout.LayoutParams) bottomContentContainer.getLayoutParams();
         if (bottomOffset > bottomHeight) {
             if (params.bottomMargin != -bottomHeight) {
                 params.bottomMargin = -bottomHeight;
diff --git a/wikipedia/src/main/java/org/wikipedia/settings/Prefs.java 
b/wikipedia/src/main/java/org/wikipedia/settings/Prefs.java
index f58567e..faef32b 100644
--- a/wikipedia/src/main/java/org/wikipedia/settings/Prefs.java
+++ b/wikipedia/src/main/java/org/wikipedia/settings/Prefs.java
@@ -254,11 +254,11 @@
     }
 
     public static boolean isTocTutorialEnabled() {
-        return !getBoolean(R.string.preference_key_know_toc_drawer, false);
+        return getBoolean(R.string.preference_key_toc_tutorial_enabled, true);
     }
 
     public static void setTocTutorialEnabled(boolean enabled) {
-        setBoolean(R.string.preference_key_know_toc_drawer, !enabled);
+        setBoolean(R.string.preference_key_toc_tutorial_enabled, enabled);
     }
 
     public static boolean isImageDownloadEnabled() {

-- 
To view, visit https://gerrit.wikimedia.org/r/223566
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I4b2d2db0366e28d6cc66858a859d4ec8b3b54191
Gerrit-PatchSet: 8
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mholloway <mhollo...@wikimedia.org>
Gerrit-Reviewer: BearND <bsitzm...@wikimedia.org>
Gerrit-Reviewer: Dbrant <dbr...@wikimedia.org>
Gerrit-Reviewer: Mholloway <mhollo...@wikimedia.org>
Gerrit-Reviewer: Niedzielski <sniedziel...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to