2424import org .quantumbadger .redreader .R ;
2525import org .quantumbadger .redreader .common .Constants ;
2626import org .quantumbadger .redreader .common .General ;
27+ import org .quantumbadger .redreader .common .PrefsUtility ;
2728import org .quantumbadger .redreader .common .StringUtils ;
2829import org .quantumbadger .redreader .reddit .PostSort ;
2930import org .quantumbadger .redreader .reddit .kthings .RedditIdAndType ;
@@ -55,6 +56,17 @@ public static SubredditPostListURL getAll() {
5556 return new SubredditPostListURL (Type .ALL , null , null , null , null , null );
5657 }
5758
59+ public static SubredditPostListURL getPinned () {
60+ final String pinned = PrefsUtility .pref_pinned_subreddits_multireddit ();
61+ return new SubredditPostListURL (
62+ Type .PINNED ,
63+ pinned ,
64+ null ,
65+ null ,
66+ null ,
67+ null );
68+ }
69+
5870 public static RedditURLParser .RedditURL getSubreddit (final String subreddit ) throws
5971 InvalidSubredditNameException {
6072 return getSubreddit (new SubredditCanonicalId (subreddit ));
@@ -69,7 +81,7 @@ public static RedditURLParser.RedditURL getSubreddit(final SubredditCanonicalId
6981 }
7082
7183 public enum Type {
72- FRONTPAGE , ALL , SUBREDDIT , SUBREDDIT_COMBINATION , ALL_SUBTRACTION , POPULAR , RANDOM
84+ FRONTPAGE , ALL , SUBREDDIT , SUBREDDIT_COMBINATION , ALL_SUBTRACTION , POPULAR , RANDOM , PINNED
7385 }
7486
7587 @ NonNull public final Type type ;
@@ -137,6 +149,7 @@ public Uri generateJsonUri() {
137149 case SUBREDDIT_COMBINATION :
138150 case ALL_SUBTRACTION :
139151 case RANDOM :
152+ case PINNED :
140153 builder .encodedPath ("/r/" );
141154 builder .appendPath (subreddit );
142155 break ;
@@ -329,9 +342,14 @@ public static SubredditPostListURL parse(final Uri uri) {
329342
330343 } else if (subreddit .matches ("\\ w+(\\ +[\\ w\\ .]+)+" )) {
331344
345+ final Type type =
346+ subreddit .equals (PrefsUtility .pref_pinned_subreddits_multireddit ())
347+ ? Type .PINNED
348+ : Type .SUBREDDIT_COMBINATION ;
349+
332350 if (pathSegments .length == 2 ) {
333351 return new SubredditPostListURL (
334- Type . SUBREDDIT_COMBINATION ,
352+ type ,
335353 subreddit ,
336354 null ,
337355 limit ,
@@ -340,7 +358,7 @@ public static SubredditPostListURL parse(final Uri uri) {
340358
341359 } else if (order != null ) {
342360 return new SubredditPostListURL (
343- Type . SUBREDDIT_COMBINATION ,
361+ type ,
344362 subreddit ,
345363 order ,
346364 limit ,
@@ -444,6 +462,9 @@ public String humanReadableName(final Context context, final boolean shorter) {
444462 case ALL_SUBTRACTION :
445463 return subreddit ;
446464
465+ case PINNED :
466+ return context .getString (R .string .mainmenu_pinned );
467+
447468 default :
448469 return super .humanReadableName (context , shorter );
449470 }
0 commit comments