Skip to content

Commit f4bbc55

Browse files
committed
Added basic UI for editing tags
1 parent 19e427b commit f4bbc55

File tree

5 files changed

+40
-1
lines changed

5 files changed

+40
-1
lines changed

app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import android.view.ViewGroup;
1010
import androidx.annotation.NonNull;
1111
import androidx.annotation.Nullable;
12+
import androidx.appcompat.app.AlertDialog;
1213
import androidx.appcompat.widget.Toolbar;
1314
import androidx.fragment.app.Fragment;
1415
import androidx.preference.ListPreference;
@@ -27,6 +28,7 @@
2728
import de.danoeh.antennapod.core.preferences.UserPreferences;
2829
import de.danoeh.antennapod.core.storage.DBReader;
2930
import de.danoeh.antennapod.core.storage.DBWriter;
31+
import de.danoeh.antennapod.databinding.EditTextDialogBinding;
3032
import de.danoeh.antennapod.dialog.AuthenticationDialog;
3133
import de.danoeh.antennapod.dialog.EpisodeFilterDialog;
3234
import de.danoeh.antennapod.dialog.FeedPreferenceSkipDialog;
@@ -39,6 +41,8 @@
3941

4042
import java.text.DecimalFormat;
4143
import java.text.DecimalFormatSymbols;
44+
import java.util.Arrays;
45+
import java.util.HashSet;
4246
import java.util.Locale;
4347

4448
import static de.danoeh.antennapod.core.feed.FeedPreferences.SPEED_USE_GLOBAL;
@@ -105,6 +109,7 @@ public static class FeedSettingsPreferenceFragment extends PreferenceFragmentCom
105109
private static final CharSequence PREF_CATEGORY_AUTO_DOWNLOAD = "autoDownloadCategory";
106110
private static final String PREF_FEED_PLAYBACK_SPEED = "feedPlaybackSpeed";
107111
private static final String PREF_AUTO_SKIP = "feedAutoSkip";
112+
private static final String PREF_TAGS = "tags";
108113
private static final DecimalFormat SPEED_FORMAT =
109114
new DecimalFormat("0.00", DecimalFormatSymbols.getInstance(Locale.US));
110115

@@ -159,6 +164,7 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
159164
setupEpisodeFilterPreference();
160165
setupPlaybackSpeedPreference();
161166
setupFeedAutoSkipPreference();
167+
setupTags();
162168

163169
updateAutoDeleteSummary();
164170
updateVolumeReductionValue();
@@ -394,6 +400,26 @@ private void updateAutoDownloadEnabled() {
394400
}
395401
}
396402

403+
private void setupTags() {
404+
findPreference(PREF_TAGS).setOnPreferenceClickListener(preference -> {
405+
EditTextDialogBinding alertViewBinding = EditTextDialogBinding.inflate(getLayoutInflater());
406+
alertViewBinding.urlEditText.setText(feed.getPreferences().getTagsAsString());
407+
new AlertDialog.Builder(getContext())
408+
.setView(alertViewBinding.getRoot())
409+
.setTitle(R.string.feed_folders_label)
410+
.setPositiveButton(android.R.string.ok, (d, input) -> {
411+
String foldersString = alertViewBinding.urlEditText.getText().toString();
412+
feedPreferences.getTags().clear();
413+
feedPreferences.getTags().addAll(new HashSet<>(Arrays.asList(
414+
foldersString.split(FeedPreferences.TAG_SEPARATOR))));
415+
feed.savePreferences();
416+
})
417+
.setNegativeButton(R.string.cancel_label, null)
418+
.show();
419+
return true;
420+
});
421+
}
422+
397423
private class ApplyToEpisodesDialog extends ConfirmationDialog {
398424
private final boolean autoDownload;
399425

app/src/main/res/xml/feed_settings.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@
1515
android:title="@string/authentication_label"
1616
android:summary="@string/authentication_descr"/>
1717

18+
<Preference
19+
android:key="tags"
20+
android:icon="?attr/ic_folder"
21+
android:title="@string/feed_folders_label"
22+
android:summary="@string/feed_folders_summary"/>
23+
1824
<ListPreference
1925
android:key="feedPlaybackSpeed"
2026
android:icon="?attr/ic_settings_speed"

core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,4 +261,8 @@ public int getFeedSkipEnding() {
261261
public Set<String> getTags() {
262262
return tags;
263263
}
264+
265+
public String getTagsAsString() {
266+
return TextUtils.join(TAG_SEPARATOR, tags);
267+
}
264268
}

core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,7 @@ public void setFeedPreferences(FeedPreferences prefs) {
445445
values.put(KEY_INCLUDE_FILTER, prefs.getFilter().getIncludeFilter());
446446
values.put(KEY_EXCLUDE_FILTER, prefs.getFilter().getExcludeFilter());
447447
values.put(KEY_FEED_PLAYBACK_SPEED, prefs.getFeedPlaybackSpeed());
448+
values.put(KEY_FEED_TAGS, prefs.getTagsAsString());
448449
values.put(KEY_FEED_SKIP_INTRO, prefs.getFeedSkipIntro());
449450
values.put(KEY_FEED_SKIP_ENDING, prefs.getFeedSkipEnding());
450451
db.update(TABLE_NAME_FEEDS, values, KEY_ID + "=?", new String[]{String.valueOf(prefs.getFeedID())});

core/src/main/res/values/strings.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -707,9 +707,11 @@
707707
<string name="apply_action">Apply action</string>
708708
<string name="play_chapter">Play chapter</string>
709709

710-
<!-- Feed information screen -->
710+
<!-- Feed settings/information screen -->
711711
<string name="authentication_label">Authentication</string>
712712
<string name="authentication_descr">Change your username and password for this podcast and its episodes.</string>
713+
<string name="feed_folders_label">Folders</string>
714+
<string name="feed_folders_summary">Change the folders in which this podcast is displayed.</string>
713715
<string name="auto_download_settings_label">Auto Download Settings</string>
714716
<string name="episode_filters_label">Episode Filter</string>
715717
<string name="episode_filters_description">List of terms used to decide if an episode should be included or excluded when auto downloading</string>

0 commit comments

Comments
 (0)