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