1/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package com.android.launcher3.views;
17
18import android.content.Context;
19import android.preference.Preference;
20import android.util.AttributeSet;
21import android.view.View;
22import android.view.ViewGroup;
23
24/**
25 * Extension of {@link Preference} which makes the widget layout clickable.
26 *
27 * @see #setWidgetLayoutResource(int)
28 */
29public class ButtonPreference extends Preference {
30
31    private boolean mWidgetFrameVisible = false;
32
33    public ButtonPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
34        super(context, attrs, defStyleAttr, defStyleRes);
35    }
36
37    public ButtonPreference(Context context, AttributeSet attrs, int defStyleAttr) {
38        super(context, attrs, defStyleAttr);
39    }
40
41    public ButtonPreference(Context context, AttributeSet attrs) {
42        super(context, attrs);
43    }
44
45    public ButtonPreference(Context context) {
46        super(context);
47    }
48
49    public void setWidgetFrameVisible(boolean isVisible) {
50        if (mWidgetFrameVisible != isVisible) {
51            mWidgetFrameVisible = isVisible;
52            notifyChanged();
53        }
54    }
55
56    @Override
57    protected void onBindView(View view) {
58        super.onBindView(view);
59
60        ViewGroup widgetFrame = view.findViewById(android.R.id.widget_frame);
61        if (widgetFrame != null) {
62            widgetFrame.setVisibility(mWidgetFrameVisible ? View.VISIBLE : View.GONE);
63        }
64    }
65}
66