1919import android .app .AlertDialog ;
2020import android .app .Dialog ;
2121import android .app .PendingIntent ;
22- import android .app .AlertDialog .Builder ;
23- import android .bluetooth .BluetoothDevice ;
2422import android .content .BroadcastReceiver ;
2523import android .content .ComponentName ;
2624import android .content .Context ;
3331import android .content .res .Resources ;
3432import android .database .Cursor ;
3533import android .graphics .drawable .Drawable ;
36- import android .graphics .drawable .LayerDrawable ;
3734import android .graphics .drawable .LevelListDrawable ;
3835import android .hardware .display .DisplayManager ;
39- import android .hardware .display .WifiDisplay ;
4036import android .hardware .display .WifiDisplayStatus ;
4137import android .net .Uri ;
42- import android .os .Debug ;
38+ import android .os .Handler ;
4339import android .os .SystemProperties ;
4440import android .provider .ContactsContract ;
4541import android .provider .Settings ;
4844import android .view .ViewGroup ;
4945import android .view .Window ;
5046import android .view .WindowManager ;
51- import android .widget .AdapterView ;
52- import android .widget .ArrayAdapter ;
53- import android .widget .Button ;
5447import android .widget .ImageView ;
55- import android .widget .ListView ;
5648import android .widget .TextView ;
5749
5850import com .android .internal .view .RotationPolicy ;
5951import com .android .systemui .R ;
60- import com .android .systemui .statusbar .phone .QuickSettingsModel .BrightnessState ;
6152import com .android .systemui .statusbar .phone .QuickSettingsModel .RSSIState ;
6253import com .android .systemui .statusbar .phone .QuickSettingsModel .State ;
6354import com .android .systemui .statusbar .phone .QuickSettingsModel .UserState ;
6960import com .android .systemui .statusbar .policy .ToggleSlider ;
7061
7162import java .util .ArrayList ;
72- import java .util .Comparator ;
73- import java .util .Set ;
7463
7564
7665/**
@@ -88,13 +77,18 @@ class QuickSettings {
8877
8978 private BrightnessController mBrightnessController ;
9079 private BluetoothController mBluetoothController ;
80+
9181 private Dialog mBrightnessDialog ;
82+ private int mBrightnessDialogShortTimeout ;
83+ private int mBrightnessDialogLongTimeout ;
9284
9385 private CursorLoader mUserInfoLoader ;
9486
9587 private LevelListDrawable mBatteryLevels ;
9688 private LevelListDrawable mChargingBatteryLevels ;
9789
90+ private Handler mHandler ;
91+
9892 // The set of QuickSettingsTiles that have dynamic spans (and need to be updated on
9993 // configuration change)
10094 private final ArrayList <QuickSettingsTileView > mDynamicSpannedTiles =
@@ -114,11 +108,16 @@ public QuickSettings(Context context, QuickSettingsContainerView container) {
114108 mContainerView = container ;
115109 mModel = new QuickSettingsModel (context );
116110 mWifiDisplayStatus = new WifiDisplayStatus ();
111+ mHandler = new Handler ();
117112
118113 Resources r = mContext .getResources ();
119114 mBatteryLevels = (LevelListDrawable ) r .getDrawable (R .drawable .qs_sys_battery );
120115 mChargingBatteryLevels =
121116 (LevelListDrawable ) r .getDrawable (R .drawable .qs_sys_battery_charging );
117+ mBrightnessDialogLongTimeout =
118+ r .getInteger (R .integer .quick_settings_brightness_dialog_long_timeout );
119+ mBrightnessDialogShortTimeout =
120+ r .getInteger (R .integer .quick_settings_brightness_dialog_short_timeout );
122121
123122 IntentFilter filter = new IntentFilter ();
124123 filter .addAction (DisplayManager .ACTION_WIFI_DISPLAY_STATUS_CHANGED );
@@ -213,6 +212,15 @@ private void addUserTiles(ViewGroup parent, LayoutInflater inflater) {
213212 QuickSettingsTileView userTile = (QuickSettingsTileView )
214213 inflater .inflate (R .layout .quick_settings_tile , parent , false );
215214 userTile .setContent (R .layout .quick_settings_tile_user , inflater );
215+ userTile .setOnClickListener (new View .OnClickListener () {
216+ @ Override
217+ public void onClick (View v ) {
218+ mBar .collapseAllPanels (true );
219+ ContactsContract .QuickContact .showQuickContact (mContext , v ,
220+ ContactsContract .Profile .CONTENT_URI ,
221+ ContactsContract .QuickContact .MODE_LARGE , null );
222+ }
223+ });
216224 mModel .addUserTile (userTile , new QuickSettingsModel .RefreshCallback () {
217225 @ Override
218226 public void refreshView (QuickSettingsTileView view , State state ) {
@@ -452,6 +460,7 @@ public void onClick(View v) {
452460 public void refreshView (QuickSettingsTileView view , State state ) {
453461 TextView tv = (TextView ) view .findViewById (R .id .brightness_textview );
454462 tv .setCompoundDrawablesWithIntrinsicBounds (0 , state .iconId , 0 , 0 );
463+ dismissBrightnessDialog (mBrightnessDialogShortTimeout );
455464 }
456465 });
457466 parent .addView (brightnessTile );
@@ -570,8 +579,34 @@ void updateResources() {
570579 v .setColumnSpan (span );
571580 }
572581 mContainerView .requestLayout ();
582+
583+ // Reset the dialog
584+ boolean isBrightnessDialogVisible = false ;
585+ if (mBrightnessDialog != null ) {
586+ removeAllBrightnessDialogCallbacks ();
587+
588+ isBrightnessDialogVisible = mBrightnessDialog .isShowing ();
589+ mBrightnessDialog .dismiss ();
590+ }
591+ mBrightnessDialog = null ;
592+ if (isBrightnessDialogVisible ) {
593+ showBrightnessDialog ();
594+ }
573595 }
574596
597+ private void removeAllBrightnessDialogCallbacks () {
598+ mHandler .removeCallbacks (mDismissBrightnessDialogRunnable );
599+ }
600+
601+ private Runnable mDismissBrightnessDialogRunnable = new Runnable () {
602+ public void run () {
603+ if (mBrightnessDialog != null && mBrightnessDialog .isShowing ()) {
604+ mBrightnessDialog .dismiss ();
605+ }
606+ removeAllBrightnessDialogCallbacks ();
607+ };
608+ };
609+
575610 private void showBrightnessDialog () {
576611 if (mBrightnessDialog == null ) {
577612 mBrightnessDialog = new Dialog (mContext );
@@ -594,6 +629,13 @@ public void onDismiss(DialogInterface dialog) {
594629 }
595630 if (!mBrightnessDialog .isShowing ()) {
596631 mBrightnessDialog .show ();
632+ dismissBrightnessDialog (mBrightnessDialogLongTimeout );
633+ }
634+ }
635+
636+ private void dismissBrightnessDialog (int timeout ) {
637+ if (mBrightnessDialog != null ) {
638+ mHandler .postDelayed (mDismissBrightnessDialogRunnable , timeout );
597639 }
598640 }
599641
0 commit comments