diff options
9 files changed, 112 insertions, 24 deletions
diff --git a/packages/SystemUI/res/layout/quick_settings.xml b/packages/SystemUI/res/layout/quick_settings.xml index 2dd3b9f..da4b133 100644 --- a/packages/SystemUI/res/layout/quick_settings.xml +++ b/packages/SystemUI/res/layout/quick_settings.xml @@ -29,9 +29,6 @@ android:id="@+id/quick_settings_container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingBottom="@dimen/quick_settings_container_padding" - android:paddingLeft="@dimen/quick_settings_container_padding" - android:paddingRight="@dimen/quick_settings_container_padding" android:animateLayoutChanges="true" android:columnCount="@integer/quick_settings_num_columns" /> diff --git a/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml b/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml index 5f46e96..5a5769b 100644 --- a/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml +++ b/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml @@ -17,16 +17,13 @@ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="16dp"> + style="@style/BrightnessDialogContainer"> <ImageView android:id="@+id/brightness_icon" - style="@style/SystemBarPanelSettingsIcon" android:layout_gravity="center_vertical" android:paddingRight="10dp" - android:src="@drawable/ic_sysbar_brightness" + android:src="@drawable/ic_qs_brightness_auto_off" /> <com.android.systemui.statusbar.policy.ToggleSlider android:id="@+id/brightness_slider" diff --git a/packages/SystemUI/res/values-land/styles.xml b/packages/SystemUI/res/values-land/styles.xml new file mode 100644 index 0000000..8919198 --- /dev/null +++ b/packages/SystemUI/res/values-land/styles.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2006 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 xmlns:android="http://schemas.android.com/apk/res/android"> + <style name="BrightnessDialogContainer" parent="@style/BaseBrightnessDialogContainer"> + <item name="android:layout_width">360dp</item> + </style> +</resources> diff --git a/packages/SystemUI/res/values-sw600dp/styles.xml b/packages/SystemUI/res/values-sw600dp/styles.xml new file mode 100644 index 0000000..fc1cd88 --- /dev/null +++ b/packages/SystemUI/res/values-sw600dp/styles.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2006 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 xmlns:android="http://schemas.android.com/apk/res/android"> + <style name="BrightnessDialogContainer" parent="@style/BaseBrightnessDialogContainer"> + <item name="android:layout_width">560dp</item> + </style> +</resources> diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 1edc3fc..dddef6d 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -90,5 +90,9 @@ <!-- Whether rotation lock shows up in quick settings or not --> <bool name="quick_settings_show_rotation_lock">false</bool> + + <!-- Timeouts for brightness dialog to disappear --> + <integer name="quick_settings_brightness_dialog_short_timeout">2000</integer> + <integer name="quick_settings_brightness_dialog_long_timeout">4000</integer> </resources> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 63ce2a9..e93e857 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -175,9 +175,6 @@ <!-- The distance you can pull a notificaiton before it pops open --> <dimen name="one_finger_pop_limit">32dp</dimen> - <!-- The amount of padding around the QuickSettings tiles --> - <dimen name="quick_settings_container_padding">12dp</dimen> - <!-- The fixed height of each tile --> <dimen name="quick_settings_cell_height">110dp</dimen> diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index 738b41f..4a37f77 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -100,6 +100,15 @@ <item name="android:textColor">#ff3a3b39</item> </style> + <style name="BaseBrightnessDialogContainer"> + <item name="android:layout_width">match_parent</item> + <item name="android:layout_height">wrap_content</item> + <item name="android:layout_marginLeft">8dp</item> + <item name="android:layout_marginRight">8dp</item> + <item name="android:padding">16dp</item> + </style> + <style name="BrightnessDialogContainer" parent="@style/BaseBrightnessDialogContainer" /> + <style name="Animation" /> <style name="Animation.ShirtPocketPanel"> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java index cbacb28..3fc15e0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java @@ -19,8 +19,6 @@ package com.android.systemui.statusbar.phone; import android.app.AlertDialog; import android.app.Dialog; import android.app.PendingIntent; -import android.app.AlertDialog.Builder; -import android.bluetooth.BluetoothDevice; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; @@ -33,13 +31,11 @@ import android.content.Loader; import android.content.res.Resources; import android.database.Cursor; import android.graphics.drawable.Drawable; -import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.LevelListDrawable; import android.hardware.display.DisplayManager; -import android.hardware.display.WifiDisplay; import android.hardware.display.WifiDisplayStatus; import android.net.Uri; -import android.os.Debug; +import android.os.Handler; import android.os.SystemProperties; import android.provider.ContactsContract; import android.provider.Settings; @@ -48,16 +44,11 @@ import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.Button; import android.widget.ImageView; -import android.widget.ListView; import android.widget.TextView; import com.android.internal.view.RotationPolicy; import com.android.systemui.R; -import com.android.systemui.statusbar.phone.QuickSettingsModel.BrightnessState; import com.android.systemui.statusbar.phone.QuickSettingsModel.RSSIState; import com.android.systemui.statusbar.phone.QuickSettingsModel.State; import com.android.systemui.statusbar.phone.QuickSettingsModel.UserState; @@ -69,8 +60,6 @@ import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.ToggleSlider; import java.util.ArrayList; -import java.util.Comparator; -import java.util.Set; /** @@ -88,13 +77,18 @@ class QuickSettings { private BrightnessController mBrightnessController; private BluetoothController mBluetoothController; + private Dialog mBrightnessDialog; + private int mBrightnessDialogShortTimeout; + private int mBrightnessDialogLongTimeout; private CursorLoader mUserInfoLoader; private LevelListDrawable mBatteryLevels; private LevelListDrawable mChargingBatteryLevels; + private Handler mHandler; + // The set of QuickSettingsTiles that have dynamic spans (and need to be updated on // configuration change) private final ArrayList<QuickSettingsTileView> mDynamicSpannedTiles = @@ -114,11 +108,16 @@ class QuickSettings { mContainerView = container; mModel = new QuickSettingsModel(context); mWifiDisplayStatus = new WifiDisplayStatus(); + mHandler = new Handler(); Resources r = mContext.getResources(); mBatteryLevels = (LevelListDrawable) r.getDrawable(R.drawable.qs_sys_battery); mChargingBatteryLevels = (LevelListDrawable) r.getDrawable(R.drawable.qs_sys_battery_charging); + mBrightnessDialogLongTimeout = + r.getInteger(R.integer.quick_settings_brightness_dialog_long_timeout); + mBrightnessDialogShortTimeout = + r.getInteger(R.integer.quick_settings_brightness_dialog_short_timeout); IntentFilter filter = new IntentFilter(); filter.addAction(DisplayManager.ACTION_WIFI_DISPLAY_STATUS_CHANGED); @@ -213,6 +212,15 @@ class QuickSettings { QuickSettingsTileView userTile = (QuickSettingsTileView) inflater.inflate(R.layout.quick_settings_tile, parent, false); userTile.setContent(R.layout.quick_settings_tile_user, inflater); + userTile.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mBar.collapseAllPanels(true); + ContactsContract.QuickContact.showQuickContact(mContext, v, + ContactsContract.Profile.CONTENT_URI, + ContactsContract.QuickContact.MODE_LARGE, null); + } + }); mModel.addUserTile(userTile, new QuickSettingsModel.RefreshCallback() { @Override public void refreshView(QuickSettingsTileView view, State state) { @@ -452,6 +460,7 @@ class QuickSettings { public void refreshView(QuickSettingsTileView view, State state) { TextView tv = (TextView) view.findViewById(R.id.brightness_textview); tv.setCompoundDrawablesWithIntrinsicBounds(0, state.iconId, 0, 0); + dismissBrightnessDialog(mBrightnessDialogShortTimeout); } }); parent.addView(brightnessTile); @@ -570,8 +579,34 @@ class QuickSettings { v.setColumnSpan(span); } mContainerView.requestLayout(); + + // Reset the dialog + boolean isBrightnessDialogVisible = false; + if (mBrightnessDialog != null) { + removeAllBrightnessDialogCallbacks(); + + isBrightnessDialogVisible = mBrightnessDialog.isShowing(); + mBrightnessDialog.dismiss(); + } + mBrightnessDialog = null; + if (isBrightnessDialogVisible) { + showBrightnessDialog(); + } } + private void removeAllBrightnessDialogCallbacks() { + mHandler.removeCallbacks(mDismissBrightnessDialogRunnable); + } + + private Runnable mDismissBrightnessDialogRunnable = new Runnable() { + public void run() { + if (mBrightnessDialog != null && mBrightnessDialog.isShowing()) { + mBrightnessDialog.dismiss(); + } + removeAllBrightnessDialogCallbacks(); + }; + }; + private void showBrightnessDialog() { if (mBrightnessDialog == null) { mBrightnessDialog = new Dialog(mContext); @@ -594,6 +629,13 @@ class QuickSettings { } if (!mBrightnessDialog.isShowing()) { mBrightnessDialog.show(); + dismissBrightnessDialog(mBrightnessDialogLongTimeout); + } + } + + private void dismissBrightnessDialog(int timeout) { + if (mBrightnessDialog != null) { + mHandler.postDelayed(mDismissBrightnessDialogRunnable, timeout); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java index bb89b3d..cc51aac 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsModel.java @@ -391,7 +391,7 @@ class QuickSettingsModel implements BluetoothStateChangeCallback, } public void onWifiDisplayStateChanged(WifiDisplayStatus status) { mWifiDisplayState.enabled = - (status.getFeatureState() != WifiDisplayStatus.FEATURE_STATE_UNAVAILABLE); + (status.getFeatureState() == WifiDisplayStatus.FEATURE_STATE_ON); if (status.getActiveDisplay() != null) { mWifiDisplayState.label = status.getActiveDisplay().getFriendlyDisplayName(); } else { |