Change visuals for expanded QS

* Moved status icons to the left
* Moved carriers to top right of QS
* Moved edit button to left of QSFooter
* Moved PageIndicator to always be in Footer
* Added build number to footer.

Test: manual using landscape and RTL
Bug: 124464727
Bug: 124466547
Bug: 126759381

Change-Id: I5e5b5bf559d75a8520e772e96b8c4e77ffb72d84
This commit is contained in:
Fabian Kozynski
2019-02-25 16:30:04 -05:00
parent a48d2d09d5
commit 4e76d1f32b
16 changed files with 189 additions and 157 deletions

View File

@@ -65,8 +65,8 @@
android:layout_gravity="center_vertical">
<com.android.systemui.statusbar.AnimatedImageView
android:id="@+id/mobile_signal"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_height="@dimen/qs_header_mobile_icon_size"
android:layout_width="@dimen/qs_header_mobile_icon_size"
systemui:hasOverlappingRendering="false"
/>
<ImageView

View File

@@ -17,33 +17,30 @@
<com.android.systemui.qs.QSCarrier
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linear_carrier"
android:layout_width="0dp"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1"
android:gravity="center_vertical|start"
android:background="@android:color/transparent"
android:clickable="false"
android:clipChildren="false"
android:clipToPadding="false"
android:paddingStart="16dp" >
android:clipToPadding="false" >
<include
layout="@layout/mobile_signal_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginEnd="@dimen/qs_carrier_margin_width"
android:visibility="gone" />
<view class="com.android.systemui.qs.QSCarrier$QSCarrierText"
android:id="@+id/qs_carrier_text"
android:layout_width="0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="marquee"
android:textAppearance="@style/TextAppearance.QS.CarrierInfo"
android:textColor="?android:attr/textColorPrimary"
android:textAppearance="@style/TextAppearance.QS.Status"
android:textDirection="locale"
android:singleLine="true" />
android:singleLine="true"
android:maxEms="7"/>
</com.android.systemui.qs.QSCarrier>

View File

@@ -21,40 +21,38 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|start"
android:orientation="horizontal"
android:layout_marginEnd="32dp">
android:gravity="end|center_vertical"
android:orientation="horizontal">
<include
layout="@layout/qs_carrier"
android:id="@+id/carrier1" />
android:id="@+id/carrier1"
android:layout_weight="1"/>
<View
android:id="@+id/qs_carrier_divider1"
android:layout_width="2dp"
android:layout_width="@dimen/qs_header_carrier_separator_width"
android:layout_height="match_parent"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
android:background="?android:attr/dividerVertical"
android:visibility="gone" />
<include
layout="@layout/qs_carrier"
android:id="@+id/carrier2"
android:layout_weight="1"
android:visibility="gone"/>
<View
android:id="@+id/qs_carrier_divider2"
android:layout_width="2dp"
android:layout_width="@dimen/qs_header_carrier_separator_width"
android:layout_height="match_parent"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
android:background="?android:attr/dividerVertical"
android:layout_weight="1"
android:visibility="gone" />
<include
layout="@layout/qs_carrier"
android:id="@+id/carrier3"
android:layout_weight="1"
android:visibility="gone"/>
</com.android.systemui.qs.QSCarrierGroup>

View File

@@ -21,6 +21,8 @@
android:id="@+id/qs_footer"
android:layout_width="match_parent"
android:layout_height="@dimen/qs_footer_height"
android:layout_marginStart="@dimen/qs_footer_margin"
android:layout_marginEnd="@dimen/qs_footer_margin"
android:elevation="4dp"
android:background="@android:color/transparent"
android:baselineAligned="false"
@@ -41,8 +43,35 @@
android:layout_gravity="center_vertical"
android:gravity="end" >
<include layout="@layout/qs_carrier_group"
android:id="@+id/carrier_group"/>
<com.android.keyguard.AlphaOptimizedLinearLayout
android:id="@+id/qs_footer_actions_edit_container"
android:layout_width="@integer/qs_footer_actions_width"
android:layout_height="match_parent"
android:layout_weight="@integer/qs_footer_actions_weight"
android:gravity="center_vertical|start" >
<com.android.systemui.statusbar.AlphaOptimizedImageView
android:id="@android:id/edit"
android:layout_width="@dimen/qs_footer_action_button_size"
android:layout_height="@dimen/qs_footer_action_button_size"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:clipToPadding="false"
android:contentDescription="@string/accessibility_quick_settings_edit"
android:focusable="true"
android:padding="@dimen/qs_footer_icon_padding"
android:src="@*android:drawable/ic_mode_edit"
android:tint="?android:attr/colorForeground"/>
<TextView
android:id="@+id/build"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:clickable="true"
android:gravity="center_vertical"
android:focusable="true"
android:textAppearance="@style/TextAppearance.QS.Status"
android:visibility="gone"/>
</com.android.keyguard.AlphaOptimizedLinearLayout>
<com.android.systemui.qs.PageIndicator
android:id="@+id/footer_page_indicator"
@@ -59,8 +88,8 @@
android:gravity="center_vertical|end" >
<com.android.systemui.statusbar.phone.MultiUserSwitch
android:id="@+id/multi_user_switch"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_width="@dimen/qs_footer_action_button_size"
android:layout_height="@dimen/qs_footer_action_button_size"
android:layout_alignParentEnd="true"
android:background="@drawable/ripple_drawable"
android:focusable="true">
@@ -70,26 +99,14 @@
android:layout_width="@dimen/multi_user_avatar_expanded_size"
android:layout_height="@dimen/multi_user_avatar_expanded_size"
android:layout_gravity="center"
android:tint="?android:attr/colorAccent"
android:scaleType="centerInside"/>
</com.android.systemui.statusbar.phone.MultiUserSwitch>
<com.android.systemui.statusbar.AlphaOptimizedImageView
android:id="@android:id/edit"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:clipToPadding="false"
android:contentDescription="@string/accessibility_quick_settings_edit"
android:focusable="true"
android:padding="15dp"
android:src="@*android:drawable/ic_mode_edit"
android:tint="?android:attr/colorForeground"/>
<com.android.systemui.statusbar.AlphaOptimizedFrameLayout
android:id="@+id/settings_button_container"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_width="@dimen/qs_footer_action_button_size"
android:layout_height="@dimen/qs_footer_action_button_size"
android:clipChildren="false"
android:clipToPadding="false">
@@ -98,10 +115,12 @@
style="@android:style/Widget.Material.Button.Borderless"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:padding="@dimen/qs_footer_icon_padding"
android:background="@drawable/ripple_drawable"
android:contentDescription="@string/accessibility_quick_settings_settings"
android:padding="15dp"
android:src="@drawable/ic_settings_16dp"
android:src="@drawable/ic_settings"
android:scaleType="centerInside"
android:tint="?android:attr/colorForeground"/>
<com.android.systemui.statusbar.AlphaOptimizedImageView
@@ -117,7 +136,6 @@
</com.android.systemui.statusbar.AlphaOptimizedFrameLayout>
</com.android.keyguard.AlphaOptimizedLinearLayout>
</LinearLayout>
<View
android:id="@+id/qs_drag_handle_view"
android:layout_width="24dp"

View File

@@ -58,7 +58,7 @@
android:elevation="4dp"
android:background="@android:color/transparent"
android:focusable="true"
android:accessibilityTraversalBefore="@id/qs_carrier_text"
android:accessibilityTraversalBefore="@android:id/edit"
/>
<include layout="@layout/quick_status_bar_expanded_header" />

View File

@@ -25,7 +25,7 @@
android:id="@+id/long_press_tooltip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_gravity="start|bottom"
android:alpha="0"
android:text="@string/quick_settings_header_onboarding_text"
android:textAppearance="@style/TextAppearance.QS.TileLabel"
@@ -33,54 +33,69 @@
android:visibility="invisible" />
<LinearLayout
android:id="@+id/status_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:gravity="center_vertical"
android:alpha="0">
android:layout_gravity="start|bottom"
android:gravity="center_vertical">
<ImageView
android:id="@+id/next_alarm_icon"
android:layout_width="@dimen/qs_header_alarm_icon_size"
android:layout_height="@dimen/qs_header_alarm_icon_size"
android:src="@drawable/stat_sys_alarm"
android:tint="?android:attr/textColorPrimary"
android:visibility="gone"/>
<TextView
android:id="@+id/next_alarm_text"
<LinearLayout
android:id="@+id/status_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start"
android:textAppearance="@style/TextAppearance.QS.TileLabel"
android:visibility="gone"/>
android:layout_gravity="start|center_vertical"
android:layout_weight="1"
android:gravity="center_vertical"
android:alpha="0">
<ImageView
android:id="@+id/next_alarm_icon"
android:layout_width="@dimen/qs_header_alarm_icon_size"
android:layout_height="@dimen/qs_header_alarm_icon_size"
android:src="@drawable/stat_sys_alarm"
android:tint="?android:attr/textColorPrimary"
android:visibility="gone"/>
<TextView
android:id="@+id/next_alarm_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start"
android:textAppearance="@style/TextAppearance.QS.Status"
android:visibility="gone"/>
<View
android:id="@+id/status_separator"
android:layout_width="@dimen/qs_header_separator_width"
android:layout_height="match_parent"
android:visibility="gone"/>
<ImageView
android:id="@+id/ringer_mode_icon"
android:layout_width="@dimen/qs_header_alarm_icon_size"
android:layout_height="@dimen/qs_header_alarm_icon_size"
android:tint="?android:attr/textColorPrimary"
android:visibility="gone"/>
<TextView
android:id="@+id/ringer_mode_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start"
android:textAppearance="@style/TextAppearance.QS.Status"
android:visibility="gone"/>
</LinearLayout>
<View
android:id="@+id/status_separator"
android:layout_width="1dp"
android:minWidth="@dimen/qs_status_separator"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:background="@android:color/white"
android:backgroundTint="?android:attr/textColorPrimary"
android:visibility="gone"/>
<ImageView
android:id="@+id/ringer_mode_icon"
android:layout_width="@dimen/qs_header_alarm_icon_size"
android:layout_height="@dimen/qs_header_alarm_icon_size"
android:tint="?android:attr/textColorPrimary"
android:visibility="gone"/>
<TextView
android:id="@+id/ringer_mode_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start"
android:textAppearance="@style/TextAppearance.QS.TileLabel"
android:visibility="gone"/>
android:layout_weight="1"/>
<include layout="@layout/qs_carrier_group"
android:id="@+id/carrier_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="center vertical|end"/>
</LinearLayout>
</FrameLayout>

View File

@@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2018 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
<resources>
<!-- Action footer width is set to 0 to allow it to stretch (through a weight of 1) and center
the page indicator in between the footer and the carrier text.-->
<integer name="qs_footer_actions_width">0</integer>
<integer name="qs_footer_actions_weight">1</integer>
</resources>

View File

@@ -274,7 +274,16 @@
<!-- The height of the quick settings footer that holds the user switcher, settings icon,
etc. -->
<dimen name="qs_footer_height">56dp</dimen>
<dimen name="qs_footer_height">48dp</dimen>
<!-- The size of each of the icon buttons in the QS footer -->
<dimen name="qs_footer_action_button_size">@dimen/qs_footer_height</dimen>
<!-- Margins on each side of QS Footer -->
<dimen name="qs_footer_margin">2dp</dimen>
<!-- Padding on each QS Footer Icon to make the icons 20dpx20dp -->
<dimen name="qs_footer_icon_padding">14dp</dimen>
<!-- The padding between the notifications and the quick settings container -->
<dimen name="qs_notification_padding">@dimen/notification_side_paddings</dimen>
@@ -415,11 +424,16 @@
<dimen name="qs_detail_item_icon_marginEnd">20dp</dimen>
<dimen name="qs_header_tooltip_height">18dp</dimen>
<dimen name="qs_header_alarm_icon_size">18dp</dimen>
<dimen name="qs_header_mobile_icon_size">18dp</dimen>
<dimen name="qs_header_alarm_text_margin_start">6dp</dimen>
<dimen name="qs_header_separator_width">8dp</dimen>
<dimen name="qs_header_carrier_separator_width">6dp</dimen>
<dimen name="qs_status_separator">32dp</dimen>
<dimen name="qs_carrier_margin_width">4dp</dimen>
<dimen name="qs_footer_padding_start">16dp</dimen>
<dimen name="qs_footer_padding_end">16dp</dimen>
<dimen name="qs_footer_icon_size">16dp</dimen>
<dimen name="qs_paged_tile_layout_padding_bottom">24dp</dimen>
<dimen name="qs_paged_tile_layout_padding_bottom">16dp</dimen>
<dimen name="qs_notif_collapsed_space">64dp</dimen>
@@ -592,7 +606,7 @@
<dimen name="multi_user_avatar_keyguard_size">22dp</dimen>
<!-- The width of user avatar when expanded -->
<dimen name="multi_user_avatar_expanded_size">18dp</dimen>
<dimen name="multi_user_avatar_expanded_size">20dp</dimen>
<!-- The font size of the time when collapsed in QS -->
<dimen name="qs_time_collapsed_size">14sp</dimen>

View File

@@ -19,8 +19,8 @@
<!-- Action footer width used for layout_width to indicate WRAP_CONTENT (along with a weight of
0) as we can allow the carrier text to stretch as far as needed in the QS footer. -->
<integer name="qs_footer_actions_width">-2</integer>
<integer name="qs_footer_actions_weight">0</integer>
<integer name="qs_footer_actions_width">0</integer>
<integer name="qs_footer_actions_weight">1</integer>
<!-- Maximum number of bubbles to render and animate at one time. While the animations used are
lightweight translation animations, this number can be reduced on lower end devices if any

View File

@@ -227,6 +227,8 @@
<item name="android:textSize">@dimen/qs_carrier_info_text_size</item>
</style>
<style name="TextAppearance.QS.Status" parent="TextAppearance.QS.TileLabel.Secondary" />
<style name="TextAppearance.AppOpsDialog" />
<style name="TextAppearance.AppOpsDialog.Title">

View File

@@ -261,11 +261,9 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
// Fade in the tiles/labels as we reach the final position.
mFirstPageDelayedAnimator = new TouchAnimator.Builder()
.setStartDelay(EXPANDED_TILE_DELAY)
.addFloat(mQsPanel.getPageIndicator(), "alpha", 0, 1)
.addFloat(tileLayout, "alpha", 0, 1)
.addFloat(mQsPanel.getDivider(), "alpha", 0, 1)
.addFloat(mQsPanel.getFooter().getView(), "alpha", 0, 1).build();
mAllViews.add(mQsPanel.getPageIndicator());
mAllViews.add(mQsPanel.getDivider());
mAllViews.add(mQsPanel.getFooter().getView());
float px = 0;
@@ -283,7 +281,6 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
}
mNonfirstPageAnimator = new TouchAnimator.Builder()
.addFloat(mQuickQsPanel, "alpha", 1, 0)
.addFloat(mQsPanel.getPageIndicator(), "alpha", 0, 1)
.addFloat(mQsPanel.getDivider(), "alpha", 0, 1)
.setListener(mNonFirstPageListener)
.setEndDelay(.5f)

View File

@@ -32,7 +32,7 @@ import com.android.systemui.R;
public class QSCarrier extends LinearLayout {
private View mMobileGroup;
private TextView mCarrierText;
private QSCarrierText mCarrierText;
private ImageView mMobileSignal;
private ImageView mMobileRoaming;
private ColorStateList mColorForegroundStateList;
@@ -107,6 +107,7 @@ public class QSCarrier extends LinearLayout {
* TextView that changes its ellipsize value with its visibility.
*/
public static class QSCarrierText extends TextView {
public QSCarrierText(Context context) {
super(context);
}

View File

@@ -121,6 +121,7 @@ public class QSCarrierGroup extends LinearLayout implements
for (int i = 0; i < SIM_SLOTS; i++) {
mCarrierGroups[i].updateState(mInfos[i]);
}
mCarrierDividers[0].setVisibility(
mInfos[0].visible && mInfos[1].visible ? View.VISIBLE : View.GONE);
// This tackles the case of slots 2 being available as well as at least one other.

View File

@@ -24,18 +24,24 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.UserInfo;
import android.content.res.Configuration;
import android.database.ContentObserver;
import android.graphics.PorterDuff.Mode;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.RippleDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
import android.util.AttributeSet;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.Nullable;
@@ -45,6 +51,7 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.settingslib.Utils;
import com.android.settingslib.development.DevelopmentSettingsEnabler;
import com.android.settingslib.drawable.UserIconDrawable;
import com.android.systemui.Dependency;
import com.android.systemui.R;
@@ -80,7 +87,6 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
private boolean mListening;
private QSCarrierGroup mCarrierGroup;
private View mDivider;
protected MultiUserSwitch mMultiUserSwitch;
private ImageView mMultiUserAvatar;
@@ -89,6 +95,7 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
private float mExpansionAmount;
protected View mEdit;
protected View mEditContainer;
private TouchAnimator mSettingsCogAnimator;
private View mActionsContainer;
@@ -96,6 +103,15 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
private OnClickListener mExpandClickListener;
private final ContentObserver mDeveloperSettingsObserver = new ContentObserver(
new Handler(mContext.getMainLooper())) {
@Override
public void onChange(boolean selfChange, Uri uri) {
super.onChange(selfChange, uri);
setBuildText();
}
};
@Inject
public QSFooterImpl(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs,
ActivityStarter activityStarter, UserInfoController userInfoController,
@@ -129,13 +145,12 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
mSettingsContainer = findViewById(R.id.settings_button_container);
mSettingsButton.setOnClickListener(this);
mCarrierGroup = findViewById(R.id.carrier_group);
mMultiUserSwitch = findViewById(R.id.multi_user_switch);
mMultiUserAvatar = mMultiUserSwitch.findViewById(R.id.multi_user_avatar);
mDragHandle = findViewById(R.id.qs_drag_handle_view);
mActionsContainer = findViewById(R.id.qs_footer_actions_container);
mEditContainer = findViewById(R.id.qs_footer_actions_edit_container);
// RenderThread is doing more harm than good when touching the header (to expand quick
// settings), so disable it for this view
@@ -147,6 +162,21 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
oldBottom) -> updateAnimator(right - left));
setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES);
updateEverything();
setBuildText();
}
private void setBuildText() {
TextView v = findViewById(R.id.build);
if (v == null) return;
if (DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(mContext)) {
v.setText(mContext.getString(
com.android.internal.R.string.bugreport_status,
Build.VERSION.RELEASE,
Build.ID));
v.setVisibility(View.VISIBLE);
} else {
v.setVisibility(View.GONE);
}
}
private void updateAnimator(int width) {
@@ -179,14 +209,6 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
private void updateResources() {
updateFooterAnimator();
// Update the width and weight of the actions container as the page indicator can sometimes
// show and the layout needs to center it between the carrier text and actions container.
LinearLayout.LayoutParams params =
(LinearLayout.LayoutParams) mActionsContainer.getLayoutParams();
params.width = mContext.getResources().getInteger(R.integer.qs_footer_actions_width);
params.weight = mContext.getResources().getInteger(R.integer.qs_footer_actions_weight);
mActionsContainer.setLayoutParams(params);
}
private void updateFooterAnimator() {
@@ -197,8 +219,8 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
private TouchAnimator createFooterAnimator() {
return new TouchAnimator.Builder()
.addFloat(mDivider, "alpha", 0, 1)
.addFloat(mCarrierGroup, "alpha", 0, 0, 1)
.addFloat(mActionsContainer, "alpha", 0, 1)
.addFloat(mEditContainer, "alpha", 0, 1)
.addFloat(mDragHandle, "alpha", 1, 0, 0)
.addFloat(mPageIndicator, "alpha", 0, 1)
.setStartDelay(0.15f)
@@ -232,10 +254,19 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
}
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
mContext.getContentResolver().registerContentObserver(
Settings.Global.getUriFor(Settings.Global.DEVELOPMENT_SETTINGS_ENABLED), false,
mDeveloperSettingsObserver, UserHandle.USER_ALL);
}
@Override
@VisibleForTesting
public void onDetachedFromWindow() {
setListening(false);
mContext.getContentResolver().unregisterContentObserver(mDeveloperSettingsObserver);
super.onDetachedFromWindow();
}
@@ -293,7 +324,7 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
TunerService.isTunerEnabled(mContext) ? View.VISIBLE : View.INVISIBLE);
final boolean isDemo = UserManager.isDeviceInDemoMode(mContext);
mMultiUserSwitch.setVisibility(showUserSwitcher(isDemo) ? View.VISIBLE : View.INVISIBLE);
mEdit.setVisibility(isDemo || !mExpanded ? View.INVISIBLE : View.VISIBLE);
mEditContainer.setVisibility(isDemo || !mExpanded ? View.INVISIBLE : View.VISIBLE);
mSettingsButton.setVisibility(isDemo || !mExpanded ? View.INVISIBLE : View.VISIBLE);
}
@@ -323,7 +354,6 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
} else {
mUserInfoController.removeCallback(this);
}
mCarrierGroup.setListening(mListening);
}
@Override

View File

@@ -16,8 +16,6 @@
package com.android.systemui.qs;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
import static com.android.systemui.qs.tileimpl.QSTileImpl.getColorForState;
import android.annotation.Nullable;
@@ -79,7 +77,6 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
protected QSTileHost mHost;
protected QSSecurityFooter mFooter;
private PageIndicator mPanelPageIndicator;
private PageIndicator mFooterPageIndicator;
private boolean mGridContentVisible = true;
@@ -110,11 +107,6 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
mTileLayout.setListening(mListening);
addView((View) mTileLayout);
mPanelPageIndicator = (PageIndicator) LayoutInflater.from(context).inflate(
R.layout.qs_page_indicator, this, false);
addView(mPanelPageIndicator);
((PagedTileLayout) mTileLayout).setPageIndicator(mPanelPageIndicator);
mQsTileRevealController = new QSTileRevealController(mContext, this,
(PagedTileLayout) mTileLayout);
@@ -141,10 +133,6 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
return mDivider;
}
public View getPageIndicator() {
return mPanelPageIndicator;
}
public QSTileRevealController getQsTileRevealController() {
return mQsTileRevealController;
}
@@ -265,21 +253,11 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
private void updatePageIndicator() {
if (mTileLayout instanceof PagedTileLayout) {
// If we're in landscape, and we have the footer page indicator (which we should if the
// footer has been initialized & linked), then we'll show the footer page indicator to
// save space in the main QS tile area. Otherwise, we'll use the default one under the
// tiles/above the footer.
boolean shouldUseFooterPageIndicator =
getResources().getConfiguration().orientation == ORIENTATION_LANDSCAPE
&& mFooterPageIndicator != null;
mPanelPageIndicator.setVisibility(View.GONE);
if (mFooterPageIndicator != null) {
mFooterPageIndicator.setVisibility(View.GONE);
}
((PagedTileLayout) mTileLayout).setPageIndicator(
shouldUseFooterPageIndicator ? mFooterPageIndicator : mPanelPageIndicator);
((PagedTileLayout) mTileLayout).setPageIndicator(mFooterPageIndicator);
}
}
}

View File

@@ -119,6 +119,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements
private boolean mListening;
private boolean mQsDisabled;
private QSCarrierGroup mCarrierGroup;
protected QuickQSPanel mHeaderQsPanel;
protected QSTileHost mHost;
private TintedIconManager mIconManager;
@@ -217,6 +218,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements
mRingerModeTextView = findViewById(R.id.ringer_mode_text);
mPrivacyChip = findViewById(R.id.privacy_chip);
mPrivacyChip.setOnClickListener(this);
mCarrierGroup = findViewById(R.id.carrier_group);
updateResources();
@@ -531,6 +533,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements
}
mHeaderQsPanel.setListening(listening);
mListening = listening;
mCarrierGroup.setListening(mListening);
if (listening) {
mZenController.addCallback(this);