@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Save location so we can tell when it changes saveLocation = ManagePreferences.location(); // Build preference tree addPreferencesFromResource(R.xml.preferences); // Set preferences initialized flag ManagePreferences.setInitialized(true); // Set up the two enable components preferences Preference pref = findPreference(getString(R.string.pref_enabled_key)); pref.setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { boolean enabled = (Boolean) newValue; String enableStr = (enabled ? ManagePreferences.enableMsgType() : ""); SmsPopupUtils.enableSMSPopup(SmsPopupConfigActivity.this, enableStr); CadPageWidget.update(SmsPopupConfigActivity.this); return true; } }); pref = findPreference(getString(R.string.pref_enable_msg_type_key)); pref.setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { SmsPopupUtils.enableSMSPopup(SmsPopupConfigActivity.this, (String) newValue); return true; } }); // Two other preferences should update the widget display pref = findPreference(getString(R.string.pref_notif_enabled_key)); pref.setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { CadPageWidget.update(SmsPopupConfigActivity.this); return true; } }); pref = findPreference(getString(R.string.pref_popup_enabled_key)); pref.setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { CadPageWidget.update(SmsPopupConfigActivity.this); return true; } }); // Set the version number in the about dialog preference final DialogPreference aboutPref = (DialogPreference) findPreference(getString(R.string.pref_about_key)); aboutPref.setDialogTitle(CadPageApplication.getNameVersion()); aboutPref.setDialogLayoutResource(R.layout.about); // Set up the payment status tracking screens Preference donate = (Preference) findPreference(getString(R.string.pref_payment_status_key)); MainDonateEvent.instance().setPreference(this, donate); // Set up the two location preference screens Preference descPreference = findPreference(getString(R.string.pref_loc_desc_key)); LocationManager locMgr = new LocationManager(this, descPreference); setupLocationMenu(R.string.pref_location_tree_key, false, locMgr); setupLocationMenu(R.string.pref_location_mtree_key, true, locMgr); locMgr.updateDisplay(); // The location, filter override checkbox, and filter edit box have a complex // relationship. The override checkbox is enabled only when the location parser // has a default parser to override. If it doesn't then it is disabled by forced // to true. The filter is enabled when the override box is checked, whether it // is enabled or not. We have to do this ourselves because the Android dependency // logic considers the value to be false if it isn't enabled. // On top of all that, the general alert box is enabled only if the current // parser has a default filter OR a user filter has been specified genAlertPref = (CheckBoxPreference) findPreference(getString(R.string.pref_gen_alert_key)); filterPref = (net.anei.cadpage.preferences.EditTextPreference) findPreference(getString(R.string.pref_filter_key)); filterPref.setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String filter = (String) newValue; genAlertPref.setEnabled(filter.length() > 1 || parserFilter.length() > 0); return true; } }); filterPref.setDialogClosedListener( new OnDialogClosedListener() { @Override public void onDialogClosed(boolean positiveResult) { if (positiveResult) { if ("General".equals(saveLocation)) { DonationManager.instance().reset(); MainDonateEvent.instance().refreshStatus(); } } } }); overrideFilterPref = (CheckBoxPreference) findPreference(getString(R.string.pref_override_filter_key)); filterPref.setEnabled(overrideFilterPref.isChecked()); overrideFilterPref.setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { filterPref.setEnabled((Boolean) newValue); return true; } }); adjustLocationChange(ManagePreferences.location(), false); locMgr.setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { adjustLocationChange((String) newValue, true); return true; } }); // Have to play some games with the override default settings // If the override defaults is turned on, enable the default city and state items // If it is turned off, force the default city and state to the current parser // defaults and disable them. overrideDefaultPref = (CheckBoxPreference) findPreference(getString(R.string.pref_override_default_key)); defCityPref = (EditTextPreference) findPreference(getString(R.string.pref_defcity_key)); defStatePref = (EditTextPreference) findPreference(getString(R.string.pref_defstate_key)); overrideDefaultPref = (CheckBoxPreference) findPreference(getString(R.string.pref_override_default_key)); overrideDefaultPref.setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { boolean value = ((Boolean) newValue).booleanValue(); if (!value) { defCityPref.setText(parserDefCity); defCityPref.refreshSummary(); defStatePref.setText(parserDefState); defStatePref.refreshSummary(); } defCityPref.setEnabled(value); defStatePref.setEnabled(value); return true; } }); // Make an initial call to our preference change listener to set up the // correct default summary displays overrideDefaultPref .getOnPreferenceChangeListener() .onPreferenceChange(overrideDefaultPref, ManagePreferences.overrideDefaults()); // Set up Scanner channel selection preference scannerPref = findPreference(getString(R.string.pref_scanner_channel_key)); if (scannerPref != null) { String channel = ManagePreferences.scannerChannel(); scannerPref.setSummary(channel); scannerPref.setOnPreferenceClickListener( new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference pref) { // When clicked, ask the scanner app to select a favorite channel Intent intent = new Intent("com.scannerradio.intent.action.ACTION_PICK"); try { startActivityForResult(intent, REQ_SCANNER_CHANNEL); } catch (ActivityNotFoundException ex) { // Scanner radio either isn't installed, or isn't responding to the ACTION_PICK // request. Check the package manager to which, if any, are currently installed PackageManager pkgMgr = getPackageManager(); String pkgName = "com.scannerradio_pro"; boolean installed = false; try { pkgMgr.getPackageInfo(pkgName, 0); installed = true; } catch (PackageManager.NameNotFoundException ex2) { } if (!installed) { pkgName = "com.scannerradio"; try { pkgMgr.getPackageInfo(pkgName, 0); installed = true; } catch (PackageManager.NameNotFoundException ex2) { } } // OK, show a dialog box asking if they want to install Scanner Radio final String pkgName2 = pkgName; new AlertDialog.Builder(SmsPopupConfigActivity.this) .setMessage( installed ? R.string.scanner_not_current : R.string.scanner_not_installed) .setPositiveButton( R.string.donate_btn_yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse("market://details?id=" + pkgName2)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); SmsPopupConfigActivity.this.startActivity(intent); } }) .setNegativeButton(R.string.donate_btn_no, null) .create() .show(); } return true; } }); } // Email developer response Preference emailPref = findPreference(getString(R.string.pref_email_key)); emailPref.setOnPreferenceClickListener( new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { EmailDeveloperActivity.sendGeneralEmail(SmsPopupConfigActivity.this); return true; } }); // Set up C2DM vendor preference screen PreferenceScreen vendorPref = (PreferenceScreen) findPreference(getString(R.string.pref_direct_paging_key)); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO || DonationManager.instance().isFreeVersion()) { vendorPref.setEnabled(false); } else { VendorManager.instance().setupPreference(this, vendorPref); } // If free version, switch release notes text to free release notes text if (DonationManager.instance().isFreeVersion()) { DialogPreference dlg = (DialogPreference) findPreference(getString(R.string.pref_releasenotes_key)); dlg.setDialogMessage(R.string.free_release_text); } // Add developer dialog preference if appropriate DeveloperToolsManager.instance().addPreference(this, getPreferenceScreen()); }