Skip to content

Commit

Permalink
Multireddit viewing support
Browse files Browse the repository at this point in the history
  • Loading branch information
QuantumBadger committed Aug 6, 2016
1 parent 165ff7a commit 0354799
Show file tree
Hide file tree
Showing 34 changed files with 1,501 additions and 555 deletions.
4 changes: 4 additions & 0 deletions assets/changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
74/1.9.6
Multireddit viewing support
Ability to view custom user pages

73/1.9.5.1
Comment swipe actions
Ability to search comments (thanks to cpalasanu)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,13 @@
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.Spinner;
import org.quantumbadger.redreader.R;
import org.quantumbadger.redreader.account.RedditAccount;
import org.quantumbadger.redreader.account.RedditAccountChangeListener;
Expand All @@ -52,6 +51,7 @@
import org.quantumbadger.redreader.fragments.SessionListDialog;
import org.quantumbadger.redreader.listingcontrollers.CommentListingController;
import org.quantumbadger.redreader.listingcontrollers.PostListingController;
import org.quantumbadger.redreader.reddit.PostSort;
import org.quantumbadger.redreader.reddit.api.RedditSubredditSubscriptionManager;
import org.quantumbadger.redreader.reddit.prepared.RedditPreparedPost;
import org.quantumbadger.redreader.reddit.things.RedditSubreddit;
Expand Down Expand Up @@ -227,7 +227,8 @@ private void addSubscriptionListener() {
.addListener(this);
}

