Browse Source

Update chips

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic 6 years ago
parent
commit
06992b400f

+ 7 - 3
app/src/main/java/com/nextcloud/talk/callbacks/MentionAutocompleteCallback.java

@@ -31,14 +31,18 @@ import com.nextcloud.talk.utils.DisplayUtils;
 import com.nextcloud.talk.utils.MagicCharPolicy;
 import com.nextcloud.talk.utils.text.Spans;
 import com.otaliastudios.autocomplete.AutocompleteCallback;
+import com.vanniktech.emoji.EmojiEditText;
 
 public class MentionAutocompleteCallback implements AutocompleteCallback<Mention> {
     private Context context;
     private UserEntity conversationUser;
+    private EmojiEditText emojiEditText;
 
-    public MentionAutocompleteCallback(Context context, UserEntity conversationUser) {
+    public MentionAutocompleteCallback(Context context, UserEntity conversationUser,
+                                       EmojiEditText emojiEditText) {
         this.context = context;
         this.conversationUser = conversationUser;
+        this.emojiEditText = emojiEditText;
     }
 
     @Override
@@ -52,10 +56,10 @@ public class MentionAutocompleteCallback implements AutocompleteCallback<Mention
         Spans.MentionChipSpan mentionChipSpan =
                 new Spans.MentionChipSpan(DisplayUtils.getDrawableForMentionChipSpan(context,
                         item.getId(), item.getLabel(), conversationUser, item.getSource(),
-                        R.xml.chip_accent_background),
+                        R.xml.chip_accent_background, emojiEditText),
                         DynamicDrawableSpan.ALIGN_BASELINE,
                         item.getId(), item.getLabel());
-        editable.setSpan(mentionChipSpan, start, start + item.getLabel().length() ,
+        editable.setSpan(mentionChipSpan, start, start + item.getLabel().length(),
                 Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
         return true;
     }

+ 1 - 1
app/src/main/java/com/nextcloud/talk/controllers/ChatController.java

@@ -486,7 +486,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
         Drawable backgroundDrawable = new ColorDrawable(Color.WHITE);
         AutocompletePresenter<Mention> presenter = new MentionAutocompletePresenter(getApplicationContext(), roomToken);
         AutocompleteCallback<Mention> callback = new MentionAutocompleteCallback(getActivity(),
-                conversationUser);
+                conversationUser, messageInput);
 
         if (mentionAutocomplete == null && messageInput != null) {
             mentionAutocomplete = Autocomplete.<Mention>on(messageInput)

+ 4 - 2
app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java

@@ -192,8 +192,10 @@ public class CallMenuController extends BaseController implements FlexibleAdapte
 
 
             if (conversation.canLeave(currentUser)) {
-                menuItems.add(new MenuItem(getResources().getString(R.string.nc_leave), 1, getResources().getDrawable(R.drawable
-                        .ic_close_grey600_24dp)));
+                menuItems.add(new MenuItem(getResources().getString(R.string.nc_leave), 1,
+                        DisplayUtils.getTintedDrawable(getResources(),
+                                R.drawable.ic_exit_to_app_black_24dp, R.color.grey_600)
+                ));
             }
         } else if (menuType.equals(MenuType.SHARE)) {
             prepareIntent();

+ 13 - 6
app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java

@@ -30,7 +30,10 @@ import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.Typeface;
-import android.graphics.drawable.*;
+import android.graphics.drawable.Animatable;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.VectorDrawable;
 import android.net.Uri;
 import android.os.Build;
 import android.text.*;
@@ -50,7 +53,6 @@ import com.facebook.common.references.CloseableReference;
 import com.facebook.datasource.DataSource;
 import com.facebook.drawee.backends.pipeline.Fresco;
 import com.facebook.drawee.controller.ControllerListener;
-import com.facebook.drawee.drawable.RoundedColorDrawable;
 import com.facebook.drawee.view.SimpleDraweeView;
 import com.facebook.imagepipeline.common.RotationOptions;
 import com.facebook.imagepipeline.core.ImagePipeline;
@@ -65,12 +67,12 @@ import com.nextcloud.talk.R;
 import com.nextcloud.talk.application.NextcloudTalkApplication;
 import com.nextcloud.talk.models.database.UserEntity;
 import com.nextcloud.talk.utils.text.Spans;
+import com.vanniktech.emoji.EmojiEditText;
 import com.vanniktech.emoji.EmojiTextView;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-import java.util.Objects;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -218,7 +220,8 @@ public class DisplayUtils {
 
     public static Drawable getDrawableForMentionChipSpan(Context context, String id, String label,
                                                          UserEntity conversationUser, String type,
-                                                         @XmlRes int chipResource) {
+                                                         @XmlRes int chipResource,
+                                                         @Nullable EmojiEditText emojiEditText) {
         ChipDrawable chip = ChipDrawable.createFromResource(context, chipResource);
         chip.setText(label);
 
@@ -253,11 +256,15 @@ public class DisplayUtils {
 
             dataSource.subscribe(
                     new BaseBitmapDataSubscriber() {
-
                         @Override
                         protected void onNewResultImpl(Bitmap bitmap) {
                             if (bitmap != null) {
                                 chip.setChipIcon(getRoundedDrawable(new BitmapDrawable(bitmap)));
+
+                                // A hack to refresh the chip icon
+                                if (emojiEditText != null) {
+                                    emojiEditText.setTextKeepState(emojiEditText.getText());
+                                }
                             }
                         }
 
@@ -291,7 +298,7 @@ public class DisplayUtils {
             int end = start + m.group().length();
             lastStartIndex = end;
             mentionChipSpan = new Spans.MentionChipSpan(DisplayUtils.getDrawableForMentionChipSpan(context,
-                    id, label, conversationUser, type, chipXmlRes),
+                    id, label, conversationUser, type, chipXmlRes, null),
                     DynamicDrawableSpan.ALIGN_BASELINE, id,
                     label);
             spannableString.setSpan(mentionChipSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

+ 0 - 14
app/src/main/java/com/nextcloud/talk/utils/text/Spans.java

@@ -20,24 +20,10 @@
 
 package com.nextcloud.talk.utils.text;
 
-import android.graphics.Bitmap;
 import android.graphics.drawable.Drawable;
 import androidx.annotation.NonNull;
-import com.facebook.common.executors.UiThreadImmediateExecutorService;
-import com.facebook.common.references.CloseableReference;
-import com.facebook.datasource.DataSource;
-import com.facebook.drawee.backends.pipeline.Fresco;
-import com.facebook.imagepipeline.core.ImagePipeline;
-import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber;
-import com.facebook.imagepipeline.image.CloseableImage;
-import com.facebook.imagepipeline.request.ImageRequest;
-import com.nextcloud.talk.R;
-import com.nextcloud.talk.utils.ApiUtils;
-import com.nextcloud.talk.utils.DisplayUtils;
 import lombok.Data;
 
-import static com.nextcloud.talk.utils.DisplayUtils.getImageRequestForUrl;
-
 public class Spans {
 
     @Data