summaryrefslogtreecommitdiffstats
path: root/policy
diff options
context:
space:
mode:
Diffstat (limited to 'policy')
-rwxr-xr-xpolicy/src/com/android/internal/policy/impl/PhoneWindowManager.java31
-rw-r--r--policy/src/com/android/internal/policy/impl/PowerDialog.java182
2 files changed, 27 insertions, 186 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 33685ba..68e0e32 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -47,6 +47,7 @@ import android.os.Vibrator;
import android.provider.Settings;
import com.android.internal.R;
+import com.android.internal.app.ShutdownThread;
import com.android.internal.policy.PolicyManager;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.telephony.ITelephony;
@@ -128,6 +129,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
static final boolean DEBUG_LAYOUT = false;
static final boolean SHOW_STARTING_ANIMATIONS = true;
static final boolean SHOW_PROCESSES_ON_ALT_MENU = false;
+
+ static final int LONG_PRESS_POWER_NOTHING = 0;
+ static final int LONG_PRESS_POWER_GLOBAL_ACTIONS = 1;
+ static final int LONG_PRESS_POWER_SHUT_OFF = 2;
// wallpaper is at the bottom, though the window manager may move it.
static final int WALLPAPER_LAYER = 2;
@@ -224,6 +229,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
boolean mDeskDockEnablesAccelerometer;
int mLidKeyboardAccessibility;
int mLidNavigationAccessibility;
+ int mLongPressOnPowerBehavior = -1;
boolean mScreenOn = false;
boolean mOrientationSensorEnabled = false;
int mCurrentAppOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
@@ -467,10 +473,27 @@ public class PhoneWindowManager implements WindowManagerPolicy {
Runnable mPowerLongPress = new Runnable() {
public void run() {
- mShouldTurnOffOnKeyUp = false;
- performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
- sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
- showGlobalActionsDialog();
+ // The context isn't read
+ if (mLongPressOnPowerBehavior < 0) {
+ mLongPressOnPowerBehavior = mContext.getResources().getInteger(
+ com.android.internal.R.integer.config_longPressOnPowerBehavior);
+ }
+ switch (mLongPressOnPowerBehavior) {
+ case LONG_PRESS_POWER_NOTHING:
+ break;
+ case LONG_PRESS_POWER_GLOBAL_ACTIONS:
+ mShouldTurnOffOnKeyUp = false;
+ performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
+ sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
+ showGlobalActionsDialog();
+ break;
+ case LONG_PRESS_POWER_SHUT_OFF:
+ mShouldTurnOffOnKeyUp = false;
+ performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
+ sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
+ ShutdownThread.shutdown(mContext, true);
+ break;
+ }
}
};
diff --git a/policy/src/com/android/internal/policy/impl/PowerDialog.java b/policy/src/com/android/internal/policy/impl/PowerDialog.java
deleted file mode 100644
index de35bd7..0000000
--- a/policy/src/com/android/internal/policy/impl/PowerDialog.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright (C) 2007 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.
- */
-
-package com.android.internal.policy.impl;
-
-import com.android.internal.R;
-
-import android.app.Dialog;
-import android.app.StatusBarManager;
-import android.content.Context;
-import android.os.Bundle;
-import android.os.RemoteException;
-import android.os.LocalPowerManager;
-import android.os.ServiceManager;
-import android.os.SystemClock;
-
-import com.android.internal.app.ShutdownThread;
-import com.android.internal.telephony.ITelephony;
-import android.view.KeyEvent;
-import android.util.Log;
-import android.view.View;
-import android.view.WindowManager;
-import android.view.View.OnClickListener;
-import android.view.View.OnKeyListener;
-import android.widget.Button;
-
-/**
- * @deprecated use {@link GlobalActions} instead.
- */
-public class PowerDialog extends Dialog implements OnClickListener,
- OnKeyListener {
- private static final String TAG = "PowerDialog";
-
- static private StatusBarManager sStatusBar;
- private Button mKeyguard;
- private Button mPower;
- private Button mRadioPower;
- private Button mSilent;
-
- private LocalPowerManager mPowerManager;
-
- public PowerDialog(Context context, LocalPowerManager powerManager) {
- super(context);
- mPowerManager = powerManager;
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- Context context = getContext();
-
- if (sStatusBar == null) {
- sStatusBar = (StatusBarManager)context.getSystemService(Context.STATUS_BAR_SERVICE);
- }
-
- setContentView(com.android.internal.R.layout.power_dialog);
-
- getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
- if (!getContext().getResources().getBoolean(
- com.android.internal.R.bool.config_sf_slowBlur)) {
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
- WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
- }
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
- WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
-
- setTitle(context.getText(R.string.power_dialog));
-
- mKeyguard = (Button) findViewById(R.id.keyguard);
- mPower = (Button) findViewById(R.id.off);
- mRadioPower = (Button) findViewById(R.id.radio_power);
- mSilent = (Button) findViewById(R.id.silent);
-
- if (mKeyguard != null) {
- mKeyguard.setOnKeyListener(this);
- mKeyguard.setOnClickListener(this);
- }
- if (mPower != null) {
- mPower.setOnClickListener(this);
- }
- if (mRadioPower != null) {
- mRadioPower.setOnClickListener(this);
- }
- if (mSilent != null) {
- mSilent.setOnClickListener(this);
- // XXX: HACK for now hide the silent until we get mute support
- mSilent.setVisibility(View.GONE);
- }
-
- CharSequence text;
-
- // set the keyguard button's text
- text = context.getText(R.string.screen_lock);
- mKeyguard.setText(text);
- mKeyguard.requestFocus();
-
- try {
- ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone"));
- if (phone != null) {
- text = phone.isRadioOn() ? context
- .getText(R.string.turn_off_radio) : context
- .getText(R.string.turn_on_radio);
- }
- } catch (RemoteException ex) {
- // ignore it
- }
-
- mRadioPower.setText(text);
- }
-
- public void onClick(View v) {
- this.dismiss();
- if (v == mPower) {
- // shutdown by making sure radio and power are handled accordingly.
- ShutdownThread.shutdown(getContext(), true);
- } else if (v == mRadioPower) {
- try {
- ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone"));
- if (phone != null) {
- phone.toggleRadioOnOff();
- }
- } catch (RemoteException ex) {
- // ignore it
- }
- } else if (v == mSilent) {
- // do something
- } else if (v == mKeyguard) {
- if (v.isInTouchMode()) {
- // only in touch mode for the reasons explained in onKey.
- this.dismiss();
- mPowerManager.goToSleep(SystemClock.uptimeMillis() + 1);
- }
- }
- }
-
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- // The activate keyguard button needs to put the device to sleep on the
- // key up event. If we try to put it to sleep on the click or down
- // action
- // the the up action will cause the device to wake back up.
-
- // Log.i(TAG, "keyCode: " + keyCode + " action: " + event.getAction());
- if (keyCode != KeyEvent.KEYCODE_DPAD_CENTER
- || event.getAction() != KeyEvent.ACTION_UP) {
- // Log.i(TAG, "getting out of dodge...");
- return false;
- }
-
- // Log.i(TAG, "Clicked mKeyguard! dimissing dialog");
- this.dismiss();
- // Log.i(TAG, "onKey: turning off the screen...");
- // XXX: This is a hack for now
- mPowerManager.goToSleep(event.getEventTime() + 1);
- return true;
- }
-
- public void show() {
- super.show();
- Log.d(TAG, "show... disabling expand");
- sStatusBar.disable(StatusBarManager.DISABLE_EXPAND);
- }
-
- public void dismiss() {
- super.dismiss();
- Log.d(TAG, "dismiss... reenabling expand");
- sStatusBar.disable(StatusBarManager.DISABLE_NONE);
- }
-}