summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorezio84 <brabus84@gmail.com>2018-08-23 22:52:33 +0200
committerezio84 <brabus84@gmail.com>2018-08-24 14:21:50 +0200
commit40de4f10ada92a49344326d14ab9d21d3fd66287 (patch)
treea411d9b2ee2c350cb3b8be0593e556b128d5231c
parent7df8f825e44e90b9e9d9c2f517bc04d8c3cabc63 (diff)
Port P rotation lock navbar button to DUI navbar [2/3]
smartbar only for now, thinking about fling
-rw-r--r--res/drawable/ic_sysbar_rotate_button.xml8
-rw-r--r--res/drawable/ic_sysbar_rotate_button_dark.xml8
-rw-r--r--res/values/strings.xml1
-rw-r--r--src/com/android/systemui/navigation/BaseNavigationBar.java3
-rw-r--r--src/com/android/systemui/navigation/Navigator.java4
-rw-r--r--src/com/android/systemui/navigation/Res.java1
-rw-r--r--src/com/android/systemui/navigation/smartbar/SmartBarView.java101
-rw-r--r--src/com/android/systemui/navigation/smartbar/SmartButtonView.java6
8 files changed, 105 insertions, 27 deletions
diff --git a/res/drawable/ic_sysbar_rotate_button.xml b/res/drawable/ic_sysbar_rotate_button.xml
new file mode 100644
index 0000000..20b80c1
--- /dev/null
+++ b/res/drawable/ic_sysbar_rotate_button.xml
@@ -0,0 +1,8 @@
+<!-- drawable/format_list_bulleted_type.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:width="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path android:fillColor="#FFFFFFFF" android:pathData="m 10.015,9.8169748 -2.77,-1.9075587 2.77,-1.9075586 1.12,0.7712872 -0.85,0.5922385 h 5.16 c 0.72,0 1.31,0.3856436 1.31,0.8676981 V 14.54111 l -1.58,-1.088066 V 8.4534491 h -4.89 l 0.86,0.5922384 z m 3.96,4.3660372 -1.12,0.771287 0.85,0.592238 H 8.825 V 10.546943 L 7.245,9.4519906 v 6.3149144 c 0,0.482055 0.59,0.867698 1.31,0.867698 h 5.16 v 0.0069 l -0.85,0.585352 1.12,0.771287 2.77,-1.907558 z" />
+</vector>
diff --git a/res/drawable/ic_sysbar_rotate_button_dark.xml b/res/drawable/ic_sysbar_rotate_button_dark.xml
new file mode 100644
index 0000000..33a2b7f
--- /dev/null
+++ b/res/drawable/ic_sysbar_rotate_button_dark.xml
@@ -0,0 +1,8 @@
+<!-- drawable/format_list_bulleted_type.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:width="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path android:fillColor="@color/icon_color_dark" android:pathData="m 10.015,9.8169748 -2.77,-1.9075587 2.77,-1.9075586 1.12,0.7712872 -0.85,0.5922385 h 5.16 c 0.72,0 1.31,0.3856436 1.31,0.8676981 V 14.54111 l -1.58,-1.088066 V 8.4534491 h -4.89 l 0.86,0.5922384 z m 3.96,4.3660372 -1.12,0.771287 0.85,0.592238 H 8.825 V 10.546943 L 7.245,9.4519906 v 6.3149144 c 0,0.482055 0.59,0.867698 1.31,0.867698 h 5.16 v 0.0069 l -0.85,0.585352 1.12,0.771287 2.77,-1.907558 z" />
+</vector>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ad8dd39..3815e21 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -56,6 +56,7 @@
<string name="label_action_media_left">Previous track</string>
<string name="label_action_media_right">Next track</string>
<string name="label_action_assistant_sound_search">Google sound search</string>
+ <string name="label_action_rotation">Rotation</string>
<!-- Smartbar -->
<string name="label_smartbar_actions">Actions</string>
diff --git a/src/com/android/systemui/navigation/BaseNavigationBar.java b/src/com/android/systemui/navigation/BaseNavigationBar.java
index 395716f..74cc638 100644
--- a/src/com/android/systemui/navigation/BaseNavigationBar.java
+++ b/src/com/android/systemui/navigation/BaseNavigationBar.java
@@ -216,6 +216,9 @@ public abstract class BaseNavigationBar extends LinearLayout implements Navigato
getBarTransitions().updateResources(mResourceMap);
}
+ public void setRotateSuggestionButtonState(boolean visible, boolean skipAnim) {}
+ public void setLastRotation(int rotation) {}
+
@Override
public void setControllers(PulseController pulseController) {
mPulse = pulseController;
diff --git a/src/com/android/systemui/navigation/Navigator.java b/src/com/android/systemui/navigation/Navigator.java
index 4288446..148ea3e 100644
--- a/src/com/android/systemui/navigation/Navigator.java
+++ b/src/com/android/systemui/navigation/Navigator.java
@@ -127,4 +127,8 @@ public interface Navigator extends PluginListener<NavGesture> {
// get our editor and pipe commands directly to it
public default Editor getEditor() { return null; }
+
+ // rotation changes from SystemUI
+ public default void setRotateSuggestionButtonState(boolean visible, boolean skipAnim) {}
+ public default void setLastRotation(int rotation) {}
}
diff --git a/src/com/android/systemui/navigation/Res.java b/src/com/android/systemui/navigation/Res.java
index 22ac86d..fc60e7f 100644
--- a/src/com/android/systemui/navigation/Res.java
+++ b/src/com/android/systemui/navigation/Res.java
@@ -73,6 +73,7 @@ public class Res {
public static final String BUTTON_OVERVIEW = "smartbar_button_3";
public static final String MEDIA_ARROW_LEFT = "media_arrow_left";
public static final String MEDIA_ARROW_RIGHT = "media_arrow_right";
+ public static final String ROTATION_BUTTON = "rotation_button";
}
public static final class Fling {
diff --git a/src/com/android/systemui/navigation/smartbar/SmartBarView.java b/src/com/android/systemui/navigation/smartbar/SmartBarView.java
index dbea7e0..44c9ea6 100644
--- a/src/com/android/systemui/navigation/smartbar/SmartBarView.java
+++ b/src/com/android/systemui/navigation/smartbar/SmartBarView.java
@@ -58,6 +58,7 @@ import com.android.internal.utils.du.DUActionUtils;
import com.android.internal.utils.du.Config;
import com.android.internal.utils.du.Config.ActionConfig;
import com.android.internal.utils.du.Config.ButtonConfig;
+import com.android.systemui.Dependency;
import com.android.systemui.navigation.BaseEditor;
import com.android.systemui.navigation.BaseNavigationBar;
import com.android.systemui.navigation.Editor;
@@ -75,6 +76,7 @@ import com.android.systemui.navigation.utils.SmartObserver.SmartObservable;
import com.android.systemui.statusbar.phone.BarTransitions;
import com.android.systemui.statusbar.phone.LightBarTransitionsController;
import com.android.systemui.statusbar.policy.KeyButtonDrawable;
+import com.android.systemui.statusbar.policy.RotationLockController;
import com.android.systemui.R;
import java.util.ArrayList;
@@ -159,6 +161,10 @@ public class SmartBarView extends BaseNavigationBar {
private GestureDetector mNavDoubleTapToSleep;
+ private boolean mRotateButtonVisible;
+ private int mLastRotation = 0;
+ private RotationLockController mRotationLockController;
+
@Override
public void onReceive(Intent intent) {
if (AudioManager.STREAM_MUTE_CHANGED_ACTION.equals(intent.getAction())
@@ -186,6 +192,22 @@ public class SmartBarView extends BaseNavigationBar {
mAudioManager.getStreamVolume(streamType) == 0);
}
+ @Override
+ public void setRotateSuggestionButtonState(boolean visible, boolean skipAnim) {
+ mRotateButtonVisible = visible;
+ //skipAnim
+ setNavigationIconHints(mNavigationIconHints, true);
+ }
+
+ @Override
+ public void setLastRotation(int rotation) {
+ mLastRotation = rotation;
+ }
+
+ public void rotate() {
+ mRotationLockController.setRotationLockedAtAngle(true, mLastRotation);
+ }
+
public SmartBarView(Context context) {
super(context);
mBarTransitions = new SmartBarTransitions(this);
@@ -204,6 +226,8 @@ public class SmartBarView extends BaseNavigationBar {
return true;
}
});
+
+ mRotationLockController = Dependency.get(RotationLockController.class);
}
private final OnTouchListener mSmartBarTouchListener = new OnTouchListener() {
@@ -393,7 +417,7 @@ public class SmartBarView extends BaseNavigationBar {
}
private void setMediaArrowsVisibility(boolean backAlt) {
- setMediaArrowsVisibility(mCurrentView, (!backAlt && (mIsMediaPlaying /*&& mAudioManager.isMusicActive()*/))
+ setMediaArrowsVisibility(mCurrentView, (!backAlt && !mRotateButtonVisible && (mIsMediaPlaying /*&& mAudioManager.isMusicActive()*/))
? View.VISIBLE : View.INVISIBLE);
}
@@ -404,6 +428,15 @@ public class SmartBarView extends BaseNavigationBar {
contextRight.findViewWithTag(Res.Softkey.MEDIA_ARROW_RIGHT).setVisibility(visibility);
}
+ private void setRotationButtonVisibility() {
+ setRotationButtonVisibility(mCurrentView, mRotateButtonVisible ? View.VISIBLE : View.INVISIBLE);
+ }
+
+ private void setRotationButtonVisibility(View currentOrHidden, int visibility) {
+ ViewGroup contextRight = (ViewGroup)currentOrHidden.findViewWithTag(Res.Softkey.CONTEXT_VIEW_RIGHT);
+ contextRight.findViewWithTag(Res.Softkey.ROTATION_BUTTON).setVisibility(visibility);
+ }
+
@Override
protected boolean areAnyHintsActive() {
return super.areAnyHintsActive() || mShowMenu;
@@ -419,28 +452,35 @@ public class SmartBarView extends BaseNavigationBar {
mNavigationIconHints = hints;
getSmartBackButtonIcon().setImeVisible(backAlt);
- final boolean showImeButton = /*(*/(hints /*& StatusBarManager.NAVIGATION_HINT_IME_SHOWN)*/ != 0);
- switch(mImeHintMode) {
- case IME_HINT_MODE_ARROWS: // arrows
- getSmartImeSwitchButton().setVisibility(View.INVISIBLE);
- setImeArrowsVisibility(mCurrentView, backAlt ? View.VISIBLE : View.INVISIBLE);
- setMediaArrowsVisibility(mCurrentView, View.INVISIBLE);
- break;
- case IME_AND_MEDIA_HINT_MODE_ARROWS:
- getSmartImeSwitchButton().setVisibility(View.INVISIBLE);
- setImeArrowsVisibility(mCurrentView, backAlt ? View.VISIBLE : View.INVISIBLE);
- setMediaArrowsVisibility(backAlt);
- break;
- case IME_HINT_MODE_PICKER:
- getHiddenContext().findViewWithTag(Res.Softkey.IME_SWITCHER).setVisibility(INVISIBLE);
- getSmartImeSwitchButton().setVisibility(showImeButton ? View.VISIBLE : View.INVISIBLE);
- setImeArrowsVisibility(mCurrentView, View.INVISIBLE);
- setMediaArrowsVisibility(mCurrentView, View.INVISIBLE);
- break;
- default: // hidden
- getSmartImeSwitchButton().setVisibility(View.INVISIBLE);
- setImeArrowsVisibility(mCurrentView, View.INVISIBLE);
- setMediaArrowsVisibility(mCurrentView, View.INVISIBLE);
+ setRotationButtonVisibility();
+ if (mRotateButtonVisible) {
+ getSmartImeSwitchButton().setVisibility(View.INVISIBLE);
+ setImeArrowsVisibility(mCurrentView, View.INVISIBLE);
+ setMediaArrowsVisibility(mCurrentView, View.INVISIBLE);
+ } else {
+ final boolean showImeButton = /*(*/(hints /*& StatusBarManager.NAVIGATION_HINT_IME_SHOWN)*/ != 0);
+ switch(mImeHintMode) {
+ case IME_HINT_MODE_ARROWS: // arrows
+ getSmartImeSwitchButton().setVisibility(View.INVISIBLE);
+ setImeArrowsVisibility(mCurrentView, backAlt ? View.VISIBLE : View.INVISIBLE);
+ setMediaArrowsVisibility(mCurrentView, View.INVISIBLE);
+ break;
+ case IME_AND_MEDIA_HINT_MODE_ARROWS:
+ getSmartImeSwitchButton().setVisibility(View.INVISIBLE);
+ setImeArrowsVisibility(mCurrentView, backAlt ? View.VISIBLE : View.INVISIBLE);
+ setMediaArrowsVisibility(backAlt);
+ break;
+ case IME_HINT_MODE_PICKER:
+ getHiddenContext().findViewWithTag(Res.Softkey.IME_SWITCHER).setVisibility(INVISIBLE);
+ getSmartImeSwitchButton().setVisibility(showImeButton ? View.VISIBLE : View.INVISIBLE);
+ setImeArrowsVisibility(mCurrentView, View.INVISIBLE);
+ setMediaArrowsVisibility(mCurrentView, View.INVISIBLE);
+ break;
+ default: // hidden
+ getSmartImeSwitchButton().setVisibility(View.INVISIBLE);
+ setImeArrowsVisibility(mCurrentView, View.INVISIBLE);
+ setMediaArrowsVisibility(mCurrentView, View.INVISIBLE);
+ }
}
// Update menu button in case the IME state has changed.
@@ -482,13 +522,18 @@ public class SmartBarView extends BaseNavigationBar {
}
}
}
- if (mImeHintMode == 3) {
- if (disableHome) {
+
+ if (disableHome) {
+ if (mImeHintMode == 3) {
setMediaArrowsVisibility(mCurrentView, View.INVISIBLE);
- } else {
+ }
+ setRotationButtonVisibility(mCurrentView, View.INVISIBLE);
+ } else {
+ if (mImeHintMode == 3) {
final boolean backAlt = (mNavigationIconHints & StatusBarManager.NAVIGATION_HINT_BACK_ALT) != 0;
setMediaArrowsVisibility(backAlt);
}
+ setRotationButtonVisibility();
}
}
@@ -760,6 +805,8 @@ public class SmartBarView extends BaseNavigationBar {
contextLayout.addView(imeArrowRight);
SmartButtonView mediaArrowRight = generateContextKey(landscape, Res.Softkey.MEDIA_ARROW_RIGHT);
contextLayout.addView(mediaArrowRight);
+ SmartButtonView rotationButton = generateContextKey(landscape, Res.Softkey.ROTATION_BUTTON);
+ contextLayout.addView(rotationButton);
}
return contextLayout;
@@ -792,6 +839,8 @@ public class SmartBarView extends BaseNavigationBar {
actionConfig = new ActionConfig(getContext(), ActionHandler.SYSTEMUI_TASK_MEDIA_PREVIOUS);
} else if (tag.equals(Res.Softkey.MEDIA_ARROW_RIGHT)) {
actionConfig = new ActionConfig(getContext(), ActionHandler.SYSTEMUI_TASK_MEDIA_NEXT);
+ } else if (tag.equals(Res.Softkey.ROTATION_BUTTON)) {
+ actionConfig = new ActionConfig(getContext(), ActionHandler.SYSTEMUI_TASK_ROTATION);
}
buttonConfig.setActionConfig(actionConfig, ActionConfig.PRIMARY);
diff --git a/src/com/android/systemui/navigation/smartbar/SmartButtonView.java b/src/com/android/systemui/navigation/smartbar/SmartButtonView.java
index df35b45..d2ec8ac 100644
--- a/src/com/android/systemui/navigation/smartbar/SmartButtonView.java
+++ b/src/com/android/systemui/navigation/smartbar/SmartButtonView.java
@@ -169,7 +169,11 @@ public class SmartButtonView extends ImageView {
final boolean keyguardShowing = mHost.isKeyguardShowing();
if (!keyguardShowing
|| (keyguardShowing && ActionHandler.SYSTEMUI_TASK_BACK.equals(action))) {
- ActionHandler.performTask(mContext, action);
+ if (ActionHandler.SYSTEMUI_TASK_ROTATION.equals(action)) {
+ mHost.rotate();
+ } else {
+ ActionHandler.performTask(mContext, action);
+ }
}
}