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