11b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling/*
21b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling * Copyright (C) 2016 The Android Open Source Project
31b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling *
41b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling * Licensed under the Apache License, Version 2.0 (the "License");
51b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling * you may not use this file except in compliance with the License.
61b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling * You may obtain a copy of the License at
71b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling *
81b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling *      http://www.apache.org/licenses/LICENSE-2.0
91b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling *
101b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling * Unless required by applicable law or agreed to in writing, software
111b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling * distributed under the License is distributed on an "AS IS" BASIS,
121b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling * See the License for the specific language governing permissions and
141b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling * limitations under the License.
151b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling */
161b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling
171b3ec0474875ce754c3f7cd80f762b091d48b627Doris Lingpackage com.android.settings.notification;
181b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling
191b3ec0474875ce754c3f7cd80f762b091d48b627Doris Lingimport android.content.Context;
201b3ec0474875ce754c3f7cd80f762b091d48b627Doris Lingimport android.os.UserHandle;
211b3ec0474875ce754c3f7cd80f762b091d48b627Doris Lingimport android.os.UserManager;
221b3ec0474875ce754c3f7cd80f762b091d48b627Doris Lingimport android.support.v7.preference.Preference;
231b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling
241b3ec0474875ce754c3f7cd80f762b091d48b627Doris Lingimport com.android.internal.annotations.VisibleForTesting;
251b3ec0474875ce754c3f7cd80f762b091d48b627Doris Lingimport com.android.settings.accounts.AccountRestrictionHelper;
261d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantlerimport com.android.settings.core.PreferenceControllerMixin;
271b3ec0474875ce754c3f7cd80f762b091d48b627Doris Lingimport com.android.settingslib.RestrictedPreference;
281d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantlerimport com.android.settingslib.core.AbstractPreferenceController;
291b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling
301b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling/**
311b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling * Base class for preference controller that handles preference that enforce adjust volume
321b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling * restriction
331b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling */
341d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantlerpublic abstract class AdjustVolumeRestrictedPreferenceController extends
351d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantler        AbstractPreferenceController implements PreferenceControllerMixin {
361b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling
371b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling    private AccountRestrictionHelper mHelper;
381b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling
391b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling    public AdjustVolumeRestrictedPreferenceController(Context context) {
401b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling        this(context, new AccountRestrictionHelper(context));
411b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling    }
421b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling
431b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling    @VisibleForTesting
441b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling    AdjustVolumeRestrictedPreferenceController(Context context, AccountRestrictionHelper helper) {
451b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling        super(context);
461b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling        mHelper = helper;
471b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling    }
481b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling
491b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling    @Override
501b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling    public void updateState(Preference preference) {
511b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling        if (!(preference instanceof RestrictedPreference)) {
521b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling            return;
531b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling        }
541b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling        mHelper.enforceRestrictionOnPreference((RestrictedPreference) preference,
551b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling                UserManager.DISALLOW_ADJUST_VOLUME, UserHandle.myUserId());
561b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling    }
571b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling
581b3ec0474875ce754c3f7cd80f762b091d48b627Doris Ling}
59