/** * Recursive set summaries * * @param pg group */ private void initSummaries(PreferenceGroup pg) { for (int i = 0; i < pg.getPreferenceCount(); ++i) { Preference p = pg.getPreference(i); if (p instanceof PreferenceGroup) initSummaries((PreferenceGroup) p); else setSummary(p, false); if (p instanceof PreferenceScreen) p.setOnPreferenceClickListener(this); } }
/** Set the summaries of all preferences */ private void initSummaries(PreferenceGroup pg) { for (int i = 0; i < pg.getPreferenceCount(); ++i) { Preference p = pg.getPreference(i); if (p instanceof PreferenceGroup) // Recursion this.initSummaries((PreferenceGroup) p); else this.setSummary(p); } }
private void initSummary(Preference p) { if (p instanceof PreferenceGroup) { PreferenceGroup pGrp = (PreferenceGroup) p; for (int i = 0; i < pGrp.getPreferenceCount(); i++) { initSummary(pGrp.getPreference(i)); } } else { updatePrefSummary(p); } }
/** Recursively go through settings and fill entries and summaries of our preferences. */ private void fillEntriesAndSummaries(PreferenceGroup group) { for (int i = 0; i < group.getPreferenceCount(); ++i) { Preference pref = group.getPreference(i); if (pref instanceof PreferenceGroup) { fillEntriesAndSummaries((PreferenceGroup) pref); } setSummary(pref); setEntries(pref); } }
private void unregisterPrefs(PreferenceGroup group) { TunerService tunerService = TunerService.get(getContext()); final int N = group.getPreferenceCount(); for (int i = 0; i < N; i++) { Preference pref = group.getPreference(i); if (pref instanceof TunerService.Tunable) { tunerService.removeTunable((TunerService.Tunable) pref); } else if (pref instanceof PreferenceGroup) { registerPrefs((PreferenceGroup) pref); } } }
protected void onCreate(Bundle savedInstanceState, int titleRes, int layout, int preferencesXml) { super.onCreate(savedInstanceState); packageName = getIntent().getStringExtra(EXTRA_PACKAGE_NAME); // get package title try { ApplicationInfo ai = getPackageManager().getApplicationInfo(packageName, 0); String appName = getPackageManager().getApplicationLabel(ai).toString(); if (appName == null) appName = packageName; setTitle(appName + " - " + getString(titleRes)); } catch (PackageManager.NameNotFoundException e) { setTitle(packageName + " - " + getString(titleRes)); } LayoutInflater inflater = getLayoutInflater(); View v = inflater.inflate(layout, null); setContentView(v); addPreferencesFromResource(preferencesXml); PreferenceScreen prefScreen = getPreferenceScreen(); SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); for (int i = 0; i < prefScreen.getPreferenceCount(); i++) { PreferenceGroup prefGroup = (PreferenceGroup) prefScreen.getPreference(i); for (int j = 0; j < prefGroup.getPreferenceCount(); j++) { Preference pref = prefGroup.getPreference(j); String key = packageName + "." + pref.getKey(); if (pref instanceof ListPreference) { ListPreference listPref = ((ListPreference) pref); String globalValue = listPref.getValue(); String currValue = sharedPrefs.getString(key, globalValue); listPref.setKey(key); listPref.setValue(currValue); } else if (pref instanceof CheckBoxPreference) { CheckBoxPreference checkPref = (CheckBoxPreference) pref; boolean globalValue = checkPref.isChecked(); boolean currValue = sharedPrefs.getBoolean(key, globalValue); checkPref.setKey(key); checkPref.setChecked(currValue); } } } // apply card layout CardPreferenceFragment.applyLayoutToPreferences(prefScreen); getActionBar().setDisplayHomeAsUpEnabled(true); }
@Override public void onDestroy() { PreferenceGroup prefGroup = getPreferenceScreen(); for (int i = 0; i < prefGroup.getPreferenceCount(); i++) { Preference pref = prefGroup.getPreference(i); if (pref instanceof CheckBoxPreference) { CheckBoxPreference checkBoxPref = (CheckBoxPreference) pref; SettingsManager.setPreferenceBoolean(checkBoxPref.getKey(), checkBoxPref.isChecked()); } } super.onDestroy(); }
private void registerPrefs(PreferenceGroup group) { TunerService tunerService = TunerService.get(getContext()); final int N = group.getPreferenceCount(); for (int i = 0; i < N; i++) { Preference pref = group.getPreference(i); if (pref instanceof StatusBarSwitch) { tunerService.addTunable( (TunerService.Tunable) pref, StatusBarIconController.ICON_BLACKLIST); } else if (pref instanceof PreferenceGroup) { registerPrefs((PreferenceGroup) pref); } } }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settings_emu_fragment); PreferenceGroup prefGroup = getPreferenceScreen(); for (int i = 0; i < prefGroup.getPreferenceCount(); i++) { Preference pref = prefGroup.getPreference(i); if (pref instanceof CheckBoxPreference) { CheckBoxPreference checkBoxPref = (CheckBoxPreference) pref; checkBoxPref.setChecked(SettingsManager.getPreferenceBoolean(checkBoxPref.getKey())); } } }
private InputMethodSubtype[] getSubtypes() { final PreferenceGroup group = getPreferenceScreen(); final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); final int count = group.getPreferenceCount(); for (int i = 0; i < count; i++) { final Preference pref = group.getPreference(i); if (pref instanceof SubtypePreference) { final SubtypePreference subtypePref = (SubtypePreference) pref; // We should not save newly adding subtype to preference because it is incomplete. if (subtypePref.isIncomplete()) continue; subtypes.add(subtypePref.getSubtype()); } } return subtypes.toArray(new InputMethodSubtype[subtypes.size()]); }
private void bind(PreferenceGroup group) { SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); for (int i = 0; i < group.getPreferenceCount(); i++) { Preference p = group.getPreference(i); if (p instanceof PreferenceGroup) { bind((PreferenceGroup) p); } else { if (p instanceof CheckBoxPreference) {; } else { Object val = sp.getAll().get(p.getKey()); p.setSummary(val == null ? "" : ("" + val)); p.setOnPreferenceChangeListener(this); } } } }
/** * Recursively traverses the tree from the given group as the route and tries to delete the * preference. Traversal stops once the preference was found and removed. */ private boolean recursiveDelete(PreferenceGroup group, Preference preference) { if (group.removePreference(preference)) { // Removal was successful. return true; } for (int i = 0; i < group.getPreferenceCount(); ++i) { Preference pref = group.getPreference(i); if (pref instanceof PreferenceGroup) { if (recursiveDelete((PreferenceGroup) pref, preference)) { return true; } } } return false; }
private void updateGesturesState(final PreferenceGroup group) { SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); for (int i = 0; i < group.getPreferenceCount(); i++) { Preference item = group.getPreference(i); String key = item.getKey(); String keyValue = pref.getString(key, "NONE"); item.setTitle(getArrowString(key.replace("settings_gestures_", "").replace('_', ','))); if (mKeyValuesList.contains(keyValue)) { int index = mKeyValuesList.indexOf(keyValue); // Log.v("KeyboardsSettingsActivity", "set button " + i + " : " + mKeyDefinesList.get(index) // + ", keyValue: " + keyValue + ", key: " + item.getKey()); item.setSummary(mKeyDefinesList.get(index)); } item.setOnPreferenceChangeListener(mButtonChangeListener); } }
private void updateKeys(PreferenceGroup parent) { for (int i = 0; i < parent.getPreferenceCount(); i++) { Preference pref = parent.getPreference(i); boolean changed = false; if (pref.getKey() != null && pref.getKey().contains("%d")) { pref.setKey(String.format(pref.getKey(), mAppWidgetId)); changed = true; } if (pref.getDependency() != null && pref.getDependency().contains("%d")) { pref.setDependency(String.format(pref.getDependency(), mAppWidgetId)); changed = true; } if (changed) { reloadPreference(pref); } if (pref instanceof PreferenceGroup) { updateKeys((PreferenceGroup) pref); } } }
private void initGroups(PreferenceGroup preferences) { final int count = preferences.getPreferenceCount(); for (int i = 0; i < count; i++) { Preference pref = preferences.getPreference(i); if (pref instanceof PreferenceGroup) initGroups((PreferenceGroup) pref); else { pref.setOnPreferenceChangeListener(this); // Some Preference UI elements are not actually preferences, // but they require a key to work correctly. For example, // "Clear private data" requires a key for its state to be // saved when the orientation changes. It uses the // "android.not_a_preference.privacy.clear" key - which doesn't // exist in Gecko - to satisfy this requirement. String key = pref.getKey(); if (key != null && !key.startsWith(NON_PREF_PREFIX)) { mPreferencesList.add(pref.getKey()); } } } }
/** * Since the "%s" summary is currently broken, this sets the preference change listener for all * {@link ListPreference} views to fill in the summary with the current entry value. */ private void fixListSummaries(PreferenceGroup group) { if (group == null) { return; } final int count = group.getPreferenceCount(); for (int i = 0; i < count; i++) { final Preference preference = group.getPreference(i); if (preference instanceof PreferenceGroup) { fixListSummaries((PreferenceGroup) preference); } else if (preference instanceof ListPreference) { // First make sure the current summary is correct, then set the // listener. This is necessary for summaries to show correctly // on SDKs < 14. mPreferenceChangeListener.onPreferenceChange( preference, ((ListPreference) preference).getValue()); preference.setOnPreferenceChangeListener(mPreferenceChangeListener); } } }
protected void initializePreference(Preference preference) { if (preference instanceof PreferenceGroup) { PreferenceGroup group = (PreferenceGroup) preference; for (int i = 0; i < group.getPreferenceCount(); i++) { initializePreference(group.getPreference(i)); } updatePreferences(group, null); } else { Object value = null; if (preference instanceof ListPreference) { value = ((ListPreference) preference).getValue(); } else if (preference instanceof CheckBoxPreference) { value = ((CheckBoxPreference) preference).isChecked(); } else if (preference instanceof EditTextPreference) { value = ((EditTextPreference) preference).getText(); } else if (preference instanceof RingtonePreference) { value = PreferenceManager.getDefaultSharedPreferences(preference.getContext()) .getString(preference.getKey(), null); } else if (preference instanceof TimePreference) { value = ((TimePreference) preference).getMillisOfDay(); } updatePreferences(preference, value); if (preference.getOnPreferenceChangeListener() == null) { preference.setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference myPreference, Object newValue) { updatePreferences(myPreference, newValue); return true; } }); } } }
private void fillList(int simId) { String where = getFillListQuery(); Xlog.e(TAG, "fillList where: " + where); if (mUri == null) { Xlog.e(TAG, "fillList, mUri null !"); finish(); return; } Cursor cursor = getContentResolver() .query( mUri, new String[] {"_id", "name", "apn", "type", "sourcetype"}, where, null, null); PreferenceGroup apnList = (PreferenceGroup) findPreference("apn_list"); apnList.removeAll(); ArrayList<Preference> mmsApnList = new ArrayList<Preference>(); boolean keySetChecked = false; mSelectedKey = getSelectedApnKey(); Xlog.d(TAG, "fillList : mSelectedKey = " + mSelectedKey); cursor.moveToFirst(); while (!cursor.isAfterLast()) { String type = cursor.getString(TYPES_INDEX); if (mIsTetherApn && !TETHER_TYPE.equals(type)) { cursor.moveToNext(); continue; } String name = cursor.getString(NAME_INDEX); String apn = cursor.getString(APN_INDEX); String key = cursor.getString(ID_INDEX); int sourcetype = cursor.getInt(SOURCE_TYPE_INDEX); if ("cmmail".equals(apn) && sourcetype == 0) { cursor.moveToNext(); continue; } if (RCSE_TYPE.equals(type) && mRcseExt != null) { if (!mRcseExt.isRcseOnlyApnEnabled()) { cursor.moveToNext(); Xlog.d(TAG, "Vodafone not matched"); continue; } else { Xlog.d(TAG, "Vodafone matched"); } } ApnPreference pref = new ApnPreference(this); pref.setSimId(simId); // set pre sim id info to the ApnEditor pref.setKey(key); pref.setTitle(name); pref.setSummary(apn); pref.setPersistent(false); pref.setSourceType(sourcetype); pref.setOnPreferenceChangeListener(this); boolean isEditable = mExt.isAllowEditPresetApn(type, apn, mNumeric); pref.setApnEditable((sourcetype != 0) || isEditable); // All tether apn will be selectable for otthers , mms will not be selectable. boolean selectable = true; if (TETHER_TYPE.equals(type)) { selectable = mIsTetherApn; } else { selectable = !"mms".equals(type); } pref.setSelectable(selectable); if (selectable) { if ((mSelectedKey != null) && mSelectedKey.equals(key)) { pref.setChecked(); keySetChecked = true; Xlog.d(TAG, "apn key: " + key + " set."); } apnList.addPreference(pref); Xlog.i(TAG, "key: " + key + " added!"); } else { mmsApnList.add(pref); } cursor.moveToNext(); } cursor.close(); mSelectableApnCount = apnList.getPreferenceCount(); // if no key selected, choose the 1st one. if (!keySetChecked && mSelectableApnCount > 0) { int[] sourceTypeArray = new int[mSelectableApnCount]; for (int i = 0; i < mSelectableApnCount; i++) { sourceTypeArray[i] = ((ApnPreference) apnList.getPreference(i)).getSourceType(); } ApnPreference apnPref = (ApnPreference) mExt.getApnPref(apnList, mSelectableApnCount, sourceTypeArray); if (apnPref != null) { setSelectedApnKey(apnPref.getKey()); apnPref.setChecked(); Xlog.i(TAG, "Key does not match.Set key: " + apnPref.getKey() + "."); } } if (!mIsTetherApn) { for (Preference preference : mmsApnList) { apnList.addPreference(preference); } } getPreferenceScreen().setEnabled(getScreenEnableState()); }
/** * Recursively loop through a PreferenceGroup. Initialize native Android prefs, and build a list * of Gecko preferences in the passed in prefs array * * @param preferences The android.preference.PreferenceGroup to initialize * @param prefs An ArrayList to fill with Gecko preferences that need to be initialized * @return The integer id for the PrefsHelper.PrefHandlerBase listener added to monitor changes to * Gecko prefs. */ private void setupPreferences(PreferenceGroup preferences, ArrayList<String> prefs) { for (int i = 0; i < preferences.getPreferenceCount(); i++) { Preference pref = preferences.getPreference(i); String key = pref.getKey(); if (pref instanceof PreferenceGroup) { // If no datareporting is enabled, remove UI. if (PREFS_DATA_REPORTING_PREFERENCES.equals(key)) { if (!AppConstants.MOZ_DATA_REPORTING) { preferences.removePreference(pref); i--; continue; } } else if (pref instanceof PanelsPreferenceCategory) { mPanelsPreferenceCategory = (PanelsPreferenceCategory) pref; } setupPreferences((PreferenceGroup) pref, prefs); } else { pref.setOnPreferenceChangeListener(this); if (!AppConstants.MOZ_UPDATER && PREFS_UPDATER_AUTODOWNLOAD.equals(key)) { preferences.removePreference(pref); i--; continue; } else if (AppConstants.RELEASE_BUILD && PREFS_DISPLAY_REFLOW_ON_ZOOM.equals(key)) { // Remove UI for reflow on release builds. preferences.removePreference(pref); i--; continue; } else if (!AppConstants.MOZ_TELEMETRY_REPORTING && PREFS_TELEMETRY_ENABLED.equals(key)) { preferences.removePreference(pref); i--; continue; } else if (!AppConstants.MOZ_SERVICES_HEALTHREPORT && (PREFS_HEALTHREPORT_UPLOAD_ENABLED.equals(key) || PREFS_HEALTHREPORT_LINK.equals(key))) { preferences.removePreference(pref); i--; continue; } else if (!AppConstants.MOZ_CRASHREPORTER && PREFS_CRASHREPORTER_ENABLED.equals(key)) { preferences.removePreference(pref); i--; continue; } else if (AppConstants.RELEASE_BUILD && PREFS_GEO_REPORTING.equals(key)) { // We don't build wifi/cell tower collection in release builds, so hide the UI. preferences.removePreference(pref); i--; continue; } else if (PREFS_DEVTOOLS_REMOTE_ENABLED.equals(key)) { final Context thisContext = this; pref.setOnPreferenceClickListener( new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { // Display toast to remind setting up tcp forwarding. if (((CheckBoxPreference) preference).isChecked()) { Toast.makeText( thisContext, R.string.devtools_remote_debugging_forward, Toast.LENGTH_SHORT) .show(); } return true; } }); } else if (PREFS_RESTORE_SESSION.equals(key)) { // Set the summary string to the current entry. The summary // for other list prefs will be set in the PrefsHelper // callback, but since this pref doesn't live in Gecko, we // need to handle it separately. ListPreference listPref = (ListPreference) pref; CharSequence selectedEntry = listPref.getEntry(); listPref.setSummary(selectedEntry); continue; } else if (PREFS_SYNC.equals(key) && GeckoProfile.get(this).inGuestMode()) { // Don't show sync prefs while in guest mode. preferences.removePreference(pref); i--; continue; } else if (PREFS_SEARCH_RESTORE_DEFAULTS.equals(key)) { pref.setOnPreferenceClickListener( new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { GeckoPreferences.this.restoreDefaultSearchEngines(); return true; } }); } else if (PREFS_HOME_ADD_PANEL.equals(key)) { pref.setOnPreferenceClickListener( new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Intent dialogIntent = new Intent(GeckoPreferences.this, HomePanelPicker.class); startActivityForResult(dialogIntent, HomePanelPicker.REQUEST_CODE_ADD_PANEL); return true; } }); } // Some Preference UI elements are not actually preferences, // but they require a key to work correctly. For example, // "Clear private data" requires a key for its state to be // saved when the orientation changes. It uses the // "android.not_a_preference.privacy.clear" key - which doesn't // exist in Gecko - to satisfy this requirement. if (key != null && !key.startsWith(NON_PREF_PREFIX)) { prefs.add(key); } } } }