Skip to content

Commit 9ca7c1f

Browse files
committed
searchfilters: rework getTranslatedFilterString() method
1 parent ca68c32 commit 9ca7c1f

3 files changed

Lines changed: 297 additions & 42 deletions

File tree

app/src/main/java/org/schabi/newpipe/util/ServiceHelper.java

Lines changed: 176 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,8 @@
11
package org.schabi.newpipe.util;
22

3-
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
4-
53
import android.content.Context;
64
import android.content.SharedPreferences;
75

8-
import androidx.annotation.DrawableRes;
9-
import androidx.annotation.NonNull;
10-
import androidx.annotation.Nullable;
11-
import androidx.annotation.StringRes;
12-
import androidx.preference.PreferenceManager;
13-
146
import com.grack.nanojson.JsonObject;
157
import com.grack.nanojson.JsonParser;
168
import com.grack.nanojson.JsonParserException;
@@ -20,15 +12,181 @@
2012
import org.schabi.newpipe.extractor.ServiceList;
2113
import org.schabi.newpipe.extractor.StreamingService;
2214
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
15+
import org.schabi.newpipe.extractor.search.filter.LibraryStringIds;
2316
import org.schabi.newpipe.extractor.services.peertube.PeertubeInstance;
2417

18+
import java.util.EnumMap;
19+
import java.util.Map;
2520
import java.util.Optional;
2621
import java.util.concurrent.TimeUnit;
2722

23+
import androidx.annotation.DrawableRes;
24+
import androidx.annotation.NonNull;
25+
import androidx.annotation.Nullable;
26+
import androidx.annotation.StringRes;
27+
import androidx.preference.PreferenceManager;
28+
29+
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
30+
2831
public final class ServiceHelper {
2932
private static final StreamingService DEFAULT_FALLBACK_SERVICE = ServiceList.YouTube;
33+
/**
34+
* Map all available {@link LibraryStringIds} ids to resource ids available in strings.xml.
35+
*/
36+
private static final Map<LibraryStringIds, Integer> LIBRARY_STRING_ID_TO_RES_ID_MAP =
37+
new EnumMap<>(LibraryStringIds.class);
3038

31-
private ServiceHelper() { }
39+
static {
40+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_10_30_MIN,
41+
R.string.search_filters_10_30_min);
42+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_2_10_MIN,
43+
R.string.search_filters_2_10_min);
44+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_360,
45+
R.string.search_filters_360);
46+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_3D,
47+
R.string.search_filters_3d);
48+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_4_20_MIN,
49+
R.string.search_filters_4_20_min);
50+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_4K,
51+
R.string.search_filters_4k);
52+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_ADDED,
53+
R.string.search_filters_added);
54+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_ALBUMS,
55+
R.string.albums);
56+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_ANY_TIME,
57+
R.string.search_filters_any_time);
58+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_ALL,
59+
R.string.all);
60+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_ARTISTS_AND_LABELS,
61+
R.string.search_filters_artists_and_labels);
62+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_ASCENDING,
63+
R.string.search_filters_ascending);
64+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_CCOMMONS,
65+
R.string.search_filters_ccommons);
66+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_CHANNELS,
67+
R.string.channels);
68+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_CONFERENCES,
69+
R.string.conferences);
70+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_CREATION_DATE,
71+
R.string.search_filters_creation_date);
72+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_DATE,
73+
R.string.search_filters_date);
74+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_DURATION,
75+
R.string.search_filters_duration);
76+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_EVENTS,
77+
R.string.events);
78+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_FEATURES,
79+
R.string.search_filters_features);
80+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_GREATER_30_MIN,
81+
R.string.search_filters_greater_30_min);
82+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_HD,
83+
R.string.search_filters_hd);
84+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_HDR,
85+
R.string.search_filters_hdr);
86+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_KIND,
87+
R.string.search_filters_kind);
88+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LAST_30_DAYS,
89+
R.string.search_filters_last_30_days);
90+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LAST_7_DAYS,
91+
R.string.search_filters_last_7_days);
92+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LAST_HOUR,
93+
R.string.search_filters_last_hour);
94+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LAST_YEAR,
95+
R.string.search_filters_last_year);
96+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LENGTH,
97+
R.string.search_filters_length);
98+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LESS_2_MIN,
99+
R.string.search_filters_less_2_min);
100+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LICENSE,
101+
R.string.search_filters_license);
102+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LIKES,
103+
R.string.detail_likes_img_view_description);
104+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LIVE,
105+
R.string.duration_live);
106+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LOCATION,
107+
R.string.search_filters_location);
108+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LONG_GREATER_10_MIN,
109+
R.string.search_filters_long_greater_10_min);
110+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_MEDIUM_4_10_MIN,
111+
R.string.search_filters_medium_4_10_min);
112+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_THIS_MONTH,
113+
R.string.search_filters_this_month);
114+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_ARTISTS,
115+
R.string.artists);
116+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_SONGS,
117+
R.string.songs);
118+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_NAME,
119+
R.string.name);
120+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_NO,
121+
R.string.search_filters_no);
122+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_OVER_20_MIN,
123+
R.string.search_filters_over_20_min);
124+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PAST_DAY,
125+
R.string.search_filters_past_day);
126+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PAST_HOUR,
127+
R.string.search_filters_past_hour);
128+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PAST_MONTH,
129+
R.string.search_filters_past_month);
130+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PAST_WEEK,
131+
R.string.search_filters_past_week);
132+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PAST_YEAR,
133+
R.string.search_filters_past_year);
134+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PLAYLISTS,
135+
R.string.playlists);
136+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PUBLISH_DATE,
137+
R.string.search_filters_publish_date);
138+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PUBLISHED,
139+
R.string.search_filters_published);
140+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PURCHASED,
141+
R.string.search_filters_published);
142+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_RATING,
143+
R.string.search_filters_rating);
144+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_RELEVANCE,
145+
R.string.search_filters_relevance);
146+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_SENSITIVE,
147+
R.string.search_filters_sensitive);
148+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_SEPIASEARCH,
149+
R.string.search_filters_sepiasearch);
150+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_SHORT_LESS_4_MIN,
151+
R.string.search_filters_short_less_4_min);
152+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_SORT_BY,
153+
R.string.search_filters_sort_by);
154+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_SORT_ORDER,
155+
R.string.search_filters_sort_order);
156+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_SUBTITLES,
157+
R.string.search_filters_subtitles);
158+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_TO_MODIFY_COMMERCIALLY,
159+
R.string.search_filters_to_modify_commercially);
160+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_TODAY,
161+
R.string.search_filters_today);
162+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_TRACKS,
163+
R.string.tracks);
164+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_UNDER_4_MIN,
165+
R.string.search_filters_under_4_min);
166+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_UPLOAD_DATE,
167+
R.string.search_filters_upload_date);
168+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_USERS,
169+
R.string.users);
170+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_VIDEOS,
171+
R.string.videos_string);
172+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_VIEWS,
173+
R.string.search_filters_views);
174+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_VOD_VIDEOS,
175+
R.string.search_filters_vod_videos);
176+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_VR180,
177+
R.string.search_filters_vr180);
178+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_THIS_WEEK,
179+
R.string.search_filters_this_week);
180+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_THIS_YEAR,
181+
R.string.search_filters_this_year);
182+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_YES,
183+
R.string.search_filters_yes);
184+
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_YOUTUBE_MUSIC,
185+
R.string.search_filters_youtube_music);
186+
}
187+
188+
private ServiceHelper() {
189+
}
32190

