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