From a0e29562a2fdd40840ddc53d84f0030e51e1363a Mon Sep 17 00:00:00 2001 From: Rashed Abdel-Tawab Date: Wed, 18 Oct 2017 19:53:33 -0400 Subject: [PATCH] lineage-sdk: Import power menu related classes Different parts of the system need to check if advanced reboot is enabled, so just move the method here and include it in said different parts. The global actions constants also used to live in the frameworks, but as they include our own additions and are also accessible by LineageParts, place them here from now on. Change-Id: Ic5a02b8118c702dced5a25d775a4cc84c92a3fc2 --- lineage/res/res/values/config.xml | 7 +++ lineage/res/res/values/symbols.xml | 3 + .../internal/util/PowerMenuConstants.java | 58 +++++++++++++++++++ .../internal/util/PowerMenuUtils.java | 35 +++++++++++ 4 files changed, 103 insertions(+) create mode 100644 sdk/src/java/org/lineageos/internal/util/PowerMenuConstants.java create mode 100644 sdk/src/java/org/lineageos/internal/util/PowerMenuUtils.java diff --git a/lineage/res/res/values/config.xml b/lineage/res/res/values/config.xml index c0380664..8374e2b4 100644 --- a/lineage/res/res/values/config.xml +++ b/lineage/res/res/values/config.xml @@ -240,4 +240,11 @@ 2000 + + + + restart + restart_recovery + restart_bootloader + diff --git a/lineage/res/res/values/symbols.xml b/lineage/res/res/values/symbols.xml index 5b8f9e63..67103468 100644 --- a/lineage/res/res/values/symbols.xml +++ b/lineage/res/res/values/symbols.xml @@ -151,4 +151,7 @@ + + + diff --git a/sdk/src/java/org/lineageos/internal/util/PowerMenuConstants.java b/sdk/src/java/org/lineageos/internal/util/PowerMenuConstants.java new file mode 100644 index 00000000..8a728279 --- /dev/null +++ b/sdk/src/java/org/lineageos/internal/util/PowerMenuConstants.java @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2015 The CyanogenMod Project + * Copyright (C) 2017-2018 The LineageOS 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 org.lineageos.internal.util; + +/* Master list of all actions for the power menu */ +public class PowerMenuConstants { + public static final String GLOBAL_ACTION_KEY_POWER = "power"; + public static final String GLOBAL_ACTION_KEY_RESTART = "restart"; + public static final String GLOBAL_ACTION_KEY_SCREENSHOT = "screenshot"; + public static final String GLOBAL_ACTION_KEY_AIRPLANE = "airplane"; + public static final String GLOBAL_ACTION_KEY_USERS = "users"; + public static final String GLOBAL_ACTION_KEY_SETTINGS = "settings"; + public static final String GLOBAL_ACTION_KEY_LOCKDOWN = "lockdown"; + public static final String GLOBAL_ACTION_KEY_BUGREPORT = "bugreport"; + public static final String GLOBAL_ACTION_KEY_SILENT = "silent"; + public static final String GLOBAL_ACTION_KEY_VOICEASSIST = "voiceassist"; + public static final String GLOBAL_ACTION_KEY_ASSIST = "assist"; + + /** + * Advanced restart menu actions + */ + public static final String GLOBAL_ACTION_KEY_RESTART_RECOVERY = "restart_recovery"; + public static final String GLOBAL_ACTION_KEY_RESTART_BOOTLOADER = "restart_bootloader"; + public static final String GLOBAL_ACTION_KEY_RESTART_DOWNLOAD = "restart_download"; + + private static String[] ALL_ACTIONS = { + GLOBAL_ACTION_KEY_POWER, + GLOBAL_ACTION_KEY_RESTART, + GLOBAL_ACTION_KEY_SCREENSHOT, + GLOBAL_ACTION_KEY_AIRPLANE, + GLOBAL_ACTION_KEY_USERS, + GLOBAL_ACTION_KEY_SETTINGS, + GLOBAL_ACTION_KEY_LOCKDOWN, + GLOBAL_ACTION_KEY_BUGREPORT, + GLOBAL_ACTION_KEY_SILENT, + GLOBAL_ACTION_KEY_VOICEASSIST, + GLOBAL_ACTION_KEY_ASSIST + }; + + public static String[] getAllActions() { + return ALL_ACTIONS; + } +} diff --git a/sdk/src/java/org/lineageos/internal/util/PowerMenuUtils.java b/sdk/src/java/org/lineageos/internal/util/PowerMenuUtils.java new file mode 100644 index 00000000..de2ea147 --- /dev/null +++ b/sdk/src/java/org/lineageos/internal/util/PowerMenuUtils.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2017 The LineageOS 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 org.lineageos.internal.util; + +import android.app.KeyguardManager; +import android.content.Context; +import android.os.UserHandle; + +import lineageos.providers.LineageSettings; + +public final class PowerMenuUtils { + public static boolean isAdvancedRestartPossible(final Context context) { + KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); + boolean keyguardLocked = km.inKeyguardRestrictedInputMode() && km.isKeyguardSecure(); + boolean advancedRestartEnabled = LineageSettings.Secure.getInt(context.getContentResolver(), + LineageSettings.Secure.ADVANCED_REBOOT, 0) == 1; + boolean isPrimaryUser = UserHandle.getCallingUserId() == UserHandle.USER_OWNER; + + return advancedRestartEnabled && !keyguardLocked && isPrimaryUser; + } +}