@SuppressWarnings("deprecation") private void checkItemVisibility() { boolean hasFlattrToken = FlattrUtils.hasToken(); ui.findPreference(PreferenceController.PREF_FLATTR_SETTINGS) .setEnabled(FlattrUtils.hasAPICredentials()); ui.findPreference(PreferenceController.PREF_FLATTR_AUTH).setEnabled(!hasFlattrToken); ui.findPreference(PreferenceController.PREF_FLATTR_REVOKE).setEnabled(hasFlattrToken); ui.findPreference(PreferenceController.PREF_AUTO_FLATTR_PREFS).setEnabled(hasFlattrToken); boolean autoDownload = UserPreferences.isEnableAutodownload(); ui.findPreference(UserPreferences.PREF_EPISODE_CACHE_SIZE).setEnabled(autoDownload); ui.findPreference(UserPreferences.PREF_ENABLE_AUTODL_ON_BATTERY).setEnabled(autoDownload); ui.findPreference(UserPreferences.PREF_ENABLE_AUTODL_WIFI_FILTER).setEnabled(autoDownload); setSelectedNetworksEnabled(autoDownload && UserPreferences.isEnableAutodownloadWifiFilter()); ui.findPreference(PREF_SEND_CRASH_REPORT).setEnabled(CrashReportWriter.getFile().exists()); if (Build.VERSION.SDK_INT >= 16) { ui.findPreference(UserPreferences.PREF_SONIC).setEnabled(true); } else { Preference prefSonic = ui.findPreference(UserPreferences.PREF_SONIC); prefSonic.setSummary("[Android 4.1+]\n" + prefSonic.getSummary()); } }
public void onCreate() { final Activity activity = ui.getActivity(); if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { // disable expanded notification option on unsupported android versions ui.findPreference(PreferenceController.PREF_EXPANDED_NOTIFICATION).setEnabled(false); ui.findPreference(PreferenceController.PREF_EXPANDED_NOTIFICATION) .setOnPreferenceClickListener( preference -> { Toast toast = Toast.makeText( activity, R.string.pref_expand_notify_unsupport_toast, Toast.LENGTH_SHORT); toast.show(); return true; }); } ui.findPreference(PreferenceController.PREF_FLATTR_REVOKE) .setOnPreferenceClickListener( preference -> { FlattrUtils.revokeAccessToken(activity); checkItemVisibility(); return true; }); ui.findPreference(PreferenceController.PREF_ABOUT) .setOnPreferenceClickListener( preference -> { activity.startActivity(new Intent(activity, AboutActivity.class)); return true; }); ui.findPreference(PreferenceController.STATISTICS) .setOnPreferenceClickListener( preference -> { activity.startActivity(new Intent(activity, StatisticsActivity.class)); return true; }); ui.findPreference(PreferenceController.PREF_OPML_EXPORT) .setOnPreferenceClickListener( preference -> { new OpmlExportWorker(activity).executeAsync(); return true; }); ui.findPreference(PreferenceController.PREF_CHOOSE_DATA_DIR) .setOnPreferenceClickListener( preference -> { if (Build.VERSION_CODES.KITKAT <= Build.VERSION.SDK_INT && Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) { showChooseDataFolderDialog(); } else { int readPermission = ActivityCompat.checkSelfPermission( activity, Manifest.permission.READ_EXTERNAL_STORAGE); int writePermission = ActivityCompat.checkSelfPermission( activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (readPermission == PackageManager.PERMISSION_GRANTED && writePermission == PackageManager.PERMISSION_GRANTED) { openDirectoryChooser(); } else { requestPermission(); } } return true; }); ui.findPreference(PreferenceController.PREF_CHOOSE_DATA_DIR) .setOnPreferenceClickListener( preference -> { if (Build.VERSION.SDK_INT >= 19) { showChooseDataFolderDialog(); } else { Intent intent = new Intent(activity, DirectoryChooserActivity.class); activity.startActivityForResult( intent, DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED); } return true; }); ui.findPreference(UserPreferences.PREF_THEME) .setOnPreferenceChangeListener( (preference, newValue) -> { Intent i = new Intent(activity, MainActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); activity.finish(); activity.startActivity(i); return true; }); ui.findPreference(UserPreferences.PREF_HIDDEN_DRAWER_ITEMS) .setOnPreferenceClickListener( preference -> { showDrawerPreferencesDialog(); return true; }); ui.findPreference(UserPreferences.PREF_COMPACT_NOTIFICATION_BUTTONS) .setOnPreferenceClickListener( preference -> { showNotificationButtonsDialog(); return true; }); ui.findPreference(UserPreferences.PREF_UPDATE_INTERVAL) .setOnPreferenceClickListener( preference -> { showUpdateIntervalTimePreferencesDialog(); return true; }); ui.findPreference(UserPreferences.PREF_ENABLE_AUTODL) .setOnPreferenceChangeListener( (preference, newValue) -> { if (newValue instanceof Boolean) { boolean enabled = (Boolean) newValue; ui.findPreference(UserPreferences.PREF_EPISODE_CACHE_SIZE).setEnabled(enabled); ui.findPreference(UserPreferences.PREF_ENABLE_AUTODL_ON_BATTERY) .setEnabled(enabled); ui.findPreference(UserPreferences.PREF_ENABLE_AUTODL_WIFI_FILTER) .setEnabled(enabled); setSelectedNetworksEnabled( enabled && UserPreferences.isEnableAutodownloadWifiFilter()); } return true; }); ui.findPreference(UserPreferences.PREF_ENABLE_AUTODL_WIFI_FILTER) .setOnPreferenceChangeListener( (preference, newValue) -> { if (newValue instanceof Boolean) { setSelectedNetworksEnabled((Boolean) newValue); return true; } else { return false; } }); ui.findPreference(UserPreferences.PREF_PARALLEL_DOWNLOADS) .setOnPreferenceChangeListener( (preference, o) -> { if (o instanceof String) { try { int value = Integer.parseInt((String) o); if (1 <= value && value <= 50) { setParallelDownloadsText(value); return true; } } catch (NumberFormatException e) { return false; } } return false; }); // validate and set correct value: number of downloads between 1 and 50 (inclusive) final EditText ev = ((EditTextPreference) ui.findPreference(UserPreferences.PREF_PARALLEL_DOWNLOADS)) .getEditText(); ev.addTextChangedListener( new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) {} @Override public void afterTextChanged(Editable s) { if (s.length() > 0) { try { int value = Integer.parseInt(s.toString()); if (value <= 0) { ev.setText("1"); } else if (value > 50) { ev.setText("50"); } } catch (NumberFormatException e) { ev.setText("6"); } ev.setSelection(ev.getText().length()); } } }); ui.findPreference(UserPreferences.PREF_EPISODE_CACHE_SIZE) .setOnPreferenceChangeListener( (preference, o) -> { if (o instanceof String) { setEpisodeCacheSizeText(UserPreferences.readEpisodeCacheSize((String) o)); } return true; }); ui.findPreference(PreferenceController.PREF_PLAYBACK_SPEED_LAUNCHER) .setOnPreferenceClickListener( preference -> { VariableSpeedDialog.showDialog(activity); return true; }); ui.findPreference(PreferenceController.PREF_GPODNET_SETLOGIN_INFORMATION) .setOnPreferenceClickListener( preference -> { AuthenticationDialog dialog = new AuthenticationDialog( activity, R.string.pref_gpodnet_setlogin_information_title, false, false, GpodnetPreferences.getUsername(), null) { @Override protected void onConfirmed( String username, String password, boolean saveUsernamePassword) { GpodnetPreferences.setPassword(password); } }; dialog.show(); return true; }); ui.findPreference(PreferenceController.PREF_GPODNET_SYNC) .setOnPreferenceClickListener( preference -> { GpodnetSyncService.sendSyncIntent(ui.getActivity().getApplicationContext()); Toast toast = Toast.makeText( ui.getActivity(), R.string.pref_gpodnet_sync_started, Toast.LENGTH_SHORT); toast.show(); return true; }); ui.findPreference(PreferenceController.PREF_GPODNET_LOGOUT) .setOnPreferenceClickListener( preference -> { GpodnetPreferences.logout(); Toast toast = Toast.makeText(activity, R.string.pref_gpodnet_logout_toast, Toast.LENGTH_SHORT); toast.show(); updateGpodnetPreferenceScreen(); return true; }); ui.findPreference(PreferenceController.PREF_GPODNET_HOSTNAME) .setOnPreferenceClickListener( preference -> { GpodnetSetHostnameDialog.createDialog(activity) .setOnDismissListener(dialog -> updateGpodnetPreferenceScreen()); return true; }); ui.findPreference(PreferenceController.PREF_AUTO_FLATTR_PREFS) .setOnPreferenceClickListener( preference -> { AutoFlattrPreferenceDialog.newAutoFlattrPreferenceDialog( activity, new AutoFlattrPreferenceDialog.AutoFlattrPreferenceDialogInterface() { @Override public void onCancelled() {} @Override public void onConfirmed(boolean autoFlattrEnabled, float autoFlattrValue) { UserPreferences.setAutoFlattrSettings(autoFlattrEnabled, autoFlattrValue); checkItemVisibility(); } }); return true; }); ui.findPreference(UserPreferences.PREF_IMAGE_CACHE_SIZE) .setOnPreferenceChangeListener( (preference, o) -> { if (o instanceof String) { int newValue = Integer.parseInt((String) o) * 1024 * 1024; if (newValue != UserPreferences.getImageCacheSize()) { AlertDialog.Builder dialog = new AlertDialog.Builder(ui.getActivity()); dialog.setTitle(android.R.string.dialog_alert_title); dialog.setMessage(R.string.pref_restart_required); dialog.setPositiveButton(android.R.string.ok, null); dialog.show(); } return true; } return false; }); ui.findPreference(PREF_PROXY) .setOnPreferenceClickListener( preference -> { ProxyDialog dialog = new ProxyDialog(ui.getActivity()); dialog.createDialog().show(); return true; }); ui.findPreference(PREF_KNOWN_ISSUES) .setOnPreferenceClickListener( preference -> { openInBrowser("https://github.com/AntennaPod/AntennaPod/labels/bug"); return true; }); ui.findPreference(PREF_FAQ) .setOnPreferenceClickListener( preference -> { openInBrowser("http://antennapod.org/faq.html"); return true; }); ui.findPreference(PREF_SEND_CRASH_REPORT) .setOnPreferenceClickListener( preference -> { Intent emailIntent = new Intent(Intent.ACTION_SEND); emailIntent.setType("text/plain"); emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"*****@*****.**"}); emailIntent.putExtra(Intent.EXTRA_SUBJECT, "AntennaPod Crash Report"); emailIntent.putExtra( Intent.EXTRA_TEXT, "Please describe what you were doing when the app crashed"); // the attachment emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(CrashReportWriter.getFile())); String intentTitle = ui.getActivity().getString(R.string.send_email); ui.getActivity().startActivity(Intent.createChooser(emailIntent, intentTitle)); return true; }); // checks whether Google Play Services is installed on the device (condition necessary for Cast // support) ui.findPreference(UserPreferences.PREF_CAST_ENABLED) .setOnPreferenceChangeListener( (preference, o) -> { if (o instanceof Boolean && ((Boolean) o)) { final int googlePlayServicesCheck = GoogleApiAvailability.getInstance() .isGooglePlayServicesAvailable(ui.getActivity()); if (googlePlayServicesCheck == ConnectionResult.SUCCESS) { return true; } else { GoogleApiAvailability.getInstance() .getErrorDialog(ui.getActivity(), googlePlayServicesCheck, 0) .show(); return false; } } return true; }); buildEpisodeCleanupPreference(); buildSmartMarkAsPlayedPreference(); buildAutodownloadSelectedNetworsPreference(); setSelectedNetworksEnabled(UserPreferences.isEnableAutodownloadWifiFilter()); }