Hide irrelevant options for local feeds

This commit is contained in:
ByteHamster 2020-09-13 23:40:29 +02:00
parent bce1fb9513
commit 4996d46851
2 changed files with 30 additions and 8 deletions

View File

@ -15,6 +15,7 @@ import androidx.fragment.app.Fragment;
import androidx.preference.ListPreference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.SwitchPreferenceCompat;
import androidx.recyclerview.widget.RecyclerView;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
import de.danoeh.antennapod.core.event.settings.SkipIntroEndingChangedEvent;
@ -100,6 +101,9 @@ public class FeedSettingsFragment extends Fragment {
public static class FeedSettingsPreferenceFragment extends PreferenceFragmentCompat {
private static final CharSequence PREF_EPISODE_FILTER = "episodeFilter";
private static final CharSequence PREF_SCREEN = "feedSettingsScreen";
private static final CharSequence PREF_AUTHENTICATION = "authentication";
private static final CharSequence PREF_AUTO_DELETE = "autoDelete";
private static final CharSequence PREF_CATEGORY_AUTO_DOWNLOAD = "autoDownloadCategory";
private static final String PREF_FEED_PLAYBACK_SPEED = "feedPlaybackSpeed";
private static final String PREF_AUTO_SKIP = "feedAutoSkip";
private static final DecimalFormat SPEED_FORMAT =
@ -117,11 +121,20 @@ public class FeedSettingsFragment extends Fragment {
return fragment;
}
@Override
public RecyclerView onCreateRecyclerView (LayoutInflater inflater, ViewGroup parent, Bundle state) {
final RecyclerView view = super.onCreateRecyclerView(inflater, parent, state);
// To prevent transition animation because of summary update
view.setItemAnimator(null);
view.setLayoutAnimation(null);
return view;
}
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.feed_settings);
findPreference(PREF_SCREEN).setEnabled(false);
setupAutoDownloadGlobalPreference(); // To prevent transition animation because of summary update
// To prevent displaying partially loaded data
findPreference(PREF_SCREEN).setVisible(false);
long feedId = getArguments().getLong(EXTRA_FEED_ID);
disposable = Maybe.create((MaybeOnSubscribe<Feed>) emitter -> {
@ -138,6 +151,7 @@ public class FeedSettingsFragment extends Fragment {
feed = result;
feedPreferences = feed.getPreferences();
setupAutoDownloadGlobalPreference();
setupAutoDownloadPreference();
setupKeepUpdatedPreference();
setupAutoDeletePreference();
@ -151,7 +165,14 @@ public class FeedSettingsFragment extends Fragment {
updateVolumeReductionValue();
updateAutoDownloadEnabled();
updatePlaybackSpeedPreference();
findPreference(PREF_SCREEN).setEnabled(true);
if (feed.isLocalFeed()) {
findPreference(PREF_AUTHENTICATION).setVisible(false);
findPreference(PREF_AUTO_DELETE).setVisible(false);
findPreference(PREF_CATEGORY_AUTO_DOWNLOAD).setVisible(false);
}
findPreference(PREF_SCREEN).setVisible(true);
}, error -> Log.d(TAG, Log.getStackTraceString(error)), () -> { });
}
@ -222,7 +243,7 @@ public class FeedSettingsFragment extends Fragment {
}
private void setupAuthentificationPreference() {
findPreference("authentication").setOnPreferenceClickListener(preference -> {
findPreference(PREF_AUTHENTICATION).setOnPreferenceClickListener(preference -> {
new AuthenticationDialog(getContext(),
R.string.authentication_label, true,
feedPreferences.getUsername(), feedPreferences.getPassword()) {
@ -238,8 +259,7 @@ public class FeedSettingsFragment extends Fragment {
}
private void setupAutoDeletePreference() {
ListPreference autoDeletePreference = findPreference("autoDelete");
autoDeletePreference.setOnPreferenceChangeListener((preference, newValue) -> {
findPreference(PREF_AUTO_DELETE).setOnPreferenceChangeListener((preference, newValue) -> {
switch ((String) newValue) {
case "global":
feedPreferences.setAutoDeleteAction(FeedPreferences.AutoDeleteAction.GLOBAL);
@ -265,7 +285,7 @@ public class FeedSettingsFragment extends Fragment {
}
private void updateAutoDeleteSummary() {
ListPreference autoDeletePreference = findPreference("autoDelete");
ListPreference autoDeletePreference = findPreference(PREF_AUTO_DELETE);
switch (feedPreferences.getAutoDeleteAction()) {
case GLOBAL:

View File

@ -44,7 +44,9 @@
android:defaultValue="off"
android:key="volumeReduction"/>
<PreferenceCategory android:title="@string/auto_download_settings_label">
<PreferenceCategory
android:title="@string/auto_download_settings_label"
android:key="autoDownloadCategory">
<SwitchPreferenceCompat
android:key="autoDownload"
android:title="@string/auto_download_label"/>