11901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka/*
21901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka * Copyright (C) 2016 The Android Open Source Project
31901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka *
41901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka * Licensed under the Apache License, Version 2.0 (the "License");
51901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka * you may not use this file except in compliance with the License.
61901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka * You may obtain a copy of the License at
71901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka *
81901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka *      http://www.apache.org/licenses/LICENSE-2.0
91901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka *
101901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka * Unless required by applicable law or agreed to in writing, software
111901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka * distributed under the License is distributed on an "AS IS" BASIS,
121901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka * See the License for the specific language governing permissions and
141901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka * limitations under the License
151901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka */
161901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka
171901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shankapackage com.android.settings;
181901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka
191901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shankaimport android.content.Context;
201901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shankaimport android.graphics.PorterDuff;
211901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shankaimport android.util.AttributeSet;
221901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shankaimport android.widget.RadioButton;
231901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shankaimport android.widget.TextView;
241901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka
251901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shankaimport java.util.List;
261901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka
271901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shankaimport com.android.settingslib.RestrictedLockUtils;
281901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka
291901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shankaimport static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
301901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka
311901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shankapublic class RestrictedRadioButton extends RadioButton {
321901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    private Context mContext;
331901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    private boolean mDisabledByAdmin;
341901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    private EnforcedAdmin mEnforcedAdmin;
351901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka
361901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    public RestrictedRadioButton(Context context) {
371901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka        this(context, null);
381901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    }
391901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka
401901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    public RestrictedRadioButton(Context context, AttributeSet attrs) {
411901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka        this(context, attrs, com.android.internal.R.attr.radioButtonStyle);
421901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    }
431901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka
441901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    public RestrictedRadioButton(Context context, AttributeSet attrs, int defStyleAttr) {
451901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka        this(context, attrs, defStyleAttr, 0);
461901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    }
471901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka
481901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    public RestrictedRadioButton(Context context, AttributeSet attrs, int defStyleAttr,
491901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka            int defStyleRes) {
501901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka        super(context, attrs, defStyleAttr, defStyleRes);
511901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka        mContext = context;
521901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    }
531901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka
541901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    @Override
551901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    public boolean performClick() {
561901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka        if (mDisabledByAdmin) {
571901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka            RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mContext, mEnforcedAdmin);
581901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka            return true;
591901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka        }
601901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka        return super.performClick();
611901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    }
621901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka
631901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    public void setDisabledByAdmin(EnforcedAdmin admin) {
641901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka        final boolean disabled = (admin != null);
651901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka        mEnforcedAdmin = admin;
661901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka        if (mDisabledByAdmin != disabled) {
671901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka            mDisabledByAdmin = disabled;
681901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka            RestrictedLockUtils.setTextViewAsDisabledByAdmin(mContext,
691901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka                    (TextView) this, mDisabledByAdmin);
701901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka            if (mDisabledByAdmin) {
711901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka                getButtonDrawable().setColorFilter(mContext.getColor(R.color.disabled_text_color),
721901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka                        PorterDuff.Mode.MULTIPLY);
731901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka            } else {
741901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka                getButtonDrawable().clearColorFilter();
751901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka            }
761901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka        }
771901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    }
781901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka
791901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    public boolean isDisabledByAdmin() {
801901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka        return mDisabledByAdmin;
811901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka    }
821901ae3b3bddafc938bcbc0b03f18d7e12efef12Sudheer Shanka}