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