public void onSelected(final @MainMenuFragment.MainMenuAction int type, final String name) {
@Override
public void onSelected(final @MainMenuFragment.MainMenuAction int type) {

final String username = RedditAccountManager.getInstance(this).getDefaultAccount().username;

Expand Down Expand Up @@ -268,45 +269,66 @@ public void onSelected(final @MainMenuFragment.MainMenuAction int type, final St
case MainMenuFragment.MENU_MENU_ACTION_CUSTOM: {

final AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this);
final EditText editText = (EditText) getLayoutInflater().inflate(R.layout.dialog_editbox, null);
final View root = getLayoutInflater().inflate(R.layout.dialog_mainmenu_custom, null);

editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
final Spinner destinationType = (Spinner)root.findViewById(R.id.dialog_mainmenu_custom_type);
final EditText editText = (EditText)root.findViewById(R.id.dialog_mainmenu_custom_value);

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
final String[] typeReturnValues
= getResources().getStringArray(R.array.mainmenu_custom_destination_type_return);

@Override
public void afterTextChanged(Editable s) {
if (s.toString().contains(" ")) {
String result = s.toString().replaceAll(" ", "");

editText.setText(result);
editText.setSelection(result.length());
}
}
});

alertBuilder.setView(editText);
alertBuilder.setTitle(R.string.mainmenu_custom);
alertBuilder.setView(root);

alertBuilder.setPositiveButton(R.string.dialog_go, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

final String subredditInput = editText.getText().toString().trim().replace(" ", "");
final String typeName = typeReturnValues[destinationType.getSelectedItemPosition()];

switch(typeName) {
case "subreddit": {

final String subredditInput = editText.getText().toString().trim().replace(" ", "");

try {
final String normalizedName = RedditSubreddit.stripRPrefix(subredditInput);
final RedditURLParser.RedditURL redditURL = SubredditPostListURL.getSubreddit(normalizedName);
if(redditURL == null || redditURL.pathType() != RedditURLParser.SUBREDDIT_POST_LISTING_URL) {
General.quickToast(MainActivity.this, R.string.mainmenu_custom_invalid_name);
} else {
onSelected(redditURL.asSubredditPostListURL());
}
} catch(RedditSubreddit.InvalidSubredditNameException e){
General.quickToast(MainActivity.this, R.string.mainmenu_custom_invalid_name);
}
break;
}

case "user":

String userInput = editText.getText().toString().trim().replace(" ", "");

if(!userInput.startsWith("/u/")
&& !userInput.startsWith("/user/")) {

if(userInput.startsWith("u/")
|| userInput.startsWith("user/")) {

userInput = "/" + userInput;

} else {
userInput = "/u/" + userInput;
}
}

LinkHandler.onLinkClicked(MainActivity.this, userInput);

break;

try {
final String normalizedName = RedditSubreddit.stripRPrefix(subredditInput);
final RedditURLParser.RedditURL redditURL = SubredditPostListURL.getSubreddit(normalizedName);
if(redditURL == null || redditURL.pathType() != RedditURLParser.SUBREDDIT_POST_LISTING_URL) {
General.quickToast(MainActivity.this, R.string.mainmenu_custom_invalid_name);
} else {
onSelected(redditURL.asSubredditPostListURL());
case "url": {
LinkHandler.onLinkClicked(MainActivity.this, editText.getText().toString().trim());
break;
}
} catch(RedditSubreddit.InvalidSubredditNameException e){
General.quickToast(MainActivity.this, R.string.mainmenu_custom_invalid_name);
}
}
});
Expand Down Expand Up @@ -628,7 +650,7 @@ public void onSubmitPost() {
startActivity(intent);
}

public void onSortSelected(final PostListingController.Sort order) {
public void onSortSelected(final PostSort order) {
postListingController.setSort(order);
requestRefresh(RefreshableFragment.POSTS, false);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
import org.quantumbadger.redreader.common.PrefsUtility;
import org.quantumbadger.redreader.common.UnexpectedInternalStateException;
import org.quantumbadger.redreader.fragments.AccountListDialog;
import org.quantumbadger.redreader.listingcontrollers.PostListingController;
import org.quantumbadger.redreader.reddit.PostSort;
import org.quantumbadger.redreader.reddit.api.RedditSubredditSubscriptionManager;
import org.quantumbadger.redreader.reddit.url.PostCommentListingURL;
import org.quantumbadger.redreader.settings.SettingsActivity;
Expand Down Expand Up @@ -485,19 +485,19 @@ private static void addAllPostSorts(final AppCompatActivity activity, final Menu
sortPosts.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}

addSort(activity, sortPosts, R.string.sort_posts_hot, PostListingController.Sort.HOT);
addSort(activity, sortPosts, R.string.sort_posts_new, PostListingController.Sort.NEW);
addSort(activity, sortPosts, R.string.sort_posts_rising, PostListingController.Sort.RISING);
addSort(activity, sortPosts, R.string.sort_posts_controversial, PostListingController.Sort.CONTROVERSIAL);
addSort(activity, sortPosts, R.string.sort_posts_hot, PostSort.HOT);
addSort(activity, sortPosts, R.string.sort_posts_new, PostSort.NEW);
addSort(activity, sortPosts, R.string.sort_posts_rising, PostSort.RISING);
addSort(activity, sortPosts, R.string.sort_posts_controversial, PostSort.CONTROVERSIAL);

final SubMenu sortPostsTop = sortPosts.addSubMenu(R.string.sort_posts_top);

addSort(activity, sortPostsTop, R.string.sort_posts_top_hour, PostListingController.Sort.TOP_HOUR);
addSort(activity, sortPostsTop, R.string.sort_posts_top_today, PostListingController.Sort.TOP_DAY);
addSort(activity, sortPostsTop, R.string.sort_posts_top_week, PostListingController.Sort.TOP_WEEK);
addSort(activity, sortPostsTop, R.string.sort_posts_top_month, PostListingController.Sort.TOP_MONTH);
addSort(activity, sortPostsTop, R.string.sort_posts_top_year, PostListingController.Sort.TOP_YEAR);
addSort(activity, sortPostsTop, R.string.sort_posts_top_all, PostListingController.Sort.TOP_ALL);
addSort(activity, sortPostsTop, R.string.sort_posts_top_hour, PostSort.TOP_HOUR);
addSort(activity, sortPostsTop, R.string.sort_posts_top_today, PostSort.TOP_DAY);
addSort(activity, sortPostsTop, R.string.sort_posts_top_week, PostSort.TOP_WEEK);
addSort(activity, sortPostsTop, R.string.sort_posts_top_month, PostSort.TOP_MONTH);
addSort(activity, sortPostsTop, R.string.sort_posts_top_year, PostSort.TOP_YEAR);
addSort(activity, sortPostsTop, R.string.sort_posts_top_all, PostSort.TOP_ALL);
}

private static void addAllSearchSorts(final AppCompatActivity activity, final Menu menu, final boolean icon) {
Expand All @@ -509,14 +509,14 @@ private static void addAllSearchSorts(final AppCompatActivity activity, final Me
sortPosts.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}

addSort(activity, sortPosts, R.string.sort_posts_relevance, PostListingController.Sort.RELEVANCE);
addSort(activity, sortPosts, R.string.sort_posts_new, PostListingController.Sort.NEW);
addSort(activity, sortPosts, R.string.sort_posts_hot, PostListingController.Sort.HOT);
addSort(activity, sortPosts, R.string.sort_posts_top, PostListingController.Sort.TOP);
addSort(activity, sortPosts, R.string.sort_posts_comments, PostListingController.Sort.COMMENTS);
addSort(activity, sortPosts, R.string.sort_posts_relevance, PostSort.RELEVANCE);
addSort(activity, sortPosts, R.string.sort_posts_new, PostSort.NEW);
addSort(activity, sortPosts, R.string.sort_posts_hot, PostSort.HOT);
addSort(activity, sortPosts, R.string.sort_posts_top, PostSort.TOP);
addSort(activity, sortPosts, R.string.sort_posts_comments, PostSort.COMMENTS);
}

private static void addSort(final AppCompatActivity activity, final Menu menu, final int name, final PostListingController.Sort order) {
private static void addSort(final AppCompatActivity activity, final Menu menu, final int name, final PostSort order) {

menu.add(activity.getString(name)).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
public boolean onMenuItemClick(final MenuItem item) {
Expand Down Expand Up @@ -568,7 +568,7 @@ public interface OptionsMenuPostsListener extends OptionsMenuListener {

void onSubmitPost();

void onSortSelected(PostListingController.Sort order);
void onSortSelected(PostSort order);

void onSearchPosts();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import org.quantumbadger.redreader.fragments.PostListingFragment;
import org.quantumbadger.redreader.fragments.SessionListDialog;
import org.quantumbadger.redreader.listingcontrollers.PostListingController;
import org.quantumbadger.redreader.reddit.PostSort;
import org.quantumbadger.redreader.reddit.api.RedditSubredditSubscriptionManager;
import org.quantumbadger.redreader.reddit.prepared.RedditPreparedPost;
import org.quantumbadger.redreader.reddit.things.RedditSubreddit;
Expand Down Expand Up @@ -94,7 +95,7 @@ public void onCreate(final Bundle savedInstanceState) {
}

if(savedInstanceState.containsKey(SAVEDSTATE_SORT)) {
controller.setSort(PostListingController.Sort.valueOf(
controller.setSort(PostSort.valueOf(
savedInstanceState.getString(SAVEDSTATE_SORT)));
}

Expand Down Expand Up @@ -124,7 +125,7 @@ protected void onSaveInstanceState(final Bundle outState) {
outState.putString(SAVEDSTATE_SESSION, session.toString());
}

final PostListingController.Sort sort = controller.getSort();
final PostSort sort = controller.getSort();
if(sort != null) {
outState.putString(SAVEDSTATE_SORT, sort.name());
}
Expand Down Expand Up @@ -247,7 +248,7 @@ public void onSubmitPost() {
startActivity(intent);
}

public void onSortSelected(final PostListingController.Sort order) {
public void onSortSelected(final PostSort order) {
controller.setSort(order);
requestRefresh(RefreshableFragment.POSTS, false);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,8 +195,9 @@ public void appendToGroup(final int group, final Item item) {

mItems[group].add(item);

item.mCurrentlyHidden = false;
notifyItemInserted(position);
if(!item.mCurrentlyHidden) {
notifyItemInserted(position);
}
}

public void appendToGroup(final int group, final Collection<Item> items) {
Expand Down

0 comments on commit 0354799

Please sign in to comment.