From 4f19bd83aa8d2500d825ce63ae8770325b4a44e9 Mon Sep 17 00:00:00 2001 From: Alex Ning Date: Sun, 4 Oct 2020 11:24:50 +0800 Subject: Add two options: go to user and go to subreddit in FABMoreOptionsBottomSheetFragment. --- .../infinityforreddit/API/RedditAPI.java | 6 +++ .../infinityforreddit/Activity/MainActivity.java | 63 ++++++++++++++++++++++ .../Activity/ViewSubredditDetailActivity.java | 59 ++++++++++++++++++++ .../Adapter/PostRecyclerViewAdapter.java | 2 - .../FABMoreOptionsBottomSheetFragment.java | 24 +++++++++ app/src/main/res/drawable-night/ic_random_24dp.xml | 24 +++++++++ .../main/res/drawable-night/ic_subreddit_24dp.xml | 9 ++++ app/src/main/res/drawable-night/ic_user_24dp.xml | 9 ++++ app/src/main/res/drawable/ic_random_24dp.xml | 24 +++++++++ app/src/main/res/drawable/ic_subreddit_24dp.xml | 9 ++++ app/src/main/res/drawable/ic_user_24dp.xml | 9 ++++ .../res/layout/dialog_go_to_thing_edit_text.xml | 10 ++++ .../fragment_fab_more_options_bottom_sheet.xml | 57 ++++++++++++++++++++ app/src/main/res/values/strings.xml | 9 ++++ 14 files changed, 312 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/drawable-night/ic_random_24dp.xml create mode 100644 app/src/main/res/drawable-night/ic_subreddit_24dp.xml create mode 100644 app/src/main/res/drawable-night/ic_user_24dp.xml create mode 100644 app/src/main/res/drawable/ic_random_24dp.xml create mode 100644 app/src/main/res/drawable/ic_subreddit_24dp.xml create mode 100644 app/src/main/res/drawable/ic_user_24dp.xml create mode 100644 app/src/main/res/layout/dialog_go_to_thing_edit_text.xml diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/API/RedditAPI.java b/app/src/main/java/ml/docilealligator/infinityforreddit/API/RedditAPI.java index db5798ec..ae2756e0 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/API/RedditAPI.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/API/RedditAPI.java @@ -330,4 +330,10 @@ public interface RedditAPI { @FormUrlEncoded @POST("api/v2/gold/gild") Call awardThing(@HeaderMap Map headers, @FieldMap Map params); + + @GET("/r/random/comments.json?limit=1&raw_json=1") + Call getRandomPost(); + + @GET("/r/randnsfw/new?sort=new&t=all&limit=1&raw_json=1") + Call getRandomNSFWPost(); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java index c98a5e84..96851532 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java @@ -1,6 +1,7 @@ package ml.docilealligator.infinityforreddit.Activity; import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.ColorStateList; @@ -13,6 +14,8 @@ import android.view.MenuItem; import android.view.View; import android.view.Window; import android.view.WindowManager; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; @@ -1158,6 +1161,66 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb Intent intent = new Intent(this, SearchActivity.class); startActivity(intent); break; + case FABMoreOptionsBottomSheetFragment.FAB_OPTION_GO_TO_SUBREDDIT: { + EditText thingEditText = (EditText) getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, null); + thingEditText.requestFocus(); + InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm != null) { + imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); + } + new MaterialAlertDialogBuilder(this, R.style.MaterialAlertDialogTheme) + .setTitle(R.string.go_to_user) + .setView(thingEditText) + .setPositiveButton(R.string.ok, (dialogInterface, i) + -> { + if (imm != null) { + imm.hideSoftInputFromWindow(thingEditText.getWindowToken(), 0); + } + Intent subredditIntent = new Intent(this, ViewSubredditDetailActivity.class); + subredditIntent.putExtra(ViewSubredditDetailActivity.EXTRA_SUBREDDIT_NAME_KEY, thingEditText.getText().toString()); + startActivity(subredditIntent); + }) + .setNegativeButton(R.string.cancel, null) + .setOnDismissListener(dialogInterface -> { + if (imm != null) { + imm.hideSoftInputFromWindow(thingEditText.getWindowToken(), 0); + } + }) + .show(); + break; + } + case FABMoreOptionsBottomSheetFragment.FAB_OPTION_GO_TO_USER: { + EditText thingEditText = (EditText) getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, null); + thingEditText.requestFocus(); + InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm != null) { + imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); + } + new MaterialAlertDialogBuilder(this, R.style.MaterialAlertDialogTheme) + .setTitle(R.string.go_to_user) + .setView(thingEditText) + .setPositiveButton(R.string.ok, (dialogInterface, i) + -> { + if (imm != null) { + imm.hideSoftInputFromWindow(thingEditText.getWindowToken(), 0); + } + Intent userIntent = new Intent(this, ViewUserDetailActivity.class); + userIntent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, thingEditText.getText().toString()); + startActivity(userIntent); + }) + .setNegativeButton(R.string.cancel, null) + .setOnDismissListener(dialogInterface -> { + if (imm != null) { + imm.hideSoftInputFromWindow(thingEditText.getWindowToken(), 0); + } + }) + .show(); + break; + } + case FABMoreOptionsBottomSheetFragment.FAB_RANDOM: { + + break; + } } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewSubredditDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewSubredditDetailActivity.java index a5c7b9a7..3b043b9e 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewSubredditDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewSubredditDetailActivity.java @@ -1,5 +1,6 @@ package ml.docilealligator.infinityforreddit.Activity; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.ColorStateList; @@ -12,6 +13,8 @@ import android.view.MenuItem; import android.view.View; import android.view.Window; import android.view.WindowManager; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -1065,6 +1068,62 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp intent.putExtra(SearchActivity.EXTRA_SUBREDDIT_NAME, subredditName); startActivity(intent); break; + case FABMoreOptionsBottomSheetFragment.FAB_OPTION_GO_TO_SUBREDDIT: { + EditText thingEditText = (EditText) getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, null); + thingEditText.requestFocus(); + InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm != null) { + imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); + } + new MaterialAlertDialogBuilder(this, R.style.MaterialAlertDialogTheme) + .setTitle(R.string.go_to_user) + .setView(thingEditText) + .setPositiveButton(R.string.ok, (dialogInterface, i) + -> { + if (imm != null) { + imm.hideSoftInputFromWindow(thingEditText.getWindowToken(), 0); + } + Intent subredditIntent = new Intent(this, ViewSubredditDetailActivity.class); + subredditIntent.putExtra(ViewSubredditDetailActivity.EXTRA_SUBREDDIT_NAME_KEY, thingEditText.getText().toString()); + startActivity(subredditIntent); + }) + .setNegativeButton(R.string.cancel, null) + .setOnDismissListener(dialogInterface -> { + if (imm != null) { + imm.hideSoftInputFromWindow(thingEditText.getWindowToken(), 0); + } + }) + .show(); + break; + } + case FABMoreOptionsBottomSheetFragment.FAB_OPTION_GO_TO_USER: { + EditText thingEditText = (EditText) getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, null); + thingEditText.requestFocus(); + InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm != null) { + imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); + } + new MaterialAlertDialogBuilder(this, R.style.MaterialAlertDialogTheme) + .setTitle(R.string.go_to_user) + .setView(thingEditText) + .setPositiveButton(R.string.ok, (dialogInterface, i) + -> { + if (imm != null) { + imm.hideSoftInputFromWindow(thingEditText.getWindowToken(), 0); + } + Intent userIntent = new Intent(this, ViewUserDetailActivity.class); + userIntent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, thingEditText.getText().toString()); + startActivity(userIntent); + }) + .setNegativeButton(R.string.cancel, null) + .setOnDismissListener(dialogInterface -> { + if (imm != null) { + imm.hideSoftInputFromWindow(thingEditText.getWindowToken(), 0); + } + }) + .show(); + break; + } } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/PostRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/PostRecyclerViewAdapter.java index db43a4c5..1cbdc75e 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/PostRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/PostRecyclerViewAdapter.java @@ -587,7 +587,6 @@ public class PostRecyclerViewAdapter extends PagedListAdapter { + activity.fabOptionSelected(FAB_OPTION_GO_TO_SUBREDDIT); + dismiss(); + }); + + goToUserTextView.setOnClickListener(view -> { + activity.fabOptionSelected(FAB_OPTION_GO_TO_USER); + dismiss(); + }); + + randomTextView.setOnClickListener(view -> { + activity.fabOptionSelected(FAB_RANDOM); + dismiss(); + }); + return rootView; } diff --git a/app/src/main/res/drawable-night/ic_random_24dp.xml b/app/src/main/res/drawable-night/ic_random_24dp.xml new file mode 100644 index 00000000..bd0bc639 --- /dev/null +++ b/app/src/main/res/drawable-night/ic_random_24dp.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/app/src/main/res/drawable-night/ic_subreddit_24dp.xml b/app/src/main/res/drawable-night/ic_subreddit_24dp.xml new file mode 100644 index 00000000..505f8067 --- /dev/null +++ b/app/src/main/res/drawable-night/ic_subreddit_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable-night/ic_user_24dp.xml b/app/src/main/res/drawable-night/ic_user_24dp.xml new file mode 100644 index 00000000..4b963261 --- /dev/null +++ b/app/src/main/res/drawable-night/ic_user_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_random_24dp.xml b/app/src/main/res/drawable/ic_random_24dp.xml new file mode 100644 index 00000000..bd0bc639 --- /dev/null +++ b/app/src/main/res/drawable/ic_random_24dp.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/ic_subreddit_24dp.xml b/app/src/main/res/drawable/ic_subreddit_24dp.xml new file mode 100644 index 00000000..37af6d27 --- /dev/null +++ b/app/src/main/res/drawable/ic_subreddit_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_user_24dp.xml b/app/src/main/res/drawable/ic_user_24dp.xml new file mode 100644 index 00000000..4d161f62 --- /dev/null +++ b/app/src/main/res/drawable/ic_user_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/dialog_go_to_thing_edit_text.xml b/app/src/main/res/layout/dialog_go_to_thing_edit_text.xml new file mode 100644 index 00000000..748376bf --- /dev/null +++ b/app/src/main/res/layout/dialog_go_to_thing_edit_text.xml @@ -0,0 +1,10 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_fab_more_options_bottom_sheet.xml b/app/src/main/res/layout/fragment_fab_more_options_bottom_sheet.xml index fa7f9833..a209b863 100644 --- a/app/src/main/res/layout/fragment_fab_more_options_bottom_sheet.xml +++ b/app/src/main/res/layout/fragment_fab_more_options_bottom_sheet.xml @@ -106,6 +106,63 @@ android:focusable="true" android:background="?attr/selectableItemBackground" /> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ad5871fe..386be5df 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -920,4 +920,13 @@ Dismiss Leave + Go to subreddit + Go to user + Name + Random + Random Subreddit + Random NSFW Subreddit + Random Post + Random NSFW post + -- cgit v1.2.3