1fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang/*
2fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang * Copyright (C) 2013 The Android Open Source Project
3fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang *
4fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang * Licensed under the Apache License, Version 2.0 (the "License");
5fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang * you may not use this file except in compliance with the License.
6fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang * You may obtain a copy of the License at
7fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang *
8fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang *      http://www.apache.org/licenses/LICENSE-2.0
9fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang *
10fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang * Unless required by applicable law or agreed to in writing, software
11fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang * distributed under the License is distributed on an "AS IS" BASIS,
12fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang * See the License for the specific language governing permissions and
14fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang * limitations under the License.
15fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang */
16fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang
17fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tangpackage com.android.settings.location;
18fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang
19fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tangimport android.content.Context;
20fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tangimport android.preference.CheckBoxPreference;
21fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tangimport android.util.AttributeSet;
22fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tangimport android.view.View;
23fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tangimport android.widget.TextView;
24fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang
25fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tangimport com.android.settings.R;
26fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang
27fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang/**
28fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang * Check box preference with check box replaced by radio button.
29fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang *
30fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang * Functionally speaking, it's actually a CheckBoxPreference. We only modified
31fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang * the widget to RadioButton to make it "look like" a RadioButtonPreference.
32fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang *
33fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang * In other words, there's no "RadioButtonPreferenceGroup" in this
34fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang * implementation. When you check one RadioButtonPreference, if you want to
35fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang * uncheck all the other preferences, you should do that by code yourself.
36fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang */
37fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tangpublic class RadioButtonPreference extends CheckBoxPreference {
38e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang    public interface OnClickListener {
39e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang        public abstract void onRadioButtonClicked(RadioButtonPreference emiter);
40e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang    }
41e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang
42e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang    private OnClickListener mListener = null;
43e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang
44fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang    public RadioButtonPreference(Context context, AttributeSet attrs, int defStyle) {
45fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang        super(context, attrs, defStyle);
46fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang        setWidgetLayoutResource(R.layout.preference_widget_radiobutton);
47fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang    }
48fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang
49fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang    public RadioButtonPreference(Context context, AttributeSet attrs) {
50fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang        this(context, attrs, com.android.internal.R.attr.checkBoxPreferenceStyle);
51fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang    }
52fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang
53fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang    public RadioButtonPreference(Context context) {
54fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang        this(context, null);
55fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang    }
56fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang
57e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang    void setOnClickListener(OnClickListener listener) {
58e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang        mListener = listener;
59e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang    }
60e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang
61e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang    @Override
62e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang    public void onClick() {
63e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang        if (mListener != null) {
64e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang            mListener.onRadioButtonClicked(this);
65e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang        }
66e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang    }
67e63142329060fabe105a8fd939cb637d530ae4a3Lifu Tang
68fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang    @Override
69fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang    protected void onBindView(View view) {
70fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang        super.onBindView(view);
71fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang
72fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang        TextView title = (TextView) view.findViewById(android.R.id.title);
73fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang        if (title != null) {
74fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang            title.setSingleLine(false);
75fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang            title.setMaxLines(3);
76fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang        }
77fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang    }
78fc86f69d3b7675099de992750bfd10ed07a13ed0Lifu Tang}
79