diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/MainSettingsController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/MainSettingsController.java index c2946729..e0a25267 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/MainSettingsController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/MainSettingsController.java @@ -23,12 +23,15 @@ import android.content.pm.PackageManager; import android.net.Uri; import android.text.TextUtils; import android.view.View; +import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.PopupWindow; import android.widget.Toast; import org.floens.chan.Chan; import org.floens.chan.R; import org.floens.chan.core.settings.ChanSettings; +import org.floens.chan.ui.helper.HintPopup; import org.floens.chan.ui.helper.RefreshUIMessage; import org.floens.chan.ui.settings.BooleanSettingView; import org.floens.chan.ui.settings.LinkSettingView; @@ -61,6 +64,9 @@ public class MainSettingsController extends SettingsController implements Toolba private int clickCount; private SettingView developerView; private SettingView fontView; + private ToolbarMenuItem overflow; + + private PopupWindow advancedSettingsHint; public MainSettingsController(Context context) { super(context); @@ -72,7 +78,7 @@ public class MainSettingsController extends SettingsController implements Toolba navigationItem.setTitle(R.string.settings_screen); navigationItem.menu = new ToolbarMenu(context); - navigationItem.createOverflow(context, this, Collections.singletonList( + overflow = navigationItem.createOverflow(context, this, Collections.singletonList( new FloatingMenuItem(ADVANCED_SETTINGS, R.string.settings_screen_advanced) )); @@ -91,6 +97,23 @@ public class MainSettingsController extends SettingsController implements Toolba if (!ChanSettings.developer.get()) { developerView.view.getLayoutParams().height = 0; } + + ChanSettings.settingsOpenCounter.set(ChanSettings.settingsOpenCounter.get() + 1); + if (ChanSettings.settingsOpenCounter.get() == 3) { + ImageView view = overflow.getView(); + view.startAnimation(android.view.animation.AnimationUtils.loadAnimation(context, R.anim.menu_overflow_shake)); + advancedSettingsHint = HintPopup.show(context, view, R.string.settings_advanced_hint); + } + } + + @Override + public void onHide() { + super.onHide(); + + if (advancedSettingsHint != null) { + advancedSettingsHint.dismiss(); + advancedSettingsHint = null; + } } @Override diff --git a/Clover/app/src/main/java/org/floens/chan/ui/helper/HintPopup.java b/Clover/app/src/main/java/org/floens/chan/ui/helper/HintPopup.java new file mode 100644 index 00000000..b5937879 --- /dev/null +++ b/Clover/app/src/main/java/org/floens/chan/ui/helper/HintPopup.java @@ -0,0 +1,52 @@ +package org.floens.chan.ui.helper; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.PopupWindow; +import android.widget.TextView; + +import org.floens.chan.R; + +import static org.floens.chan.utils.AndroidUtils.dp; +import static org.floens.chan.utils.AndroidUtils.getString; + +public class HintPopup { + public static PopupWindow show(Context context, View anchor, int text) { + return show(context, anchor, getString(text)); + } + + public static PopupWindow show(final Context context, final View anchor, final String text) { + final LinearLayout popupView = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.popup_hint, null); + + TextView textView = (TextView) popupView.findViewById(R.id.text); + textView.setText(text); + + final PopupWindow popupWindow = new PopupWindow(popupView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + + popupView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + popupWindow.dismiss(); + } + }); + + popupView.postDelayed(new Runnable() { + @Override + public void run() { + popupWindow.showAsDropDown(anchor, 0, -dp(25)); + } + }, 100); + + popupView.postDelayed(new Runnable() { + @Override + public void run() { + popupWindow.dismiss(); + } + }, 7500); + + return popupWindow; + } +} diff --git a/Clover/app/src/main/res/anim/menu_overflow_shake.xml b/Clover/app/src/main/res/anim/menu_overflow_shake.xml new file mode 100644 index 00000000..df8203de --- /dev/null +++ b/Clover/app/src/main/res/anim/menu_overflow_shake.xml @@ -0,0 +1,25 @@ + + diff --git a/Clover/app/src/main/res/drawable/background_accent_rounded.xml b/Clover/app/src/main/res/drawable/background_accent_rounded.xml new file mode 100644 index 00000000..560b81c2 --- /dev/null +++ b/Clover/app/src/main/res/drawable/background_accent_rounded.xml @@ -0,0 +1,21 @@ + + + + + diff --git a/Clover/app/src/main/res/drawable/background_hint_arrow.xml b/Clover/app/src/main/res/drawable/background_hint_arrow.xml new file mode 100644 index 00000000..b2b51b80 --- /dev/null +++ b/Clover/app/src/main/res/drawable/background_hint_arrow.xml @@ -0,0 +1,32 @@ + + + + + + + + + + diff --git a/Clover/app/src/main/res/layout/popup_hint.xml b/Clover/app/src/main/res/layout/popup_hint.xml new file mode 100644 index 00000000..232d3259 --- /dev/null +++ b/Clover/app/src/main/res/layout/popup_hint.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + diff --git a/Clover/app/src/main/res/values/strings.xml b/Clover/app/src/main/res/values/strings.xml index b9186889..28a7c99b 100644 --- a/Clover/app/src/main/res/values/strings.xml +++ b/Clover/app/src/main/res/values/strings.xml @@ -316,6 +316,7 @@ along with this program. If not, see . Boards Thread watcher 4chan pass + Try the advanced settings! Appearance @@ -376,6 +377,7 @@ along with this program. If not, see . Show file info on posts Show filename on posts Never hide the toolbar + Allow screens to be swiped away HTTP Proxy Enable proxy