Niedzielski has uploaded a new change for review. https://gerrit.wikimedia.org/r/222212
Change subject: Add tool tip onboarding state ...................................................................... Add tool tip onboarding state Bug: T89985 Change-Id: I00ee82e858eb519c9d71579837e2e9332cbf4c71 --- M wikipedia/res/values/preference_keys.xml M wikipedia/src/main/java/org/wikipedia/WikipediaApp.java A wikipedia/src/main/java/org/wikipedia/onboarding/OnboardingStateMachine.java A wikipedia/src/main/java/org/wikipedia/onboarding/PrefsOnboardingStateMachine.java M wikipedia/src/main/java/org/wikipedia/page/Page.java 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/snippet/ShareHandler.java M wikipedia/src/main/java/org/wikipedia/settings/Prefs.java 9 files changed, 96 insertions(+), 12 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/12/222212/1 diff --git a/wikipedia/res/values/preference_keys.xml b/wikipedia/res/values/preference_keys.xml index 59bb7ee..10bb64a 100644 --- a/wikipedia/res/values/preference_keys.xml +++ b/wikipedia/res/values/preference_keys.xml @@ -17,6 +17,8 @@ <string name="preference_key_color_theme">colorTheme</string> <string name="preference_key_app_channel">channel</string> <string name="preference_key_language_mru">languageMru</string> + <string name="preference_key_select_text_tutorial_enabled">selectTextTutorialEnabled</string> + <string name="preference_key_share_tutorial_enabled">shareTutorialEnabled</string> <string name="preference_key_know_toc_drawer">knowToC</string> <string name="preference_key_show_images">showImages</string> <string name="preference_key_exp_page_load">expPageLoad</string> diff --git a/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java b/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java index 5e8a898..95c8f02 100644 --- a/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java +++ b/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java @@ -34,6 +34,8 @@ import org.wikipedia.login.UserInfoStorage; import org.wikipedia.migration.PerformMigrationsTask; import org.wikipedia.networking.MccMncStateHandler; +import org.wikipedia.onboarding.OnboardingStateMachine; +import org.wikipedia.onboarding.PrefsOnboardingStateMachine; import org.wikipedia.page.PageCache; import org.wikipedia.page.linkpreview.LinkPreviewVersion; import org.wikipedia.pageimages.PageImage; @@ -555,6 +557,10 @@ primarySite = null; } + public OnboardingStateMachine getOnboardingStateMachine() { + return PrefsOnboardingStateMachine.getInstance(); + } + private HashMap<String, String> buildCustomHeaders(String acceptLanguage) { // https://lists.wikimedia.org/pipermail/wikimedia-l/2014-April/071131.html HashMap<String, String> headers = new HashMap<>(); diff --git a/wikipedia/src/main/java/org/wikipedia/onboarding/OnboardingStateMachine.java b/wikipedia/src/main/java/org/wikipedia/onboarding/OnboardingStateMachine.java new file mode 100644 index 0000000..4568a38 --- /dev/null +++ b/wikipedia/src/main/java/org/wikipedia/onboarding/OnboardingStateMachine.java @@ -0,0 +1,10 @@ +package org.wikipedia.onboarding; + +public interface OnboardingStateMachine { + boolean isTocTutorialEnabled(); + void setTocTutorial(); + boolean isSelectTextTutorialEnabled(); + void setSelectTextTutorial(); + boolean isShareTutorialEnabled(); + void setShareTutorial(); +} \ No newline at end of file diff --git a/wikipedia/src/main/java/org/wikipedia/onboarding/PrefsOnboardingStateMachine.java b/wikipedia/src/main/java/org/wikipedia/onboarding/PrefsOnboardingStateMachine.java new file mode 100644 index 0000000..a6cabc4 --- /dev/null +++ b/wikipedia/src/main/java/org/wikipedia/onboarding/PrefsOnboardingStateMachine.java @@ -0,0 +1,47 @@ +package org.wikipedia.onboarding; + +import org.wikipedia.settings.Prefs; + +public final class PrefsOnboardingStateMachine implements OnboardingStateMachine { + private static final PrefsOnboardingStateMachine INSTANCE = new PrefsOnboardingStateMachine(); + + private final boolean initialTocTutorialEnabled = Prefs.isTocTutorialEnabled(); + + public static PrefsOnboardingStateMachine getInstance() { + return INSTANCE; + } + + @Override + public boolean isTocTutorialEnabled() { + return Prefs.isTocTutorialEnabled(); + } + + @Override + public void setTocTutorial() { + Prefs.setTocTutorialEnabled(false); + } + + @Override + public boolean isSelectTextTutorialEnabled() { + return !initialTocTutorialEnabled && Prefs.isSelectTextTutorialEnabled(); + } + + @Override + public void setSelectTextTutorial() { + Prefs.setSelectTextTutorialEnabled(false); + } + + @Override + public boolean isShareTutorialEnabled() { + return !initialTocTutorialEnabled + && !isSelectTextTutorialEnabled() + && Prefs.isShareTutorialEnabled(); + } + + @Override + public void setShareTutorial() { + Prefs.setShareTutorialEnabled(false); + } + + private PrefsOnboardingStateMachine() { } +} \ No newline at end of file diff --git a/wikipedia/src/main/java/org/wikipedia/page/Page.java b/wikipedia/src/main/java/org/wikipedia/page/Page.java index 561108a..8910458 100755 --- a/wikipedia/src/main/java/org/wikipedia/page/Page.java +++ b/wikipedia/src/main/java/org/wikipedia/page/Page.java @@ -96,6 +96,10 @@ return pageProperties.isMainPage(); } + public boolean isArticle() { + return !isMainPage() && getTitle().getNamespace() == null; + } + public JSONObject toJSON() { JSONObject json = new JSONObject(); try { diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java index 69d4254..e803a2c 100755 --- a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java +++ b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java @@ -758,10 +758,10 @@ public void onPageLoadComplete() { editHandler.setPage(model.getPage()); - // TODO: implement select text onboarding logic. - //if (model.getPage().isArticle() && OnboardingStateMachine.isShowShareOnboardingEnabled()) - // showSelectTextOnboarding(); - //} + if (model.getPage().isArticle() && app.getOnboardingStateMachine().isSelectTextTutorialEnabled()) { + showSelectTextOnboarding(); + app.getOnboardingStateMachine().setSelectTextTutorial(); + } if (saveOnComplete) { saveOnComplete = false; diff --git a/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java b/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java index c92194b..c911d83 100755 --- a/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java +++ b/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java @@ -7,7 +7,6 @@ import org.wikipedia.WikipediaApp; import org.wikipedia.analytics.ToCInteractionFunnel; import org.wikipedia.bridge.CommunicationBridge; -import org.wikipedia.settings.Prefs; import org.wikipedia.views.WikiDrawerLayout; import org.json.JSONException; import org.json.JSONObject; @@ -101,7 +100,7 @@ parentActivity.supportInvalidateOptionsMenu(); funnel.logOpen(); wasClicked = false; - if (Prefs.isTocTutorialEnabled()) { + if (WikipediaApp.getInstance().getOnboardingStateMachine().isTocTutorialEnabled()) { showToCIntro(slidingPane); } } @@ -155,7 +154,7 @@ } private void knowSwipe() { - Prefs.setTocTutorialEnabled(false); + WikipediaApp.getInstance().getOnboardingStateMachine().setTocTutorial(); if (knowToCContainer.isShown()) { ViewAnimations.crossFade(knowToCContainer, tocList); } @@ -214,7 +213,7 @@ }); if (!page.isMainPage() && !firstPage) { - if (Prefs.isTocTutorialEnabled()) { + if (WikipediaApp.getInstance().getOnboardingStateMachine().isTocTutorialEnabled()) { openedViaSwipe = false; slidingPane.openDrawer(GravityCompat.END); showToCIntro(slidingPane); diff --git a/wikipedia/src/main/java/org/wikipedia/page/snippet/ShareHandler.java b/wikipedia/src/main/java/org/wikipedia/page/snippet/ShareHandler.java index fbeb8b5..4eb9d1d 100755 --- a/wikipedia/src/main/java/org/wikipedia/page/snippet/ShareHandler.java +++ b/wikipedia/src/main/java/org/wikipedia/page/snippet/ShareHandler.java @@ -194,10 +194,10 @@ | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT); } - // TODO: implement share onboarding logic. - //if (OnboardingStateMachine.isShowShareOnboardingEnabled()) { - // showShareOnboarding(shareItem); - //} + if (WikipediaApp.getInstance().getOnboardingStateMachine().isShareTutorialEnabled()) { + showShareOnboarding(shareItem); + WikipediaApp.getInstance().getOnboardingStateMachine().setShareTutorial(); + } // provide our own listener for the Share button... shareItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { diff --git a/wikipedia/src/main/java/org/wikipedia/settings/Prefs.java b/wikipedia/src/main/java/org/wikipedia/settings/Prefs.java index ae33a1c..04c96b1 100644 --- a/wikipedia/src/main/java/org/wikipedia/settings/Prefs.java +++ b/wikipedia/src/main/java/org/wikipedia/settings/Prefs.java @@ -219,6 +219,22 @@ return getBoolean(R.string.preference_key_zero_interstitial, true); } + public static boolean isSelectTextTutorialEnabled() { + return getBoolean(R.string.preference_key_select_text_tutorial_enabled, true); + } + + public static void setSelectTextTutorialEnabled(boolean enabled) { + setBoolean(R.string.preference_key_select_text_tutorial_enabled, enabled); + } + + public static boolean isShareTutorialEnabled() { + return getBoolean(R.string.preference_key_share_tutorial_enabled, true); + } + + public static void setShareTutorialEnabled(boolean enabled) { + setBoolean(R.string.preference_key_share_tutorial_enabled, enabled); + } + public static boolean isTocTutorialEnabled() { return !getBoolean(R.string.preference_key_know_toc_drawer, false); } -- To view, visit https://gerrit.wikimedia.org/r/222212 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I00ee82e858eb519c9d71579837e2e9332cbf4c71 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Niedzielski <sniedziel...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits