Loading packages/SystemUI/res/drawable/ic_swap_vert.xml 0 → 100644 +25 −0 Original line number Diff line number Diff line <?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. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="#FFFFFFFF" android:pathData="M16 17.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3z" /> </vector> No newline at end of file packages/SystemUI/res/layout/mobile_signal_group.xml +2 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ ** limitations under the License. */ --> <LinearLayout <com.android.keyguard.AlphaOptimizedLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:systemui="http://schemas.android.com/apk/res-auto" android:id="@+id/mobile_combo" Loading Loading @@ -79,4 +79,4 @@ android:contentDescription="@string/data_connection_roaming" android:visibility="gone" /> </FrameLayout> </LinearLayout> </com.android.keyguard.AlphaOptimizedLinearLayout> packages/SystemUI/res/layout/qs_footer_impl.xml +8 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,14 @@ android:layout_gravity="center_vertical" android:gravity="end" > <include android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical|start" android:layout_margin="15dp" android:visibility="gone" layout="@layout/mobile_signal_group" /> <com.android.keyguard.CarrierText android:id="@+id/qs_carrier_text" android:layout_width="0dp" Loading packages/SystemUI/src/com/android/keyguard/CarrierText.java +26 −5 Original line number Diff line number Diff line Loading @@ -39,9 +39,15 @@ import com.android.internal.telephony.IccCardConstants; import com.android.internal.telephony.IccCardConstants.State; import com.android.internal.telephony.TelephonyIntents; import com.android.settingslib.WirelessUtils; import android.telephony.TelephonyManager; public class CarrierText extends TextView { /** Do not show missing sim message. */ public static final int FLAG_HIDE_MISSING_SIM = 1 << 0; /** Do not show airplane mode message. */ public static final int FLAG_HIDE_AIRPLANE_MODE = 1 << 1; private static final boolean DEBUG = KeyguardConstants.DEBUG; private static final String TAG = "CarrierText"; Loading @@ -55,6 +61,8 @@ public class CarrierText extends TextView { private boolean[] mSimErrorState = new boolean[TelephonyManager.getDefault().getPhoneCount()]; private int mFlags; private KeyguardUpdateMonitorCallback mCallback = new KeyguardUpdateMonitorCallback() { @Override public void onRefreshCarrierInfo() { Loading Loading @@ -85,6 +93,11 @@ public class CarrierText extends TextView { } }; }; public void setDisplayFlags(int flags) { mFlags = flags; } /** * The status of this lock screen. Primarily used for widgets on LockScreen. */ Loading Loading @@ -196,8 +209,7 @@ public class CarrierText extends TextView { // Grab the first subscripton, because they all should contain the emergency text, // described above. displayText = makeCarrierStringOnEmergencyCapable( getContext().getText(R.string.keyguard_missing_sim_message_short), subs.get(0).getCarrierName()); getMissingSimMessage(), subs.get(0).getCarrierName()); } else { // We don't have a SubscriptionInfo to get the emergency calls only from. // Grab it from the old sticky broadcast if possible instead. We can use it Loading @@ -223,8 +235,7 @@ public class CarrierText extends TextView { text = concatenate(plmn, spn); } } displayText = makeCarrierStringOnEmergencyCapable( getContext().getText(R.string.keyguard_missing_sim_message_short), text); displayText = makeCarrierStringOnEmergencyCapable(getMissingSimMessage(), text); } } Loading @@ -232,11 +243,21 @@ public class CarrierText extends TextView { // APM (airplane mode) != no carrier state. There are carrier services // (e.g. WFC = Wi-Fi calling) which may operate in APM. if (!anySimReadyAndInService && WirelessUtils.isAirplaneModeOn(mContext)) { displayText = getContext().getString(R.string.airplane_mode); displayText = getAirplaneModeMessage(); } setText(displayText); } private String getMissingSimMessage() { return (mFlags & FLAG_HIDE_MISSING_SIM) == 0 ? getContext().getString(R.string.keyguard_missing_sim_message_short) : ""; } private String getAirplaneModeMessage() { return (mFlags & FLAG_HIDE_AIRPLANE_MODE) == 0 ? getContext().getString(R.string.airplane_mode) : ""; } @Override protected void onFinishInflate() { super.onFinishInflate(); Loading packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java +78 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.app.StatusBarManager.DISABLE2_QUICK_SETTINGS; import android.content.Context; import android.content.Intent; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.graphics.PorterDuff.Mode; import android.graphics.drawable.Drawable; Loading @@ -27,6 +28,7 @@ import android.graphics.drawable.RippleDrawable; import android.os.UserManager; import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; import android.view.View.OnClickListener; Loading @@ -36,15 +38,18 @@ import android.widget.Toast; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; import com.android.keyguard.CarrierText; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.settingslib.Utils; import com.android.settingslib.drawable.UserIconDrawable; import com.android.settingslib.graph.SignalDrawable; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.R.dimen; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.qs.TouchAnimator.Builder; import com.android.systemui.qs.tileimpl.QSTileImpl; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.phone.MultiUserSwitch; import com.android.systemui.statusbar.phone.SettingsButton; Loading @@ -64,7 +69,7 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, private UserInfoController mUserInfoController; private SettingsButton mSettingsButton; protected View mSettingsContainer; private View mCarrierText; private CarrierText mCarrierText; private boolean mQsDisabled; private QSPanel mQsPanel; Loading @@ -86,9 +91,15 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, private View mActionsContainer; private View mDragHandle; private View mMobileGroup; private ImageView mMobileSignal; private ImageView mMobileRoaming; private final int mColorForeground; private final CellSignalState mInfo = new CellSignalState(); public QSFooterImpl(Context context, AttributeSet attrs) { super(context, attrs); mColorForeground = Utils.getColorAttr(context, android.R.attr.colorForeground); } @Override Loading @@ -104,7 +115,12 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, mSettingsContainer = findViewById(R.id.settings_button_container); mSettingsButton.setOnClickListener(this); mMobileGroup = findViewById(R.id.mobile_combo); mMobileSignal = findViewById(R.id.mobile_signal); mMobileRoaming = findViewById(R.id.mobile_roaming); mCarrierText = findViewById(R.id.qs_carrier_text); mCarrierText.setDisplayFlags( CarrierText.FLAG_HIDE_AIRPLANE_MODE | CarrierText.FLAG_HIDE_MISSING_SIM); mMultiUserSwitch = findViewById(R.id.multi_user_switch); mMultiUserAvatar = mMultiUserSwitch.findViewById(R.id.multi_user_avatar); Loading Loading @@ -165,6 +181,7 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, return new TouchAnimator.Builder() .addFloat(mDivider, "alpha", 0, 1) .addFloat(mCarrierText, "alpha", 0, 0, 1) .addFloat(mMobileGroup, "alpha", 0, 1) .addFloat(mActionsContainer, "alpha", 0, 1) .addFloat(mDragHandle, "alpha", 1, 0, 0) .setStartDelay(0.15f) Loading Loading @@ -338,4 +355,64 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, } mMultiUserAvatar.setImageDrawable(picture); } private void handleUpdateState() { mMobileGroup.setVisibility(mInfo.visible ? View.VISIBLE : View.GONE); if (mInfo.visible) { mMobileRoaming.setVisibility(mInfo.roaming ? View.VISIBLE : View.GONE); mMobileRoaming.setImageTintList(ColorStateList.valueOf(mColorForeground)); SignalDrawable d = new SignalDrawable(mContext); d.setDarkIntensity(QuickStatusBarHeader.getColorIntensity(mColorForeground)); mMobileSignal.setImageDrawable(d); mMobileSignal.setImageLevel(mInfo.mobileSignalIconId); StringBuilder contentDescription = new StringBuilder(); if (mInfo.contentDescription != null) { contentDescription.append(mInfo.contentDescription).append(", "); } if (mInfo.roaming) { contentDescription .append(mContext.getString(R.string.data_connection_roaming)) .append(", "); } // TODO: show mobile data off/no internet text for 5 seconds before carrier text if (TextUtils.equals(mInfo.typeContentDescription, mContext.getString(R.string.data_connection_no_internet)) || TextUtils.equals(mInfo.typeContentDescription, mContext.getString(R.string.cell_data_off))) { contentDescription.append(mInfo.typeContentDescription); } mMobileSignal.setContentDescription(contentDescription); } } @Override public void setMobileDataIndicators(NetworkController.IconState statusIcon, NetworkController.IconState qsIcon, int statusType, int qsType, boolean activityIn, boolean activityOut, String typeContentDescription, String description, boolean isWide, int subId, boolean roaming) { mInfo.visible = statusIcon.visible; mInfo.mobileSignalIconId = statusIcon.icon; mInfo.contentDescription = statusIcon.contentDescription; mInfo.typeContentDescription = typeContentDescription; mInfo.roaming = roaming; handleUpdateState(); } @Override public void setNoSims(boolean hasNoSims, boolean simDetected) { if (hasNoSims) { mInfo.visible = false; } handleUpdateState(); } private final class CellSignalState { boolean visible; int mobileSignalIconId; public String contentDescription; String typeContentDescription; boolean roaming; } } Loading
packages/SystemUI/res/drawable/ic_swap_vert.xml 0 → 100644 +25 −0 Original line number Diff line number Diff line <?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. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="#FFFFFFFF" android:pathData="M16 17.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3z" /> </vector> No newline at end of file
packages/SystemUI/res/layout/mobile_signal_group.xml +2 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ ** limitations under the License. */ --> <LinearLayout <com.android.keyguard.AlphaOptimizedLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:systemui="http://schemas.android.com/apk/res-auto" android:id="@+id/mobile_combo" Loading Loading @@ -79,4 +79,4 @@ android:contentDescription="@string/data_connection_roaming" android:visibility="gone" /> </FrameLayout> </LinearLayout> </com.android.keyguard.AlphaOptimizedLinearLayout>
packages/SystemUI/res/layout/qs_footer_impl.xml +8 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,14 @@ android:layout_gravity="center_vertical" android:gravity="end" > <include android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical|start" android:layout_margin="15dp" android:visibility="gone" layout="@layout/mobile_signal_group" /> <com.android.keyguard.CarrierText android:id="@+id/qs_carrier_text" android:layout_width="0dp" Loading
packages/SystemUI/src/com/android/keyguard/CarrierText.java +26 −5 Original line number Diff line number Diff line Loading @@ -39,9 +39,15 @@ import com.android.internal.telephony.IccCardConstants; import com.android.internal.telephony.IccCardConstants.State; import com.android.internal.telephony.TelephonyIntents; import com.android.settingslib.WirelessUtils; import android.telephony.TelephonyManager; public class CarrierText extends TextView { /** Do not show missing sim message. */ public static final int FLAG_HIDE_MISSING_SIM = 1 << 0; /** Do not show airplane mode message. */ public static final int FLAG_HIDE_AIRPLANE_MODE = 1 << 1; private static final boolean DEBUG = KeyguardConstants.DEBUG; private static final String TAG = "CarrierText"; Loading @@ -55,6 +61,8 @@ public class CarrierText extends TextView { private boolean[] mSimErrorState = new boolean[TelephonyManager.getDefault().getPhoneCount()]; private int mFlags; private KeyguardUpdateMonitorCallback mCallback = new KeyguardUpdateMonitorCallback() { @Override public void onRefreshCarrierInfo() { Loading Loading @@ -85,6 +93,11 @@ public class CarrierText extends TextView { } }; }; public void setDisplayFlags(int flags) { mFlags = flags; } /** * The status of this lock screen. Primarily used for widgets on LockScreen. */ Loading Loading @@ -196,8 +209,7 @@ public class CarrierText extends TextView { // Grab the first subscripton, because they all should contain the emergency text, // described above. displayText = makeCarrierStringOnEmergencyCapable( getContext().getText(R.string.keyguard_missing_sim_message_short), subs.get(0).getCarrierName()); getMissingSimMessage(), subs.get(0).getCarrierName()); } else { // We don't have a SubscriptionInfo to get the emergency calls only from. // Grab it from the old sticky broadcast if possible instead. We can use it Loading @@ -223,8 +235,7 @@ public class CarrierText extends TextView { text = concatenate(plmn, spn); } } displayText = makeCarrierStringOnEmergencyCapable( getContext().getText(R.string.keyguard_missing_sim_message_short), text); displayText = makeCarrierStringOnEmergencyCapable(getMissingSimMessage(), text); } } Loading @@ -232,11 +243,21 @@ public class CarrierText extends TextView { // APM (airplane mode) != no carrier state. There are carrier services // (e.g. WFC = Wi-Fi calling) which may operate in APM. if (!anySimReadyAndInService && WirelessUtils.isAirplaneModeOn(mContext)) { displayText = getContext().getString(R.string.airplane_mode); displayText = getAirplaneModeMessage(); } setText(displayText); } private String getMissingSimMessage() { return (mFlags & FLAG_HIDE_MISSING_SIM) == 0 ? getContext().getString(R.string.keyguard_missing_sim_message_short) : ""; } private String getAirplaneModeMessage() { return (mFlags & FLAG_HIDE_AIRPLANE_MODE) == 0 ? getContext().getString(R.string.airplane_mode) : ""; } @Override protected void onFinishInflate() { super.onFinishInflate(); Loading
packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java +78 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.app.StatusBarManager.DISABLE2_QUICK_SETTINGS; import android.content.Context; import android.content.Intent; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.graphics.PorterDuff.Mode; import android.graphics.drawable.Drawable; Loading @@ -27,6 +28,7 @@ import android.graphics.drawable.RippleDrawable; import android.os.UserManager; import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; import android.view.View.OnClickListener; Loading @@ -36,15 +38,18 @@ import android.widget.Toast; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; import com.android.keyguard.CarrierText; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.settingslib.Utils; import com.android.settingslib.drawable.UserIconDrawable; import com.android.settingslib.graph.SignalDrawable; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.R.dimen; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.qs.TouchAnimator.Builder; import com.android.systemui.qs.tileimpl.QSTileImpl; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.phone.MultiUserSwitch; import com.android.systemui.statusbar.phone.SettingsButton; Loading @@ -64,7 +69,7 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, private UserInfoController mUserInfoController; private SettingsButton mSettingsButton; protected View mSettingsContainer; private View mCarrierText; private CarrierText mCarrierText; private boolean mQsDisabled; private QSPanel mQsPanel; Loading @@ -86,9 +91,15 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, private View mActionsContainer; private View mDragHandle; private View mMobileGroup; private ImageView mMobileSignal; private ImageView mMobileRoaming; private final int mColorForeground; private final CellSignalState mInfo = new CellSignalState(); public QSFooterImpl(Context context, AttributeSet attrs) { super(context, attrs); mColorForeground = Utils.getColorAttr(context, android.R.attr.colorForeground); } @Override Loading @@ -104,7 +115,12 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, mSettingsContainer = findViewById(R.id.settings_button_container); mSettingsButton.setOnClickListener(this); mMobileGroup = findViewById(R.id.mobile_combo); mMobileSignal = findViewById(R.id.mobile_signal); mMobileRoaming = findViewById(R.id.mobile_roaming); mCarrierText = findViewById(R.id.qs_carrier_text); mCarrierText.setDisplayFlags( CarrierText.FLAG_HIDE_AIRPLANE_MODE | CarrierText.FLAG_HIDE_MISSING_SIM); mMultiUserSwitch = findViewById(R.id.multi_user_switch); mMultiUserAvatar = mMultiUserSwitch.findViewById(R.id.multi_user_avatar); Loading Loading @@ -165,6 +181,7 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, return new TouchAnimator.Builder() .addFloat(mDivider, "alpha", 0, 1) .addFloat(mCarrierText, "alpha", 0, 0, 1) .addFloat(mMobileGroup, "alpha", 0, 1) .addFloat(mActionsContainer, "alpha", 0, 1) .addFloat(mDragHandle, "alpha", 1, 0, 0) .setStartDelay(0.15f) Loading Loading @@ -338,4 +355,64 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, } mMultiUserAvatar.setImageDrawable(picture); } private void handleUpdateState() { mMobileGroup.setVisibility(mInfo.visible ? View.VISIBLE : View.GONE); if (mInfo.visible) { mMobileRoaming.setVisibility(mInfo.roaming ? View.VISIBLE : View.GONE); mMobileRoaming.setImageTintList(ColorStateList.valueOf(mColorForeground)); SignalDrawable d = new SignalDrawable(mContext); d.setDarkIntensity(QuickStatusBarHeader.getColorIntensity(mColorForeground)); mMobileSignal.setImageDrawable(d); mMobileSignal.setImageLevel(mInfo.mobileSignalIconId); StringBuilder contentDescription = new StringBuilder(); if (mInfo.contentDescription != null) { contentDescription.append(mInfo.contentDescription).append(", "); } if (mInfo.roaming) { contentDescription .append(mContext.getString(R.string.data_connection_roaming)) .append(", "); } // TODO: show mobile data off/no internet text for 5 seconds before carrier text if (TextUtils.equals(mInfo.typeContentDescription, mContext.getString(R.string.data_connection_no_internet)) || TextUtils.equals(mInfo.typeContentDescription, mContext.getString(R.string.cell_data_off))) { contentDescription.append(mInfo.typeContentDescription); } mMobileSignal.setContentDescription(contentDescription); } } @Override public void setMobileDataIndicators(NetworkController.IconState statusIcon, NetworkController.IconState qsIcon, int statusType, int qsType, boolean activityIn, boolean activityOut, String typeContentDescription, String description, boolean isWide, int subId, boolean roaming) { mInfo.visible = statusIcon.visible; mInfo.mobileSignalIconId = statusIcon.icon; mInfo.contentDescription = statusIcon.contentDescription; mInfo.typeContentDescription = typeContentDescription; mInfo.roaming = roaming; handleUpdateState(); } @Override public void setNoSims(boolean hasNoSims, boolean simDetected) { if (hasNoSims) { mInfo.visible = false; } handleUpdateState(); } private final class CellSignalState { boolean visible; int mobileSignalIconId; public String contentDescription; String typeContentDescription; boolean roaming; } }