Showing QuickContacts card, adding brightness bar timeout and width, fixing wifi display icon visibility. (Bug 7186309, Bug 7175023)

Change-Id: Iea717e97bf90301bef68b06e1a35644e24ab029d
This commit is contained in:
Winson Chung
2012-09-20 16:07:11 -07:00
parent 4187f92892
commit 3ed6f9456a
9 changed files with 112 additions and 24 deletions

View File

@@ -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"
/>

View File

@@ -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"

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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">

View File

@@ -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);
}
}

View File

@@ -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 {