/packages/SystemUI/src/com/android/systemui/settings/BrightnessDialog.java

https://github.com/aizuzi/platform_frameworks_base · Java · 111 lines · 71 code · 20 blank · 20 comment · 1 complexity · d4a2766e197118bda925c3d6f8dc532c MD5 · raw file

  1. /*
  2. * Copyright (C) 2013 The Android Open Source Project
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package com.android.systemui.settings;
  17. import android.app.Dialog;
  18. import android.content.Context;
  19. import android.content.res.Resources;
  20. import android.os.Bundle;
  21. import android.os.Handler;
  22. import android.view.Window;
  23. import android.view.WindowManager;
  24. import android.widget.ImageView;
  25. import com.android.systemui.R;
  26. /** A dialog that provides controls for adjusting the screen brightness. */
  27. public class BrightnessDialog extends Dialog implements
  28. BrightnessController.BrightnessStateChangeCallback {
  29. private static final String TAG = "BrightnessDialog";
  30. private static final boolean DEBUG = false;
  31. protected Handler mHandler = new Handler();
  32. private BrightnessController mBrightnessController;
  33. private final int mBrightnessDialogLongTimeout;
  34. private final int mBrightnessDialogShortTimeout;
  35. private final Runnable mDismissDialogRunnable = new Runnable() {
  36. public void run() {
  37. if (BrightnessDialog.this.isShowing()) {
  38. BrightnessDialog.this.dismiss();
  39. }
  40. };
  41. };
  42. public BrightnessDialog(Context ctx) {
  43. super(ctx);
  44. Resources r = ctx.getResources();
  45. mBrightnessDialogLongTimeout =
  46. r.getInteger(R.integer.quick_settings_brightness_dialog_long_timeout);
  47. mBrightnessDialogShortTimeout =
  48. r.getInteger(R.integer.quick_settings_brightness_dialog_short_timeout);
  49. }
  50. /**
  51. * Create the brightness dialog and any resources that are used for the
  52. * entire lifetime of the dialog.
  53. */
  54. @Override
  55. public void onCreate(Bundle savedInstanceState) {
  56. super.onCreate(savedInstanceState);
  57. Window window = getWindow();
  58. window.setType(WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY);
  59. window.getAttributes().privateFlags |=
  60. WindowManager.LayoutParams.PRIVATE_FLAG_SHOW_FOR_ALL_USERS;
  61. window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
  62. window.requestFeature(Window.FEATURE_NO_TITLE);
  63. setContentView(R.layout.quick_settings_brightness_dialog);
  64. setCanceledOnTouchOutside(true);
  65. }
  66. @Override
  67. protected void onStart() {
  68. super.onStart();
  69. mBrightnessController = new BrightnessController(getContext(),
  70. (ImageView) findViewById(R.id.brightness_icon),
  71. (ToggleSlider) findViewById(R.id.brightness_slider));
  72. dismissBrightnessDialog(mBrightnessDialogLongTimeout);
  73. mBrightnessController.addStateChangedCallback(this);
  74. }
  75. @Override
  76. protected void onStop() {
  77. super.onStop();
  78. mBrightnessController.unregisterCallbacks();
  79. removeAllBrightnessDialogCallbacks();
  80. }
  81. public void onBrightnessLevelChanged() {
  82. dismissBrightnessDialog(mBrightnessDialogShortTimeout);
  83. }
  84. private void dismissBrightnessDialog(int timeout) {
  85. removeAllBrightnessDialogCallbacks();
  86. mHandler.postDelayed(mDismissDialogRunnable, timeout);
  87. }
  88. private void removeAllBrightnessDialogCallbacks() {
  89. mHandler.removeCallbacks(mDismissDialogRunnable);
  90. }
  91. }