From bc4a21879607e468500e6b448b7c88792a7fb072 Mon Sep 17 00:00:00 2001 From: Primoz Date: Thu, 4 Oct 2018 11:29:23 +1000 Subject: [PATCH 01/21] Added upsert method to move a specific item to the start. --- .../chatkit/messages/MessagesListAdapter.java | 44 ++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java index acc105f9..80f0a304 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java @@ -51,7 +51,7 @@ public class MessagesListAdapter protected static boolean isSelectionModeEnabled; - protected List items; + public List items; private MessageHolders holders; private String senderId; @@ -213,6 +213,22 @@ public boolean update(String oldId, MESSAGE newMessage) { } } + /** + * Moves the elements position from current to start + * + * @param newMessage new message object. + */ + public void updateAndMoveToStart(MESSAGE newMessage) { + int position = getMessagePositionById(newMessage.getId()); + if (position >= 0) { + Wrapper element = new Wrapper<>(newMessage); + items.remove(position); + items.add(0, element); + notifyItemMoved(position, 0); + notifyItemChanged(0); + } + } + /** * Updates message by its id if it exists, add to start if not * @@ -224,6 +240,24 @@ public void upsert(MESSAGE message) { } } + /** + * Updates and moves to start if message by its id exists and if specified move to start, if not + * specified the item stays at current position and updated + * + * @param message message object to insert or update. + */ + public void upsert(MESSAGE message, boolean moveToStartIfUpdate) { + if (moveToStartIfUpdate) { + if (getMessagePositionById(message.getId()) > 0) { + updateAndMoveToStart(message); + } else { + upsert(message); + } + } else { + upsert(message); + } + } + /** * Deletes message. * @@ -494,7 +528,7 @@ private void recountDateHeaders() { } } - private void generateDateHeaders(List messages) { + public void generateDateHeaders(List messages) { for (int i = 0; i < messages.size(); i++) { MESSAGE message = messages.get(i); this.items.add(new Wrapper<>(message)); @@ -653,9 +687,9 @@ void setStyle(MessagesListStyle style) { /* * WRAPPER * */ - private class Wrapper { - protected DATA item; - protected boolean isSelected; + public class Wrapper { + public DATA item; + public boolean isSelected; Wrapper(DATA item) { this.item = item; From e1b9332f2b46d328ed7130db38a61ff22df926f2 Mon Sep 17 00:00:00 2001 From: Primoz Date: Fri, 12 Oct 2018 08:35:57 +1100 Subject: [PATCH 02/21] Changed access modifier from public to protected for: - List items - method `generateDateHeaders` --- .../com/stfalcon/chatkit/messages/MessagesListAdapter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java index 80f0a304..e0fcb8a2 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java @@ -51,7 +51,7 @@ public class MessagesListAdapter protected static boolean isSelectionModeEnabled; - public List items; + protected List items; private MessageHolders holders; private String senderId; @@ -528,7 +528,7 @@ private void recountDateHeaders() { } } - public void generateDateHeaders(List messages) { + protected void generateDateHeaders(List messages) { for (int i = 0; i < messages.size(); i++) { MESSAGE message = messages.get(i); this.items.add(new Wrapper<>(message)); From 947adeda2ffb5aa3f59a7fb13600c986138d7928 Mon Sep 17 00:00:00 2001 From: Anton Bevza Date: Fri, 12 Oct 2018 09:45:24 +0300 Subject: [PATCH 03/21] Update CHANGELOG.md --- docs/CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 15c85c0c..6dc81352 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,3 +1,12 @@ +## Version 0.3.2 (2018/09/28) +* [Passing custom data to ImageLoader](https://github.com/stfalcon-studio/ChatKit/issues/183) +* Fixed [#198](https://github.com/stfalcon-studio/ChatKit/issues/198) +* Protected `items` field in `MessagesListAdapter` and `DialogsListAdapte` [#188](https://github.com/stfalcon-studio/ChatKit/issues/188) +* Fixed `delete` and `deleteByIds` methods in MessagesListAdapter +* Merged: Clear last message if null in dialog list (Fix issue #189) [#190](https://github.com/stfalcon-studio/ChatKit/pull/190) +* Merged: Add upsert method to dialogs list [#191](https://github.com/stfalcon-studio/ChatKit/pull/191) +* Merged: Update documentation to add upsertItem method [#208](https://github.com/stfalcon-studio/ChatKit/pull/208) + ## Version 0.3.1 (2018/08/16) * [Passing custom data to your ViewHolder](https://github.com/stfalcon-studio/ChatKit/blob/master/docs/COMPONENT_MESSAGES_LIST.md#passing-custom-data-to-your-viewholder) [#180](https://github.com/stfalcon-studio/ChatKit/issues/180) * Added Proguard rules to [Readme](https://github.com/stfalcon-studio/ChatKit#proguard) and [sample project](https://github.com/stfalcon-studio/ChatKit/blob/master/sample/proguard-rules.pro). [#122](https://github.com/stfalcon-studio/ChatKit/issues/122) From 5edd8044ff407373cfcf7cbd7898dbee4ee3b65c Mon Sep 17 00:00:00 2001 From: Anton Bevza Date: Fri, 12 Oct 2018 09:48:09 +0300 Subject: [PATCH 04/21] Update CHANGELOG.md --- docs/CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 6dc81352..82c7cd8d 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,3 +1,6 @@ +## Version 0.3.3-SNAPSHOT (2018/10/12) +* Merged: Added upsert method to move a specific item to the start. [#209](https://github.com/stfalcon-studio/ChatKit/pull/209) + ## Version 0.3.2 (2018/09/28) * [Passing custom data to ImageLoader](https://github.com/stfalcon-studio/ChatKit/issues/183) * Fixed [#198](https://github.com/stfalcon-studio/ChatKit/issues/198) From c48ace09d79c9825724062987880eee8b9ca9b3e Mon Sep 17 00:00:00 2001 From: Anton Date: Fri, 12 Oct 2018 10:00:59 +0300 Subject: [PATCH 05/21] version 0.3.3-SNAPSHOT --- chatkit/build.gradle | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/chatkit/build.gradle b/chatkit/build.gradle index 9889ae13..32c8c3da 100644 --- a/chatkit/build.gradle +++ b/chatkit/build.gradle @@ -8,8 +8,7 @@ android { defaultConfig { minSdkVersion 14 versionCode 1 - versionName "0.3.2" - + versionName "0.3.3-SNAPSHOT" consumerProguardFiles 'proguard.txt' } android { @@ -22,7 +21,7 @@ android { publish { groupId = 'com.github.stfalcon' artifactId = 'chatkit' - publishVersion = '0.3.2' + publishVersion = '0.3.3-SNAPSHOT' desc = 'ChatKit - is a library designed to simplify the development of UI for such a trivial task as chat. It have flexible possibilities for styling, customizing and data management' licences = ['Apache-2.0'] uploadName = 'ChatKit' From a660b7ac9ecbb094467c226f9255a32bdc05316f Mon Sep 17 00:00:00 2001 From: Anton Date: Fri, 12 Oct 2018 10:13:19 +0300 Subject: [PATCH 06/21] version 0.3.3 --- chatkit/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chatkit/build.gradle b/chatkit/build.gradle index 32c8c3da..f9b50b7f 100644 --- a/chatkit/build.gradle +++ b/chatkit/build.gradle @@ -8,7 +8,7 @@ android { defaultConfig { minSdkVersion 14 versionCode 1 - versionName "0.3.3-SNAPSHOT" + versionName "0.3.3" consumerProguardFiles 'proguard.txt' } android { @@ -21,7 +21,7 @@ android { publish { groupId = 'com.github.stfalcon' artifactId = 'chatkit' - publishVersion = '0.3.3-SNAPSHOT' + publishVersion = '0.3.3' desc = 'ChatKit - is a library designed to simplify the development of UI for such a trivial task as chat. It have flexible possibilities for styling, customizing and data management' licences = ['Apache-2.0'] uploadName = 'ChatKit' From 6b9072b2db6c2674609cb97981522dfc1e5f8951 Mon Sep 17 00:00:00 2001 From: Anton Bevza Date: Fri, 12 Oct 2018 10:19:01 +0300 Subject: [PATCH 07/21] Update CHANGELOG.md --- docs/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 82c7cd8d..32e427f5 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,4 +1,4 @@ -## Version 0.3.3-SNAPSHOT (2018/10/12) +## Version 0.3.3 (2018/10/12) * Merged: Added upsert method to move a specific item to the start. [#209](https://github.com/stfalcon-studio/ChatKit/pull/209) ## Version 0.3.2 (2018/09/28) From 2cfc13868be581aae82a9980dd7dff185a20a5dc Mon Sep 17 00:00:00 2001 From: Anton Bevza Date: Fri, 12 Oct 2018 10:20:52 +0300 Subject: [PATCH 08/21] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a0736751..f98dad80 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ To implement all of the features above you can use the following components: Download via Gradle: ```gradle -compile 'com.github.stfalcon:chatkit:0.3.1' +compile 'com.github.stfalcon:chatkit:0.3.3' ``` or Maven: @@ -51,7 +51,7 @@ or Maven: com.github.stfalcon chatkit - 0.3.1 + 0.3.3 pom ``` From 0c77ce94379d325d21773b75747b169efa0c25ce Mon Sep 17 00:00:00 2001 From: Anton Bevza Date: Wed, 29 May 2019 10:06:34 +0300 Subject: [PATCH 09/21] Update COMPONENT_MESSAGES_LIST.md --- docs/COMPONENT_MESSAGES_LIST.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/COMPONENT_MESSAGES_LIST.md b/docs/COMPONENT_MESSAGES_LIST.md index d424767f..1273fda8 100644 --- a/docs/COMPONENT_MESSAGES_LIST.md +++ b/docs/COMPONENT_MESSAGES_LIST.md @@ -370,7 +370,7 @@ Then in our custom ViewHolder in method `onBind`: } ``` Then create Payload and set it and our ViewHolder class to MessageHolders config. -``` +```java //We can pass any data to ViewHolder with payload CustomIncomingTextMessageViewHolder.Payload payload = new CustomIncomingTextMessageViewHolder.Payload(); //For example click listener From 47c2ca3c8e60a089f3fa600a89905f0805000e08 Mon Sep 17 00:00:00 2001 From: Andrii Zhumela Date: Mon, 8 Jul 2019 11:47:18 +0300 Subject: [PATCH 10/21] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index f98dad80..5b64f95a 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,13 @@ or Maven: ``` +### AndroidX +To use with AndroidX you have to set targetSdkVersion for your project to 28 and add following 2 lines in ```gradle.properties``` file. +``` +android.useAndroidX=true +android.enableJetifier=true +``` + ### Proguard If you are using ProGuard you might need to add rules: ``` From 243e8908de999a9111b2c4192808488f2c946fd0 Mon Sep 17 00:00:00 2001 From: Andrii Zhumela Date: Tue, 9 Jul 2019 09:59:54 +0300 Subject: [PATCH 11/21] Update COMPONENT_MESSAGES_LIST.md --- docs/COMPONENT_MESSAGES_LIST.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/COMPONENT_MESSAGES_LIST.md b/docs/COMPONENT_MESSAGES_LIST.md index 1273fda8..cff2a03e 100644 --- a/docs/COMPONENT_MESSAGES_LIST.md +++ b/docs/COMPONENT_MESSAGES_LIST.md @@ -282,7 +282,7 @@ But what if you need not only to change the appearance of the elements, but also * `@id/messageTime` (TextView) * `@id/messageUserAvatar` (ImageView) -For better understanding see how [custom layout looks like](https://github.com/stfalcon-studio/ChatKit/blob/master/sample/src/main/res/layout/item_custom_incoming_message.xml) +For better understanding see how [custom layout looks like](https://github.com/stfalcon-studio/ChatKit/blob/master/sample/src/main/res/layout/item_custom_incoming_text_message.xml) After a layout was created, you need to put it into `HoldersConfig` object, which has appropriate methods for each layout files: `setIncomingLayout(int layoutRes)`, `setOutcomingLayout(int layoutRes)` `setDateHeaderLayout(int layoutRes)`. To hook up a config object, you need to transfer it to adapter through a constructor: From b3be2b0f840c23683ece92c084a60df78737da73 Mon Sep 17 00:00:00 2001 From: Ilya Gazman Date: Wed, 7 Oct 2020 19:54:44 -0400 Subject: [PATCH 12/21] Migrated to AndroidX and Java 8 --- chatkit/build.gradle | 21 +- chatkit/src/main/AndroidManifest.xml | 3 +- .../stfalcon/chatkit/commons/ImageLoader.java | 3 +- .../com/stfalcon/chatkit/commons/Style.java | 11 +- .../stfalcon/chatkit/commons/ViewHolder.java | 3 +- .../chatkit/commons/models/IUser.java | 6 +- .../commons/models/MessageContentType.java | 3 +- .../stfalcon/chatkit/dialogs/DialogsList.java | 15 +- .../chatkit/dialogs/DialogsListAdapter.java | 87 +++-- .../chatkit/messages/MessageHolders.java | 40 +-- .../chatkit/messages/MessageInput.java | 15 +- .../chatkit/messages/MessageInputStyle.java | 7 +- .../chatkit/messages/MessagesList.java | 11 +- .../chatkit/messages/MessagesListAdapter.java | 52 ++- .../chatkit/messages/MessagesListStyle.java | 7 +- .../messages/RecyclerScrollMoreListener.java | 8 +- .../chatkit/utils/RoundedImageView.java | 14 +- .../chatkit/utils/ShapeImageView.java | 2 +- .../src/main/res/layout/item_date_header.xml | 10 +- chatkit/src/main/res/layout/item_dialog.xml | 20 +- .../layout/item_incoming_image_message.xml | 11 +- .../res/layout/item_incoming_text_message.xml | 9 +- .../layout/item_outcoming_image_message.xml | 9 +- .../layout/item_outcoming_text_message.xml | 7 +- .../main/res/layout/view_message_input.xml | 17 +- chatkit/src/main/res/values/attrs.xml | 316 +++++++++--------- chatkit/src/main/res/values/strings.xml | 2 +- gradle.properties | 4 - gradlew | 198 +++++------ sample/build.gradle | 35 +- .../sample/ExampleInstrumentedTest.java | 7 +- sample/src/main/AndroidManifest.xml | 32 +- .../features/demo/DemoDialogsActivity.java | 13 +- .../features/demo/DemoMessagesActivity.java | 46 +-- .../holder/CustomHolderDialogsActivity.java | 2 +- .../holder/CustomHolderMessagesActivity.java | 13 +- .../CustomIncomingTextMessageViewHolder.java | 9 +- .../layout/CustomLayoutDialogsActivity.java | 2 +- .../layout/CustomLayoutMessagesActivity.java | 4 +- .../media/CustomMediaMessagesActivity.java | 13 +- .../IncomingVoiceMessageViewHolder.java | 4 +- .../OutcomingVoiceMessageViewHolder.java | 4 +- .../demo/def/DefaultDialogsActivity.java | 2 +- .../demo/def/DefaultMessagesActivity.java | 17 +- .../demo/styled/StyledDialogsActivity.java | 2 +- .../demo/styled/StyledMessagesActivity.java | 4 +- .../sample/features/main/MainActivity.java | 9 +- .../main/adapter/DemoCardFragment.java | 15 +- .../adapter/MainActivityPagerAdapter.java | 7 +- .../chatkit/sample/utils/AppUtils.java | 3 +- .../res/drawable/dark_blue_top_gradient.xml | 4 +- .../src/main/res/drawable/ic_play_black.xml | 5 +- .../src/main/res/drawable/ic_play_white.xml | 5 +- .../res/drawable/shape_bubble_offline.xml | 8 +- .../main/res/drawable/shape_bubble_online.xml | 8 +- .../main/res/drawable/shape_custom_cursor.xml | 6 +- .../layout/activity_custom_holder_dialogs.xml | 5 +- .../activity_custom_holder_messages.xml | 9 +- .../layout/activity_custom_layout_dialogs.xml | 5 +- .../activity_custom_layout_messages.xml | 9 +- .../layout/activity_custom_media_messages.xml | 9 +- .../res/layout/activity_default_dialogs.xml | 5 +- .../res/layout/activity_default_messages.xml | 9 +- sample/src/main/res/layout/activity_main.xml | 17 +- .../res/layout/activity_styled_dialogs.xml | 5 +- .../res/layout/activity_styled_messages.xml | 9 +- .../main/res/layout/fragment_demo_card.xml | 11 +- .../main/res/layout/item_custom_dialog.xml | 17 +- .../layout/item_custom_dialog_view_holder.xml | 20 +- .../item_custom_incoming_image_message.xml | 11 +- .../item_custom_incoming_text_message.xml | 11 +- .../item_custom_incoming_voice_message.xml | 11 +- .../item_custom_outcoming_image_message.xml | 7 +- .../item_custom_outcoming_text_message.xml | 7 +- .../item_custom_outcoming_voice_message.xml | 9 +- sample/src/main/res/layout/item_sample.xml | 11 +- .../src/main/res/menu/chat_actions_menu.xml | 6 +- .../chatkit/sample/ExampleUnitTest.java | 2 +- 78 files changed, 658 insertions(+), 737 deletions(-) diff --git a/chatkit/build.gradle b/chatkit/build.gradle index f9b50b7f..14d6746d 100644 --- a/chatkit/build.gradle +++ b/chatkit/build.gradle @@ -2,8 +2,8 @@ apply plugin: 'com.android.library' apply plugin: 'com.novoda.bintray-release' android { - compileSdkVersion 27 - buildToolsVersion "27.0.3" + compileSdkVersion 29 + buildToolsVersion '29.0.2' defaultConfig { minSdkVersion 14 @@ -16,6 +16,11 @@ android { abortOnError false } } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } } publish { @@ -28,15 +33,11 @@ publish { website = 'https://github.com/stfalcon-studio/ChatKit.git' } -ext { - supportVersion = '27.1.1' - flexboxVersion = '1.0.0' -} - dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation "com.android.support:appcompat-v7:$supportVersion" - implementation "com.android.support:design:$supportVersion" - implementation "com.google.android:flexbox:$flexboxVersion" + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'com.google.android.material:material:1.2.1' + implementation "com.google.android:flexbox:1.0.0" + implementation 'androidx.recyclerview:recyclerview:1.1.0' } diff --git a/chatkit/src/main/AndroidManifest.xml b/chatkit/src/main/AndroidManifest.xml index 1b8f973d..e3238ed8 100644 --- a/chatkit/src/main/AndroidManifest.xml +++ b/chatkit/src/main/AndroidManifest.xml @@ -1,4 +1,3 @@ - + diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/commons/ImageLoader.java b/chatkit/src/main/java/com/stfalcon/chatkit/commons/ImageLoader.java index a0f7f44f..bfcfeb78 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/commons/ImageLoader.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/commons/ImageLoader.java @@ -16,9 +16,10 @@ package com.stfalcon.chatkit.commons; -import android.support.annotation.Nullable; import android.widget.ImageView; +import androidx.annotation.Nullable; + /** * Callback for implementing images loading in message list */ diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/commons/Style.java b/chatkit/src/main/java/com/stfalcon/chatkit/commons/Style.java index fcbd8a77..c69511a3 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/commons/Style.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/commons/Style.java @@ -20,14 +20,15 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; -import android.support.annotation.AttrRes; -import android.support.annotation.ColorRes; -import android.support.annotation.DimenRes; -import android.support.annotation.DrawableRes; -import android.support.v4.content.ContextCompat; import android.util.AttributeSet; import android.util.TypedValue; +import androidx.annotation.AttrRes; +import androidx.annotation.ColorRes; +import androidx.annotation.DimenRes; +import androidx.annotation.DrawableRes; +import androidx.core.content.ContextCompat; + import com.stfalcon.chatkit.R; /** diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/commons/ViewHolder.java b/chatkit/src/main/java/com/stfalcon/chatkit/commons/ViewHolder.java index dff3193c..c92d5213 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/commons/ViewHolder.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/commons/ViewHolder.java @@ -16,9 +16,10 @@ package com.stfalcon.chatkit.commons; -import android.support.v7.widget.RecyclerView; import android.view.View; +import androidx.recyclerview.widget.RecyclerView; + /** * Base ViewHolder */ diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/commons/models/IUser.java b/chatkit/src/main/java/com/stfalcon/chatkit/commons/models/IUser.java index d51c2081..d4c621a0 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/commons/models/IUser.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/commons/models/IUser.java @@ -25,20 +25,20 @@ public interface IUser { * Returns the user's id * * @return the user's id - * */ + */ String getId(); /** * Returns the user's name * * @return the user's name - * */ + */ String getName(); /** * Returns the user's avatar image url * * @return the user's avatar image url - * */ + */ String getAvatar(); } diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/commons/models/MessageContentType.java b/chatkit/src/main/java/com/stfalcon/chatkit/commons/models/MessageContentType.java index b8f2675a..cb33dd6c 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/commons/models/MessageContentType.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/commons/models/MessageContentType.java @@ -16,7 +16,8 @@ package com.stfalcon.chatkit.commons.models; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; + import com.stfalcon.chatkit.messages.MessageHolders; /* diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/dialogs/DialogsList.java b/chatkit/src/main/java/com/stfalcon/chatkit/dialogs/DialogsList.java index 6336203d..cf2448cb 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/dialogs/DialogsList.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/dialogs/DialogsList.java @@ -17,13 +17,14 @@ package com.stfalcon.chatkit.dialogs; import android.content.Context; -import android.support.annotation.Nullable; -import android.support.v7.widget.DefaultItemAnimator; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.SimpleItemAnimator; import android.util.AttributeSet; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.SimpleItemAnimator; + import com.stfalcon.chatkit.commons.models.IDialog; /** @@ -73,7 +74,7 @@ public void setAdapter(Adapter adapter) { * @param adapter Adapter. Must extend DialogsListAdapter * @param Dialog model class */ - public + public > void setAdapter(DialogsListAdapter adapter) { setAdapter(adapter, false); } @@ -85,7 +86,7 @@ void setAdapter(DialogsListAdapter adapter) { * @param reverseLayout weather to use reverse layout for layout manager. * @param Dialog model class */ - public + public > void setAdapter(DialogsListAdapter adapter, boolean reverseLayout) { SimpleItemAnimator itemAnimator = new DefaultItemAnimator(); itemAnimator.setSupportsChangeAnimations(false); diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/dialogs/DialogsListAdapter.java b/chatkit/src/main/java/com/stfalcon/chatkit/dialogs/DialogsListAdapter.java index dc48e7f0..147fda0e 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/dialogs/DialogsListAdapter.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/dialogs/DialogsListAdapter.java @@ -18,9 +18,6 @@ import android.graphics.Typeface; import android.graphics.drawable.GradientDrawable; -import android.support.annotation.LayoutRes; -import android.support.annotation.Nullable; -import android.support.v7.widget.RecyclerView; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; @@ -28,6 +25,10 @@ import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.LayoutRes; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.RecyclerView; + import com.stfalcon.chatkit.R; import com.stfalcon.chatkit.commons.ImageLoader; import com.stfalcon.chatkit.commons.ViewHolder; @@ -216,8 +217,9 @@ public void addItem(int position, DIALOG dialog) { /** * Move an item + * * @param fromPosition the actual position of the item - * @param toPosition the new position of the item + * @param toPosition the new position of the item */ public void moveItem(int fromPosition, int toPosition) { DIALOG dialog = items.remove(fromPosition); @@ -327,15 +329,12 @@ public boolean updateDialogWithMessage(String dialogId, IMessage message) { * Sort dialog by last message date */ public void sortByLastMessageDate() { - Collections.sort(items, new Comparator() { - @Override - public int compare(DIALOG o1, DIALOG o2) { - if (o1.getLastMessage().getCreatedAt().after(o2.getLastMessage().getCreatedAt())) { - return -1; - } else if (o1.getLastMessage().getCreatedAt().before(o2.getLastMessage().getCreatedAt())) { - return 1; - } else return 0; - } + Collections.sort(items, (o1, o2) -> { + if (o1.getLastMessage().getCreatedAt().after(o2.getLastMessage().getCreatedAt())) { + return -1; + } else if (o1.getLastMessage().getCreatedAt().before(o2.getLastMessage().getCreatedAt())) { + return 1; + } else return 0; }); notifyDataSetChanged(); } @@ -443,15 +442,15 @@ void setStyle(DialogListStyle dialogStyle) { } /** - * @return the position of a dialog in the dialogs list. - */ + * @return the position of a dialog in the dialogs list. + */ public int getDialogPosition(DIALOG dialog) { return this.items.indexOf(dialog); } /* - * LISTENERS - * */ + * LISTENERS + * */ public interface OnDialogClickListener { void onDialogClick(DIALOG dialog); } @@ -469,8 +468,8 @@ public interface OnDialogViewLongClickListener { } /* - * HOLDERS - * */ + * HOLDERS + * */ public abstract static class BaseDialogViewHolder extends ViewHolder { @@ -525,15 +524,15 @@ public static class DialogViewHolder extends BaseDialogV public DialogViewHolder(View itemView) { super(itemView); - root = (ViewGroup) itemView.findViewById(R.id.dialogRootLayout); - container = (ViewGroup) itemView.findViewById(R.id.dialogContainer); - tvName = (TextView) itemView.findViewById(R.id.dialogName); - tvDate = (TextView) itemView.findViewById(R.id.dialogDate); - tvLastMessage = (TextView) itemView.findViewById(R.id.dialogLastMessage); - tvBubble = (TextView) itemView.findViewById(R.id.dialogUnreadBubble); - ivLastMessageUser = (ImageView) itemView.findViewById(R.id.dialogLastMessageUserAvatar); - ivAvatar = (ImageView) itemView.findViewById(R.id.dialogAvatar); - dividerContainer = (ViewGroup) itemView.findViewById(R.id.dialogDividerContainer); + root = itemView.findViewById(R.id.dialogRootLayout); + container = itemView.findViewById(R.id.dialogContainer); + tvName = itemView.findViewById(R.id.dialogName); + tvDate = itemView.findViewById(R.id.dialogDate); + tvLastMessage = itemView.findViewById(R.id.dialogLastMessage); + tvBubble = itemView.findViewById(R.id.dialogUnreadBubble); + ivLastMessageUser = itemView.findViewById(R.id.dialogLastMessageUserAvatar); + ivAvatar = itemView.findViewById(R.id.dialogAvatar); + dividerContainer = itemView.findViewById(R.id.dialogDividerContainer); divider = itemView.findViewById(R.id.dialogDivider); } @@ -680,30 +679,24 @@ public void onBind(final DIALOG dialog) { tvBubble.setVisibility(dialogStyle.isDialogUnreadBubbleEnabled() && dialog.getUnreadCount() > 0 ? VISIBLE : GONE); - container.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (onDialogClickListener != null) { - onDialogClickListener.onDialogClick(dialog); - } - if (onDialogViewClickListener != null) { - onDialogViewClickListener.onDialogViewClick(view, dialog); - } + container.setOnClickListener(view -> { + if (onDialogClickListener != null) { + onDialogClickListener.onDialogClick(dialog); + } + if (onDialogViewClickListener != null) { + onDialogViewClickListener.onDialogViewClick(view, dialog); } }); - container.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View view) { - if (onLongItemClickListener != null) { - onLongItemClickListener.onDialogLongClick(dialog); - } - if (onDialogViewLongClickListener != null) { - onDialogViewLongClickListener.onDialogViewLongClick(view, dialog); - } - return onLongItemClickListener != null || onDialogViewLongClickListener != null; + container.setOnLongClickListener(view -> { + if (onLongItemClickListener != null) { + onLongItemClickListener.onDialogLongClick(dialog); + } + if (onDialogViewLongClickListener != null) { + onDialogViewLongClickListener.onDialogViewLongClick(view, dialog); } + return onLongItemClickListener != null || onDialogViewLongClickListener != null; }); } diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessageHolders.java b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessageHolders.java index c089cbdf..2c09b016 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessageHolders.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessageHolders.java @@ -1,8 +1,5 @@ package com.stfalcon.chatkit.messages; -import android.support.annotation.LayoutRes; -import android.support.annotation.NonNull; -import android.support.v4.view.ViewCompat; import android.text.Spannable; import android.text.method.LinkMovementMethod; import android.util.SparseArray; @@ -14,6 +11,10 @@ import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; +import androidx.core.view.ViewCompat; + import com.stfalcon.chatkit.R; import com.stfalcon.chatkit.commons.ImageLoader; import com.stfalcon.chatkit.commons.ViewHolder; @@ -508,8 +509,8 @@ MessageHolders registerContentType( customContentTypes.add( new MessageHolders.ContentTypeConfig<>(type, - new MessageHolders.HolderConfig<>(incomingHolder, incomingLayout, incomingPayload), - new MessageHolders.HolderConfig<>(outcomingHolder, outcomingLayout, outcomingPayload))); + new HolderConfig<>(incomingHolder, incomingLayout, incomingPayload), + new HolderConfig<>(outcomingHolder, outcomingLayout, outcomingPayload))); this.contentChecker = contentChecker; return this; } @@ -580,12 +581,7 @@ protected void bind(final ViewHolder holder, final Object item, boolean isSelect final int key = clickListenersArray.keyAt(i); final View view = holder.itemView.findViewById(key); if (view != null) { - view.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListenersArray.get(key).onMessageViewClick(view, (IMessage) item); - } - }); + view.setOnClickListener(v -> clickListenersArray.get(key).onMessageViewClick(view, (IMessage) item)); } } } else if (item instanceof Date) { @@ -793,8 +789,8 @@ public void applyStyle(MessagesListStyle style) { } private void init(View itemView) { - bubble = (ViewGroup) itemView.findViewById(R.id.bubble); - text = (TextView) itemView.findViewById(R.id.messageText); + bubble = itemView.findViewById(R.id.bubble); + text = itemView.findViewById(R.id.messageText); } } @@ -852,8 +848,8 @@ public final void applyStyle(MessagesListStyle style) { } private void init(View itemView) { - bubble = (ViewGroup) itemView.findViewById(R.id.bubble); - text = (TextView) itemView.findViewById(R.id.messageText); + bubble = itemView.findViewById(R.id.bubble); + text = itemView.findViewById(R.id.messageText); } } @@ -913,7 +909,7 @@ protected Object getPayloadForImageLoader(MESSAGE message) { } private void init(View itemView) { - image = (ImageView) itemView.findViewById(R.id.image); + image = itemView.findViewById(R.id.image); imageOverlay = itemView.findViewById(R.id.imageOverlay); if (image instanceof RoundedImageView) { @@ -983,7 +979,7 @@ protected Object getPayloadForImageLoader(MESSAGE message) { } private void init(View itemView) { - image = (ImageView) itemView.findViewById(R.id.image); + image = itemView.findViewById(R.id.image); imageOverlay = itemView.findViewById(R.id.imageOverlay); if (image instanceof RoundedImageView) { @@ -1009,7 +1005,7 @@ public static class DefaultDateHeaderViewHolder extends ViewHolder public DefaultDateHeaderViewHolder(View itemView) { super(itemView); - text = (TextView) itemView.findViewById(R.id.messageText); + text = itemView.findViewById(R.id.messageText); } @Override @@ -1089,8 +1085,8 @@ public void applyStyle(MessagesListStyle style) { } private void init(View itemView) { - time = (TextView) itemView.findViewById(R.id.messageTime); - userAvatar = (ImageView) itemView.findViewById(R.id.messageUserAvatar); + time = itemView.findViewById(R.id.messageTime); + userAvatar = itemView.findViewById(R.id.messageUserAvatar); } } @@ -1130,7 +1126,7 @@ public void applyStyle(MessagesListStyle style) { } private void init(View itemView) { - time = (TextView) itemView.findViewById(R.id.messageTime); + time = itemView.findViewById(R.id.messageTime); } } @@ -1189,7 +1185,7 @@ private ContentTypeConfig( } } - private class HolderConfig { + private static class HolderConfig { protected Class> holder; protected int layout; diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessageInput.java b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessageInput.java index 16e42a35..665f0503 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessageInput.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessageInput.java @@ -19,8 +19,6 @@ import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Build; -import android.support.v4.view.ViewCompat; -import android.support.v4.widget.Space; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; @@ -29,8 +27,11 @@ import android.widget.EditText; import android.widget.ImageButton; import android.widget.RelativeLayout; +import android.widget.Space; import android.widget.TextView; +import androidx.core.view.ViewCompat; + import com.stfalcon.chatkit.R; import java.lang.reflect.Field; @@ -226,11 +227,11 @@ && getPaddingBottom() == 0) { private void init(Context context) { inflate(context, R.layout.view_message_input, this); - messageInput = (EditText) findViewById(R.id.messageInput); - messageSendButton = (ImageButton) findViewById(R.id.messageSendButton); - attachmentButton = (ImageButton) findViewById(R.id.attachmentButton); - sendButtonSpace = (Space) findViewById(R.id.sendButtonSpace); - attachmentButtonSpace = (Space) findViewById(R.id.attachmentButtonSpace); + messageInput = findViewById(R.id.messageInput); + messageSendButton = findViewById(R.id.messageSendButton); + attachmentButton = findViewById(R.id.attachmentButton); + sendButtonSpace = findViewById(R.id.sendButtonSpace); + attachmentButtonSpace = findViewById(R.id.attachmentButtonSpace); messageSendButton.setOnClickListener(this); attachmentButton.setOnClickListener(this); diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessageInputStyle.java b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessageInputStyle.java index 1cea99c8..ddac1859 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessageInputStyle.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessageInputStyle.java @@ -20,11 +20,12 @@ import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; -import android.support.annotation.ColorInt; -import android.support.annotation.DrawableRes; -import android.support.v4.graphics.drawable.DrawableCompat; import android.util.AttributeSet; +import androidx.annotation.ColorInt; +import androidx.annotation.DrawableRes; +import androidx.core.graphics.drawable.DrawableCompat; + import com.stfalcon.chatkit.R; import com.stfalcon.chatkit.commons.Style; diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesList.java b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesList.java index 17b3f8ed..901b6eeb 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesList.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesList.java @@ -17,13 +17,14 @@ package com.stfalcon.chatkit.messages; import android.content.Context; -import android.support.annotation.Nullable; -import android.support.v7.widget.DefaultItemAnimator; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.SimpleItemAnimator; import android.util.AttributeSet; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.SimpleItemAnimator; + import com.stfalcon.chatkit.commons.models.IMessage; /** diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java index e0fcb8a2..74ed2760 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java @@ -19,8 +19,6 @@ import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; -import android.support.annotation.LayoutRes; -import android.support.v7.widget.RecyclerView; import android.text.Spannable; import android.text.method.LinkMovementMethod; import android.util.SparseArray; @@ -30,6 +28,9 @@ import android.view.ViewGroup; import android.widget.TextView; +import androidx.annotation.LayoutRes; +import androidx.recyclerview.widget.RecyclerView; + import com.stfalcon.chatkit.R; import com.stfalcon.chatkit.commons.ImageLoader; import com.stfalcon.chatkit.commons.ViewHolder; @@ -617,39 +618,32 @@ private void notifyMessageViewLongClicked(View view, MESSAGE message) { } private View.OnClickListener getMessageClickListener(final Wrapper wrapper) { - return new View.OnClickListener() { - @Override - public void onClick(View view) { - if (selectionListener != null && isSelectionModeEnabled) { - wrapper.isSelected = !wrapper.isSelected; + return view -> { + if (selectionListener != null && isSelectionModeEnabled) { + wrapper.isSelected = !wrapper.isSelected; - if (wrapper.isSelected) incrementSelectedItemsCount(); - else decrementSelectedItemsCount(); + if (wrapper.isSelected) incrementSelectedItemsCount(); + else decrementSelectedItemsCount(); - MESSAGE message = (wrapper.item); - notifyItemChanged(getMessagePositionById(message.getId())); - } else { - notifyMessageClicked(wrapper.item); - notifyMessageViewClicked(view, wrapper.item); - } + MESSAGE message = (wrapper.item); + notifyItemChanged(getMessagePositionById(message.getId())); + } else { + notifyMessageClicked(wrapper.item); + notifyMessageViewClicked(view, wrapper.item); } }; } private View.OnLongClickListener getMessageLongClickListener(final Wrapper wrapper) { - return new View.OnLongClickListener() { - @Override - public boolean onLongClick(View view) { - if (selectionListener == null) { - notifyMessageLongClicked(wrapper.item); - notifyMessageViewLongClicked(view, wrapper.item); - return true; - } else { - isSelectionModeEnabled = true; - view.performClick(); - return true; - } + return view -> { + if (selectionListener == null) { + notifyMessageLongClicked(wrapper.item); + notifyMessageViewLongClicked(view, wrapper.item); + } else { + isSelectionModeEnabled = true; + view.performClick(); } + return true; }; } @@ -687,7 +681,7 @@ void setStyle(MessagesListStyle style) { /* * WRAPPER * */ - public class Wrapper { + public static class Wrapper { public DATA item; public boolean isSelected; @@ -948,7 +942,7 @@ public static class DefaultDateHeaderViewHolder extends ViewHolder public DefaultDateHeaderViewHolder(View itemView) { super(itemView); - text = (TextView) itemView.findViewById(R.id.messageText); + text = itemView.findViewById(R.id.messageText); } @Override diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListStyle.java b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListStyle.java index 88c6fe15..4ea6ed10 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListStyle.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListStyle.java @@ -22,11 +22,12 @@ import android.graphics.Color; import android.graphics.Typeface; import android.graphics.drawable.Drawable; -import android.support.annotation.ColorInt; -import android.support.annotation.DrawableRes; -import android.support.v4.graphics.drawable.DrawableCompat; import android.util.AttributeSet; +import androidx.annotation.ColorInt; +import androidx.annotation.DrawableRes; +import androidx.core.graphics.drawable.DrawableCompat; + import com.stfalcon.chatkit.R; import com.stfalcon.chatkit.commons.Style; diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/messages/RecyclerScrollMoreListener.java b/chatkit/src/main/java/com/stfalcon/chatkit/messages/RecyclerScrollMoreListener.java index 00012084..f6e61998 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/messages/RecyclerScrollMoreListener.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/messages/RecyclerScrollMoreListener.java @@ -16,10 +16,10 @@ package com.stfalcon.chatkit.messages; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.StaggeredGridLayoutManager; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.StaggeredGridLayoutManager; class RecyclerScrollMoreListener extends RecyclerView.OnScrollListener { diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/utils/RoundedImageView.java b/chatkit/src/main/java/com/stfalcon/chatkit/utils/RoundedImageView.java index 7770fb13..d53c6f0d 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/utils/RoundedImageView.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/utils/RoundedImageView.java @@ -18,12 +18,12 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.net.Uri; -import android.support.annotation.DimenRes; -import android.support.annotation.NonNull; -import android.support.v4.content.ContextCompat; -import android.support.v7.widget.AppCompatImageView; import android.util.AttributeSet; -import android.widget.ImageView; + +import androidx.annotation.DimenRes; +import androidx.annotation.NonNull; +import androidx.appcompat.widget.AppCompatImageView; +import androidx.core.content.ContextCompat; /** * Thanks to Joonho Kim (https://github.com/pungrue26) for his lightweight SelectableRoundedImageView, @@ -134,8 +134,6 @@ private static class RoundedCornerDrawable extends Drawable { private final Paint mBitmapPaint; - private BitmapShader mBitmapShader; - private float[] mRadii = new float[]{0, 0, 0, 0, 0, 0, 0, 0}; private Path mPath = new Path(); @@ -144,7 +142,7 @@ private static class RoundedCornerDrawable extends Drawable { private RoundedCornerDrawable(Bitmap bitmap, Resources r) { mBitmap = bitmap; - mBitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + BitmapShader mBitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); mBitmapWidth = bitmap.getScaledWidth(r.getDisplayMetrics()); mBitmapHeight = bitmap.getScaledHeight(r.getDisplayMetrics()); diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/utils/ShapeImageView.java b/chatkit/src/main/java/com/stfalcon/chatkit/utils/ShapeImageView.java index b9f054c5..f212468a 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/utils/ShapeImageView.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/utils/ShapeImageView.java @@ -26,7 +26,7 @@ * ImageView with mask what described with Bézier Curves */ -public class ShapeImageView extends android.support.v7.widget.AppCompatImageView { +public class ShapeImageView extends androidx.appcompat.widget.AppCompatImageView { private Path path; public ShapeImageView(Context context) { diff --git a/chatkit/src/main/res/layout/item_date_header.xml b/chatkit/src/main/res/layout/item_date_header.xml index 3564394c..356aef27 100644 --- a/chatkit/src/main/res/layout/item_date_header.xml +++ b/chatkit/src/main/res/layout/item_date_header.xml @@ -1,6 +1,6 @@ \ No newline at end of file + android:id="@id/messageText" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_horizontal" + android:padding="16dp" /> \ No newline at end of file diff --git a/chatkit/src/main/res/layout/item_dialog.xml b/chatkit/src/main/res/layout/item_dialog.xml index 9820dec2..3e3f8b55 100644 --- a/chatkit/src/main/res/layout/item_dialog.xml +++ b/chatkit/src/main/res/layout/item_dialog.xml @@ -1,7 +1,7 @@ + android:id="@id/dialogRootLayout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + android:layout_margin="16dp" /> + android:maxLines="1" /> + android:maxLines="1" /> + android:layout_marginRight="7dp" /> + android:maxLines="1" /> @@ -88,7 +88,7 @@ android:ellipsize="end" android:fontFamily="@string/font_fontFamily_medium" android:gravity="center" - android:lines="1"/> + android:lines="1" /> + android:background="@color/dialog_divider" /> diff --git a/chatkit/src/main/res/layout/item_incoming_image_message.xml b/chatkit/src/main/res/layout/item_incoming_image_message.xml index 2685e398..73d614d4 100644 --- a/chatkit/src/main/res/layout/item_incoming_image_message.xml +++ b/chatkit/src/main/res/layout/item_incoming_image_message.xml @@ -1,5 +1,4 @@ - + android:layout_marginRight="8dp" /> + android:layout_toRightOf="@id/messageUserAvatar" /> + android:layout_alignTop="@id/image" /> + android:layout_below="@id/image" /> \ No newline at end of file diff --git a/chatkit/src/main/res/layout/item_incoming_text_message.xml b/chatkit/src/main/res/layout/item_incoming_text_message.xml index 3c35437d..f7ba34b0 100644 --- a/chatkit/src/main/res/layout/item_incoming_text_message.xml +++ b/chatkit/src/main/res/layout/item_incoming_text_message.xml @@ -1,5 +1,4 @@ - + android:layout_marginRight="8dp" /> + android:layout_height="wrap_content" /> + app:layout_alignSelf="center" /> diff --git a/chatkit/src/main/res/layout/item_outcoming_image_message.xml b/chatkit/src/main/res/layout/item_outcoming_image_message.xml index 21712d4f..0149b461 100644 --- a/chatkit/src/main/res/layout/item_outcoming_image_message.xml +++ b/chatkit/src/main/res/layout/item_outcoming_image_message.xml @@ -1,5 +1,4 @@ - + android:layout_marginStart="@dimen/message_outcoming_bubble_margin_left" /> + android:layout_alignTop="@id/image" /> + android:layout_below="@id/image" /> \ No newline at end of file diff --git a/chatkit/src/main/res/layout/item_outcoming_text_message.xml b/chatkit/src/main/res/layout/item_outcoming_text_message.xml index 51e5aeaa..58e58351 100644 --- a/chatkit/src/main/res/layout/item_outcoming_text_message.xml +++ b/chatkit/src/main/res/layout/item_outcoming_text_message.xml @@ -1,5 +1,4 @@ - + android:layout_alignWithParentIfMissing="true" /> + app:layout_order="1" /> diff --git a/chatkit/src/main/res/layout/view_message_input.xml b/chatkit/src/main/res/layout/view_message_input.xml index aaed1f5f..9ab1b4d9 100644 --- a/chatkit/src/main/res/layout/view_message_input.xml +++ b/chatkit/src/main/res/layout/view_message_input.xml @@ -1,5 +1,4 @@ - @@ -8,14 +7,14 @@ android:id="@id/attachmentButton" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_centerVertical="true"/> + android:layout_centerVertical="true" /> - + android:layout_toRightOf="@id/attachmentButton" /> + android:inputType="textAutoCorrect|textAutoComplete|textMultiLine|textCapSentences" /> - + android:layout_toStartOf="@id/messageSendButton" /> + android:layout_centerVertical="true" /> \ No newline at end of file diff --git a/chatkit/src/main/res/values/attrs.xml b/chatkit/src/main/res/values/attrs.xml index 1cd0a317..4e996630 100644 --- a/chatkit/src/main/res/values/attrs.xml +++ b/chatkit/src/main/res/values/attrs.xml @@ -1,227 +1,227 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + - - + + - - + + - - - - + + + + - - - + + + - - - - + + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - + + + + - - - + + + - + - - + + - - - + + + - + - - - + + + - - + + - - - + + + - + - - - + + + - - + + - - - + + + - + - - - + + + - - - + + + - - - + + + - + - - + + - - - + + + - - - - + + + + - - + + diff --git a/chatkit/src/main/res/values/strings.xml b/chatkit/src/main/res/values/strings.xml index ea100eae..2c5844dd 100644 --- a/chatkit/src/main/res/values/strings.xml +++ b/chatkit/src/main/res/values/strings.xml @@ -1 +1 @@ - + diff --git a/gradle.properties b/gradle.properties index aac7c9b4..743d692c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,16 +1,12 @@ # Project-wide Gradle settings. - # IDE (e.g. Android Studio) users: # Gradle settings configured through the IDE *will override* # any settings specified in this file. - # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html - # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. org.gradle.jvmargs=-Xmx1536m - # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects diff --git a/gradlew b/gradlew index 27309d92..dc2f857e 100755 --- a/gradlew +++ b/gradlew @@ -10,22 +10,22 @@ # Resolve links: $0 may be a link PRG="$0" # Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' >/dev/null; then + PRG="$link" + else + PRG=$(dirname "$PRG")"/$link" + fi done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" +SAVED="$(pwd)" +cd "$(dirname \"$PRG\")/" >/dev/null +APP_HOME="$(pwd -P)" cd "$SAVED" >/dev/null APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=$(basename "$0") # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS="" @@ -33,15 +33,15 @@ DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { - echo "$*" +warn() { + echo "$*" } -die ( ) { - echo - echo "$*" - echo - exit 1 +die() { + echo + echo "$*" + echo + exit 1 } # OS specific support (must be 'true' or 'false'). @@ -49,114 +49,114 @@ cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$(uname)" in +CYGWIN*) + cygwin=true + ;; +Darwin*) + darwin=true + ;; +MINGW*) + msys=true + ;; +NONSTOP*) + nonstop=true + ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME +if [ -n "$JAVA_HOME" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ]; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME Please set the JAVA_HOME variable in your environment to match the location of your Java installation." - fi + fi else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ]; then + MAX_FD_LIMIT=$(ulimit -H -n) + if [ $? -eq 0 ]; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then + MAX_FD="$MAX_FD_LIMIT" fi + ulimit -n $MAX_FD + if [ $? -ne 0 ]; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi fi # For Darwin, add options to specify how the application appears in the dock if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi # For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" +if $cygwin; then + APP_HOME=$(cygpath --path --mixed "$APP_HOME") + CLASSPATH=$(cygpath --path --mixed "$CLASSPATH") + JAVACMD=$(cygpath --unix "$JAVACMD") + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=$(find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null) + SEP="" + for dir in $ROOTDIRSRAW; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ]; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@"; do + CHECK=$(echo "$arg" | egrep -c "$OURCYGPATTERN" -) + CHECK2=$(echo "$arg" | egrep -c "^-") ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ]; then ### Added a condition + eval $(echo args$i)=$(cygpath --path --ignore --mixed "$arg") + else + eval $(echo args$i)="\"$arg\"" fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac + i=$((i + 1)) + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac fi # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules function splitJvmOpts() { - JVM_OPTS=("$@") + JVM_OPTS=("$@") } eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" diff --git a/sample/build.gradle b/sample/build.gradle index dbed4d4e..15944d1b 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -1,14 +1,14 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 27 - buildToolsVersion "27.0.3" + compileSdkVersion 29 + buildToolsVersion '29.0.2' defaultConfig { applicationId "com.stfalcon.chatkit.sample" minSdkVersion 14 versionCode 1 versionName "1.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' } buildTypes { release { @@ -21,37 +21,34 @@ android { abortOnError false } } -} -ext { - supportVersion = '27.1.1' - picassoVersion = '2.5.2' - circleImageViewVersion = '2.2.0' - shapeImageViewVersion = '0.9.3' - circleindicatorVersion = '1.2.2@aar' + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } } dependencies { implementation project(':chatkit') implementation fileTree(dir: 'libs', include: ['*.jar']) - androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { + androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', { exclude group: 'com.android.support', module: 'support-annotations' }) - testImplementation 'junit:junit:4.12' + testImplementation 'junit:junit:4.13' - implementation "com.android.support:appcompat-v7:$supportVersion" - implementation "com.android.support:cardview-v7:$supportVersion" - implementation "com.android.support:design:$supportVersion" + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.cardview:cardview:1.0.0' + implementation 'com.google.android.material:material:1.2.1' //Picasso - implementation "com.squareup.picasso:picasso:$picassoVersion" + implementation "com.squareup.picasso:picasso:2.5.2" //ImageViews - implementation "de.hdodenhof:circleimageview:$circleImageViewVersion" - implementation "com.github.siyamed:android-shape-imageview:$shapeImageViewVersion" + implementation "de.hdodenhof:circleimageview:2.2.0" + implementation "com.github.siyamed:android-shape-imageview:0.9.3" //Utils - implementation "me.relex:circleindicator:$circleindicatorVersion" + implementation "me.relex:circleindicator:1.2.2@aar" } diff --git a/sample/src/androidTest/java/com/stfalcon/chatkit/sample/ExampleInstrumentedTest.java b/sample/src/androidTest/java/com/stfalcon/chatkit/sample/ExampleInstrumentedTest.java index 9ba761a3..ff85a942 100644 --- a/sample/src/androidTest/java/com/stfalcon/chatkit/sample/ExampleInstrumentedTest.java +++ b/sample/src/androidTest/java/com/stfalcon/chatkit/sample/ExampleInstrumentedTest.java @@ -1,13 +1,14 @@ package com.stfalcon.chatkit.sample; import android.content.Context; -import android.support.test.InstrumentationRegistry; -import android.support.test.runner.AndroidJUnit4; + +import androidx.test.InstrumentationRegistry; +import androidx.test.runner.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; /** * Instrumentation test, which will execute on an Android device. diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index e95c5cbb..6526cb56 100644 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ + package="com.stfalcon.chatkit.sample"> - + - - + + + android:theme="@style/BlueTheme" /> - - - - - - + android:theme="@style/BlueTheme" /> + + + + + + + android:theme="@style/BlueTheme" /> diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/DemoDialogsActivity.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/DemoDialogsActivity.java index 770db5e5..568379a1 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/DemoDialogsActivity.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/DemoDialogsActivity.java @@ -1,9 +1,9 @@ package com.stfalcon.chatkit.sample.features.demo; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v7.app.AppCompatActivity; -import android.widget.ImageView; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; import com.squareup.picasso.Picasso; import com.stfalcon.chatkit.commons.ImageLoader; @@ -25,12 +25,7 @@ public abstract class DemoDialogsActivity extends AppCompatActivity protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - imageLoader = new ImageLoader() { - @Override - public void loadImage(ImageView imageView, String url, Object payload) { - Picasso.with(DemoDialogsActivity.this).load(url).into(imageView); - } - }; + imageLoader = (imageView, url, payload) -> Picasso.with(DemoDialogsActivity.this).load(url).into(imageView); } @Override diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/DemoMessagesActivity.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/DemoMessagesActivity.java index b58867cb..d2eaca59 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/DemoMessagesActivity.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/DemoMessagesActivity.java @@ -2,12 +2,12 @@ import android.os.Bundle; import android.os.Handler; -import android.support.annotation.Nullable; -import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.Menu; import android.view.MenuItem; -import android.widget.ImageView; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; import com.squareup.picasso.Picasso; import com.stfalcon.chatkit.commons.ImageLoader; @@ -43,12 +43,7 @@ public abstract class DemoMessagesActivity extends AppCompatActivity protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - imageLoader = new ImageLoader() { - @Override - public void loadImage(ImageView imageView, String url, Object payload) { - Picasso.with(DemoMessagesActivity.this).load(url).into(imageView); - } - }; + imageLoader = (imageView, url, payload) -> Picasso.with(DemoMessagesActivity.this).load(url).into(imageView); } @Override @@ -104,29 +99,24 @@ public void onSelectionChanged(int count) { } protected void loadMessages() { - new Handler().postDelayed(new Runnable() { //imitation of internet connection - @Override - public void run() { - ArrayList messages = MessagesFixtures.getMessages(lastLoadedDate); - lastLoadedDate = messages.get(messages.size() - 1).getCreatedAt(); - messagesAdapter.addToEnd(messages, false); - } + //imitation of internet connection + new Handler().postDelayed(() -> { + ArrayList messages = MessagesFixtures.getMessages(lastLoadedDate); + lastLoadedDate = messages.get(messages.size() - 1).getCreatedAt(); + messagesAdapter.addToEnd(messages, false); }, 1000); } private MessagesListAdapter.Formatter getMessageStringFormatter() { - return new MessagesListAdapter.Formatter() { - @Override - public String format(Message message) { - String createdAt = new SimpleDateFormat("MMM d, EEE 'at' h:mm a", Locale.getDefault()) - .format(message.getCreatedAt()); - - String text = message.getText(); - if (text == null) text = "[attachment]"; - - return String.format(Locale.getDefault(), "%s: %s (%s)", - message.getUser().getName(), text, createdAt); - } + return message -> { + String createdAt = new SimpleDateFormat("MMM d, EEE 'at' h:mm a", Locale.getDefault()) + .format(message.getCreatedAt()); + + String text = message.getText(); + if (text == null) text = "[attachment]"; + + return String.format(Locale.getDefault(), "%s: %s (%s)", + message.getUser().getName(), text, createdAt); }; } } diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/holder/CustomHolderDialogsActivity.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/holder/CustomHolderDialogsActivity.java index c08df41d..188aa038 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/holder/CustomHolderDialogsActivity.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/holder/CustomHolderDialogsActivity.java @@ -25,7 +25,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom_holder_dialogs); - dialogsList = (DialogsList) findViewById(R.id.dialogsList); + dialogsList = findViewById(R.id.dialogsList); initAdapter(); } diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/holder/CustomHolderMessagesActivity.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/holder/CustomHolderMessagesActivity.java index 835dcf21..0a59d16f 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/holder/CustomHolderMessagesActivity.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/holder/CustomHolderMessagesActivity.java @@ -35,10 +35,10 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom_holder_messages); - messagesList = (MessagesList) findViewById(R.id.messagesList); + messagesList = findViewById(R.id.messagesList); initAdapter(); - MessageInput input = (MessageInput) findViewById(R.id.input); + MessageInput input = findViewById(R.id.input); input.setInputListener(this); input.setAttachmentsListener(this); } @@ -65,13 +65,8 @@ private void initAdapter() { //We can pass any data to ViewHolder with payload CustomIncomingTextMessageViewHolder.Payload payload = new CustomIncomingTextMessageViewHolder.Payload(); //For example click listener - payload.avatarClickListener = new CustomIncomingTextMessageViewHolder.OnAvatarClickListener() { - @Override - public void onAvatarClick() { - Toast.makeText(CustomHolderMessagesActivity.this, - "Text message avatar clicked", Toast.LENGTH_SHORT).show(); - } - }; + payload.avatarClickListener = () -> Toast.makeText(CustomHolderMessagesActivity.this, + "Text message avatar clicked", Toast.LENGTH_SHORT).show(); MessageHolders holdersConfig = new MessageHolders() .setIncomingTextConfig( diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/holder/holders/messages/CustomIncomingTextMessageViewHolder.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/holder/holders/messages/CustomIncomingTextMessageViewHolder.java index a846a840..fee813c1 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/holder/holders/messages/CustomIncomingTextMessageViewHolder.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/holder/holders/messages/CustomIncomingTextMessageViewHolder.java @@ -29,12 +29,9 @@ public void onBind(Message message) { //We can set click listener on view from payload final Payload payload = (Payload) this.payload; - userAvatar.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (payload != null && payload.avatarClickListener != null) { - payload.avatarClickListener.onAvatarClick(); - } + userAvatar.setOnClickListener(view -> { + if (payload != null && payload.avatarClickListener != null) { + payload.avatarClickListener.onAvatarClick(); } }); } diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/layout/CustomLayoutDialogsActivity.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/layout/CustomLayoutDialogsActivity.java index b8bddf84..faaea0b3 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/layout/CustomLayoutDialogsActivity.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/layout/CustomLayoutDialogsActivity.java @@ -24,7 +24,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom_layout_dialogs); - dialogsList = (DialogsList) findViewById(R.id.dialogsList); + dialogsList = findViewById(R.id.dialogsList); initAdapter(); } diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/layout/CustomLayoutMessagesActivity.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/layout/CustomLayoutMessagesActivity.java index d7d7c14f..12e7749b 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/layout/CustomLayoutMessagesActivity.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/layout/CustomLayoutMessagesActivity.java @@ -30,10 +30,10 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom_layout_messages); - messagesList = (MessagesList) findViewById(R.id.messagesList); + messagesList = findViewById(R.id.messagesList); initAdapter(); - MessageInput input = (MessageInput) findViewById(R.id.input); + MessageInput input = findViewById(R.id.input); input.setInputListener(this); input.setAttachmentsListener(this); } diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/media/CustomMediaMessagesActivity.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/media/CustomMediaMessagesActivity.java index 7f3ae57f..caf47d13 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/media/CustomMediaMessagesActivity.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/media/CustomMediaMessagesActivity.java @@ -36,10 +36,10 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom_media_messages); - this.messagesList = (MessagesList) findViewById(R.id.messagesList); + this.messagesList = findViewById(R.id.messagesList); initAdapter(); - MessageInput input = (MessageInput) findViewById(R.id.input); + MessageInput input = findViewById(R.id.input); input.setInputListener(this); input.setAttachmentsListener(this); } @@ -60,11 +60,10 @@ public void onAddAttachments() { @Override public boolean hasContentFor(Message message, byte type) { - switch (type) { - case CONTENT_TYPE_VOICE: - return message.getVoice() != null - && message.getVoice().getUrl() != null - && !message.getVoice().getUrl().isEmpty(); + if (type == CONTENT_TYPE_VOICE) { + return message.getVoice() != null + && message.getVoice().getUrl() != null + && !message.getVoice().getUrl().isEmpty(); } return false; } diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/media/holders/IncomingVoiceMessageViewHolder.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/media/holders/IncomingVoiceMessageViewHolder.java index 80c64b5b..bdacb34a 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/media/holders/IncomingVoiceMessageViewHolder.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/media/holders/IncomingVoiceMessageViewHolder.java @@ -20,8 +20,8 @@ public class IncomingVoiceMessageViewHolder public IncomingVoiceMessageViewHolder(View itemView, Object payload) { super(itemView, payload); - tvDuration = (TextView) itemView.findViewById(R.id.duration); - tvTime = (TextView) itemView.findViewById(R.id.time); + tvDuration = itemView.findViewById(R.id.duration); + tvTime = itemView.findViewById(R.id.time); } @Override diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/media/holders/OutcomingVoiceMessageViewHolder.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/media/holders/OutcomingVoiceMessageViewHolder.java index 6d3dcbf8..b21db7d7 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/media/holders/OutcomingVoiceMessageViewHolder.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/custom/media/holders/OutcomingVoiceMessageViewHolder.java @@ -20,8 +20,8 @@ public class OutcomingVoiceMessageViewHolder public OutcomingVoiceMessageViewHolder(View itemView, Object payload) { super(itemView, payload); - tvDuration = (TextView) itemView.findViewById(R.id.duration); - tvTime = (TextView) itemView.findViewById(R.id.time); + tvDuration = itemView.findViewById(R.id.duration); + tvTime = itemView.findViewById(R.id.time); } @Override diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/def/DefaultDialogsActivity.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/def/DefaultDialogsActivity.java index 59c9cb4c..c88a3771 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/def/DefaultDialogsActivity.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/def/DefaultDialogsActivity.java @@ -25,7 +25,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_default_dialogs); - dialogsList = (DialogsList) findViewById(R.id.dialogsList); + dialogsList = findViewById(R.id.dialogsList); initAdapter(); } diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/def/DefaultMessagesActivity.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/def/DefaultMessagesActivity.java index f13b839f..a74bca89 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/def/DefaultMessagesActivity.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/def/DefaultMessagesActivity.java @@ -4,14 +4,12 @@ import android.content.Intent; import android.os.Bundle; import android.util.Log; -import android.view.View; import com.stfalcon.chatkit.messages.MessageInput; import com.stfalcon.chatkit.messages.MessagesList; import com.stfalcon.chatkit.messages.MessagesListAdapter; import com.stfalcon.chatkit.sample.R; import com.stfalcon.chatkit.sample.common.data.fixtures.MessagesFixtures; -import com.stfalcon.chatkit.sample.common.data.model.Message; import com.stfalcon.chatkit.sample.features.demo.DemoMessagesActivity; import com.stfalcon.chatkit.sample.utils.AppUtils; @@ -31,10 +29,10 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_default_messages); - this.messagesList = (MessagesList) findViewById(R.id.messagesList); + this.messagesList = findViewById(R.id.messagesList); initAdapter(); - MessageInput input = (MessageInput) findViewById(R.id.input); + MessageInput input = findViewById(R.id.input); input.setInputListener(this); input.setTypingListener(this); input.setAttachmentsListener(this); @@ -58,14 +56,9 @@ private void initAdapter() { super.messagesAdapter.enableSelectionMode(this); super.messagesAdapter.setLoadMoreListener(this); super.messagesAdapter.registerViewClickListener(R.id.messageUserAvatar, - new MessagesListAdapter.OnMessageViewClickListener() { - @Override - public void onMessageViewClick(View view, Message message) { - AppUtils.showToast(DefaultMessagesActivity.this, - message.getUser().getName() + " avatar click", - false); - } - }); + (view, message) -> AppUtils.showToast(DefaultMessagesActivity.this, + message.getUser().getName() + " avatar click", + false)); this.messagesList.setAdapter(super.messagesAdapter); } diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/styled/StyledDialogsActivity.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/styled/StyledDialogsActivity.java index 1d8d2865..eb0acc9d 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/styled/StyledDialogsActivity.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/styled/StyledDialogsActivity.java @@ -28,7 +28,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_styled_dialogs); - dialogsList = (DialogsList) findViewById(R.id.dialogsList); + dialogsList = findViewById(R.id.dialogsList); initAdapter(); } diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/styled/StyledMessagesActivity.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/styled/StyledMessagesActivity.java index ba01566a..e97ecec0 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/styled/StyledMessagesActivity.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/styled/StyledMessagesActivity.java @@ -30,10 +30,10 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_styled_messages); - messagesList = (MessagesList) findViewById(R.id.messagesList); + messagesList = findViewById(R.id.messagesList); initAdapter(); - MessageInput input = (MessageInput) findViewById(R.id.input); + MessageInput input = findViewById(R.id.input); input.setInputListener(this); input.setAttachmentsListener(this); } diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/main/MainActivity.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/main/MainActivity.java index 8a49e160..b05896ce 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/main/MainActivity.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/main/MainActivity.java @@ -1,8 +1,9 @@ package com.stfalcon.chatkit.sample.features.main; import android.os.Bundle; -import android.support.v4.view.ViewPager; -import android.support.v7.app.AppCompatActivity; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.viewpager.widget.ViewPager; import com.stfalcon.chatkit.sample.R; import com.stfalcon.chatkit.sample.features.demo.custom.holder.CustomHolderDialogsActivity; @@ -26,12 +27,12 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - ViewPager pager = (ViewPager) findViewById(R.id.pager); + ViewPager pager = findViewById(R.id.pager); pager.setAdapter(new MainActivityPagerAdapter(this, getSupportFragmentManager())); pager.setPageMargin((int) getResources().getDimension(R.dimen.card_padding) / 4); pager.setOffscreenPageLimit(3); - CircleIndicator indicator = (CircleIndicator) findViewById(R.id.indicator); + CircleIndicator indicator = findViewById(R.id.indicator); indicator.setViewPager(pager); } diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/main/adapter/DemoCardFragment.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/main/adapter/DemoCardFragment.java index 8d4054fd..c8779198 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/main/adapter/DemoCardFragment.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/main/adapter/DemoCardFragment.java @@ -2,13 +2,14 @@ import android.content.Context; import android.os.Bundle; -import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; +import androidx.fragment.app.Fragment; + import com.stfalcon.chatkit.sample.R; /* @@ -54,9 +55,9 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_demo_card, container, false); - TextView tvTitle = (TextView) v.findViewById(R.id.tvTitle); - TextView tvDescription = (TextView) v.findViewById(R.id.tvDescription); - Button button = (Button) v.findViewById(R.id.button); + TextView tvTitle = v.findViewById(R.id.tvTitle); + TextView tvDescription = v.findViewById(R.id.tvDescription); + Button button = v.findViewById(R.id.button); tvTitle.setText(title); tvDescription.setText(description); @@ -67,10 +68,8 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, @Override public void onClick(View view) { - switch (view.getId()) { - case R.id.button: - onAction(); - break; + if (view.getId() == R.id.button) { + onAction(); } } diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/features/main/adapter/MainActivityPagerAdapter.java b/sample/src/main/java/com/stfalcon/chatkit/sample/features/main/adapter/MainActivityPagerAdapter.java index bfab5867..c1e01097 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/features/main/adapter/MainActivityPagerAdapter.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/features/main/adapter/MainActivityPagerAdapter.java @@ -1,9 +1,10 @@ package com.stfalcon.chatkit.sample.features.main.adapter; import android.content.Context; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentStatePagerAdapter; + +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentStatePagerAdapter; import com.stfalcon.chatkit.sample.R; diff --git a/sample/src/main/java/com/stfalcon/chatkit/sample/utils/AppUtils.java b/sample/src/main/java/com/stfalcon/chatkit/sample/utils/AppUtils.java index 8c914dfd..ca49edef 100644 --- a/sample/src/main/java/com/stfalcon/chatkit/sample/utils/AppUtils.java +++ b/sample/src/main/java/com/stfalcon/chatkit/sample/utils/AppUtils.java @@ -1,9 +1,10 @@ package com.stfalcon.chatkit.sample.utils; import android.content.Context; -import android.support.annotation.StringRes; import android.widget.Toast; +import androidx.annotation.StringRes; + /* * Created by troy379 on 04.04.17. */ diff --git a/sample/src/main/res/drawable/dark_blue_top_gradient.xml b/sample/src/main/res/drawable/dark_blue_top_gradient.xml index fbfded4c..06162093 100644 --- a/sample/src/main/res/drawable/dark_blue_top_gradient.xml +++ b/sample/src/main/res/drawable/dark_blue_top_gradient.xml @@ -1,9 +1,9 @@ + android:shape="rectangle"> + android:startColor="@color/cornflower_blue_darkest" /> \ No newline at end of file diff --git a/sample/src/main/res/drawable/ic_play_black.xml b/sample/src/main/res/drawable/ic_play_black.xml index fd5de4d8..1a348327 100644 --- a/sample/src/main/res/drawable/ic_play_black.xml +++ b/sample/src/main/res/drawable/ic_play_black.xml @@ -1,5 +1,4 @@ - + android:pathData="M3,1.5v14l11,-7z" /> diff --git a/sample/src/main/res/drawable/ic_play_white.xml b/sample/src/main/res/drawable/ic_play_white.xml index cf96f070..4196f11a 100644 --- a/sample/src/main/res/drawable/ic_play_white.xml +++ b/sample/src/main/res/drawable/ic_play_white.xml @@ -1,5 +1,4 @@ - + android:pathData="M3,1.5v14l11,-7z" /> diff --git a/sample/src/main/res/drawable/shape_bubble_offline.xml b/sample/src/main/res/drawable/shape_bubble_offline.xml index d1cc3c34..219d82d1 100644 --- a/sample/src/main/res/drawable/shape_bubble_offline.xml +++ b/sample/src/main/res/drawable/shape_bubble_offline.xml @@ -1,13 +1,13 @@ + android:shape="oval"> - + + android:color="@color/white" /> + android:height="20dp" /> \ No newline at end of file diff --git a/sample/src/main/res/drawable/shape_bubble_online.xml b/sample/src/main/res/drawable/shape_bubble_online.xml index 9b1bbe94..2b5f2386 100644 --- a/sample/src/main/res/drawable/shape_bubble_online.xml +++ b/sample/src/main/res/drawable/shape_bubble_online.xml @@ -1,13 +1,13 @@ + android:shape="oval"> - + + android:color="@color/white" /> + android:height="20dp" /> \ No newline at end of file diff --git a/sample/src/main/res/drawable/shape_custom_cursor.xml b/sample/src/main/res/drawable/shape_custom_cursor.xml index c60888f9..ece0b260 100644 --- a/sample/src/main/res/drawable/shape_custom_cursor.xml +++ b/sample/src/main/res/drawable/shape_custom_cursor.xml @@ -1,8 +1,8 @@ + android:shape="rectangle"> - + - + \ No newline at end of file diff --git a/sample/src/main/res/layout/activity_custom_holder_dialogs.xml b/sample/src/main/res/layout/activity_custom_holder_dialogs.xml index 81eb8ecd..0359eb85 100644 --- a/sample/src/main/res/layout/activity_custom_holder_dialogs.xml +++ b/sample/src/main/res/layout/activity_custom_holder_dialogs.xml @@ -1,5 +1,4 @@ - + app:dialogUnreadTitleTextStyle="bold" /> diff --git a/sample/src/main/res/layout/activity_custom_holder_messages.xml b/sample/src/main/res/layout/activity_custom_holder_messages.xml index 88c6d1cc..723bca6c 100644 --- a/sample/src/main/res/layout/activity_custom_holder_messages.xml +++ b/sample/src/main/res/layout/activity_custom_holder_messages.xml @@ -1,5 +1,4 @@ - + app:outcomingTimeTextColor="@color/gray_dark_transparent" /> + android:background="@color/gray_light" /> + app:showAttachmentButton="true" /> \ No newline at end of file diff --git a/sample/src/main/res/layout/activity_custom_layout_dialogs.xml b/sample/src/main/res/layout/activity_custom_layout_dialogs.xml index 81eb8ecd..0359eb85 100644 --- a/sample/src/main/res/layout/activity_custom_layout_dialogs.xml +++ b/sample/src/main/res/layout/activity_custom_layout_dialogs.xml @@ -1,5 +1,4 @@ - + app:dialogUnreadTitleTextStyle="bold" /> diff --git a/sample/src/main/res/layout/activity_custom_layout_messages.xml b/sample/src/main/res/layout/activity_custom_layout_messages.xml index 88c6d1cc..723bca6c 100644 --- a/sample/src/main/res/layout/activity_custom_layout_messages.xml +++ b/sample/src/main/res/layout/activity_custom_layout_messages.xml @@ -1,5 +1,4 @@ - + app:outcomingTimeTextColor="@color/gray_dark_transparent" /> + android:background="@color/gray_light" /> + app:showAttachmentButton="true" /> \ No newline at end of file diff --git a/sample/src/main/res/layout/activity_custom_media_messages.xml b/sample/src/main/res/layout/activity_custom_media_messages.xml index 9ce4da57..85e7db97 100644 --- a/sample/src/main/res/layout/activity_custom_media_messages.xml +++ b/sample/src/main/res/layout/activity_custom_media_messages.xml @@ -1,5 +1,4 @@ - + android:layout_above="@+id/input" /> + android:background="@color/gray_light" /> + app:showAttachmentButton="true" /> \ No newline at end of file diff --git a/sample/src/main/res/layout/activity_default_dialogs.xml b/sample/src/main/res/layout/activity_default_dialogs.xml index bb5e9436..a14ac43c 100644 --- a/sample/src/main/res/layout/activity_default_dialogs.xml +++ b/sample/src/main/res/layout/activity_default_dialogs.xml @@ -1,5 +1,4 @@ - @@ -7,6 +6,6 @@ + android:layout_height="match_parent" /> diff --git a/sample/src/main/res/layout/activity_default_messages.xml b/sample/src/main/res/layout/activity_default_messages.xml index 9ce4da57..85e7db97 100644 --- a/sample/src/main/res/layout/activity_default_messages.xml +++ b/sample/src/main/res/layout/activity_default_messages.xml @@ -1,5 +1,4 @@ - + android:layout_above="@+id/input" /> + android:background="@color/gray_light" /> + app:showAttachmentButton="true" /> \ No newline at end of file diff --git a/sample/src/main/res/layout/activity_main.xml b/sample/src/main/res/layout/activity_main.xml index a831f0b8..a84a40bf 100644 --- a/sample/src/main/res/layout/activity_main.xml +++ b/sample/src/main/res/layout/activity_main.xml @@ -1,5 +1,4 @@ - @@ -8,7 +7,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/dark_blue_top_gradient" - android:fitsSystemWindows="true"/> + android:fitsSystemWindows="true" /> + android:textSize="28sp" /> - + android:paddingRight="@dimen/card_padding" + android:paddingBottom="20dp" /> + android:layout_alignParentBottom="true" /> - \ No newline at end of file + \ No newline at end of file diff --git a/sample/src/main/res/layout/activity_styled_dialogs.xml b/sample/src/main/res/layout/activity_styled_dialogs.xml index 81eb8ecd..0359eb85 100644 --- a/sample/src/main/res/layout/activity_styled_dialogs.xml +++ b/sample/src/main/res/layout/activity_styled_dialogs.xml @@ -1,5 +1,4 @@ - + app:dialogUnreadTitleTextStyle="bold" /> diff --git a/sample/src/main/res/layout/activity_styled_messages.xml b/sample/src/main/res/layout/activity_styled_messages.xml index 62e217d3..9e2111d2 100644 --- a/sample/src/main/res/layout/activity_styled_messages.xml +++ b/sample/src/main/res/layout/activity_styled_messages.xml @@ -1,5 +1,4 @@ - + app:textAutoLink="all" /> + android:background="@color/gray_light" /> + app:showAttachmentButton="true" /> \ No newline at end of file diff --git a/sample/src/main/res/layout/fragment_demo_card.xml b/sample/src/main/res/layout/fragment_demo_card.xml index 87290af0..11841c1a 100644 --- a/sample/src/main/res/layout/fragment_demo_card.xml +++ b/sample/src/main/res/layout/fragment_demo_card.xml @@ -1,5 +1,4 @@ - + android:textSize="22sp" /> + android:textSize="15sp" />