diff options
| author | ezio84 <brabus84@gmail.com> | 2018-08-23 22:52:33 +0200 |
|---|---|---|
| committer | ezio84 <brabus84@gmail.com> | 2018-08-24 14:21:50 +0200 |
| commit | 40de4f10ada92a49344326d14ab9d21d3fd66287 (patch) | |
| tree | a411d9b2ee2c350cb3b8be0593e556b128d5231c | |
| parent | 7df8f825e44e90b9e9d9c2f517bc04d8c3cabc63 (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.xml | 8 | ||||
| -rw-r--r-- | res/drawable/ic_sysbar_rotate_button_dark.xml | 8 | ||||
| -rw-r--r-- | res/values/strings.xml | 1 | ||||
| -rw-r--r-- | src/com/android/systemui/navigation/BaseNavigationBar.java | 3 | ||||
| -rw-r--r-- | src/com/android/systemui/navigation/Navigator.java | 4 | ||||
| -rw-r--r-- | src/com/android/systemui/navigation/Res.java | 1 | ||||
| -rw-r--r-- | src/com/android/systemui/navigation/smartbar/SmartBarView.java | 101 | ||||
| -rw-r--r-- | src/com/android/systemui/navigation/smartbar/SmartButtonView.java | 6 |
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); + } } } |
