summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/values/strings.xml4
-rw-r--r--src/org/lineageos/lineageparts/input/PowerMenuActions.java46
2 files changed, 41 insertions, 9 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f40fd0d..0aab4cb 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -259,8 +259,10 @@
<string name="power_menu_airplane_title">Airplane mode</string>
<string name="power_menu_users_title">User switcher</string>
<string name="power_menu_bug_report_title">Bug report</string>
- <string name="power_menu_bug_report_disabled">Bug reporting is disabled in development settings</string>
+ <string name="power_menu_bug_report_devoptions_unavailable">Bug reporting is disabled as development settings aren\'t enabled</string>
+ <string name="power_menu_bug_report_unavailable_for_user">Bug reporting is disabled for non-primary users.</string>
<string name="power_menu_lockdown_title">Lockdown</string>
+ <string name="power_menu_lockdown_unavailable">Lockdown is disabled as keyguard isn\'t secure</string>
<string name="camera_double_tap_power_gesture_title">Press power button twice for camera</string>
diff --git a/src/org/lineageos/lineageparts/input/PowerMenuActions.java b/src/org/lineageos/lineageparts/input/PowerMenuActions.java
index a77b444..9809de4 100644
--- a/src/org/lineageos/lineageparts/input/PowerMenuActions.java
+++ b/src/org/lineageos/lineageparts/input/PowerMenuActions.java
@@ -27,6 +27,8 @@ import android.provider.Settings;
import androidx.preference.CheckBoxPreference;
import androidx.preference.Preference;
+import com.android.internal.widget.LockPatternUtils;
+
import org.lineageos.internal.util.PowerMenuConstants;
import org.lineageos.lineageparts.R;
import org.lineageos.lineageparts.SettingsPreferenceFragment;
@@ -51,6 +53,8 @@ public class PowerMenuActions extends SettingsPreferenceFragment {
private LineageGlobalActions mLineageGlobalActions;
Context mContext;
+ private LockPatternUtils mLockPatternUtils;
+ private UserManager mUserManager;
private List<String> mLocalUserConfig = new ArrayList<String>();
@Override
@@ -59,6 +63,8 @@ public class PowerMenuActions extends SettingsPreferenceFragment {
addPreferencesFromResource(R.xml.power_menu_settings);
mContext = getActivity().getApplicationContext();
+ mLockPatternUtils = new LockPatternUtils(mContext);
+ mUserManager = UserManager.get(mContext);
mLineageGlobalActions = LineageGlobalActions.getInstance(mContext);
for (String action : PowerMenuConstants.getAllActions()) {
@@ -97,8 +103,7 @@ public class PowerMenuActions extends SettingsPreferenceFragment {
getPreferenceScreen().removePreference(findPreference(GLOBAL_ACTION_KEY_USERS));
mUsersPref = null;
} else {
- List<UserInfo> users = ((UserManager) mContext.getSystemService(
- Context.USER_SERVICE)).getUsers();
+ List<UserInfo> users = mUserManager.getUsers();
boolean enabled = (users.size() > 1);
mUsersPref.setChecked(mLineageGlobalActions.userConfigContains(
GLOBAL_ACTION_KEY_USERS) && enabled);
@@ -139,6 +144,8 @@ public class PowerMenuActions extends SettingsPreferenceFragment {
} else if (preference == mBugReportPref) {
value = mBugReportPref.isChecked();
mLineageGlobalActions.updateUserConfig(value, GLOBAL_ACTION_KEY_BUGREPORT);
+ Settings.Global.putInt(getContentResolver(),
+ Settings.Global.BUGREPORT_IN_POWER_MENU, value ? 1 : 0);
} else if (preference == mLockDownPref) {
value = mLockDownPref.isChecked();
@@ -153,15 +160,38 @@ public class PowerMenuActions extends SettingsPreferenceFragment {
}
private void updatePreferences() {
- boolean bugreport = Settings.Global.getInt(getContentResolver(),
- Settings.Global.BUGREPORT_IN_POWER_MENU, 0) != 0;
-
+ UserInfo currentUser = mUserManager.getUserInfo(UserHandle.myUserId());
+ boolean developmentSettings = Settings.Global.getInt(
+ getContentResolver(), Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) == 1;
+ boolean bugReport = Settings.Global.getInt(
+ getContentResolver(), Settings.Global.BUGREPORT_IN_POWER_MENU, 0) == 1;
+ boolean isPrimaryUser = currentUser == null || currentUser.isPrimary();
if (mBugReportPref != null) {
- mBugReportPref.setEnabled(bugreport);
- if (bugreport) {
+ mBugReportPref.setEnabled(developmentSettings && isPrimaryUser);
+ if (!developmentSettings) {
+ mBugReportPref.setChecked(false);
+ mBugReportPref.setSummary(R.string.power_menu_bug_report_devoptions_unavailable);
+ } else if (!isPrimaryUser) {
+ mBugReportPref.setChecked(false);
+ mBugReportPref.setSummary(R.string.power_menu_bug_report_unavailable_for_user);
+ } else {
+ mBugReportPref.setChecked(bugReport);
mBugReportPref.setSummary(null);
+ }
+ }
+
+ boolean isKeyguardSecure = mLockPatternUtils.isSecure(UserHandle.myUserId());
+ boolean lockdown = Settings.Secure.getIntForUser(
+ getContentResolver(), Settings.Secure.LOCKDOWN_IN_POWER_MENU, 0,
+ UserHandle.USER_CURRENT) == 1;
+ if (mLockDownPref != null) {
+ mLockDownPref.setEnabled(isKeyguardSecure);
+ if (isKeyguardSecure) {
+ mLockDownPref.setChecked(lockdown);
+ mLockDownPref.setSummary(null);
} else {
- mBugReportPref.setSummary(R.string.power_menu_bug_report_disabled);
+ mLockDownPref.setChecked(false);
+ mLockDownPref.setSummary(R.string.power_menu_lockdown_unavailable);
}
}
}