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