From f90da41d731e2a036f83a08a7afc18e7a89daaf8 Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Sun, 13 Jan 2019 03:45:14 +0100 Subject: [PATCH] Add emoji support to toolbar Signed-off-by: Mario Danic --- .../MagicPreviewMessageViewHolder.java | 1 - .../ConversationInfoController.java | 4 +- .../nextcloud/talk/utils/EmojiToolbar.java | 71 +++++++++++++++++++ app/src/main/res/layout/activity_main.xml | 2 +- .../layout/controller_conversation_info.xml | 2 +- .../rv_item_conversation_info_participant.xml | 2 +- 6 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/com/nextcloud/talk/utils/EmojiToolbar.java diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java index 6691a4f4a..285713171 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java @@ -24,7 +24,6 @@ import android.annotation.SuppressLint; import android.content.Intent; import android.net.Uri; import android.view.View; -import android.widget.TextView; import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java index fbb074134..1acb5e55a 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java @@ -28,7 +28,6 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; -import android.widget.TextView; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.interfaces.DraweeController; @@ -48,6 +47,7 @@ import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.DisplayUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.preferencestorage.DatabaseStorageModule; +import com.vanniktech.emoji.EmojiTextView; import com.yarolegovich.mp.MaterialChoicePreference; import com.yarolegovich.mp.MaterialPreferenceCategory; import com.yarolegovich.mp.MaterialPreferenceScreen; @@ -96,7 +96,7 @@ public class ConversationInfoController extends BaseController { SimpleDraweeView conversationAvatarImageView; @BindView(R.id.display_name_text) - TextView conversationDisplayName; + EmojiTextView conversationDisplayName; @BindView(R.id.participants_list_category) MaterialPreferenceCategory participantsListCategory; diff --git a/app/src/main/java/com/nextcloud/talk/utils/EmojiToolbar.java b/app/src/main/java/com/nextcloud/talk/utils/EmojiToolbar.java new file mode 100644 index 000000000..ddbbbc822 --- /dev/null +++ b/app/src/main/java/com/nextcloud/talk/utils/EmojiToolbar.java @@ -0,0 +1,71 @@ +/* + * Nextcloud Talk application + * + * @author Mario Danic + * Copyright (C) 2017-2018 Mario Danic + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.nextcloud.talk.utils; + +import android.content.Context; +import android.text.TextUtils; +import android.util.AttributeSet; + +import com.nextcloud.talk.R; +import com.vanniktech.emoji.EmojiTextView; + +import androidx.annotation.Nullable; +import androidx.appcompat.widget.Toolbar; + +public class EmojiToolbar extends Toolbar { + private EmojiTextView emojiTitleTextView; + + public EmojiToolbar(Context context) { + super(context); + initEmojiTextView(context, null); + + } + + public EmojiToolbar(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + initEmojiTextView(context, attrs); + } + + public EmojiToolbar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + initEmojiTextView(context, attrs); + } + + private void initEmojiTextView(Context context, @Nullable AttributeSet attrs) { + if (emojiTitleTextView == null) { + emojiTitleTextView = new EmojiTextView(context, attrs); + emojiTitleTextView.setSingleLine(true); + emojiTitleTextView.setEllipsize(TextUtils.TruncateAt.END); + emojiTitleTextView.setTextAppearance(getContext(), R.style.TextAppearance_AppCompat_Widget_ActionBar_Title); + addView(emojiTitleTextView); + } + } + + @Override + public void setTitle(CharSequence title) { + emojiTitleTextView.setText(title); + } + + @Override + public void setTitle(int titleRes) { + emojiTitleTextView.setText(titleRes); + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 53334218d..c531e39f2 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -10,7 +10,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - - -