1ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby/*
2ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby * Copyright (C) 2011 The Android Open Source Project
3ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby *
4ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby * Licensed under the Apache License, Version 2.0 (the "License");
5ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby * you may not use this file except in compliance with the License.
6ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby * You may obtain a copy of the License at
7ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby *
8ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby *      http://www.apache.org/licenses/LICENSE-2.0
9ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby *
10ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby * Unless required by applicable law or agreed to in writing, software
11ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby * distributed under the License is distributed on an "AS IS" BASIS,
12ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby * See the License for the specific language governing permissions and
14ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby * limitations under the License.
15ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby */
16ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
17ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambypackage com.android.settings.bluetooth;
18ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
19ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.app.AlertDialog;
20ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.app.Dialog;
21ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.app.DialogFragment;
22ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.bluetooth.BluetoothAdapter;
23ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.content.BroadcastReceiver;
24ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.content.Context;
25ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.content.DialogInterface;
26ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.content.Intent;
27ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.content.IntentFilter;
281c1320a84d22419efb3bf45d970f80b33658edc2Srinu Jellaimport android.content.res.Configuration;
29ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.os.Bundle;
30ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.text.Editable;
31ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.text.InputFilter;
32ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.text.TextWatcher;
33ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.util.Log;
34a9534367b5be907885fe0e2f10375889aeaf635bJake Hambyimport android.view.KeyEvent;
35ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.view.LayoutInflater;
36ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.view.View;
37a9534367b5be907885fe0e2f10375889aeaf635bJake Hambyimport android.view.WindowManager;
38a9534367b5be907885fe0e2f10375889aeaf635bJake Hambyimport android.view.inputmethod.EditorInfo;
39ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.widget.Button;
40ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport android.widget.EditText;
41a9534367b5be907885fe0e2f10375889aeaf635bJake Hambyimport android.widget.TextView;
42ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
43265d3c2a0c36251bf8a9f571d7239b6dd404d942Tamas Berghammerimport com.android.internal.logging.nano.MetricsProto;
44ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hambyimport com.android.settings.R;
451e516287bd0c910f83d2ead28bf67e26dfbead86Fan Zhangimport com.android.settings.core.instrumentation.InstrumentedDialogFragment;
46f2982a9ba19340b474bafb6b0bf5832673984e0dJason Monkimport com.android.settingslib.bluetooth.LocalBluetoothAdapter;
47f2982a9ba19340b474bafb6b0bf5832673984e0dJason Monkimport com.android.settingslib.bluetooth.LocalBluetoothManager;
48ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
49ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby/**
50ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby * Dialog fragment for renaming the local Bluetooth device.
51ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby */
521e516287bd0c910f83d2ead28bf67e26dfbead86Fan Zhangpublic final class BluetoothNameDialogFragment extends InstrumentedDialogFragment
531e516287bd0c910f83d2ead28bf67e26dfbead86Fan Zhang        implements TextWatcher {
54ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    private static final int BLUETOOTH_NAME_MAX_LENGTH_BYTES = 248;
55ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
56ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    private AlertDialog mAlertDialog;
57ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    private Button mOkButton;
58ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
59ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    // accessed from inner class (not private to avoid thunks)
60ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    static final String TAG = "BluetoothNameDialogFragment";
61ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    final LocalBluetoothAdapter mLocalAdapter;
62ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    EditText mDeviceNameView;
63ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
64ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    // This flag is set when the name is updated by code, to distinguish from user changes
65ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    private boolean mDeviceNameUpdated;
66ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
67e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim    // This flag is set when the user edits the name (preserved on rotation)
68e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim    private boolean mDeviceNameEdited;
69e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim
70e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim    // Key to save the edited name and edit status for restoring after rotation
71e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim    private static final String KEY_NAME = "device_name";
72e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim    private static final String KEY_NAME_EDITED = "device_name_edited";
73e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim
74ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
75ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        @Override
76ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        public void onReceive(Context context, Intent intent) {
77ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby            String action = intent.getAction();
78ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby            if (action.equals(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED)) {
79ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby                updateDeviceName();
80ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby            } else if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED) &&
81ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby                    (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR) ==
82ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby                            BluetoothAdapter.STATE_ON)) {
83ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby                updateDeviceName();
84ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby            }
85ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        }
86ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    };
87ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
88e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim    public BluetoothNameDialogFragment() {
89f2982a9ba19340b474bafb6b0bf5832673984e0dJason Monk        LocalBluetoothManager localManager = Utils.getLocalBtManager(getActivity());
90e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim        mLocalAdapter = localManager.getBluetoothAdapter();
91ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    }
92ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
93ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    @Override
941e516287bd0c910f83d2ead28bf67e26dfbead86Fan Zhang    public int getMetricsCategory() {
951e516287bd0c910f83d2ead28bf67e26dfbead86Fan Zhang        return MetricsProto.MetricsEvent.DIALOG_BLUETOOTH_RENAME;
961e516287bd0c910f83d2ead28bf67e26dfbead86Fan Zhang    }
971e516287bd0c910f83d2ead28bf67e26dfbead86Fan Zhang
981e516287bd0c910f83d2ead28bf67e26dfbead86Fan Zhang    @Override
99ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    public Dialog onCreateDialog(Bundle savedInstanceState) {
100e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim        String deviceName = mLocalAdapter.getName();
101e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim        if (savedInstanceState != null) {
102e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim            deviceName = savedInstanceState.getString(KEY_NAME, deviceName);
103e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim            mDeviceNameEdited = savedInstanceState.getBoolean(KEY_NAME_EDITED, false);
104e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim        }
105ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        mAlertDialog = new AlertDialog.Builder(getActivity())
106ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby                .setTitle(R.string.bluetooth_rename_device)
107e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim                .setView(createDialogView(deviceName))
108ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby                .setPositiveButton(R.string.bluetooth_rename_button,
109ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby                        new DialogInterface.OnClickListener() {
110ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby                            public void onClick(DialogInterface dialog, int which) {
111a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby                                String deviceName = mDeviceNameView.getText().toString();
112a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby                                setDeviceName(deviceName);
113ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby                            }
114ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby                        })
115ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby                .setNegativeButton(android.R.string.cancel, null)
116ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby                .create();
117a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby        mAlertDialog.getWindow().setSoftInputMode(
118a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby                WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
119ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
120ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        return mAlertDialog;
121ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    }
122ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
123a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby    private void setDeviceName(String deviceName) {
124a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby        Log.d(TAG, "Setting device name to " + deviceName);
125a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby        mLocalAdapter.setName(deviceName);
126a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby    }
127a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby
128e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim    @Override
129e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim    public void onSaveInstanceState(Bundle outState) {
130e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim        outState.putString(KEY_NAME, mDeviceNameView.getText().toString());
131e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim        outState.putBoolean(KEY_NAME_EDITED, mDeviceNameEdited);
132e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim    }
133e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim
134e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim    private View createDialogView(String deviceName) {
135ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        final LayoutInflater layoutInflater = (LayoutInflater)getActivity()
136ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
137ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        View view = layoutInflater.inflate(R.layout.dialog_edittext, null);
138ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        mDeviceNameView = (EditText) view.findViewById(R.id.edittext);
139ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        mDeviceNameView.setFilters(new InputFilter[] {
140ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby                new Utf8ByteLengthFilter(BLUETOOTH_NAME_MAX_LENGTH_BYTES)
141ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        });
142e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim        mDeviceNameView.setText(deviceName);    // set initial value before adding listener
143ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        mDeviceNameView.addTextChangedListener(this);
144a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby        mDeviceNameView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
145a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby            @Override
146a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
147a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby                if (actionId == EditorInfo.IME_ACTION_DONE) {
148a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby                    setDeviceName(v.getText().toString());
149a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby                    mAlertDialog.dismiss();
150a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby                    return true;    // action handled
151a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby                } else {
152a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby                    return false;   // not handled
153a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby                }
154a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby            }
155a9534367b5be907885fe0e2f10375889aeaf635bJake Hamby        });
156ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        return view;
157ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    }
158ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
159ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    @Override
160ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    public void onDestroy() {
161ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        super.onDestroy();
162ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        mAlertDialog = null;
163ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        mDeviceNameView = null;
164ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        mOkButton = null;
165ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    }
166ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
167ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    @Override
168ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    public void onResume() {
169ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        super.onResume();
170ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        if (mOkButton == null) {
171ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby            mOkButton = mAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
172e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim            mOkButton.setEnabled(mDeviceNameEdited);    // Ok button enabled after user edits
173ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        }
174ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        IntentFilter filter = new IntentFilter();
175ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
176ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        filter.addAction(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
177ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        getActivity().registerReceiver(mReceiver, filter);
178ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    }
179ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
180ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    @Override
181ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    public void onPause() {
182ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        super.onPause();
183ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        getActivity().unregisterReceiver(mReceiver);
184ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    }
185ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
186ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    void updateDeviceName() {
187ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        if (mLocalAdapter != null && mLocalAdapter.isEnabled()) {
188ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby            mDeviceNameUpdated = true;
189e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim            mDeviceNameEdited = false;
190ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby            mDeviceNameView.setText(mLocalAdapter.getName());
191ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        }
192ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    }
193ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
194ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    public void afterTextChanged(Editable s) {
195ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        if (mDeviceNameUpdated) {
196ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby            // Device name changed by code; disable Ok button until edited by user
197ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby            mDeviceNameUpdated = false;
198ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby            mOkButton.setEnabled(false);
199ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        } else {
200e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim            mDeviceNameEdited = true;
201e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim            if (mOkButton != null) {
202fe475227efdf69a4342a1e393ae60ca01fe9af30Sanket Padawe                mOkButton.setEnabled(s.toString().trim().length() != 0);
203e96f04c1ffaa99992f9ed4c2687db0b955ae0450jhtop.kim            }
204ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby        }
205ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    }
206ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
2071c1320a84d22419efb3bf45d970f80b33658edc2Srinu Jella    public void onConfigurationChanged(Configuration newConfig, CharSequence s) {
2081c1320a84d22419efb3bf45d970f80b33658edc2Srinu Jella        super.onConfigurationChanged(newConfig);
2091c1320a84d22419efb3bf45d970f80b33658edc2Srinu Jella        if (mOkButton != null) {
2101c1320a84d22419efb3bf45d970f80b33658edc2Srinu Jella            mOkButton.setEnabled(s.length() != 0 && !(s.toString().trim().isEmpty()));
2111c1320a84d22419efb3bf45d970f80b33658edc2Srinu Jella        }
2121c1320a84d22419efb3bf45d970f80b33658edc2Srinu Jella    }
2131c1320a84d22419efb3bf45d970f80b33658edc2Srinu Jella
214ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    /* Not used */
215ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
216ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    }
217ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby
218ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    /* Not used */
219ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    public void onTextChanged(CharSequence s, int start, int before, int count) {
220ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby    }
221ca9812a8521fcc483e821fd5a88ec421de0b8f66Jake Hamby}
222