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; + } +}