diff options
author | John Huang <> | 2009-03-24 18:26:28 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-24 18:26:28 -0700 |
commit | 682968870616d9e9540980921a5302836c45da33 (patch) | |
tree | 72d52b7fa6c964f60366694f8e1f3519e9fcc7aa /src/com/android/settings/ApnPreference.java | |
parent | d67027723948d8622e53e9185b24cc8ad09958bd (diff) | |
download | packages_apps_Settings-682968870616d9e9540980921a5302836c45da33.zip packages_apps_Settings-682968870616d9e9540980921a5302836c45da33.tar.gz packages_apps_Settings-682968870616d9e9540980921a5302836c45da33.tar.bz2 |
Automated import from //branches/master/...@140758,140758
Diffstat (limited to 'src/com/android/settings/ApnPreference.java')
-rw-r--r-- | src/com/android/settings/ApnPreference.java | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/src/com/android/settings/ApnPreference.java b/src/com/android/settings/ApnPreference.java new file mode 100644 index 0000000..74fb902 --- /dev/null +++ b/src/com/android/settings/ApnPreference.java @@ -0,0 +1,151 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings; + +import android.content.ContentUris; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.preference.Preference; +import android.provider.Telephony; +import android.util.AttributeSet; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.view.View.OnClickListener; +import android.widget.CompoundButton; +import android.widget.RadioButton; +import android.widget.RelativeLayout; + +public class ApnPreference extends Preference implements + CompoundButton.OnCheckedChangeListener, OnClickListener { + final static String TAG = "ApnPreference"; + + /** + * @param context + * @param attrs + * @param defStyle + */ + public ApnPreference(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(); + } + + /** + * @param context + * @param attrs + */ + public ApnPreference(Context context, AttributeSet attrs) { + super(context, attrs); + init(); + } + + /** + * @param context + */ + public ApnPreference(Context context) { + super(context); + init(); + } + + private static String mSelectedKey = null; + private static CompoundButton mCurrentChecked = null; + private boolean mProtectFromCheckedChange = false; + private boolean mSelectable = true; + + @Override + public View getView(View convertView, ViewGroup parent) { + View view = super.getView(convertView, parent); + + View widget = view.findViewById(R.id.apn_radiobutton); + if ((widget != null) && widget instanceof RadioButton) { + RadioButton rb = (RadioButton) widget; + if (mSelectable) { + rb.setOnCheckedChangeListener(this); + + boolean isChecked = getKey().equals(mSelectedKey); + if (isChecked) { + mCurrentChecked = rb; + mSelectedKey = getKey(); + } + + mProtectFromCheckedChange = true; + rb.setChecked(isChecked); + mProtectFromCheckedChange = false; + } else { + rb.setVisibility(View.GONE); + } + } + + View textLayout = view.findViewById(R.id.text_layout); + if ((textLayout != null) && textLayout instanceof RelativeLayout) { + textLayout.setOnClickListener(this); + } + + return view; + } + + private void init() { + setLayoutResource(R.layout.apn_preference_layout); + } + + public boolean isChecked() { + return getKey().equals(mSelectedKey); + } + + public void setChecked(boolean checked) { + mSelectedKey = getKey(); + } + + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + Log.i(TAG, "ID: " + getKey() + " :" + isChecked); + if (mProtectFromCheckedChange) { + return; + } + + if (isChecked) { + if (mCurrentChecked != null) { + mCurrentChecked.setChecked(false); + } + mCurrentChecked = buttonView; + mSelectedKey = getKey(); + callChangeListener(mSelectedKey); + } else { + mCurrentChecked = null; + mSelectedKey = null; + } + } + + public void onClick(android.view.View v) { + if ((v != null) && (R.id.text_layout == v.getId())) { + Context context = getContext(); + if (context != null) { + int pos = Integer.parseInt(getKey()); + Uri url = ContentUris.withAppendedId(Telephony.Carriers.CONTENT_URI, pos); + context.startActivity(new Intent(Intent.ACTION_EDIT, url)); + } + } + } + + public void setSelectable(boolean selectable) { + mSelectable = selectable; + } + + public boolean getSelectable() { + return mSelectable; + } +} |