summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java')
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java61
1 files changed, 46 insertions, 15 deletions
diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java
index 9620e1bf4..97bd72f23 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java
@@ -59,6 +59,7 @@ import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.AppCompatEditText;
import androidx.appcompat.widget.LinearLayoutCompat;
+import androidx.appcompat.widget.SearchView;
import androidx.core.app.ActivityCompat;
import androidx.core.app.ActivityOptionsCompat;
import androidx.core.content.ContextCompat;
@@ -103,11 +104,13 @@ import app.fedilab.android.activities.MainActivity;
import app.fedilab.android.databinding.ComposeAttachmentItemBinding;
import app.fedilab.android.databinding.ComposePollBinding;
import app.fedilab.android.databinding.ComposePollItemBinding;
+import app.fedilab.android.databinding.CustomEmojiPickerBinding;
import app.fedilab.android.databinding.DrawerMediaListBinding;
import app.fedilab.android.databinding.DrawerStatusComposeBinding;
import app.fedilab.android.databinding.DrawerStatusSimpleBinding;
import app.fedilab.android.mastodon.activities.ComposeActivity;
import app.fedilab.android.mastodon.activities.MediaActivity;
+import app.fedilab.android.mastodon.activities.SearchResultTabActivity;
import app.fedilab.android.mastodon.client.entities.api.Account;
import app.fedilab.android.mastodon.client.entities.api.Attachment;
import app.fedilab.android.mastodon.client.entities.api.Emoji;
@@ -2119,29 +2122,57 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
* @param holder - view for the message {@link ComposeViewHolder}
*/
private void displayEmojiPicker(ComposeViewHolder holder, String instance) throws DBException {
-
final AlertDialog.Builder builder = new MaterialAlertDialogBuilder(context);
- int paddingPixel = 15;
- float density = context.getResources().getDisplayMetrics().density;
- int paddingDp = (int) (paddingPixel * density);
builder.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss());
builder.setTitle(R.string.insert_emoji);
+ CustomEmojiPickerBinding customEmojiPickerBinding = CustomEmojiPickerBinding.inflate(LayoutInflater.from(context), new LinearLayout(context), false);
if (emojis != null && emojis.size() > 0) {
- GridView gridView = new GridView(context);
- gridView.setAdapter(new EmojiAdapter(emojis.get(instance)));
- gridView.setNumColumns(5);
- gridView.setOnItemClickListener((parent, view, position, id) -> {
+ customEmojiPickerBinding.gridview.setAdapter(new EmojiAdapter(emojis.get(instance)));
+ customEmojiPickerBinding.gridview.setOnItemClickListener((parent, view, position, id) -> {
holder.binding.content.getText().insert(holder.binding.content.getSelectionStart(), " :" + Objects.requireNonNull(emojis.get(instance)).get(position).shortcode + ": ");
alertDialogEmoji.dismiss();
});
- gridView.setPadding(paddingDp, paddingDp, paddingDp, paddingDp);
- builder.setView(gridView);
- } else {
- TextView textView = new TextView(context);
- textView.setText(context.getString(R.string.no_emoji));
- textView.setPadding(paddingDp, paddingDp, paddingDp, paddingDp);
- builder.setView(textView);
}
+ customEmojiPickerBinding.toolbarSearch.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
+ @Override
+ public boolean onQueryTextSubmit(String query) {
+ InputMethodManager imm = (InputMethodManager) context.getSystemService(INPUT_METHOD_SERVICE);
+ imm.hideSoftInputFromWindow(customEmojiPickerBinding.toolbarSearch.getWindowToken(), 0);
+ try {
+ new EmojiInstance(context).getEmojiListFiltered(instance, query.trim(), emojiList -> {
+ if (emojiList != null && emojiList.size() > 0) {
+ customEmojiPickerBinding.gridview.setAdapter(new EmojiAdapter(emojiList));
+ customEmojiPickerBinding.gridview.setOnItemClickListener((parent, view, position, id) -> {
+ holder.binding.content.getText().insert(holder.binding.content.getSelectionStart(), " :" + emojiList.get(position).shortcode + ": ");
+ alertDialogEmoji.dismiss();
+ });
+ }
+ });
+ } catch (DBException e) {
+ throw new RuntimeException(e);
+ }
+ return false;
+ }
+
+ @Override
+ public boolean onQueryTextChange(String newText) {
+ try {
+ new EmojiInstance(context).getEmojiListFiltered(instance, newText.trim(), emojiList -> {
+ if (emojiList != null && emojiList.size() > 0) {
+ customEmojiPickerBinding.gridview.setAdapter(new EmojiAdapter(emojiList));
+ customEmojiPickerBinding.gridview.setOnItemClickListener((parent, view, position, id) -> {
+ holder.binding.content.getText().insert(holder.binding.content.getSelectionStart(), " :" + emojiList.get(position).shortcode + ": ");
+ alertDialogEmoji.dismiss();
+ });
+ }
+ });
+ } catch (DBException e) {
+ throw new RuntimeException(e);
+ }
+ return false;
+ }
+ });
+ builder.setView(customEmojiPickerBinding.getRoot());
alertDialogEmoji = builder.show();
}