aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2020-09-18 04:13:17 +0000
committerAlex Ning <chineseperson5@gmail.com>2020-09-18 04:13:17 +0000
commit50a75ea4f9bc7d3bccfa5c00db915b5397ba3430 (patch)
tree9a7089fc8088b2a6fda9f0ca85ace592f9aebb61 /app
parentc809215759df3abcc2ebc9b31f633174216fb763 (diff)
downloadinfinity-for-reddit-50a75ea4f9bc7d3bccfa5c00db915b5397ba3430.tar
infinity-for-reddit-50a75ea4f9bc7d3bccfa5c00db915b5397ba3430.tar.gz
infinity-for-reddit-50a75ea4f9bc7d3bccfa5c00db915b5397ba3430.tar.bz2
infinity-for-reddit-50a75ea4f9bc7d3bccfa5c00db915b5397ba3430.tar.lz
infinity-for-reddit-50a75ea4f9bc7d3bccfa5c00db915b5397ba3430.tar.xz
infinity-for-reddit-50a75ea4f9bc7d3bccfa5c00db915b5397ba3430.tar.zst
infinity-for-reddit-50a75ea4f9bc7d3bccfa5c00db915b5397ba3430.zip
Support Markdown bottom bar in EditCommentActivity, EditPostActivity and PostTextActivity.
Diffstat (limited to '')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CommentActivity.java162
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Activity/EditCommentActivity.java15
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Activity/EditPostActivity.java17
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostTextActivity.java13
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/MarkdownBottomBarRecyclerViewAdapter.java163
-rw-r--r--app/src/main/res/layout/activity_edit_comment.xml38
-rw-r--r--app/src/main/res/layout/activity_edit_post.xml97
-rw-r--r--app/src/main/res/layout/activity_post_text.xml265
8 files changed, 428 insertions, 342 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CommentActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CommentActivity.java
index 1dab8fc3..66043919 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CommentActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CommentActivity.java
@@ -14,7 +14,6 @@ import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
-import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
@@ -263,165 +262,8 @@ public class CommentActivity extends BaseActivity {
setSupportActionBar(toolbar);
- MarkdownBottomBarRecyclerViewAdapter adapter = new MarkdownBottomBarRecyclerViewAdapter(mCustomThemeWrapper, new MarkdownBottomBarRecyclerViewAdapter.ItemClickListener() {
- @Override
- public void onClick(int item) {
- switch (item) {
- case MarkdownBottomBarRecyclerViewAdapter.BOLD: {
- int start = Math.max(commentEditText.getSelectionStart(), 0);
- int end = Math.max(commentEditText.getSelectionEnd(), 0);
- if (end != start) {
- String currentSelection = commentEditText.getText().subSequence(start, end).toString();
- commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
- "**" + currentSelection + "**", 0, "****".length() + currentSelection.length());
- } else {
- commentEditText.getText().replace(start, end,
- "****", 0, "****".length());
- commentEditText.setSelection(start + "**".length());
- }
- break;
- }
- case MarkdownBottomBarRecyclerViewAdapter.ITALIC: {
- int start = Math.max(commentEditText.getSelectionStart(), 0);
- int end = Math.max(commentEditText.getSelectionEnd(), 0);
- if (end != start) {
- String currentSelection = commentEditText.getText().subSequence(start, end).toString();
- commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
- "*" + currentSelection + "*", 0, "**".length() + currentSelection.length());
- } else {
- commentEditText.getText().replace(start, end,
- "**", 0, "**".length());
- commentEditText.setSelection(start + "*".length());
- }
- break;
- }
- case MarkdownBottomBarRecyclerViewAdapter.LINK: {
- View dialogView = getLayoutInflater().inflate(R.layout.dialog_insert_link, null);
- EditText textEditText = dialogView.findViewById(R.id.edit_text_insert_link_dialog);
- EditText linkEditText = dialogView.findViewById(R.id.edit_link_insert_link_dialog);
-
- int start = Math.max(commentEditText.getSelectionStart(), 0);
- int end = Math.max(commentEditText.getSelectionEnd(), 0);
- if (end != start) {
- String currentSelection = commentEditText.getText().subSequence(start, end).toString();
- textEditText.setText(currentSelection);
- }
-
- new MaterialAlertDialogBuilder(CommentActivity.this, R.style.MaterialAlertDialogTheme)
- .setTitle(R.string.insert_link)
- .setView(dialogView)
- .setPositiveButton(R.string.ok, (editTextDialogInterface, i1)
- -> {
- String text = textEditText.getText().toString();
- String link = linkEditText.getText().toString();
-
- commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
- "[" + text + "](" + link + ")", 0, "[]()".length() + text.length() + link.length());
- })
- .setNegativeButton(R.string.cancel, null)
- .show();
- break;
- }
- case MarkdownBottomBarRecyclerViewAdapter.STRIKE_THROUGH: {
- int start = Math.max(commentEditText.getSelectionStart(), 0);
- int end = Math.max(commentEditText.getSelectionEnd(), 0);
- if (end != start) {
- String currentSelection = commentEditText.getText().subSequence(start, end).toString();
- commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
- "~~" + currentSelection + "~~", 0, "~~~~".length() + currentSelection.length());
- } else {
- commentEditText.getText().replace(start, end,
- "~~~~", 0, "~~~~".length());
- commentEditText.setSelection(start + "~~".length());
- }
- break;
- }
- case MarkdownBottomBarRecyclerViewAdapter.HEADER: {
- View dialogView = getLayoutInflater().inflate(R.layout.dialog_select_header, null);
- SeekBar seekBar = dialogView.findViewById(R.id.seek_bar_dialog_select_header);
- new MaterialAlertDialogBuilder(CommentActivity.this, R.style.MaterialAlertDialogTheme)
- .setTitle(R.string.select_header_size)
- .setView(dialogView)
- .setPositiveButton(R.string.ok, (editTextDialogInterface, i1)
- -> {
- int start = Math.max(commentEditText.getSelectionStart(), 0);
- int end = Math.max(commentEditText.getSelectionEnd(), 0);
- String hashTags;
- switch (seekBar.getProgress()) {
- case 0:
- hashTags = "######";
- break;
- case 1:
- hashTags = "#####";
- break;
- case 2:
- hashTags = "####";
- break;
- case 3:
- hashTags = "###";
- break;
- case 4:
- hashTags = "##";
- break;
- default:
- hashTags = "#";
- break;
- }
- if (end != start) {
- String currentSelection = commentEditText.getText().subSequence(start, end).toString();
- commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
- hashTags + currentSelection, 0, hashTags.length() + currentSelection.length());
- } else {
- commentEditText.getText().replace(start, end,
- hashTags, 0, hashTags.length());
- }
- })
- .setNegativeButton(R.string.cancel, null)
- .show();
- break;
- }
- case MarkdownBottomBarRecyclerViewAdapter.ORDERED_LIST: {
- int start = Math.max(commentEditText.getSelectionStart(), 0);
- int end = Math.max(commentEditText.getSelectionEnd(), 0);
- if (end != start) {
- String currentSelection = commentEditText.getText().subSequence(start, end).toString();
- commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
- "1. " + currentSelection, 0, "1. ".length() + currentSelection.length());
- } else {
- commentEditText.getText().replace(start, end,
- "1. ", 0, "1. ".length());
- }
- break;
- }
- case MarkdownBottomBarRecyclerViewAdapter.UNORDERED_LIST: {
- int start = Math.max(commentEditText.getSelectionStart(), 0);
- int end = Math.max(commentEditText.getSelectionEnd(), 0);
- if (end != start) {
- String currentSelection = commentEditText.getText().subSequence(start, end).toString();
- commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
- "* " + currentSelection, 0, "* ".length() + currentSelection.length());
- } else {
- commentEditText.getText().replace(start, end,
- "* ", 0, "* ".length());
- }
- break;
- }
- case MarkdownBottomBarRecyclerViewAdapter.SPOILER: {
- int start = Math.max(commentEditText.getSelectionStart(), 0);
- int end = Math.max(commentEditText.getSelectionEnd(), 0);
- if (end != start) {
- String currentSelection = commentEditText.getText().subSequence(start, end).toString();
- commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
- ">!" + currentSelection + "!<", 0, ">!!<".length() + currentSelection.length());
- } else {
- commentEditText.getText().replace(start, end,
- ">!!<", 0, ">!!<".length());
- commentEditText.setSelection(start + ">!".length());
- }
- break;
- }
- }
- }
+ MarkdownBottomBarRecyclerViewAdapter adapter = new MarkdownBottomBarRecyclerViewAdapter(mCustomThemeWrapper, item -> {
+ MarkdownBottomBarRecyclerViewAdapter.bindEditTextWithItemClickListener(this, commentEditText, item);
});
markdownBottomBarRecyclerView.setLayoutManager(new LinearLayoutManager(this,
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/EditCommentActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/EditCommentActivity.java
index b3ece3d2..b18618cf 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/EditCommentActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/EditCommentActivity.java
@@ -14,6 +14,8 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -31,6 +33,7 @@ import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import ml.docilealligator.infinityforreddit.API.RedditAPI;
+import ml.docilealligator.infinityforreddit.Adapter.MarkdownBottomBarRecyclerViewAdapter;
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
import ml.docilealligator.infinityforreddit.Infinity;
@@ -60,6 +63,8 @@ public class EditCommentActivity extends BaseActivity {
Toolbar toolbar;
@BindView(R.id.comment_edit_text_edit_comment_activity)
EditText contentEditText;
+ @BindView(R.id.markdown_bottom_bar_recycler_view_edit_comment_activity)
+ RecyclerView markdownBottomBarRecyclerView;
@Inject
@Named("oauth")
Retrofit mOauthRetrofit;
@@ -77,6 +82,8 @@ public class EditCommentActivity extends BaseActivity {
protected void onCreate(Bundle savedInstanceState) {
((Infinity) getApplication()).getAppComponent().inject(this);
+ setImmersiveModeNotApplicable();
+
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_comment);
@@ -99,6 +106,14 @@ public class EditCommentActivity extends BaseActivity {
mCommentContent = getIntent().getStringExtra(EXTRA_CONTENT);
contentEditText.setText(mCommentContent);
+ MarkdownBottomBarRecyclerViewAdapter adapter = new MarkdownBottomBarRecyclerViewAdapter(mCustomThemeWrapper, item -> {
+ MarkdownBottomBarRecyclerViewAdapter.bindEditTextWithItemClickListener(this, contentEditText, item);
+ });
+
+ markdownBottomBarRecyclerView.setLayoutManager(new LinearLayoutManager(this,
+ LinearLayoutManager.HORIZONTAL, false));
+ markdownBottomBarRecyclerView.setAdapter(adapter);
+
contentEditText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/EditPostActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/EditPostActivity.java
index e2671fdf..18e997ed 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/EditPostActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/EditPostActivity.java
@@ -16,6 +16,8 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -33,11 +35,12 @@ import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
+import ml.docilealligator.infinityforreddit.API.RedditAPI;
+import ml.docilealligator.infinityforreddit.Adapter.MarkdownBottomBarRecyclerViewAdapter;
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.R;
-import ml.docilealligator.infinityforreddit.API.RedditAPI;
import ml.docilealligator.infinityforreddit.Utils.APIUtils;
import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils;
import retrofit2.Call;
@@ -64,6 +67,8 @@ public class EditPostActivity extends BaseActivity {
View divider;
@BindView(R.id.post_text_content_edit_text_edit_post_activity)
EditText contentEditText;
+ @BindView(R.id.markdown_bottom_bar_recycler_view_edit_post_activity)
+ RecyclerView markdownBottomBarRecyclerView;
@Inject
@Named("oauth")
Retrofit mOauthRetrofit;
@@ -81,6 +86,8 @@ public class EditPostActivity extends BaseActivity {
protected void onCreate(Bundle savedInstanceState) {
((Infinity) getApplication()).getAppComponent().inject(this);
+ setImmersiveModeNotApplicable();
+
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_post);
@@ -108,6 +115,14 @@ public class EditPostActivity extends BaseActivity {
mPostContent = getIntent().getStringExtra(EXTRA_CONTENT);
contentEditText.setText(mPostContent);
+ MarkdownBottomBarRecyclerViewAdapter adapter = new MarkdownBottomBarRecyclerViewAdapter(mCustomThemeWrapper, item -> {
+ MarkdownBottomBarRecyclerViewAdapter.bindEditTextWithItemClickListener(this, contentEditText, item);
+ });
+
+ markdownBottomBarRecyclerView.setLayoutManager(new LinearLayoutManager(this,
+ LinearLayoutManager.HORIZONTAL, false));
+ markdownBottomBarRecyclerView.setAdapter(adapter);
+
contentEditText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostTextActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostTextActivity.java
index 69568d88..de7bc72c 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostTextActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/PostTextActivity.java
@@ -17,6 +17,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.RequestManager;
@@ -35,6 +37,7 @@ import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
+import ml.docilealligator.infinityforreddit.Adapter.MarkdownBottomBarRecyclerViewAdapter;
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
import ml.docilealligator.infinityforreddit.AsyncTask.LoadSubredditIconAsyncTask;
import ml.docilealligator.infinityforreddit.BottomSheetFragment.FlairBottomSheetFragment;
@@ -97,6 +100,8 @@ public class PostTextActivity extends BaseActivity implements FlairBottomSheetFr
View divider3;
@BindView(R.id.post_text_content_edit_text_post_text_activity)
EditText contentEditText;
+ @BindView(R.id.markdown_bottom_bar_recycler_view_post_text_activity)
+ RecyclerView markdownBottomBarRecyclerView;
@Inject
@Named("no_oauth")
Retrofit mRetrofit;
@@ -305,6 +310,14 @@ public class PostTextActivity extends BaseActivity implements FlairBottomSheetFr
isNSFW = false;
}
});
+
+ MarkdownBottomBarRecyclerViewAdapter adapter = new MarkdownBottomBarRecyclerViewAdapter(mCustomThemeWrapper, item -> {
+ MarkdownBottomBarRecyclerViewAdapter.bindEditTextWithItemClickListener(this, contentEditText, item);
+ });
+
+ markdownBottomBarRecyclerView.setLayoutManager(new LinearLayoutManager(this,
+ LinearLayoutManager.HORIZONTAL, false));
+ markdownBottomBarRecyclerView.setAdapter(adapter);
}
@Override
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/MarkdownBottomBarRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/MarkdownBottomBarRecyclerViewAdapter.java
index 11d06b14..b421c2e0 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/MarkdownBottomBarRecyclerViewAdapter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/MarkdownBottomBarRecyclerViewAdapter.java
@@ -1,13 +1,18 @@
package ml.docilealligator.infinityforreddit.Adapter;
+import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.EditText;
import android.widget.ImageView;
+import android.widget.SeekBar;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.R;
@@ -80,6 +85,164 @@ public class MarkdownBottomBarRecyclerViewAdapter extends RecyclerView.Adapter<R
return ITEM_COUNT;
}
+ public static void bindEditTextWithItemClickListener(Activity activity, EditText commentEditText, int item) {
+ switch (item) {
+ case MarkdownBottomBarRecyclerViewAdapter.BOLD: {
+ int start = Math.max(commentEditText.getSelectionStart(), 0);
+ int end = Math.max(commentEditText.getSelectionEnd(), 0);
+ if (end != start) {
+ String currentSelection = commentEditText.getText().subSequence(start, end).toString();
+ commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
+ "**" + currentSelection + "**", 0, "****".length() + currentSelection.length());
+ } else {
+ commentEditText.getText().replace(start, end,
+ "****", 0, "****".length());
+ commentEditText.setSelection(start + "**".length());
+ }
+ break;
+ }
+ case MarkdownBottomBarRecyclerViewAdapter.ITALIC: {
+ int start = Math.max(commentEditText.getSelectionStart(), 0);
+ int end = Math.max(commentEditText.getSelectionEnd(), 0);
+ if (end != start) {
+ String currentSelection = commentEditText.getText().subSequence(start, end).toString();
+ commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
+ "*" + currentSelection + "*", 0, "**".length() + currentSelection.length());
+ } else {
+ commentEditText.getText().replace(start, end,
+ "**", 0, "**".length());
+ commentEditText.setSelection(start + "*".length());
+ }
+ break;
+ }
+ case MarkdownBottomBarRecyclerViewAdapter.LINK: {
+ View dialogView = activity.getLayoutInflater().inflate(R.layout.dialog_insert_link, null);
+ EditText textEditText = dialogView.findViewById(R.id.edit_text_insert_link_dialog);
+ EditText linkEditText = dialogView.findViewById(R.id.edit_link_insert_link_dialog);
+
+ int start = Math.max(commentEditText.getSelectionStart(), 0);
+ int end = Math.max(commentEditText.getSelectionEnd(), 0);
+ if (end != start) {
+ String currentSelection = commentEditText.getText().subSequence(start, end).toString();
+ textEditText.setText(currentSelection);
+ }
+
+ new MaterialAlertDialogBuilder(activity, R.style.MaterialAlertDialogTheme)
+ .setTitle(R.string.insert_link)
+ .setView(dialogView)
+ .setPositiveButton(R.string.ok, (editTextDialogInterface, i1)
+ -> {
+ String text = textEditText.getText().toString();
+ String link = linkEditText.getText().toString();
+
+ commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
+ "[" + text + "](" + link + ")", 0, "[]()".length() + text.length() + link.length());
+ })
+ .setNegativeButton(R.string.cancel, null)
+ .show();
+ break;
+ }
+ case MarkdownBottomBarRecyclerViewAdapter.STRIKE_THROUGH: {
+ int start = Math.max(commentEditText.getSelectionStart(), 0);
+ int end = Math.max(commentEditText.getSelectionEnd(), 0);
+ if (end != start) {
+ String currentSelection = commentEditText.getText().subSequence(start, end).toString();
+ commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
+ "~~" + currentSelection + "~~", 0, "~~~~".length() + currentSelection.length());
+ } else {
+ commentEditText.getText().replace(start, end,
+ "~~~~", 0, "~~~~".length());
+ commentEditText.setSelection(start + "~~".length());
+ }
+ break;
+ }
+ case MarkdownBottomBarRecyclerViewAdapter.HEADER: {
+ View dialogView = activity.getLayoutInflater().inflate(R.layout.dialog_select_header, null);
+ SeekBar seekBar = dialogView.findViewById(R.id.seek_bar_dialog_select_header);
+ new MaterialAlertDialogBuilder(activity, R.style.MaterialAlertDialogTheme)
+ .setTitle(R.string.select_header_size)
+ .setView(dialogView)
+ .setPositiveButton(R.string.ok, (editTextDialogInterface, i1)
+ -> {
+ int start = Math.max(commentEditText.getSelectionStart(), 0);
+ int end = Math.max(commentEditText.getSelectionEnd(), 0);
+ String hashTags;
+ switch (seekBar.getProgress()) {
+ case 0:
+ hashTags = "######";
+ break;
+ case 1:
+ hashTags = "#####";
+ break;
+ case 2:
+ hashTags = "####";
+ break;
+ case 3:
+ hashTags = "###";
+ break;
+ case 4:
+ hashTags = "##";
+ break;
+ default:
+ hashTags = "#";
+ break;
+ }
+ if (end != start) {
+ String currentSelection = commentEditText.getText().subSequence(start, end).toString();
+ commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
+ hashTags + currentSelection, 0, hashTags.length() + currentSelection.length());
+ } else {
+ commentEditText.getText().replace(start, end,
+ hashTags, 0, hashTags.length());
+ }
+ })
+ .setNegativeButton(R.string.cancel, null)
+ .show();
+ break;
+ }
+ case MarkdownBottomBarRecyclerViewAdapter.ORDERED_LIST: {
+ int start = Math.max(commentEditText.getSelectionStart(), 0);
+ int end = Math.max(commentEditText.getSelectionEnd(), 0);
+ if (end != start) {
+ String currentSelection = commentEditText.getText().subSequence(start, end).toString();
+ commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
+ "1. " + currentSelection, 0, "1. ".length() + currentSelection.length());
+ } else {
+ commentEditText.getText().replace(start, end,
+ "1. ", 0, "1. ".length());
+ }
+ break;
+ }
+ case MarkdownBottomBarRecyclerViewAdapter.UNORDERED_LIST: {
+ int start = Math.max(commentEditText.getSelectionStart(), 0);
+ int end = Math.max(commentEditText.getSelectionEnd(), 0);
+ if (end != start) {
+ String currentSelection = commentEditText.getText().subSequence(start, end).toString();
+ commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
+ "* " + currentSelection, 0, "* ".length() + currentSelection.length());
+ } else {
+ commentEditText.getText().replace(start, end,
+ "* ", 0, "* ".length());
+ }
+ break;
+ }
+ case MarkdownBottomBarRecyclerViewAdapter.SPOILER: {
+ int start = Math.max(commentEditText.getSelectionStart(), 0);
+ int end = Math.max(commentEditText.getSelectionEnd(), 0);
+ if (end != start) {
+ String currentSelection = commentEditText.getText().subSequence(start, end).toString();
+ commentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
+ ">!" + currentSelection + "!<", 0, ">!!<".length() + currentSelection.length());
+ } else {
+ commentEditText.getText().replace(start, end,
+ ">!!<", 0, ">!!<".length());
+ commentEditText.setSelection(start + ">!".length());
+ }
+ break;
+ }
+ }
+ }
+
class MarkdownBottomBarItemViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
diff --git a/app/src/main/res/layout/activity_edit_comment.xml b/app/src/main/res/layout/activity_edit_comment.xml
index ba239230..740aad93 100644
--- a/app/src/main/res/layout/activity_edit_comment.xml
+++ b/app/src/main/res/layout/activity_edit_comment.xml
@@ -23,18 +23,34 @@
</com.google.android.material.appbar.AppBarLayout>
- <EditText
- android:id="@+id/comment_edit_text_edit_comment_activity"
+ <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="#00000000"
- android:gravity="top"
- android:hint="@string/post_text_content_hint"
- android:inputType="textCapSentences|textMultiLine"
- android:padding="16dp"
- android:textColor="?attr/primaryTextColor"
- android:textSize="?attr/content_font_18"
- android:fontFamily="?attr/content_font_family"
- app:layout_behavior="@string/appbar_scrolling_view_behavior" />
+ android:orientation="vertical"
+ app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+ <EditText
+ android:id="@+id/comment_edit_text_edit_comment_activity"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:background="#00000000"
+ android:gravity="top"
+ android:hint="@string/post_text_content_hint"
+ android:inputType="textCapSentences|textMultiLine"
+ android:padding="16dp"
+ android:textColor="?attr/primaryTextColor"
+ android:textSize="?attr/content_font_18"
+ android:fontFamily="?attr/content_font_family" />
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/markdown_bottom_bar_recycler_view_edit_comment_activity"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:scrollbars="horizontal"
+ android:layout_gravity="bottom" />
+
+ </LinearLayout>
+
</androidx.coordinatorlayout.widget.CoordinatorLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/activity_edit_post.xml b/app/src/main/res/layout/activity_edit_post.xml
index 5d124696..a7d0078f 100644
--- a/app/src/main/res/layout/activity_edit_post.xml
+++ b/app/src/main/res/layout/activity_edit_post.xml
@@ -13,65 +13,72 @@
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
- <com.google.android.material.appbar.CollapsingToolbarLayout
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/toolbar_edit_post_activity"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- app:layout_scrollFlags="scroll|enterAlways"
- app:titleEnabled="false"
- app:toolbarId="@+id/toolbar_edit_post_activity">
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/toolbar_edit_post_activity"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="?attr/actionBarSize"
- app:popupTheme="@style/AppTheme.PopupOverlay"
- app:navigationIcon="?attr/homeAsUpIndicator" />
-
- </com.google.android.material.appbar.CollapsingToolbarLayout>
+ android:layout_height="wrap_content"
+ android:minHeight="?attr/actionBarSize"
+ app:popupTheme="@style/AppTheme.PopupOverlay"
+ app:navigationIcon="?attr/homeAsUpIndicator" />
</com.google.android.material.appbar.AppBarLayout>
- <androidx.core.widget.NestedScrollView
+ <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
- <LinearLayout
+ <androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
+ android:layout_height="0dp"
+ android:layout_weight="1">
- <TextView
- android:id="@+id/post_title_text_view_edit_post_activity"
+ <LinearLayout
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="top"
- android:padding="16dp"
- android:textSize="?attr/title_font_18"
- android:textColor="?attr/primaryTextColor"
- android:fontFamily="?attr/title_font_family" />
+ android:layout_height="match_parent"
+ android:orientation="vertical">
- <View
- android:id="@+id/divider_edit_post_activity"
- android:layout_width="match_parent"
- android:layout_height="1dp" />
+ <TextView
+ android:id="@+id/post_title_text_view_edit_post_activity"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="top"
+ android:padding="16dp"
+ android:textSize="?attr/title_font_18"
+ android:textColor="?attr/primaryTextColor"
+ android:fontFamily="?attr/title_font_family" />
- <EditText
- android:id="@+id/post_text_content_edit_text_edit_post_activity"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="top"
- android:padding="16dp"
- android:hint="@string/post_text_content_hint"
- android:inputType="textCapSentences|textMultiLine"
- android:textSize="?attr/content_font_18"
- android:background="#00000000"
- android:textColor="?attr/primaryTextColor"
- android:fontFamily="?attr/content_font_family" />
+ <View
+ android:id="@+id/divider_edit_post_activity"
+ android:layout_width="match_parent"
+ android:layout_height="1dp" />
+
+ <EditText
+ android:id="@+id/post_text_content_edit_text_edit_post_activity"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="top"
+ android:padding="16dp"
+ android:hint="@string/post_text_content_hint"
+ android:inputType="textCapSentences|textMultiLine"
+ android:textSize="?attr/content_font_18"
+ android:background="#00000000"
+ android:textColor="?attr/primaryTextColor"
+ android:fontFamily="?attr/content_font_family" />
+
+ </LinearLayout>
+
+ </androidx.core.widget.NestedScrollView>
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/markdown_bottom_bar_recycler_view_edit_post_activity"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:scrollbars="horizontal"
+ android:layout_gravity="bottom" />
- </LinearLayout>
+ </LinearLayout>
- </androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/activity_post_text.xml b/app/src/main/res/layout/activity_post_text.xml
index 67ba4234..d9b02754 100644
--- a/app/src/main/res/layout/activity_post_text.xml
+++ b/app/src/main/res/layout/activity_post_text.xml
@@ -23,148 +23,163 @@
</com.google.android.material.appbar.AppBarLayout>
- <androidx.core.widget.NestedScrollView
+ <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
- <LinearLayout
+ <androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
-
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingStart="16dp"
- android:paddingTop="8dp"
- android:paddingEnd="16dp"
- android:paddingBottom="8dp">
-
- <pl.droidsonroids.gif.GifImageView
- android:id="@+id/subreddit_icon_gif_image_view_search_activity"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:layout_alignParentStart="true"
- android:layout_centerVertical="true" />
-
- <TextView
- android:id="@+id/subreddit_name_text_view_search_activity"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerVertical="true"
- android:layout_marginStart="32dp"
- android:layout_marginEnd="16dp"
- android:layout_toStartOf="@id/rules_button_post_text_activity"
- android:layout_toEndOf="@id/subreddit_icon_gif_image_view_search_activity"
- android:text="@string/choose_a_subreddit"
- android:textSize="?attr/font_default"
- android:fontFamily="?attr/font_family" />
-
- <Button
- android:id="@+id/rules_button_post_text_activity"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentEnd="true"
- android:layout_centerVertical="true"
- android:text="@string/rules"
- android:textSize="?attr/font_default"
- android:fontFamily="?attr/font_family" />
-
- </RelativeLayout>
-
- <View
- android:id="@+id/divider_1_post_text_activity"
- android:layout_width="match_parent"
- android:layout_height="1dp" />
+ android:layout_height="0dp"
+ android:layout_weight="1">
<LinearLayout
android:layout_width="match_parent"
- android:layout_height="wrap_content">
+ android:layout_height="match_parent"
+ android:orientation="vertical">
- <com.libRG.CustomTextView
- android:id="@+id/flair_custom_text_view_post_text_activity"
- android:layout_width="wrap_content"
+ <RelativeLayout
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_margin="16dp"
- android:padding="4dp"
- android:text="@string/flair"
- android:textColor="?attr/primaryTextColor"
- android:textSize="?attr/font_default"
- android:fontFamily="?attr/font_family"
- android:visibility="gone"
- app:lib_setRadius="3dp"
- app:lib_setRoundedView="true"
- app:lib_setShape="rectangle" />
-
- <com.libRG.CustomTextView
- android:id="@+id/spoiler_custom_text_view_post_text_activity"
- android:layout_width="wrap_content"
+ android:paddingStart="16dp"
+ android:paddingTop="8dp"
+ android:paddingEnd="16dp"
+ android:paddingBottom="8dp">
+
+ <pl.droidsonroids.gif.GifImageView
+ android:id="@+id/subreddit_icon_gif_image_view_search_activity"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:layout_alignParentStart="true"
+ android:layout_centerVertical="true" />
+
+ <TextView
+ android:id="@+id/subreddit_name_text_view_search_activity"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerVertical="true"
+ android:layout_marginStart="32dp"
+ android:layout_marginEnd="16dp"
+ android:layout_toStartOf="@id/rules_button_post_text_activity"
+ android:layout_toEndOf="@id/subreddit_icon_gif_image_view_search_activity"
+ android:text="@string/choose_a_subreddit"
+ android:textSize="?attr/font_default"
+ android:fontFamily="?attr/font_family" />
+
+ <Button
+ android:id="@+id/rules_button_post_text_activity"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentEnd="true"
+ android:layout_centerVertical="true"
+ android:text="@string/rules"
+ android:textSize="?attr/font_default"
+ android:fontFamily="?attr/font_family" />
+
+ </RelativeLayout>
+
+ <View
+ android:id="@+id/divider_1_post_text_activity"
+ android:layout_width="match_parent"
+ android:layout_height="1dp" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <com.libRG.CustomTextView
+ android:id="@+id/flair_custom_text_view_post_text_activity"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_margin="16dp"
+ android:padding="4dp"
+ android:text="@string/flair"
+ android:textColor="?attr/primaryTextColor"
+ android:textSize="?attr/font_default"
+ android:fontFamily="?attr/font_family"
+ android:visibility="gone"
+ app:lib_setRadius="3dp"
+ app:lib_setRoundedView="true"
+ app:lib_setShape="rectangle" />
+
+ <com.libRG.CustomTextView
+ android:id="@+id/spoiler_custom_text_view_post_text_activity"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_margin="16dp"
+ android:padding="4dp"
+ android:text="@string/spoiler"
+ android:textColor="?attr/primaryTextColor"
+ android:textSize="?attr/font_default"
+ android:fontFamily="?attr/font_family"
+ app:lib_setRadius="3dp"
+ app:lib_setRoundedView="true"
+ app:lib_setShape="rectangle" />
+
+ <com.libRG.CustomTextView
+ android:id="@+id/nsfw_custom_text_view_post_text_activity"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_margin="16dp"
+ android:padding="4dp"
+ android:text="@string/nsfw"
+ android:textColor="?attr/primaryTextColor"
+ android:textSize="?attr/font_default"
+ android:fontFamily="?attr/font_family"
+ app:lib_setRadius="3dp"
+ app:lib_setRoundedView="true"
+ app:lib_setShape="rectangle" />
+
+ </LinearLayout>
+
+ <View
+ android:id="@+id/divider_2_post_text_activity"
+ android:layout_width="match_parent"
+ android:layout_height="1dp" />
+
+ <EditText
+ android:id="@+id/post_title_edit_text_post_text_activity"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_margin="16dp"
- android:padding="4dp"
- android:text="@string/spoiler"
+ android:background="#00000000"
+ android:gravity="top"
+ android:hint="@string/post_title_hint"
+ android:inputType="textCapSentences|textMultiLine"
+ android:padding="16dp"
android:textColor="?attr/primaryTextColor"
- android:textSize="?attr/font_default"
- android:fontFamily="?attr/font_family"
- app:lib_setRadius="3dp"
- app:lib_setRoundedView="true"
- app:lib_setShape="rectangle" />
-
- <com.libRG.CustomTextView
- android:id="@+id/nsfw_custom_text_view_post_text_activity"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_margin="16dp"
- android:padding="4dp"
- android:text="@string/nsfw"
+ android:textSize="?attr/title_font_18"
+ android:fontFamily="?attr/title_font_family" />
+
+ <View
+ android:id="@+id/divider_3_post_text_activity"
+ android:layout_width="match_parent"
+ android:layout_height="1dp" />
+
+ <EditText
+ android:id="@+id/post_text_content_edit_text_post_text_activity"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="#00000000"
+ android:gravity="top"
+ android:hint="@string/post_text_content_hint"
+ android:inputType="textCapSentences|textMultiLine"
+ android:padding="16dp"
android:textColor="?attr/primaryTextColor"
- android:textSize="?attr/font_default"
- android:fontFamily="?attr/font_family"
- app:lib_setRadius="3dp"
- app:lib_setRoundedView="true"
- app:lib_setShape="rectangle" />
+ android:textSize="?attr/content_font_18"
+ android:fontFamily="?attr/content_font_family" />
</LinearLayout>
- <View
- android:id="@+id/divider_2_post_text_activity"
- android:layout_width="match_parent"
- android:layout_height="1dp" />
+ </androidx.core.widget.NestedScrollView>
- <EditText
- android:id="@+id/post_title_edit_text_post_text_activity"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="#00000000"
- android:gravity="top"
- android:hint="@string/post_title_hint"
- android:inputType="textCapSentences|textMultiLine"
- android:padding="16dp"
- android:textColor="?attr/primaryTextColor"
- android:textSize="?attr/title_font_18"
- android:fontFamily="?attr/title_font_family" />
-
- <View
- android:id="@+id/divider_3_post_text_activity"
- android:layout_width="match_parent"
- android:layout_height="1dp" />
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/markdown_bottom_bar_recycler_view_post_text_activity"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:scrollbars="horizontal"
+ android:layout_gravity="bottom" />
- <EditText
- android:id="@+id/post_text_content_edit_text_post_text_activity"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#00000000"
- android:gravity="top"
- android:hint="@string/post_text_content_hint"
- android:inputType="textCapSentences|textMultiLine"
- android:padding="16dp"
- android:textColor="?attr/primaryTextColor"
- android:textSize="?attr/content_font_18"
- android:fontFamily="?attr/content_font_family" />
-
- </LinearLayout>
-
- </androidx.core.widget.NestedScrollView>
+ </LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout> \ No newline at end of file