1e077d2b607032fb66a4a046aa4b46945d32d281esatok/* 2e077d2b607032fb66a4a046aa4b46945d32d281esatok * Copyright (C) 2011 The Android Open Source Project 3e077d2b607032fb66a4a046aa4b46945d32d281esatok * 4e077d2b607032fb66a4a046aa4b46945d32d281esatok * Licensed under the Apache License, Version 2.0 (the "License"); 5e077d2b607032fb66a4a046aa4b46945d32d281esatok * you may not use this file except in compliance with the License. 6e077d2b607032fb66a4a046aa4b46945d32d281esatok * You may obtain a copy of the License at 7e077d2b607032fb66a4a046aa4b46945d32d281esatok * 8e077d2b607032fb66a4a046aa4b46945d32d281esatok * http://www.apache.org/licenses/LICENSE-2.0 9e077d2b607032fb66a4a046aa4b46945d32d281esatok * 10e077d2b607032fb66a4a046aa4b46945d32d281esatok * Unless required by applicable law or agreed to in writing, software 11e077d2b607032fb66a4a046aa4b46945d32d281esatok * distributed under the License is distributed on an "AS IS" BASIS, 12e077d2b607032fb66a4a046aa4b46945d32d281esatok * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e077d2b607032fb66a4a046aa4b46945d32d281esatok * See the License for the specific language governing permissions and 14e077d2b607032fb66a4a046aa4b46945d32d281esatok * limitations under the License. 15e077d2b607032fb66a4a046aa4b46945d32d281esatok */ 16e077d2b607032fb66a4a046aa4b46945d32d281esatok 17e077d2b607032fb66a4a046aa4b46945d32d281esatokpackage com.android.settings.inputmethod; 18e077d2b607032fb66a4a046aa4b46945d32d281esatok 19e077d2b607032fb66a4a046aa4b46945d32d281esatokimport com.android.settings.R; 20e077d2b607032fb66a4a046aa4b46945d32d281esatokimport com.android.settings.SettingsPreferenceFragment; 21e077d2b607032fb66a4a046aa4b46945d32d281esatok 22e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.content.Context; 23e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.content.Intent; 24e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.preference.CheckBoxPreference; 25e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.util.AttributeSet; 26e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.view.View; 27e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.view.View.OnClickListener; 28e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.widget.ImageView; 29e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.widget.TextView; 30e077d2b607032fb66a4a046aa4b46945d32d281esatok 31e077d2b607032fb66a4a046aa4b46945d32d281esatokpublic class CheckBoxAndSettingsPreference extends CheckBoxPreference { 32e077d2b607032fb66a4a046aa4b46945d32d281esatok private static final float DISABLED_ALPHA = 0.4f; 33e077d2b607032fb66a4a046aa4b46945d32d281esatok 34e077d2b607032fb66a4a046aa4b46945d32d281esatok private SettingsPreferenceFragment mFragment; 35e077d2b607032fb66a4a046aa4b46945d32d281esatok private TextView mTitleText; 36e077d2b607032fb66a4a046aa4b46945d32d281esatok private TextView mSummaryText; 37c79bf376219a5712cee4c7b47464e44ea20098abGilles Debunne private ImageView mSettingsButton; 38e077d2b607032fb66a4a046aa4b46945d32d281esatok private Intent mSettingsIntent; 39e077d2b607032fb66a4a046aa4b46945d32d281esatok 40e077d2b607032fb66a4a046aa4b46945d32d281esatok public CheckBoxAndSettingsPreference(Context context, AttributeSet attrs) { 41e077d2b607032fb66a4a046aa4b46945d32d281esatok super(context, attrs); 42e077d2b607032fb66a4a046aa4b46945d32d281esatok setLayoutResource(R.layout.preference_inputmethod); 43e077d2b607032fb66a4a046aa4b46945d32d281esatok setWidgetLayoutResource(R.layout.preference_inputmethod_widget); 44e077d2b607032fb66a4a046aa4b46945d32d281esatok } 45e077d2b607032fb66a4a046aa4b46945d32d281esatok 46e077d2b607032fb66a4a046aa4b46945d32d281esatok @Override 47e077d2b607032fb66a4a046aa4b46945d32d281esatok protected void onBindView(View view) { 48e077d2b607032fb66a4a046aa4b46945d32d281esatok super.onBindView(view); 49c79bf376219a5712cee4c7b47464e44ea20098abGilles Debunne View textLayout = view.findViewById(R.id.inputmethod_pref); 50c79bf376219a5712cee4c7b47464e44ea20098abGilles Debunne textLayout.setOnClickListener( 51e077d2b607032fb66a4a046aa4b46945d32d281esatok new OnClickListener() { 52e077d2b607032fb66a4a046aa4b46945d32d281esatok @Override 53e077d2b607032fb66a4a046aa4b46945d32d281esatok public void onClick(View arg0) { 5414413a02e3ce8a2f128ec8eccdb648420e0b9297satok onCheckBoxClicked(); 55e077d2b607032fb66a4a046aa4b46945d32d281esatok } 56e077d2b607032fb66a4a046aa4b46945d32d281esatok }); 57c79bf376219a5712cee4c7b47464e44ea20098abGilles Debunne 58c79bf376219a5712cee4c7b47464e44ea20098abGilles Debunne mSettingsButton = (ImageView) view.findViewById(R.id.inputmethod_settings); 59e077d2b607032fb66a4a046aa4b46945d32d281esatok mTitleText = (TextView)view.findViewById(android.R.id.title); 60e077d2b607032fb66a4a046aa4b46945d32d281esatok mSummaryText = (TextView)view.findViewById(android.R.id.summary); 61c79bf376219a5712cee4c7b47464e44ea20098abGilles Debunne mSettingsButton.setOnClickListener( 62e077d2b607032fb66a4a046aa4b46945d32d281esatok new OnClickListener() { 63e077d2b607032fb66a4a046aa4b46945d32d281esatok @Override 64c79bf376219a5712cee4c7b47464e44ea20098abGilles Debunne public void onClick(View clickedView) { 65c79bf376219a5712cee4c7b47464e44ea20098abGilles Debunne onSettingsButtonClicked(); 66e077d2b607032fb66a4a046aa4b46945d32d281esatok } 67e077d2b607032fb66a4a046aa4b46945d32d281esatok }); 68e077d2b607032fb66a4a046aa4b46945d32d281esatok enableSettingsButton(); 69e077d2b607032fb66a4a046aa4b46945d32d281esatok } 70e077d2b607032fb66a4a046aa4b46945d32d281esatok 71e077d2b607032fb66a4a046aa4b46945d32d281esatok @Override 72e077d2b607032fb66a4a046aa4b46945d32d281esatok public void setEnabled(boolean enabled) { 73e077d2b607032fb66a4a046aa4b46945d32d281esatok super.setEnabled(enabled); 74e077d2b607032fb66a4a046aa4b46945d32d281esatok enableSettingsButton(); 75e077d2b607032fb66a4a046aa4b46945d32d281esatok } 76e077d2b607032fb66a4a046aa4b46945d32d281esatok 77e077d2b607032fb66a4a046aa4b46945d32d281esatok public void setFragmentIntent(SettingsPreferenceFragment fragment, Intent intent) { 78e077d2b607032fb66a4a046aa4b46945d32d281esatok mFragment = fragment; 79e077d2b607032fb66a4a046aa4b46945d32d281esatok mSettingsIntent = intent; 80e077d2b607032fb66a4a046aa4b46945d32d281esatok } 81e077d2b607032fb66a4a046aa4b46945d32d281esatok 8214413a02e3ce8a2f128ec8eccdb648420e0b9297satok protected void onCheckBoxClicked() { 83e077d2b607032fb66a4a046aa4b46945d32d281esatok if (isChecked()) { 84e077d2b607032fb66a4a046aa4b46945d32d281esatok setChecked(false); 85e077d2b607032fb66a4a046aa4b46945d32d281esatok } else { 86e077d2b607032fb66a4a046aa4b46945d32d281esatok setChecked(true); 87e077d2b607032fb66a4a046aa4b46945d32d281esatok } 88e077d2b607032fb66a4a046aa4b46945d32d281esatok } 89e077d2b607032fb66a4a046aa4b46945d32d281esatok 90c79bf376219a5712cee4c7b47464e44ea20098abGilles Debunne protected void onSettingsButtonClicked() { 91e077d2b607032fb66a4a046aa4b46945d32d281esatok if (mFragment != null && mSettingsIntent != null) { 92e077d2b607032fb66a4a046aa4b46945d32d281esatok mFragment.startActivity(mSettingsIntent); 93e077d2b607032fb66a4a046aa4b46945d32d281esatok } 94e077d2b607032fb66a4a046aa4b46945d32d281esatok } 95e077d2b607032fb66a4a046aa4b46945d32d281esatok 96e077d2b607032fb66a4a046aa4b46945d32d281esatok private void enableSettingsButton() { 97c79bf376219a5712cee4c7b47464e44ea20098abGilles Debunne if (mSettingsButton != null) { 98e077d2b607032fb66a4a046aa4b46945d32d281esatok if (mSettingsIntent == null) { 99c79bf376219a5712cee4c7b47464e44ea20098abGilles Debunne mSettingsButton.setVisibility(View.GONE); 100e077d2b607032fb66a4a046aa4b46945d32d281esatok } else { 101e077d2b607032fb66a4a046aa4b46945d32d281esatok final boolean checked = isChecked(); 102c79bf376219a5712cee4c7b47464e44ea20098abGilles Debunne mSettingsButton.setEnabled(checked); 103c79bf376219a5712cee4c7b47464e44ea20098abGilles Debunne mSettingsButton.setClickable(checked); 104c79bf376219a5712cee4c7b47464e44ea20098abGilles Debunne mSettingsButton.setFocusable(checked); 105e077d2b607032fb66a4a046aa4b46945d32d281esatok if (!checked) { 106c79bf376219a5712cee4c7b47464e44ea20098abGilles Debunne mSettingsButton.setAlpha(DISABLED_ALPHA); 107e077d2b607032fb66a4a046aa4b46945d32d281esatok } 108e077d2b607032fb66a4a046aa4b46945d32d281esatok } 109e077d2b607032fb66a4a046aa4b46945d32d281esatok } 110e077d2b607032fb66a4a046aa4b46945d32d281esatok if (mTitleText != null) { 111e077d2b607032fb66a4a046aa4b46945d32d281esatok mTitleText.setEnabled(true); 112e077d2b607032fb66a4a046aa4b46945d32d281esatok } 113e077d2b607032fb66a4a046aa4b46945d32d281esatok if (mSummaryText != null) { 114e077d2b607032fb66a4a046aa4b46945d32d281esatok mSummaryText.setEnabled(true); 115e077d2b607032fb66a4a046aa4b46945d32d281esatok } 116e077d2b607032fb66a4a046aa4b46945d32d281esatok } 117e077d2b607032fb66a4a046aa4b46945d32d281esatok} 118