Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dcf2509e authored by Lifu Tang's avatar Lifu Tang Committed by Android (Google) Code Review
Browse files

Merge "Disallows setting when user restriction applies" into klp-dev

parents 079c412d 4fb17c1c
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -110,7 +110,7 @@ public class LocationMode extends LocationSettingsBase
    }

    @Override
    public void onModeChanged(int mode) {
    public void onModeChanged(int mode, boolean restricted) {
        switch (mode) {
            case Settings.Secure.LOCATION_MODE_OFF:
                Intent intent = new Intent();
@@ -129,7 +129,8 @@ public class LocationMode extends LocationSettingsBase
            default:
                break;
        }
        boolean enabled = (mode != Settings.Secure.LOCATION_MODE_OFF);

        boolean enabled = (mode != Settings.Secure.LOCATION_MODE_OFF) && !restricted;
        mHighAccuracy.setEnabled(enabled);
        mBatterySaving.setEnabled(enabled);
        mSensorsOnly.setEnabled(enabled);
+3 −3
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceGroup;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.provider.Settings;
import android.util.Log;
@@ -216,7 +215,7 @@ public class LocationSettings extends LocationSettingsBase
    }

    @Override
    public void onModeChanged(int mode) {
    public void onModeChanged(int mode, boolean restricted) {
        switch (mode) {
            case Settings.Secure.LOCATION_MODE_OFF:
                mLocationMode.setSummary(R.string.location_mode_location_off_title);
@@ -234,7 +233,8 @@ public class LocationSettings extends LocationSettingsBase
                break;
        }

        boolean enabled = (mode != Settings.Secure.LOCATION_MODE_OFF);
        boolean enabled = (mode != Settings.Secure.LOCATION_MODE_OFF) && !restricted;
        mSwitch.setEnabled(!restricted);
        mLocationMode.setEnabled(enabled);

        if (enabled != mSwitch.isChecked()) {
+13 −4
Original line number Diff line number Diff line
@@ -71,11 +71,20 @@ public abstract class LocationSettingsBase extends SettingsPreferenceFragment {
    }

    /** Called when location mode has changed. */
    public abstract void onModeChanged(int mode);
    public abstract void onModeChanged(int mode, boolean restricted);

    public void setLocationMode(int mode) {
    private boolean isRestricted() {
        final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
        if (um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION)) {
        return um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION);
    }

    public void setLocationMode(int mode) {
        if (isRestricted()) {
            // Location toggling disabled by user restriction. Read the current location mode to
            // update the location master switch.
            mode = Settings.Secure.getInt(getContentResolver(), Settings.Secure.LOCATION_MODE,
                    Settings.Secure.LOCATION_MODE_OFF);
            onModeChanged(mode, true);
            return;
        }
        Settings.Secure.putInt(getContentResolver(), Settings.Secure.LOCATION_MODE, mode);
@@ -85,6 +94,6 @@ public abstract class LocationSettingsBase extends SettingsPreferenceFragment {
    public void refreshLocationMode() {
        int mode = Settings.Secure.getInt(getContentResolver(), Settings.Secure.LOCATION_MODE,
                Settings.Secure.LOCATION_MODE_OFF);
        onModeChanged(mode);
        onModeChanged(mode, isRestricted());
    }
}