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;
2196577681a298b44be2e1133b10bc637623be3b87Shuhrat Dehkanovimport com.android.settings.Utils;
22e077d2b607032fb66a4a046aa4b46945d32d281esatok
23e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.content.Context;
24e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.content.Intent;
25e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.preference.CheckBoxPreference;
26e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.util.AttributeSet;
27e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.view.View;
28e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.view.View.OnClickListener;
29e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.widget.ImageView;
30e077d2b607032fb66a4a046aa4b46945d32d281esatokimport android.widget.TextView;
31e077d2b607032fb66a4a046aa4b46945d32d281esatok
32e077d2b607032fb66a4a046aa4b46945d32d281esatokpublic class CheckBoxAndSettingsPreference extends CheckBoxPreference {
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) {
10696577681a298b44be2e1133b10bc637623be3b87Shuhrat Dehkanov                    mSettingsButton.setAlpha(Utils.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