33191
@DrawableRes
34192
public static int getIcon(final int serviceId) {
@@ -48,38 +206,6 @@ public static int getIcon(final int serviceId) {
48206
}
49207
}
50208

51-
public static String getTranslatedFilterString(final String filter, final Context c) {
52-
switch (filter) {
53-
case "all":
54-
return c.getString(R.string.all);
55-
case "videos":
56-
case "sepia_videos":
57-
case "music_videos":
58-
return c.getString(R.string.videos_string);
59-
case "channels":
60-
return c.getString(R.string.channels);
61-
case "playlists":
62-
case "music_playlists":
63-
return c.getString(R.string.playlists);
64-
case "tracks":
65-
return c.getString(R.string.tracks);
66-
case "users":
67-
return c.getString(R.string.users);
68-
case "conferences":
69-
return c.getString(R.string.conferences);
70-
case "events":
71-
return c.getString(R.string.events);
72-
case "music_songs":
73-
return c.getString(R.string.songs);
74-
case "music_albums":
75-
return c.getString(R.string.albums);
76-
case "music_artists":
77-
return c.getString(R.string.artists);
78-
default:
79-
return filter;
80-
}
81-
}
82-
83209
/**
84210
* Get a resource string with instructions for importing subscriptions for each service.
85211
*
@@ -197,4 +323,13 @@ public static void initServices(final Context context) {
197323
initService(context, s.getServiceId());
198324
}
199325
}
326+
327+
public static String getTranslatedFilterString(final LibraryStringIds stringId,
328+
final Context context) {
329+
if (LIBRARY_STRING_ID_TO_RES_ID_MAP.containsKey(stringId)) {
330+
return context.getString(LIBRARY_STRING_ID_TO_RES_ID_MAP.get(stringId));
331+
} else {
332+
return stringId.toString();
333+
}
334+
}
200335
}

app/src/main/res/values-de/strings.xml

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -724,4 +724,64 @@
724724
<string name="faq_title">Häufig gestellte Fragen</string>
725725
<string name="faq_description">Wenn du Probleme bei der Verwendung der App hast, lies bitte die Antworten auf häufig gestellte Fragen!</string>
726726
<string name="sort">Sortieren</string>
727-
</resources>
727+
<string name="filter_search_sort_filters">Sortierfilter</string>
728+
<string name="filter_search_content_filters">Inhaltsfilter</string>
729+
<string name="search_filters_10_30_min">10–30 min</string>
730+
<string name="search_filters_2_10_min">2–10 min</string>
731+
<string name="search_filters_360">360°</string>
732+
<string name="search_filters_3d">3D</string>
733+
<string name="search_filters_4_20_min">4–20 min</string>
734+
<string name="search_filters_4k">4K</string>
735+
<string name="search_filters_added">Hinzugefügt</string>
736+
<string name="search_filters_artists_and_labels">Künstler &amp; Labels</string>
737+
<string name="search_filters_any_time">Jederzeit</string>
738+
<string name="search_filters_ascending">Aufsteigend</string>
739+
<string name="search_filters_ccommons">Creative Commons</string>
740+
<string name="search_filters_creation_date">Erstellungsdatum</string>
741+
<string name="search_filters_date">Datum</string>
742+
<string name="search_filters_duration">Dauer</string>
743+
<string name="search_filters_features">Eigenschaften</string>
744+
<string name="search_filters_greater_30_min">&gt; 30 min</string>
745+
<string name="search_filters_hd">HD</string>
746+
<string name="search_filters_hdr">HDR</string>
747+
<string name="search_filters_kind">Art</string>
748+
<string name="search_filters_last_30_days">Letzte 30 Tage</string>
749+
<string name="search_filters_last_7_days">Letzte 7 Tage</string>
750+
<string name="search_filters_last_hour">Letzte Stunde</string>
751+
<string name="search_filters_last_year">Letztes Jahr</string>
752+
<string name="search_filters_length">Länge</string>
753+
<string name="search_filters_less_2_min">&lt; 2 min</string>
754+
<string name="search_filters_license">Lizenz</string>
755+
<string name="search_filters_location">Standort</string>
756+
<string name="search_filters_long_greater_10_min">Lang (&gt; 10 min)</string>
757+
<string name="search_filters_medium_4_10_min">Mittel (4–10 min)</string>
758+
<string name="search_filters_no">Nein</string>
759+
<string name="search_filters_over_20_min">Über 20 min</string>
760+
<string name="search_filters_past_day">Vorheriger Tag</string>
761+
<string name="search_filters_past_hour">Vorige Stunde</string>
762+
<string name="search_filters_past_month">Vergangener Monat</string>
763+
<string name="search_filters_past_week">Vergangene Woche</string>
764+
<string name="search_filters_past_year">Vergangenes Jahr</string>
765+
<string name="search_filters_publish_date">Erscheinungsdatum</string>
766+
<string name="search_filters_published">Veröffentlicht</string>
767+
<string name="search_filters_purchased">Gekauft</string>
768+
<string name="search_filters_rating">Bewertung</string>
769+
<string name="search_filters_relevance">Relevanz</string>
770+
<string name="search_filters_sensitive">Sensibler Inhalt</string>
771+
<string name="search_filters_sepiasearch">SepiaSuche</string>
772+
<string name="search_filters_short_less_4_min">Kurz (&lt; 4 min)</string>
773+
<string name="search_filters_sort_by">Sortiert nach</string>
774+
<string name="search_filters_sort_order">Sortierung</string>
775+
<string name="search_filters_subtitles">Untertitel</string>
776+
<string name="search_filters_to_modify_commercially">Gewerblich nutzbar</string>
777+
<string name="search_filters_today">Heute</string>
778+
<string name="search_filters_under_4_min">Unter 4 min</string>
779+
<string name="search_filters_upload_date">Hochladedatum</string>
780+
<string name="search_filters_views">Aufrufe</string>
781+
<string name="search_filters_vod_videos">VOD-Videos</string>
782+
<string name="search_filters_vr180">VR180</string>
783+
<string name="search_filters_this_month">Dieser Monat</string>
784+
<string name="search_filters_this_week">Diese Woche</string>
785+
<string name="search_filters_this_year">Dieses Jahr</string>
786+
<string name="search_filters_yes">Ja</string>
787+
</resources>

0 commit comments

Comments
 (0)