public boolean onPreferenceChange(Preference preference, Object newValue) { if (preference != null && preference instanceof SecurityItemPreference) { Xlog.d(TAG, "onPreferenceChange, select " + preference.getKey() + " active"); Settings.Global.putString( getContentResolver(), Settings.Global.NFC_MULTISE_ACTIVE, preference.getKey()); mProgressCategory.setProgress(true); mSwitchBar.setEnabled(false); for (SecurityItemPreference pref : mItemPreferences) { pref.setEnabled(false); } return true; } return false; }
private void addItemPreference() { String[] list = getCardEmulationList(); if (list != null) { for (String key : list) { SecurityItemPreference pref = new SecurityItemPreference(getActivity()); pref.setTitle(key); pref.setKey(key); pref.setOnPreferenceChangeListener(this); mProgressCategory.addPreference(pref); mItemPreferences.add(pref); mItemKeys.add(key); } } }
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if (preference != null && preference instanceof SecurityItemPreference) { Xlog.d(TAG, "onPreferenceTreeClick " + preference.getKey()); String activeMode = Settings.Global.getString(getContentResolver(), Settings.Global.NFC_MULTISE_ACTIVE); String prefKey = preference.getKey(); if (prefKey != null && !(prefKey.equals(activeMode))) { Settings.Global.putString( getContentResolver(), Settings.Global.NFC_MULTISE_ACTIVE, preference.getKey()); mProgressCategory.setProgress(true); mSwitchBar.setEnabled(false); for (SecurityItemPreference pref : mItemPreferences) { pref.setEnabled(false); } return true; } } return false; }
/** update the preference according to the status of NfcAdapter settings */ private void updatePreferences() { removeAll(); String activeMode = Settings.Global.getString(getContentResolver(), Settings.Global.NFC_MULTISE_ACTIVE); String previousMode = Settings.Global.getString(getContentResolver(), Settings.Global.NFC_MULTISE_PREVIOUS); int transactionStatus = Settings.Global.getInt(getContentResolver(), Settings.Global.NFC_MULTISE_IN_TRANSACTION, 0); int switchingStatus = Settings.Global.getInt(getContentResolver(), Settings.Global.NFC_MULTISE_IN_SWITCHING, 0); Xlog.d( TAG, "updatePreferences(),EMULATION_OFF " + EMULATION_OFF + ", active mode: " + activeMode + ", previous mode is " + previousMode); Xlog.d( TAG, "updatePreferences, transactionStatus is " + transactionStatus + " switchingStatus is " + switchingStatus); if (EMULATION_OFF.equals(activeMode)) { mUpdateStatusOnly = true; mSwitchBar.setChecked(false); mUpdateStatusOnly = false; if (getCardEmulationList().length == 0) { Xlog.d(TAG, "no available security elment found and the active mode is off"); mEmptyView.setText(R.string.card_emulation_settings_no_element_found); } else { if (switchingStatus == 0) { mEmptyView.setText(R.string.card_emulation_settings_off_text); } else { mEmptyView.setText(R.string.card_emulation_turning_off_text); } } mSwitchBar.setEnabled(transactionStatus == 0 && switchingStatus == 0); } else { mUpdateStatusOnly = true; mSwitchBar.setChecked(true); mUpdateStatusOnly = false; if (switchingStatus == 1 && EMULATION_OFF.equals(previousMode)) { mSwitchBar.setEnabled(false); mEmptyView.setText(R.string.card_emulation_turning_on_text); } else { mSwitchBar.setEnabled(transactionStatus == 0 && switchingStatus == 0); addItemPreference(); int prefCount = mProgressCategory.getPreferenceCount(); getPreferenceScreen().addPreference(mProgressCategory); SecurityItemPreference itemPref = (SecurityItemPreference) findPreference(activeMode); if (itemPref != null) { itemPref.setChecked(true); mActivePref = itemPref; } else { Xlog.d(TAG, "Activie mode is " + activeMode + ", can not find it on screen"); } mProgressCategory.setProgress(switchingStatus == 1); mProgressCategory.setEnabled(transactionStatus == 0 && switchingStatus == 0); } } }