Both device controls and wallet have moved to new areas outside of the power menu. In step 1, we are removing the device controls settings, as the user can now fully control availability within the new Quick Settings device controls tile. Bug: 185597511 Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.gestures Change-Id: Ib9a8c36c0532c095e58bc0ec085b788fc84945d7
111 lines
4.1 KiB
Java
111 lines
4.1 KiB
Java
/*
|
|
* Copyright (C) 2020 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.settings.gestures;
|
|
|
|
import android.content.ContentResolver;
|
|
import android.content.Context;
|
|
import android.content.pm.PackageManager;
|
|
import android.os.UserHandle;
|
|
import android.provider.Settings;
|
|
|
|
import androidx.preference.Preference;
|
|
|
|
import com.android.internal.widget.LockPatternUtils;
|
|
import com.android.settings.R;
|
|
import com.android.settings.core.TogglePreferenceController;
|
|
import com.android.settings.overlay.FeatureFactory;
|
|
|
|
public class PowerMenuPrivacyPreferenceController extends TogglePreferenceController {
|
|
|
|
private static final String SETTING_KEY = Settings.Secure.POWER_MENU_LOCKED_SHOW_CONTENT;
|
|
private static final String CARDS_AVAILABLE_KEY =
|
|
Settings.Secure.GLOBAL_ACTIONS_PANEL_AVAILABLE;
|
|
private static final String CARDS_ENABLED_KEY = Settings.Secure.GLOBAL_ACTIONS_PANEL_ENABLED;
|
|
|
|
|
|
public PowerMenuPrivacyPreferenceController(Context context,
|
|
String preferenceKey) {
|
|
super(context, preferenceKey);
|
|
}
|
|
|
|
@Override
|
|
public boolean isChecked() {
|
|
return Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 0) != 0;
|
|
}
|
|
|
|
@Override
|
|
public boolean setChecked(boolean isChecked) {
|
|
return Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY,
|
|
isChecked ? 1 : 0);
|
|
}
|
|
|
|
@Override
|
|
public CharSequence getSummary() {
|
|
boolean cardsAvailable = Settings.Secure.getInt(mContext.getContentResolver(),
|
|
CARDS_AVAILABLE_KEY, 0) != 0;
|
|
boolean controlsAvailable = isControlsAvailable();
|
|
final int res;
|
|
if (!isSecure()) {
|
|
res = R.string.power_menu_privacy_not_secure;
|
|
} else if (cardsAvailable && controlsAvailable) {
|
|
res = R.string.power_menu_privacy_show;
|
|
} else if (!cardsAvailable && controlsAvailable) {
|
|
res = R.string.power_menu_privacy_show_controls;
|
|
} else if (cardsAvailable) {
|
|
res = R.string.power_menu_privacy_show_cards;
|
|
} else {
|
|
// In this case, neither cards nor controls are available. This preference should not
|
|
// be accessible as the power menu setting is not accessible
|
|
return "";
|
|
}
|
|
return mContext.getText(res);
|
|
}
|
|
|
|
@Override
|
|
public int getAvailabilityStatus() {
|
|
// hide if lockscreen isn't secure for this user
|
|
|
|
return isEnabled() && isSecure() ? AVAILABLE : DISABLED_DEPENDENT_SETTING;
|
|
}
|
|
|
|
@Override
|
|
public void updateState(Preference preference) {
|
|
super.updateState(preference);
|
|
preference.setEnabled(getAvailabilityStatus() != DISABLED_DEPENDENT_SETTING);
|
|
refreshSummary(preference);
|
|
}
|
|
|
|
private boolean isEnabled() {
|
|
final ContentResolver resolver = mContext.getContentResolver();
|
|
boolean cardsAvailable = Settings.Secure.getInt(resolver, CARDS_AVAILABLE_KEY, 0) != 0;
|
|
boolean cardsEnabled = Settings.Secure.getInt(resolver, CARDS_ENABLED_KEY, 0) != 0;
|
|
return (cardsAvailable && cardsEnabled) || isControlsAvailable();
|
|
}
|
|
|
|
private boolean isSecure() {
|
|
final LockPatternUtils utils = FeatureFactory.getFactory(mContext)
|
|
.getSecurityFeatureProvider()
|
|
.getLockPatternUtils(mContext);
|
|
int userId = UserHandle.myUserId();
|
|
return utils.isSecure(userId);
|
|
}
|
|
|
|
private boolean isControlsAvailable() {
|
|
return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CONTROLS);
|
|
}
|
|
}
|