diff --git a/CHANGELOG.md b/CHANGELOG.md index ab6915ac4a7..969a4acdb84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,6 +59,7 @@ ### 🐞 Fixed ### ⬆️ Improved +- Extended channel list screen styling. [#4944](https://github.com/GetStream/stream-chat-android/pull/4944) ### ✅ Added diff --git a/stream-chat-android-ui-components/api/stream-chat-android-ui-components.api b/stream-chat-android-ui-components/api/stream-chat-android-ui-components.api index 457a2c56467..29e9c006738 100644 --- a/stream-chat-android-ui-components/api/stream-chat-android-ui-components.api +++ b/stream-chat-android-ui-components/api/stream-chat-android-ui-components.api @@ -58,7 +58,9 @@ public final class io/getstream/chat/android/ui/feature/channels/ChannelListActi public class io/getstream/chat/android/ui/feature/channels/ChannelListFragment : androidx/fragment/app/Fragment { public static final field Companion Lio/getstream/chat/android/ui/feature/channels/ChannelListFragment$Companion; + protected field style Lio/getstream/chat/android/ui/feature/channels/list/ChannelListFragmentViewStyle; public fun ()V + protected fun applyStyle (Lio/getstream/chat/android/ui/feature/channels/list/ChannelListFragmentViewStyle;)V protected fun createChannelListViewModelFactory ()Lio/getstream/chat/android/ui/viewmodel/channels/ChannelListViewModelFactory; protected final fun getBinding ()Lio/getstream/chat/android/ui/databinding/StreamUiFragmentChannelListBinding; protected final fun getChannelListHeaderViewModel ()Lio/getstream/chat/android/ui/viewmodel/channels/ChannelListHeaderViewModel; @@ -73,6 +75,7 @@ public class io/getstream/chat/android/ui/feature/channels/ChannelListFragment : protected final fun getShowHeader ()Z protected final fun getShowSearch ()Z protected fun getSort ()Lio/getstream/chat/android/models/querysort/QuerySorter; + protected final fun getStyle ()Lio/getstream/chat/android/ui/feature/channels/list/ChannelListFragmentViewStyle; protected fun getTheme ()I protected final fun getThemeResId ()I public static final fun newInstance ()Lio/getstream/chat/android/ui/feature/channels/ChannelListFragment; @@ -86,6 +89,7 @@ public class io/getstream/chat/android/ui/feature/channels/ChannelListFragment : protected final fun setHeaderActionButtonClickListener (Lio/getstream/chat/android/ui/feature/channels/ChannelListFragment$HeaderActionButtonClickListener;)V protected final fun setHeaderUserAvatarClickListener (Lio/getstream/chat/android/ui/feature/channels/ChannelListFragment$HeaderUserAvatarClickListener;)V protected final fun setSearchResultClickListener (Lio/getstream/chat/android/ui/feature/channels/ChannelListFragment$SearchResultClickListener;)V + protected final fun setStyle (Lio/getstream/chat/android/ui/feature/channels/list/ChannelListFragmentViewStyle;)V protected fun setupChannelList (Lio/getstream/chat/android/ui/feature/channels/list/ChannelListView;)V protected fun setupChannelListHeader (Lio/getstream/chat/android/ui/feature/channels/header/ChannelListHeaderView;)V protected fun setupSearchInput (Lio/getstream/chat/android/ui/feature/search/SearchInputView;)V @@ -124,7 +128,7 @@ public abstract interface class io/getstream/chat/android/ui/feature/channels/Ch public abstract fun onSearchResultClick (Lio/getstream/chat/android/models/Message;)V } -public final class io/getstream/chat/android/ui/feature/channels/actions/ChannelActionsDialogViewStyle { +public final class io/getstream/chat/android/ui/feature/channels/actions/ChannelActionsDialogViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;ZLandroid/graphics/drawable/Drawable;ZLandroid/graphics/drawable/Drawable;ZLandroid/graphics/drawable/Drawable;ZLandroid/graphics/drawable/Drawable;)V public final fun component1 ()Lio/getstream/chat/android/ui/font/TextStyle; public final fun component10 ()Z @@ -183,6 +187,23 @@ public abstract interface class io/getstream/chat/android/ui/feature/channels/he public abstract fun onUserAvatarClick ()V } +public final class io/getstream/chat/android/ui/feature/channels/list/ChannelListFragmentViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { + public fun (IIII)V + public final fun component1 ()I + public final fun component2 ()I + public final fun component3 ()I + public final fun component4 ()I + public final fun copy (IIII)Lio/getstream/chat/android/ui/feature/channels/list/ChannelListFragmentViewStyle; + public static synthetic fun copy$default (Lio/getstream/chat/android/ui/feature/channels/list/ChannelListFragmentViewStyle;IIIIILjava/lang/Object;)Lio/getstream/chat/android/ui/feature/channels/list/ChannelListFragmentViewStyle; + public fun equals (Ljava/lang/Object;)Z + public final fun getSearchInputMarginBottom ()I + public final fun getSearchInputMarginEnd ()I + public final fun getSearchInputMarginStart ()I + public final fun getSearchInputMarginTop ()I + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + public final class io/getstream/chat/android/ui/feature/channels/list/ChannelListView : android/widget/FrameLayout { public fun (Landroid/content/Context;)V public fun (Landroid/content/Context;Landroid/util/AttributeSet;)V @@ -304,8 +325,8 @@ public abstract interface class io/getstream/chat/android/ui/feature/channels/li public final class io/getstream/chat/android/ui/feature/channels/list/ChannelListView$UserClickListener$Companion { } -public final class io/getstream/chat/android/ui/feature/channels/list/ChannelListViewStyle { - public fun (Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZZZIILio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;ILandroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;IIILjava/lang/Integer;ZZ)V +public final class io/getstream/chat/android/ui/feature/channels/list/ChannelListViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { + public fun (Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZZZIILio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;ILandroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;IIILjava/lang/Integer;ZZIIIIIF)V public final fun component1 ()Landroid/graphics/drawable/Drawable; public final fun component10 ()Lio/getstream/chat/android/ui/font/TextStyle; public final fun component11 ()Landroid/graphics/drawable/Drawable; @@ -323,15 +344,21 @@ public final class io/getstream/chat/android/ui/feature/channels/list/ChannelLis public final fun component22 ()Ljava/lang/Integer; public final fun component23 ()Z public final fun component24 ()Z + public final fun component25 ()I + public final fun component26 ()I + public final fun component27 ()I + public final fun component28 ()I + public final fun component29 ()I public final fun component3 ()Z + public final fun component30 ()F public final fun component4 ()Z public final fun component5 ()Z public final fun component6 ()I public final fun component7 ()I public final fun component8 ()Lio/getstream/chat/android/ui/font/TextStyle; public final fun component9 ()Lio/getstream/chat/android/ui/font/TextStyle; - public final fun copy (Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZZZIILio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;ILandroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;IIILjava/lang/Integer;ZZ)Lio/getstream/chat/android/ui/feature/channels/list/ChannelListViewStyle; - public static synthetic fun copy$default (Lio/getstream/chat/android/ui/feature/channels/list/ChannelListViewStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZZZIILio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;ILandroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;IIILjava/lang/Integer;ZZILjava/lang/Object;)Lio/getstream/chat/android/ui/feature/channels/list/ChannelListViewStyle; + public final fun copy (Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZZZIILio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;ILandroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;IIILjava/lang/Integer;ZZIIIIIF)Lio/getstream/chat/android/ui/feature/channels/list/ChannelListViewStyle; + public static synthetic fun copy$default (Lio/getstream/chat/android/ui/feature/channels/list/ChannelListViewStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZZZIILio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;ILandroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;IIILjava/lang/Integer;ZZIIIIIFILjava/lang/Object;)Lio/getstream/chat/android/ui/feature/channels/list/ChannelListViewStyle; public fun equals (Ljava/lang/Object;)Z public final fun getBackgroundColor ()I public final fun getBackgroundLayoutColor ()I @@ -344,7 +371,13 @@ public final class io/getstream/chat/android/ui/feature/channels/list/ChannelLis public final fun getIndicatorPendingSyncIcon ()Landroid/graphics/drawable/Drawable; public final fun getIndicatorReadIcon ()Landroid/graphics/drawable/Drawable; public final fun getIndicatorSentIcon ()Landroid/graphics/drawable/Drawable; + public final fun getItemHeight ()I + public final fun getItemMarginEnd ()I + public final fun getItemMarginStart ()I public final fun getItemSeparator ()Landroid/graphics/drawable/Drawable; + public final fun getItemTitleMarginStart ()I + public final fun getItemVerticalSpacerHeight ()I + public final fun getItemVerticalSpacerPosition ()F public final fun getLastMessageDateText ()Lio/getstream/chat/android/ui/font/TextStyle; public final fun getLastMessageText ()Lio/getstream/chat/android/ui/font/TextStyle; public final fun getLoadingMoreView ()I @@ -617,7 +650,7 @@ public final class io/getstream/chat/android/ui/feature/gallery/AttachmentGaller public static final fun toAttachmentGalleryResultItem (Lio/getstream/chat/android/models/Attachment;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lio/getstream/chat/android/ui/feature/gallery/AttachmentGalleryResultItem; } -public final class io/getstream/chat/android/ui/feature/gallery/AttachmentGalleryViewMediaStyle { +public final class io/getstream/chat/android/ui/feature/gallery/AttachmentGalleryViewMediaStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;IFFIIIIIILandroid/graphics/drawable/Drawable;)V public final fun component1 ()Landroid/graphics/drawable/Drawable; public final fun component10 ()I @@ -660,7 +693,7 @@ public final class io/getstream/chat/android/ui/feature/gallery/AttachmentMediaA public static synthetic fun createIntent$default (Lio/getstream/chat/android/ui/feature/gallery/AttachmentMediaActivity$Companion;Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Landroid/content/Intent; } -public final class io/getstream/chat/android/ui/feature/gallery/MediaAttachmentGridViewStyle { +public final class io/getstream/chat/android/ui/feature/gallery/MediaAttachmentGridViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;IFFIIIILandroid/graphics/drawable/Drawable;)V public final fun component1 ()Z public final fun component10 ()I @@ -691,7 +724,7 @@ public final class io/getstream/chat/android/ui/feature/gallery/MediaAttachmentG public fun toString ()Ljava/lang/String; } -public final class io/getstream/chat/android/ui/feature/gallery/options/AttachmentGalleryOptionsViewStyle { +public final class io/getstream/chat/android/ui/feature/gallery/options/AttachmentGalleryOptionsViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (Lio/getstream/chat/android/ui/font/TextStyle;IZLandroid/graphics/drawable/Drawable;ZLandroid/graphics/drawable/Drawable;ZLandroid/graphics/drawable/Drawable;ZLandroid/graphics/drawable/Drawable;I)V public final fun component1 ()Lio/getstream/chat/android/ui/font/TextStyle; public final fun component10 ()Landroid/graphics/drawable/Drawable; @@ -764,7 +797,7 @@ public abstract interface class io/getstream/chat/android/ui/feature/mentions/li public abstract fun onMentionSelected (Lio/getstream/chat/android/models/Message;)V } -public final class io/getstream/chat/android/ui/feature/mentions/list/MentionListViewStyle { +public final class io/getstream/chat/android/ui/feature/mentions/list/MentionListViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (ILandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/feature/messages/preview/MessagePreviewStyle;)V public final fun component1 ()I public final fun component2 ()Landroid/graphics/drawable/Drawable; @@ -926,7 +959,7 @@ public final class io/getstream/chat/android/ui/feature/messages/composer/Messag public static synthetic fun setTrailingContent$default (Lio/getstream/chat/android/ui/feature/messages/composer/MessageComposerView;Landroid/view/View;Landroid/widget/FrameLayout$LayoutParams;ILjava/lang/Object;)V } -public final class io/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle { +public final class io/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public static final field Companion Lio/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle$Companion; public fun (ILjava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;ILandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;ZZLio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZZILjava/lang/String;IZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/Integer;FFIIIILjava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;ZLandroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZLandroid/graphics/drawable/Drawable;IIIZZZLandroid/graphics/drawable/Drawable;IIILio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;ILio/getstream/chat/android/ui/font/TextStyle;IFLio/getstream/chat/android/ui/font/TextStyle;IFLio/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle;)V public final fun component1 ()I @@ -1139,7 +1172,7 @@ public final class io/getstream/chat/android/ui/feature/messages/composer/attach public static synthetic fun newInstance$default (Lio/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogFragment$Companion;Lio/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle;Ljava/util/List;ILjava/lang/Object;)Lio/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogFragment; } -public final class io/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle { +public final class io/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (ILio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Landroid/content/res/ColorStateList;ZLandroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/graphics/drawable/Drawable;ZLio/getstream/chat/android/ui/font/TextStyle;ZLandroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;ZLandroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;IZLandroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/feature/messages/composer/attachment/picker/PickerMediaMode;)V public final fun component1 ()I public final fun component10 ()Lio/getstream/chat/android/ui/font/TextStyle; @@ -1458,7 +1491,7 @@ public abstract interface class io/getstream/chat/android/ui/feature/messages/he public abstract fun onClick ()V } -public final class io/getstream/chat/android/ui/feature/messages/header/MessageListHeaderViewStyle { +public final class io/getstream/chat/android/ui/feature/messages/header/MessageListHeaderViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (ILio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;ZLandroid/graphics/drawable/Drawable;ZZIZLandroid/content/res/ColorStateList;Landroid/graphics/drawable/Drawable;)V public final fun component1 ()I public final fun component10 ()I @@ -1493,7 +1526,7 @@ public final class io/getstream/chat/android/ui/feature/messages/header/MessageL public fun toString ()Ljava/lang/String; } -public final class io/getstream/chat/android/ui/feature/messages/list/DefaultQuotedAttachmentViewStyle { +public final class io/getstream/chat/android/ui/feature/messages/list/DefaultQuotedAttachmentViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (IIIII)V public final fun getFileAttachmentHeight ()I public final fun getFileAttachmentWidth ()I @@ -1511,7 +1544,7 @@ public final class io/getstream/chat/android/ui/feature/messages/list/EndlessMes public fun onScrolled (Landroidx/recyclerview/widget/RecyclerView;II)V } -public final class io/getstream/chat/android/ui/feature/messages/list/FileAttachmentViewStyle { +public final class io/getstream/chat/android/ui/feature/messages/list/FileAttachmentViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (IIIILandroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;)V public final fun component1 ()I public final fun component2 ()I @@ -1538,7 +1571,7 @@ public final class io/getstream/chat/android/ui/feature/messages/list/FileAttach public fun toString ()Ljava/lang/String; } -public final class io/getstream/chat/android/ui/feature/messages/list/GiphyViewHolderStyle { +public final class io/getstream/chat/android/ui/feature/messages/list/GiphyViewHolderStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (IFILandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;)V public final fun component1 ()I public final fun component2 ()F @@ -1565,7 +1598,7 @@ public final class io/getstream/chat/android/ui/feature/messages/list/GiphyViewH public fun toString ()Ljava/lang/String; } -public final class io/getstream/chat/android/ui/feature/messages/list/MessageListItemStyle { +public final class io/getstream/chat/android/ui/feature/messages/list/MessageListItemStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;IIILio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;ILio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/feature/messages/list/reactions/view/ViewReactionsViewStyle;Lio/getstream/chat/android/ui/feature/messages/list/reactions/edit/EditReactionsViewStyle;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;IIFIFLio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;IIIFFZLandroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;II)V public final fun component1 ()Ljava/lang/Integer; public final fun component10 ()Lio/getstream/chat/android/ui/font/TextStyle; @@ -1920,7 +1953,7 @@ public abstract interface class io/getstream/chat/android/ui/feature/messages/li public abstract fun onUserReactionClick (Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;Lio/getstream/chat/android/models/Reaction;)V } -public final class io/getstream/chat/android/ui/feature/messages/list/MessageListViewStyle { +public final class io/getstream/chat/android/ui/feature/messages/list/MessageListViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public static final field Companion Lio/getstream/chat/android/ui/feature/messages/list/MessageListViewStyle$Companion; public fun (Lio/getstream/chat/android/ui/feature/messages/list/ScrollButtonViewStyle;Lio/getstream/chat/android/ui/feature/messages/list/MessageListView$NewMessagesBehaviour;Lio/getstream/chat/android/ui/feature/messages/list/MessageListItemStyle;Lio/getstream/chat/android/ui/feature/messages/list/GiphyViewHolderStyle;Lio/getstream/chat/android/ui/feature/messages/list/MessageReplyStyle;ZIIZIZIIZIIZIIZIZZZZZLio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;IILio/getstream/chat/android/ui/font/TextStyle;ILio/getstream/chat/android/ui/font/TextStyle;IIIIIIZIIIIIIIIIIIIZZ)V public final fun component1 ()Lio/getstream/chat/android/ui/feature/messages/list/ScrollButtonViewStyle; @@ -2042,7 +2075,7 @@ public final class io/getstream/chat/android/ui/feature/messages/list/MessageLis public final fun createDefault (Landroid/content/Context;)Lio/getstream/chat/android/ui/feature/messages/list/MessageListViewStyle; } -public final class io/getstream/chat/android/ui/feature/messages/list/MessageReplyStyle { +public final class io/getstream/chat/android/ui/feature/messages/list/MessageReplyStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (IIIILio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;IFIF)V public final fun component1 ()I public final fun component10 ()F @@ -2075,7 +2108,7 @@ public final class io/getstream/chat/android/ui/feature/messages/list/MessageRep public fun toString ()Ljava/lang/String; } -public final class io/getstream/chat/android/ui/feature/messages/list/ScrollButtonViewStyle { +public final class io/getstream/chat/android/ui/feature/messages/list/ScrollButtonViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (ZZIILjava/lang/Integer;FLandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;IFI)V public final fun component1 ()Z public final fun component10 ()I @@ -2108,7 +2141,7 @@ public final class io/getstream/chat/android/ui/feature/messages/list/ScrollButt public fun toString ()Ljava/lang/String; } -public final class io/getstream/chat/android/ui/feature/messages/list/UnsupportedAttachmentViewStyle { +public final class io/getstream/chat/android/ui/feature/messages/list/UnsupportedAttachmentViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (IIIILio/getstream/chat/android/ui/font/TextStyle;)V public final fun component1 ()I public final fun component2 ()I @@ -2307,7 +2340,7 @@ public final class io/getstream/chat/android/ui/feature/messages/list/adapter/vi public final class io/getstream/chat/android/ui/feature/messages/list/adapter/view/GiphyMediaAttachmentViewStyle$Companion { } -public final class io/getstream/chat/android/ui/feature/messages/list/adapter/view/MediaAttachmentViewStyle { +public final class io/getstream/chat/android/ui/feature/messages/list/adapter/view/MediaAttachmentViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;IILio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;IFIIIIF)V public final fun component1 ()Landroid/graphics/drawable/Drawable; public final fun component10 ()F @@ -2508,7 +2541,7 @@ public abstract interface class io/getstream/chat/android/ui/feature/messages/li public abstract fun onReactionClick (Ljava/lang/String;)V } -public final class io/getstream/chat/android/ui/feature/messages/list/reactions/edit/EditReactionsViewStyle { +public final class io/getstream/chat/android/ui/feature/messages/list/reactions/edit/EditReactionsViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public static final field Companion Lio/getstream/chat/android/ui/feature/messages/list/reactions/edit/EditReactionsViewStyle$Companion; public fun (IIIIIIIIIIIIII)V public final fun component1 ()I @@ -2549,7 +2582,7 @@ public final class io/getstream/chat/android/ui/feature/messages/list/reactions/ public final class io/getstream/chat/android/ui/feature/messages/list/reactions/edit/EditReactionsViewStyle$Companion { } -public final class io/getstream/chat/android/ui/feature/messages/list/reactions/user/SingleReactionViewStyle { +public final class io/getstream/chat/android/ui/feature/messages/list/reactions/user/SingleReactionViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (ILjava/lang/Integer;IIFLjava/lang/Float;IIIIIIIIII)V public final fun component1 ()I public final fun component10 ()I @@ -2604,7 +2637,7 @@ public final class io/getstream/chat/android/ui/feature/messages/list/reactions/ public static final fun getUserReactionOrientation (I)Lio/getstream/chat/android/ui/feature/messages/list/reactions/view/MessageOptionsUserReactionOrientation; } -public final class io/getstream/chat/android/ui/feature/messages/list/reactions/view/ViewReactionsViewStyle { +public final class io/getstream/chat/android/ui/feature/messages/list/reactions/view/ViewReactionsViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (ILjava/lang/Integer;IIFLjava/lang/Float;IIIIIIIIIIIII)V public final fun component1 ()I public final fun component10 ()I @@ -2685,7 +2718,7 @@ public abstract interface class io/getstream/chat/android/ui/feature/pinned/list public abstract fun onPinnedMessageSelected (Lio/getstream/chat/android/models/Message;)V } -public final class io/getstream/chat/android/ui/feature/pinned/list/PinnedMessageListViewStyle { +public final class io/getstream/chat/android/ui/feature/pinned/list/PinnedMessageListViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (ILandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/feature/messages/preview/MessagePreviewStyle;)V public final fun component1 ()I public final fun component2 ()Landroid/graphics/drawable/Drawable; @@ -2719,33 +2752,64 @@ public abstract interface class io/getstream/chat/android/ui/feature/search/Sear public abstract fun onSearchStarted (Ljava/lang/String;)V } -public final class io/getstream/chat/android/ui/feature/search/SearchInputViewStyle { - public fun (IILandroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ILjava/lang/String;II)V +public final class io/getstream/chat/android/ui/feature/search/SearchInputViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { + public fun (IILandroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/feature/search/SearchInputViewStyle$DrawableOutline;ILjava/lang/String;IIIIIIIIII)V public final fun component1 ()I + public final fun component10 ()I + public final fun component11 ()I + public final fun component12 ()I + public final fun component13 ()I + public final fun component14 ()I + public final fun component15 ()I + public final fun component16 ()I + public final fun component17 ()I + public final fun component18 ()I public final fun component2 ()I public final fun component3 ()Landroid/graphics/drawable/Drawable; public final fun component4 ()Landroid/graphics/drawable/Drawable; public final fun component5 ()Landroid/graphics/drawable/Drawable; - public final fun component6 ()I - public final fun component7 ()Ljava/lang/String; - public final fun component8 ()I + public final fun component6 ()Lio/getstream/chat/android/ui/feature/search/SearchInputViewStyle$DrawableOutline; + public final fun component7 ()I + public final fun component8 ()Ljava/lang/String; public final fun component9 ()I - public final fun copy (IILandroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ILjava/lang/String;II)Lio/getstream/chat/android/ui/feature/search/SearchInputViewStyle; - public static synthetic fun copy$default (Lio/getstream/chat/android/ui/feature/search/SearchInputViewStyle;IILandroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ILjava/lang/String;IIILjava/lang/Object;)Lio/getstream/chat/android/ui/feature/search/SearchInputViewStyle; + public final fun copy (IILandroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/feature/search/SearchInputViewStyle$DrawableOutline;ILjava/lang/String;IIIIIIIIII)Lio/getstream/chat/android/ui/feature/search/SearchInputViewStyle; + public static synthetic fun copy$default (Lio/getstream/chat/android/ui/feature/search/SearchInputViewStyle;IILandroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/feature/search/SearchInputViewStyle$DrawableOutline;ILjava/lang/String;IIIIIIIIIIILjava/lang/Object;)Lio/getstream/chat/android/ui/feature/search/SearchInputViewStyle; public fun equals (Ljava/lang/Object;)Z public final fun getBackgroundDrawable ()Landroid/graphics/drawable/Drawable; + public final fun getBackgroundDrawableOutline ()Lio/getstream/chat/android/ui/feature/search/SearchInputViewStyle$DrawableOutline; + public final fun getClearIconHeight ()I + public final fun getClearIconMarginEnd ()I + public final fun getClearIconWidth ()I public final fun getClearInputDrawable ()Landroid/graphics/drawable/Drawable; public final fun getContainerBackgroundColor ()I public final fun getHintColor ()I public final fun getHintText ()Ljava/lang/String; public final fun getSearchIconDrawable ()Landroid/graphics/drawable/Drawable; + public final fun getSearchIconHeight ()I + public final fun getSearchIconMarginStart ()I + public final fun getSearchIconWidth ()I public final fun getSearchInputHeight ()I public final fun getTextColor ()I + public final fun getTextMarginEnd ()I + public final fun getTextMarginStart ()I public final fun getTextSize ()I public fun hashCode ()I public fun toString ()Ljava/lang/String; } +public final class io/getstream/chat/android/ui/feature/search/SearchInputViewStyle$DrawableOutline { + public fun (II)V + public final fun component1 ()I + public final fun component2 ()I + public final fun copy (II)Lio/getstream/chat/android/ui/feature/search/SearchInputViewStyle$DrawableOutline; + public static synthetic fun copy$default (Lio/getstream/chat/android/ui/feature/search/SearchInputViewStyle$DrawableOutline;IIILjava/lang/Object;)Lio/getstream/chat/android/ui/feature/search/SearchInputViewStyle$DrawableOutline; + public fun equals (Ljava/lang/Object;)Z + public final fun getColor ()I + public final fun getWidth ()I + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + public final class io/getstream/chat/android/ui/feature/search/list/SearchResultListView : android/widget/ViewFlipper { public static final field LOAD_MORE_THRESHOLD I public fun (Landroid/content/Context;)V @@ -2766,7 +2830,7 @@ public abstract interface class io/getstream/chat/android/ui/feature/search/list public abstract fun onSearchResultSelected (Lio/getstream/chat/android/models/Message;)V } -public final class io/getstream/chat/android/ui/feature/search/list/SearchResultListViewStyle { +public final class io/getstream/chat/android/ui/feature/search/list/SearchResultListViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (ILandroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/feature/messages/preview/MessagePreviewStyle;)V public final fun component1 ()I public final fun component2 ()Landroid/graphics/drawable/Drawable; @@ -2910,6 +2974,7 @@ public final class io/getstream/chat/android/ui/helper/TransformStyle { public static final fun getAttachmentsPickerStyleTransformer ()Lio/getstream/chat/android/ui/helper/StyleTransformer; public static final fun getAvatarStyleTransformer ()Lio/getstream/chat/android/ui/helper/StyleTransformer; public static final fun getChannelActionsDialogStyleTransformer ()Lio/getstream/chat/android/ui/helper/StyleTransformer; + public static final fun getChannelListFragmentStyleTransformer ()Lio/getstream/chat/android/ui/helper/StyleTransformer; public static final fun getChannelListStyleTransformer ()Lio/getstream/chat/android/ui/helper/StyleTransformer; public static final fun getDefaultQuotedAttachmentViewStyleTransformer ()Lio/getstream/chat/android/ui/helper/StyleTransformer; public static final fun getEditReactionsStyleTransformer ()Lio/getstream/chat/android/ui/helper/StyleTransformer; @@ -2936,6 +3001,7 @@ public final class io/getstream/chat/android/ui/helper/TransformStyle { public static final fun setAttachmentsPickerStyleTransformer (Lio/getstream/chat/android/ui/helper/StyleTransformer;)V public static final fun setAvatarStyleTransformer (Lio/getstream/chat/android/ui/helper/StyleTransformer;)V public static final fun setChannelActionsDialogStyleTransformer (Lio/getstream/chat/android/ui/helper/StyleTransformer;)V + public static final fun setChannelListFragmentStyleTransformer (Lio/getstream/chat/android/ui/helper/StyleTransformer;)V public static final fun setChannelListStyleTransformer (Lio/getstream/chat/android/ui/helper/StyleTransformer;)V public static final fun setDefaultQuotedAttachmentViewStyleTransformer (Lio/getstream/chat/android/ui/helper/StyleTransformer;)V public static final fun setEditReactionsStyleTransformer (Lio/getstream/chat/android/ui/helper/StyleTransformer;)V @@ -3854,7 +3920,7 @@ public final class io/getstream/chat/android/ui/widgets/avatar/AvatarShape : jav public static fun values ()[Lio/getstream/chat/android/ui/widgets/avatar/AvatarShape; } -public final class io/getstream/chat/android/ui/widgets/avatar/AvatarStyle { +public final class io/getstream/chat/android/ui/widgets/avatar/AvatarStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (IILio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;ZLio/getstream/chat/android/ui/widgets/avatar/OnlineIndicatorPosition;IILio/getstream/chat/android/ui/widgets/avatar/AvatarShape;F)V public final fun component1 ()I public final fun component10 ()F @@ -3916,7 +3982,7 @@ public final class io/getstream/chat/android/ui/widgets/typing/TypingIndicatorVi public final fun setTypingUsers (Ljava/util/List;)V } -public final class io/getstream/chat/android/ui/widgets/typing/TypingIndicatorViewStyle { +public final class io/getstream/chat/android/ui/widgets/typing/TypingIndicatorViewStyle : io/getstream/chat/android/ui/helper/ViewStyle { public fun (ILio/getstream/chat/android/ui/font/TextStyle;)V public final fun component1 ()I public final fun component2 ()Lio/getstream/chat/android/ui/font/TextStyle; diff --git a/stream-chat-android-ui-components/detekt-baseline.xml b/stream-chat-android-ui-components/detekt-baseline.xml index fc2c37d2cc8..98f90983fa1 100644 --- a/stream-chat-android-ui-components/detekt-baseline.xml +++ b/stream-chat-android-ui-components/detekt-baseline.xml @@ -32,6 +32,7 @@ LongMethod:MessageOptionItemsFactory.kt$DefaultMessageOptionItemsFactory$override fun createMessageOptionItems( selectedMessage: Message, currentUser: User?, isInThread: Boolean, ownCapabilities: Set<String>, style: MessageListViewStyle, ): List<MessageOptionItem> LongMethod:MessageReplyStyle.kt$MessageReplyStyle.Companion$operator fun invoke(attributes: TypedArray, context: Context): MessageReplyStyle LongMethod:PinnedMessageListViewStyle.kt$PinnedMessageListViewStyle.Companion$operator fun invoke(context: Context, attrs: AttributeSet?): PinnedMessageListViewStyle + LongMethod:SearchInputViewStyle.kt$SearchInputViewStyle.Companion$operator fun invoke(context: Context, attrs: AttributeSet?): SearchInputViewStyle LongMethod:SearchResultListViewStyle.kt$SearchResultListViewStyle.Companion$operator fun invoke(context: Context, attrs: AttributeSet?): SearchResultListViewStyle LongMethod:SwipeViewHolder.kt$SwipeViewHolder$@SuppressLint("ClickableViewAccessibility") public fun setSwipeListener(view: View, swipeListener: ChannelListView.SwipeListener?) LongParameterList:EditReactionsBubbleDrawer.kt$EditReactionsBubbleDrawer$( context: Context, canvas: Canvas, bubbleWidth: Int, bubbleHeight: Int, isMyMessage: Boolean, isSingleReaction: Boolean, messageAnchorPosition: Float, canvasBounds: IntRange, ) @@ -81,6 +82,7 @@ MaxLineLength:AutoLinkableTextTransformer.kt$AutoLinkableTextTransformer$* MaxLineLength:AvatarDecorator.kt$AvatarDecorator$setupAvatar(getAvatarView(viewHolder.binding.userAvatarMineView, viewHolder.binding.userAvatarView, data.isMine), data) MaxLineLength:ChannelActionsDialogViewStyle.kt$ChannelActionsDialogViewStyle$* + MaxLineLength:ChannelListFragmentViewStyle.kt$ChannelListFragmentViewStyle$* MaxLineLength:ChannelListIconProviderContainerImpl.kt$ChannelListIconProviderContainerImpl$override MaxLineLength:ChannelListView.kt$ChannelListView$is ChannelListViewModel.ErrorEvent.DeleteChannelError -> R.string.stream_ui_channel_list_error_delete_channel MaxLineLength:ChannelListViewModel.kt$ChannelListViewModel$* diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/ChannelListFragment.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/ChannelListFragment.kt index 6aef646e6da..0fd8e99fc24 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/ChannelListFragment.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/ChannelListFragment.kt @@ -25,6 +25,7 @@ import android.view.ViewGroup import androidx.annotation.StyleRes import androidx.core.os.bundleOf import androidx.core.view.isVisible +import androidx.core.view.updateLayoutParams import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import io.getstream.chat.android.models.Channel @@ -34,6 +35,7 @@ import io.getstream.chat.android.models.querysort.QuerySorter import io.getstream.chat.android.ui.common.utils.Utils import io.getstream.chat.android.ui.databinding.StreamUiFragmentChannelListBinding import io.getstream.chat.android.ui.feature.channels.header.ChannelListHeaderView +import io.getstream.chat.android.ui.feature.channels.list.ChannelListFragmentViewStyle import io.getstream.chat.android.ui.feature.channels.list.ChannelListView import io.getstream.chat.android.ui.feature.messages.MessageListActivity import io.getstream.chat.android.ui.feature.search.SearchInputView @@ -69,6 +71,7 @@ public open class ChannelListFragment : Fragment() { protected val channelListViewModel: ChannelListViewModel by viewModels { createChannelListViewModelFactory() } protected val searchViewModel: SearchViewModel by viewModels() + protected lateinit var style: ChannelListFragmentViewStyle protected var headerUserAvatarClickListener: HeaderUserAvatarClickListener? = null protected var headerActionButtonClickListener: HeaderActionButtonClickListener? = null protected var channelListItemClickListener: ChannelListItemClickListener? = null @@ -79,6 +82,7 @@ public open class ChannelListFragment : Fragment() { override fun onAttach(context: Context) { super.onAttach(context) + this.style = ChannelListFragmentViewStyle(context) headerUserAvatarClickListener = findListener() headerActionButtonClickListener = findListener() channelListItemClickListener = findListener() @@ -105,6 +109,16 @@ public open class ChannelListFragment : Fragment() { setupChannelList(binding.channelListView) setupSearchInput(binding.searchInputView) setupSearchResultList(binding.searchResultListView) + applyStyle(style) + } + + protected open fun applyStyle(style: ChannelListFragmentViewStyle) { + binding.searchInputView.updateLayoutParams { + topMargin = style.searchInputMarginTop + bottomMargin = style.searchInputMarginBottom + marginStart = style.searchInputMarginStart + marginEnd = style.searchInputMarginEnd + } } /** diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/actions/ChannelActionsDialogViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/actions/ChannelActionsDialogViewStyle.kt index b9b43d7d0f5..7b627ce7d5c 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/actions/ChannelActionsDialogViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/actions/ChannelActionsDialogViewStyle.kt @@ -24,6 +24,7 @@ import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.feature.channels.actions.internal.ChannelActionsDialogFragment import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getDimension import io.getstream.chat.android.ui.utils.extensions.getDrawableCompat @@ -61,7 +62,7 @@ public data class ChannelActionsDialogViewStyle( public val cancelIcon: Drawable, public val cancelEnabled: Boolean, public val background: Drawable, -) { +) : ViewStyle { internal companion object { operator fun invoke(context: Context, attrs: AttributeSet?): ChannelActionsDialogViewStyle { context.obtainStyledAttributes( diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/list/ChannelListFragmentViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/list/ChannelListFragmentViewStyle.kt new file mode 100644 index 00000000000..d71b68c85e3 --- /dev/null +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/list/ChannelListFragmentViewStyle.kt @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2014-2022 Stream.io Inc. All rights reserved. + * + * Licensed under the Stream License; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://github.com/GetStream/stream-chat-android/blob/main/LICENSE + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getstream.chat.android.ui.feature.channels.list + +import android.content.Context +import androidx.annotation.Px +import io.getstream.chat.android.ui.R +import io.getstream.chat.android.ui.feature.channels.ChannelListFragment +import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle +import io.getstream.chat.android.ui.utils.extensions.getDimension + +/** + * Style for [ChannelListFragment]. + * Use this class together with [TransformStyle.channelListFragmentStyleTransformer] to change [ChannelListFragment] styles programmatically. + * + * @property searchInputMarginStart The start margin of the search input. + * @property searchInputMarginTop The top margin of the search input. + * @property searchInputMarginEnd The end margin of the search input. + * @property searchInputMarginBottom The bottom margin of the search input. + */ +public data class ChannelListFragmentViewStyle( + @Px public val searchInputMarginStart: Int, + @Px public val searchInputMarginTop: Int, + @Px public val searchInputMarginEnd: Int, + @Px public val searchInputMarginBottom: Int, +) : ViewStyle { + + internal companion object { + operator fun invoke(context: Context): ChannelListFragmentViewStyle { + val searchInputMarginTop: Int = context.getDimension(R.dimen.stream_ui_channel_list_search_margin_top) + val searchInputMarginStart: Int = context.getDimension(R.dimen.stream_ui_channel_list_search_margin_start) + val searchInputMarginEnd: Int = context.getDimension(R.dimen.stream_ui_channel_list_search_margin_end) + val searchInputMarginBottom: Int = context.getDimension(R.dimen.stream_ui_channel_list_search_margin_bottom) + + return ChannelListFragmentViewStyle( + searchInputMarginStart = searchInputMarginStart, + searchInputMarginTop = searchInputMarginTop, + searchInputMarginEnd = searchInputMarginEnd, + searchInputMarginBottom = searchInputMarginBottom, + ).let(TransformStyle.channelListFragmentStyleTransformer::transform) + } + } +} diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/list/ChannelListViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/list/ChannelListViewStyle.kt index 2ddae1f9f28..f9d0042bf2f 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/list/ChannelListViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/list/ChannelListViewStyle.kt @@ -22,11 +22,14 @@ import android.graphics.drawable.Drawable import android.util.AttributeSet import androidx.annotation.ColorInt import androidx.annotation.LayoutRes +import androidx.annotation.Px import androidx.appcompat.content.res.AppCompatResources +import androidx.core.content.res.ResourcesCompat import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.feature.channels.list.adapter.viewholder.internal.ChannelViewHolder import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getColorOrNull import io.getstream.chat.android.ui.utils.extensions.getDimension @@ -60,6 +63,12 @@ import io.getstream.chat.android.ui.utils.extensions.use * @property edgeEffectColor Color applied to the [ChannelListView] edge effect. Pass null if you want to use default [android.R.attr.colorEdgeEffect]. Default value is null. * @property showChannelDeliveryStatusIndicator Flag if we need to show the delivery indicator or not. * @property readCountEnabled Enables/disables read count. Enabled by default. + * @property itemHeight Height of the channel list item. Default value is [R.dimen.stream_ui_channel_list_item_height]. + * @property itemMarginStart Start margin of the channel list item. Default value is [R.dimen.stream_ui_channel_list_item_margin_start]. + * @property itemMarginEnd End margin of the channel list item. Default value is [R.dimen.stream_ui_channel_list_item_margin_end]. + * @property itemTitleMarginStart Start margin of the channel list item title. Default value is [R.dimen.stream_ui_channel_list_item_title_margin_start]. + * @property itemVerticalSpacerHeight Height of the channel list item vertical spacer. Default value is [R.dimen.stream_ui_channel_list_item_vertical_spacer_height]. + * @property itemVerticalSpacerPosition Position of the channel list item vertical spacer. Default value is [R.dimen.stream_ui_channel_list_item_vertical_spacer_position]. */ public data class ChannelListViewStyle( public val optionsIcon: Drawable, @@ -86,7 +95,13 @@ public data class ChannelListViewStyle( @ColorInt public val edgeEffectColor: Int?, public val showChannelDeliveryStatusIndicator: Boolean, public val readCountEnabled: Boolean, -) { + @Px public val itemHeight: Int, + @Px public val itemMarginStart: Int, + @Px public val itemMarginEnd: Int, + @Px public val itemTitleMarginStart: Int, + @Px public val itemVerticalSpacerHeight: Int, + @Px public val itemVerticalSpacerPosition: Float, +) : ViewStyle { internal companion object { operator fun invoke(context: Context, attrs: AttributeSet?): ChannelListViewStyle { @@ -258,6 +273,39 @@ public data class ChannelListViewStyle( val edgeEffectColor = a.getColorOrNull(R.styleable.ChannelListView_streamUiEdgeEffectColor) + val itemHeight = a.getDimensionPixelSize( + R.styleable.ChannelListView_streamUiChannelHeight, + context.getDimension(R.dimen.stream_ui_channel_list_item_height), + ) + + val itemMarginStart = a.getDimensionPixelSize( + R.styleable.ChannelListView_streamUiChannelMarginStart, + context.getDimension(R.dimen.stream_ui_channel_list_item_margin_start), + ) + + val itemMarginEnd = a.getDimensionPixelSize( + R.styleable.ChannelListView_streamUiChannelMarginEnd, + context.getDimension(R.dimen.stream_ui_channel_list_item_margin_end), + ) + + val itemTitleMarginStart = a.getDimensionPixelSize( + R.styleable.ChannelListView_streamUiChannelTitleMarginStart, + context.getDimension(R.dimen.stream_ui_channel_list_item_title_margin_start), + ) + + val itemVerticalSpacerHeight = a.getDimensionPixelSize( + R.styleable.ChannelListView_streamUiChannelVerticalSpacerHeight, + context.getDimension(R.dimen.stream_ui_channel_list_item_vertical_spacer_height), + ) + + val itemVerticalSpacerPosition = a.getFloat( + R.styleable.ChannelListView_streamUiChannelVerticalSpacerPosition, + ResourcesCompat.getFloat( + context.resources, + R.dimen.stream_ui_channel_list_item_vertical_spacer_position, + ), + ) + return ChannelListViewStyle( optionsIcon = optionsIcon, deleteIcon = deleteIcon, @@ -283,6 +331,12 @@ public data class ChannelListViewStyle( edgeEffectColor = edgeEffectColor, showChannelDeliveryStatusIndicator = showChannelDeliveryStatusIndicator, readCountEnabled = readCountEnabled, + itemHeight = itemHeight, + itemMarginStart = itemMarginStart, + itemMarginEnd = itemMarginEnd, + itemTitleMarginStart = itemTitleMarginStart, + itemVerticalSpacerHeight = itemVerticalSpacerHeight, + itemVerticalSpacerPosition = itemVerticalSpacerPosition, ).let(TransformStyle.channelListStyleTransformer::transform) } } diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/list/adapter/viewholder/internal/ChannelViewHolder.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/list/adapter/viewholder/internal/ChannelViewHolder.kt index 403dad57287..3e5f167b762 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/list/adapter/viewholder/internal/ChannelViewHolder.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/channels/list/adapter/viewholder/internal/ChannelViewHolder.kt @@ -19,8 +19,10 @@ package io.getstream.chat.android.ui.feature.channels.list.adapter.viewholder.in import android.content.res.ColorStateList import android.view.View import android.view.ViewGroup +import android.view.ViewGroup.MarginLayoutParams import androidx.core.view.doOnNextLayout import androidx.core.view.isVisible +import androidx.core.view.updateLayoutParams import io.getstream.chat.android.client.extensions.isAnonymousChannel import io.getstream.chat.android.models.Channel import io.getstream.chat.android.models.ChannelCapabilities @@ -81,6 +83,9 @@ internal class ChannelViewHolder @JvmOverloads constructor( init { binding.apply { + channelItemView.updateLayoutParams { + height = style.itemHeight + } itemBackgroundView.apply { moreOptionsImageView.setOnClickListener { channelMoreOptionsListener.onClick(channel) @@ -331,17 +336,40 @@ internal class ChannelViewHolder @JvmOverloads constructor( private fun StreamUiChannelListItemBackgroundViewBinding.applyStyle(style: ChannelListViewStyle) { root.setBackgroundColor(style.backgroundLayoutColor) + backgroundView.setBackgroundColor(style.backgroundLayoutColor) + backgroundView.updateLayoutParams { + height = style.itemHeight + } deleteImageView.setImageDrawable(style.deleteIcon) moreOptionsImageView.setImageDrawable(style.optionsIcon) } private fun StreamUiChannelListItemForegroundViewBinding.applyStyle(style: ChannelListViewStyle) { - root.backgroundTintList = ColorStateList.valueOf(style.foregroundLayoutColor) + foregroundView.backgroundTintList = ColorStateList.valueOf(style.foregroundLayoutColor) + foregroundView.updateLayoutParams { + height = style.itemHeight + } channelNameLabel.setTextStyle(style.channelTitleText) lastMessageLabel.setTextStyle(style.lastMessageText) lastMessageTimeLabel.setTextStyle(style.lastMessageDateText) unreadCountBadge.setTextStyle(style.unreadMessageCounterText) unreadCountBadge.backgroundTintList = ColorStateList.valueOf(style.unreadMessageCounterBackgroundColor) muteIcon.setImageDrawable(style.mutedChannelIcon) + channelAvatarView.updateLayoutParams { + marginStart = style.itemMarginStart + } + lastMessageTimeLabel.updateLayoutParams { + marginEnd = style.itemMarginEnd + } + unreadCountBadge.updateLayoutParams { + marginEnd = style.itemMarginEnd + } + channelNameLabel.updateLayoutParams { + marginStart = style.itemTitleMarginStart + } + spacer.updateLayoutParams { + height = style.itemVerticalSpacerHeight + } + guideline.setGuidelinePercent(style.itemVerticalSpacerPosition) } } diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/gallery/AttachmentGalleryViewMediaStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/gallery/AttachmentGalleryViewMediaStyle.kt index 762ba1160dc..b9d86b6b9b1 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/gallery/AttachmentGalleryViewMediaStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/gallery/AttachmentGalleryViewMediaStyle.kt @@ -25,6 +25,7 @@ import androidx.annotation.ColorInt import androidx.core.content.ContextCompat import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getColorOrNull import io.getstream.chat.android.ui.utils.extensions.getDimensionOrNull @@ -68,7 +69,7 @@ public data class AttachmentGalleryViewMediaStyle( val viewMediaPlayVideoIconWidth: Int, val viewMediaPlayVideoIconHeight: Int, val imagePlaceholder: Drawable?, -) { +) : ViewStyle { internal companion object { diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/gallery/MediaAttachmentGridViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/gallery/MediaAttachmentGridViewStyle.kt index 814333154b1..5d3839a21b0 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/gallery/MediaAttachmentGridViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/gallery/MediaAttachmentGridViewStyle.kt @@ -25,6 +25,7 @@ import androidx.core.content.ContextCompat import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.feature.gallery.overview.MediaAttachmentGridView import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getColorOrNull import io.getstream.chat.android.ui.utils.extensions.getDimensionOrNull @@ -67,7 +68,7 @@ public data class MediaAttachmentGridViewStyle( val playVideoIconPaddingStart: Int, val playVideoIconPaddingEnd: Int, val imagePlaceholder: Drawable?, -) { +) : ViewStyle { internal companion object { operator fun invoke(context: Context, attrs: AttributeSet?): MediaAttachmentGridViewStyle { diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/gallery/options/AttachmentGalleryOptionsViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/gallery/options/AttachmentGalleryOptionsViewStyle.kt index f31e225a2b6..9bb4fd74192 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/gallery/options/AttachmentGalleryOptionsViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/gallery/options/AttachmentGalleryOptionsViewStyle.kt @@ -27,6 +27,7 @@ import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.feature.gallery.AttachmentGalleryActivity import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getDimension import io.getstream.chat.android.ui.utils.extensions.getDrawableCompat @@ -59,7 +60,7 @@ public data class AttachmentGalleryOptionsViewStyle( val deleteOptionEnabled: Boolean, val deleteOptionDrawable: Drawable, @ColorInt val deleteOptionTextColor: Int, -) { +) : ViewStyle { internal companion object { operator fun invoke(context: Context, attrs: AttributeSet?): AttachmentGalleryOptionsViewStyle { diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/mentions/list/MentionListViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/mentions/list/MentionListViewStyle.kt index b08b817985b..f069cea01df 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/mentions/list/MentionListViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/mentions/list/MentionListViewStyle.kt @@ -25,6 +25,7 @@ import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.feature.messages.preview.MessagePreviewStyle import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getDimension import io.getstream.chat.android.ui.utils.extensions.getDrawableCompat @@ -34,7 +35,7 @@ public data class MentionListViewStyle( @ColorInt public val backgroundColor: Int, public val emptyStateDrawable: Drawable, public val messagePreviewStyle: MessagePreviewStyle, -) { +) : ViewStyle { internal companion object { operator fun invoke(context: Context, attrs: AttributeSet?): MentionListViewStyle { diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle.kt index ad6a7910753..d5ae34fd455 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/MessageComposerViewStyle.kt @@ -32,6 +32,7 @@ import io.getstream.chat.android.ui.feature.messages.composer.attachment.picker. import io.getstream.chat.android.ui.feature.messages.list.MessageReplyStyle import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.dpToPx import io.getstream.chat.android.ui.utils.extensions.dpToPxPrecise import io.getstream.chat.android.ui.utils.extensions.getColorCompat @@ -252,7 +253,7 @@ public data class MessageComposerViewStyle( @ColorInt public val messageReplyMessageBackgroundStrokeColorTheirs: Int, @Px public val messageReplyMessageBackgroundStrokeWidthTheirs: Float, public val attachmentsPickerDialogStyle: AttachmentsPickerDialogStyle, -) { +) : ViewStyle { /** * Creates an instance of [MessageReplyStyle] from the parameters provided by [MessageComposerViewStyle]. diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle.kt index aece54ed598..45977ce13de 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/composer/attachment/picker/AttachmentsPickerDialogStyle.kt @@ -20,6 +20,7 @@ import android.content.res.ColorStateList import android.graphics.drawable.Drawable import androidx.annotation.ColorInt import io.getstream.chat.android.ui.font.TextStyle +import io.getstream.chat.android.ui.helper.ViewStyle /** * Style for [AttachmentsPickerDialogFragment]. @@ -98,4 +99,4 @@ public data class AttachmentsPickerDialogStyle( val allowAccessToCameraButtonText: String, val allowAccessToCameraIconDrawable: Drawable, val pickerMediaMode: PickerMediaMode, -) +) : ViewStyle diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/header/MessageListHeaderViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/header/MessageListHeaderViewStyle.kt index 620e89b9bd6..bf650c2953f 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/header/MessageListHeaderViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/header/MessageListHeaderViewStyle.kt @@ -26,6 +26,7 @@ import androidx.core.content.ContextCompat import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getDimension import io.getstream.chat.android.ui.utils.extensions.getDrawableCompat @@ -62,7 +63,7 @@ public data class MessageListHeaderViewStyle( public val showSearchingForNetworkProgressBar: Boolean, public val searchingForNetworkProgressBarTint: ColorStateList, public val separatorBackgroundDrawable: Drawable?, -) { +) : ViewStyle { internal companion object { operator fun invoke(context: Context, attrs: AttributeSet?): MessageListHeaderViewStyle { diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/DefaultQuotedAttachmentViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/DefaultQuotedAttachmentViewStyle.kt index 447c47cc587..910b7e36dba 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/DefaultQuotedAttachmentViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/DefaultQuotedAttachmentViewStyle.kt @@ -20,6 +20,7 @@ import android.content.Context import androidx.annotation.Px import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getDimension /** @@ -38,7 +39,7 @@ public class DefaultQuotedAttachmentViewStyle( @Px public val imageAttachmentHeight: Int, @Px public val imageAttachmentWidth: Int, @Px public val quotedImageRadius: Int, -) { +) : ViewStyle { internal companion object { operator fun invoke(context: Context): DefaultQuotedAttachmentViewStyle { diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/FileAttachmentViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/FileAttachmentViewStyle.kt index d7dc0ff883b..ca98d30f400 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/FileAttachmentViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/FileAttachmentViewStyle.kt @@ -25,6 +25,7 @@ import androidx.annotation.Px import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.dpToPx import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getDimension @@ -41,7 +42,7 @@ public data class FileAttachmentViewStyle( public val failedAttachmentIcon: Drawable, val titleTextStyle: TextStyle, val fileSizeTextStyle: TextStyle, -) { +) : ViewStyle { internal companion object { operator fun invoke(context: Context, attrs: AttributeSet?): FileAttachmentViewStyle { context.obtainStyledAttributes( diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/GiphyViewHolderStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/GiphyViewHolderStyle.kt index cd652a0ef62..be4b861735b 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/GiphyViewHolderStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/GiphyViewHolderStyle.kt @@ -27,6 +27,7 @@ import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.feature.messages.list.adapter.viewholder.internal.GiphyViewHolder import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getDimension import io.getstream.chat.android.ui.utils.extensions.getDrawableCompat @@ -55,7 +56,7 @@ public data class GiphyViewHolderStyle( val cancelButtonTextStyle: TextStyle, val shuffleButtonTextStyle: TextStyle, val sendButtonTextStyle: TextStyle, -) { +) : ViewStyle { internal companion object { operator fun invoke(context: Context, attributes: TypedArray): GiphyViewHolderStyle { diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/MessageListItemStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/MessageListItemStyle.kt index 9dda741099f..e137982fbb6 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/MessageListItemStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/MessageListItemStyle.kt @@ -39,6 +39,7 @@ import io.getstream.chat.android.ui.feature.messages.list.reactions.view.ViewRea import io.getstream.chat.android.ui.feature.messages.list.reactions.view.internal.ViewReactionsView import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.dpToPxPrecise import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getDimension @@ -133,7 +134,7 @@ public data class MessageListItemStyle( public val iconBannedMessage: Drawable, public val systemMessageAlignment: Int, @LayoutRes public val loadingMoreView: Int, -) { +) : ViewStyle { @ColorInt public fun getStyleTextColor(isMine: Boolean): Int? { diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/MessageListViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/MessageListViewStyle.kt index 05f78c168ad..bf5eeb0caa6 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/MessageListViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/MessageListViewStyle.kt @@ -29,6 +29,7 @@ import io.getstream.chat.android.ui.feature.messages.list.adapter.viewholder.int import io.getstream.chat.android.ui.feature.messages.list.internal.ScrollButtonView import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.dpToPx import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getDimension @@ -149,7 +150,7 @@ public data class MessageListViewStyle( public val optionsOverlayMessageOptionsMarginEnd: Int, public val showReactionsForUnsentMessages: Boolean, public val readCountEnabled: Boolean, -) { +) : ViewStyle { public companion object { private val DEFAULT_BACKGROUND_COLOR = R.color.stream_ui_white_snow private val DEFAULT_SCROLL_BUTTON_ELEVATION = 3.dpToPx().toFloat() diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/MessageReplyStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/MessageReplyStyle.kt index 32bc8dca5b2..a9485e1e88b 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/MessageReplyStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/MessageReplyStyle.kt @@ -29,6 +29,7 @@ import io.getstream.chat.android.ui.feature.messages.list.MessageReplyStyle.Comp import io.getstream.chat.android.ui.feature.messages.list.MessageReplyStyle.Companion.MESSAGE_STROKE_WIDTH_THEIRS import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.dpToPxPrecise import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getDimension @@ -63,7 +64,7 @@ public data class MessageReplyStyle( @Px public val messageStrokeWidthMine: Float, @ColorInt public val messageStrokeColorTheirs: Int, @Px public val messageStrokeWidthTheirs: Float, -) { +) : ViewStyle { internal companion object { operator fun invoke(attributes: TypedArray, context: Context): MessageReplyStyle { val messageBackgroundColorMine: Int = attributes.getColor( diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/ScrollButtonViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/ScrollButtonViewStyle.kt index dae08003154..9b3b28a456d 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/ScrollButtonViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/ScrollButtonViewStyle.kt @@ -26,6 +26,7 @@ import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.feature.messages.list.internal.ScrollButtonView import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getColorOrNull import io.getstream.chat.android.ui.utils.extensions.getDimension @@ -60,7 +61,7 @@ public data class ScrollButtonViewStyle( public val scrollButtonBadgeGravity: Int, public val scrollButtonBadgeElevation: Float, public val scrollButtonInternalMargin: Int, -) { +) : ViewStyle { internal class Builder(private val context: Context, private val attrs: TypedArray) { private var scrollButtonEnabled: Boolean = false diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/UnsupportedAttachmentViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/UnsupportedAttachmentViewStyle.kt index b962d74d74f..4e369712181 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/UnsupportedAttachmentViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/UnsupportedAttachmentViewStyle.kt @@ -24,6 +24,7 @@ import androidx.annotation.Px import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.dpToPx import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getDimension @@ -44,7 +45,7 @@ public data class UnsupportedAttachmentViewStyle( @Px val strokeWidth: Int, @Px val cornerRadius: Int, val titleTextStyle: TextStyle, -) { +) : ViewStyle { internal companion object { operator fun invoke(context: Context, attrs: AttributeSet?): UnsupportedAttachmentViewStyle { context.obtainStyledAttributes( diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/adapter/view/MediaAttachmentViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/adapter/view/MediaAttachmentViewStyle.kt index 18ab20b9b4b..6309f98447a 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/adapter/view/MediaAttachmentViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/adapter/view/MediaAttachmentViewStyle.kt @@ -25,6 +25,7 @@ import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.feature.messages.list.adapter.view.internal.MediaAttachmentView import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getColorOrNull import io.getstream.chat.android.ui.utils.extensions.getDimension @@ -78,7 +79,7 @@ public data class MediaAttachmentViewStyle( public val playVideoIconPaddingStart: Int, public val playVideoIconPaddingEnd: Int, public val playVideoIconCornerRadius: Float, -) { +) : ViewStyle { internal companion object { /** * Fetches styled attributes and returns them wrapped inside of [MediaAttachmentViewStyle]. diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/reactions/edit/EditReactionsViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/reactions/edit/EditReactionsViewStyle.kt index 0e8c19f1c4f..1f2c3a00f76 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/reactions/edit/EditReactionsViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/reactions/edit/EditReactionsViewStyle.kt @@ -24,6 +24,7 @@ import androidx.annotation.Px import androidx.annotation.StyleableRes import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getDimension import io.getstream.chat.android.ui.utils.extensions.use @@ -63,7 +64,7 @@ public data class EditReactionsViewStyle( @Px public val smallTailBubbleOffset: Int, public val reactionsColumn: Int, @Px public val verticalPadding: Int, -) { +) : ViewStyle { internal data class Builder(private val array: TypedArray, private val context: Context) { @ColorInt diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/reactions/user/SingleReactionViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/reactions/user/SingleReactionViewStyle.kt index 5e6d915c38f..1c0ae53b467 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/reactions/user/SingleReactionViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/reactions/user/SingleReactionViewStyle.kt @@ -26,6 +26,7 @@ import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.common.state.messages.list.MessageOptionsUserReactionAlignment import io.getstream.chat.android.ui.feature.messages.list.reactions.view.ViewReactionsViewStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.dpToPx import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getColorOrNull @@ -72,7 +73,7 @@ public data class SingleReactionViewStyle( @Px public val smallTailBubbleRadius: Int, @Px public val smallTailBubbleOffset: Int, public val reactionOrientation: Int, -) { +) : ViewStyle { internal companion object { private val DEFAULT_BUBBLE_BORDER_COLOR_MINE = R.color.stream_ui_grey_whisper diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/reactions/view/ViewReactionsViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/reactions/view/ViewReactionsViewStyle.kt index 3ee20a87214..09545970f6b 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/reactions/view/ViewReactionsViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/reactions/view/ViewReactionsViewStyle.kt @@ -25,6 +25,7 @@ import androidx.annotation.StyleableRes import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.common.state.messages.list.MessageOptionsUserReactionAlignment import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.dpToPx import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getColorOrNull @@ -77,7 +78,7 @@ public data class ViewReactionsViewStyle( @Px public val smallTailBubbleOffset: Int, @Px public val verticalPadding: Int, public val messageOptionsUserReactionOrientation: Int, -) { +) : ViewStyle { internal companion object { private val DEFAULT_BUBBLE_BORDER_COLOR_MINE = R.color.stream_ui_grey_whisper diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/pinned/list/PinnedMessageListViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/pinned/list/PinnedMessageListViewStyle.kt index ebfc879fde3..0bb8f288f65 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/pinned/list/PinnedMessageListViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/pinned/list/PinnedMessageListViewStyle.kt @@ -25,6 +25,7 @@ import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.feature.messages.preview.MessagePreviewStyle import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getDimension import io.getstream.chat.android.ui.utils.extensions.getDrawableCompat @@ -34,7 +35,7 @@ public data class PinnedMessageListViewStyle( @ColorInt public val backgroundColor: Int, public val emptyStateDrawable: Drawable, public val messagePreviewStyle: MessagePreviewStyle, -) { +) : ViewStyle { internal companion object { operator fun invoke(context: Context, attrs: AttributeSet?): PinnedMessageListViewStyle { diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/search/SearchInputView.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/search/SearchInputView.kt index 521bf5a4c5a..02514e2914f 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/search/SearchInputView.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/search/SearchInputView.kt @@ -17,6 +17,7 @@ package io.getstream.chat.android.ui.feature.search import android.content.Context +import android.graphics.drawable.GradientDrawable import android.text.TextWatcher import android.util.AttributeSet import android.view.inputmethod.EditorInfo @@ -82,11 +83,31 @@ public class SearchInputView : FrameLayout { binding.clearInputButton.setImageDrawable(style.clearInputDrawable) binding.searchIcon.setImageDrawable(style.searchIconDrawable) + binding.searchIcon.updateLayoutParams { + width = style.searchIconWidth + height = style.searchIconHeight + marginStart = style.searchIconMarginStart + } + binding.clearInputButton.updateLayoutParams { + width = style.clearIconWidth + height = style.clearIconHeight + marginEnd = style.clearIconMarginEnd + } binding.inputField.hint = style.hintText binding.inputField.setHintTextColor(style.hintColor) binding.inputField.setTextColor(style.textColor) + style.backgroundDrawable.also { + val outline = style.backgroundDrawableOutline + if (it is GradientDrawable && outline != null) { + it.setStroke(outline.width, outline.color) + } + } binding.root.background = style.backgroundDrawable binding.inputField.setTextSizePx(style.textSize.toFloat()) + binding.inputField.updateLayoutParams { + marginStart = style.textMarginStart + marginEnd = style.textMarginEnd + } binding.inputField.doAfterTextChanged { newText -> updateClearButtonVisibility(newText) diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/search/SearchInputViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/search/SearchInputViewStyle.kt index 2c8d3d0a4b1..08f60d670b8 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/search/SearchInputViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/search/SearchInputViewStyle.kt @@ -20,12 +20,17 @@ import android.content.Context import android.graphics.drawable.Drawable import android.util.AttributeSet import androidx.annotation.ColorInt +import androidx.annotation.Px import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getColorCompat +import io.getstream.chat.android.ui.utils.extensions.getColorOrNull import io.getstream.chat.android.ui.utils.extensions.getDimension +import io.getstream.chat.android.ui.utils.extensions.getDimensionOrNull import io.getstream.chat.android.ui.utils.extensions.getDrawableCompat import io.getstream.chat.android.ui.utils.extensions.use +import kotlin.math.roundToInt /** * @property textColor Color value of the search input text. @@ -37,6 +42,14 @@ import io.getstream.chat.android.ui.utils.extensions.use * @property hintText Hint text. * @property textSize The size of the text in the input. * @property searchInputHeight The height of the root container. + * @property searchIconWidth The width of the search icon. + * @property searchIconHeight The height of the search icon. + * @property searchIconMarginStart The start margin of the search icon. + * @property clearIconWidth The width of the clear icon. + * @property clearIconHeight The height of the clear icon. + * @property clearIconMarginEnd The end margin of the clear icon. + * @property textMarginStart The start margin of the input text. + * @property textMarginEnd The end margin of the input text. */ public data class SearchInputViewStyle( @ColorInt val textColor: Int, @@ -44,11 +57,20 @@ public data class SearchInputViewStyle( val searchIconDrawable: Drawable, val clearInputDrawable: Drawable, val backgroundDrawable: Drawable, + val backgroundDrawableOutline: DrawableOutline?, @ColorInt val containerBackgroundColor: Int, val hintText: String, val textSize: Int, + @Px val textMarginStart: Int, + @Px val textMarginEnd: Int, val searchInputHeight: Int, -) { + @Px val searchIconWidth: Int, + @Px val searchIconHeight: Int, + @Px val searchIconMarginStart: Int, + @Px val clearIconWidth: Int, + @Px val clearIconHeight: Int, + @Px val clearIconMarginEnd: Int, +) : ViewStyle { internal companion object { operator fun invoke(context: Context, attrs: AttributeSet?): SearchInputViewStyle { context.obtainStyledAttributes( @@ -66,6 +88,21 @@ public data class SearchInputViewStyle( val backgroundDrawable = a.getDrawable(R.styleable.SearchInputView_streamUiSearchInputViewBackground) ?: context.getDrawableCompat(R.drawable.stream_ui_shape_search_view_background)!! + var backgroundDrawableOutline: DrawableOutline? = null + + val backgroundDrawableOutlineColor = a.getColorOrNull( + R.styleable.SearchInputView_streamUiSearchInputViewBackgroundOutlineColor, + ) + val backgroundDrawableOutlineWidth = a.getDimensionOrNull( + R.styleable.SearchInputView_streamUiSearchInputViewBackgroundOutlineWidth, + )?.roundToInt() + if (backgroundDrawableOutlineColor != null && backgroundDrawableOutlineWidth != null) { + backgroundDrawableOutline = DrawableOutline( + width = backgroundDrawableOutlineWidth, + color = backgroundDrawableOutlineColor, + ) + } + val containerBackground = a.getColor( R.styleable.SearchInputView_streamUiSearchInputViewContainerBackground, context.getColorCompat(R.color.stream_ui_white), @@ -89,23 +126,83 @@ public data class SearchInputViewStyle( context.getDimension(R.dimen.stream_ui_text_medium), ) + val textMarginStart = a.getDimensionPixelSize( + R.styleable.SearchInputView_streamUiSearchInputViewTextMarginStart, + context.getDimension(R.dimen.stream_ui_search_input_text_margin_start), + ) + + val textMarginEnd = a.getDimensionPixelSize( + R.styleable.SearchInputView_streamUiSearchInputViewTextMarginEnd, + context.getDimension(R.dimen.stream_ui_search_input_text_margin_end), + ) + val searchInputHeight = a.getDimensionPixelSize( R.styleable.SearchInputView_streamUiSearchInputViewHeight, context.getDimension(R.dimen.stream_ui_search_input_height), ) + val searchIconWidth = a.getDimensionPixelSize( + R.styleable.SearchInputView_streamUiSearchInputViewIconSearchWidth, + context.getDimension(R.dimen.stream_ui_search_input_icon_search_width), + ) + + val searchIconHeight = a.getDimensionPixelSize( + R.styleable.SearchInputView_streamUiSearchInputViewIconSearchHeight, + context.getDimension(R.dimen.stream_ui_search_input_icon_search_height), + ) + + val searchIconMarginStart = a.getDimensionPixelSize( + R.styleable.SearchInputView_streamUiSearchInputViewIconSearchMarginStart, + context.getDimension(R.dimen.stream_ui_search_input_icon_search_margin_start), + ) + + val clearIconWidth = a.getDimensionPixelSize( + R.styleable.SearchInputView_streamUiSearchInputViewIconClearWidth, + context.getDimension(R.dimen.stream_ui_search_input_icon_clear_width), + ) + + val clearIconHeight = a.getDimensionPixelSize( + R.styleable.SearchInputView_streamUiSearchInputViewIconClearHeight, + context.getDimension(R.dimen.stream_ui_search_input_icon_clear_height), + ) + + val clearIconMarginEnd = a.getDimensionPixelSize( + R.styleable.SearchInputView_streamUiSearchInputViewIconClearMarginEnd, + context.getDimension(R.dimen.stream_ui_search_input_icon_clear_margin_end), + ) + return SearchInputViewStyle( searchIconDrawable = searchIcon, clearInputDrawable = clearIcon, backgroundDrawable = backgroundDrawable, + backgroundDrawableOutline = backgroundDrawableOutline, containerBackgroundColor = containerBackground, textColor = textColor, hintColor = hintColor, hintText = hintText, textSize = textSize, + textMarginStart = textMarginStart, + textMarginEnd = textMarginEnd, searchInputHeight = searchInputHeight, + searchIconWidth = searchIconWidth, + searchIconHeight = searchIconHeight, + searchIconMarginStart = searchIconMarginStart, + clearIconWidth = clearIconWidth, + clearIconHeight = clearIconHeight, + clearIconMarginEnd = clearIconMarginEnd, ).let(TransformStyle.searchInputViewStyleTransformer::transform) } } } + + /** + * Represents the outline of the drawable. + * + * @property color Color of the drawable outline. + * @property width Width of the drawable outline. + */ + public data class DrawableOutline( + @Px val width: Int, + @ColorInt val color: Int, + ) } diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/search/list/SearchResultListViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/search/list/SearchResultListViewStyle.kt index 4efc5dfc55b..4edebe6f233 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/search/list/SearchResultListViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/search/list/SearchResultListViewStyle.kt @@ -25,6 +25,7 @@ import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.feature.messages.preview.MessagePreviewStyle import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getDimension import io.getstream.chat.android.ui.utils.extensions.getDrawableCompat @@ -50,7 +51,7 @@ public data class SearchResultListViewStyle( public val emptyStateTextStyle: TextStyle, public val progressBarIcon: Drawable, public val messagePreviewStyle: MessagePreviewStyle, -) { +) : ViewStyle { internal companion object { operator fun invoke(context: Context, attrs: AttributeSet?): SearchResultListViewStyle { context.obtainStyledAttributes( diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/helper/TransformStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/helper/TransformStyle.kt index a13bfde9754..408a9512ab4 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/helper/TransformStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/helper/TransformStyle.kt @@ -17,6 +17,7 @@ package io.getstream.chat.android.ui.helper import io.getstream.chat.android.ui.feature.channels.actions.ChannelActionsDialogViewStyle +import io.getstream.chat.android.ui.feature.channels.list.ChannelListFragmentViewStyle import io.getstream.chat.android.ui.feature.channels.list.ChannelListViewStyle import io.getstream.chat.android.ui.feature.gallery.AttachmentGalleryViewMediaStyle import io.getstream.chat.android.ui.feature.gallery.MediaAttachmentGridViewStyle @@ -47,6 +48,10 @@ public object TransformStyle { @JvmStatic public var avatarStyleTransformer: StyleTransformer = noopTransformer() + @JvmStatic + public var channelListFragmentStyleTransformer: StyleTransformer = + noopTransformer() + @JvmStatic public var channelListStyleTransformer: StyleTransformer = noopTransformer() diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/helper/ViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/helper/ViewStyle.kt new file mode 100644 index 00000000000..01cd2b2a8fd --- /dev/null +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/helper/ViewStyle.kt @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2014-2023 Stream.io Inc. All rights reserved. + * + * Licensed under the Stream License; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://github.com/GetStream/stream-chat-android/blob/main/LICENSE + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getstream.chat.android.ui.helper + +internal interface ViewStyle diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/utils/extensions/View.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/utils/extensions/View.kt index 07f99aee6fe..557693785dc 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/utils/extensions/View.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/utils/extensions/View.kt @@ -22,6 +22,7 @@ import android.graphics.drawable.RippleDrawable import android.view.View import android.widget.Toast import androidx.annotation.ColorInt +import androidx.annotation.Px import androidx.annotation.StringRes import androidx.fragment.app.FragmentActivity import io.getstream.chat.android.core.internal.InternalStreamChatApi @@ -60,3 +61,23 @@ public val View.activity: FragmentActivity? public fun View.showToast(@StringRes resId: Int) { Toast.makeText(context, context.getString(resId), Toast.LENGTH_SHORT).show() } + +internal fun View.setPaddingStart(@Px start: Int) { + val isRtl = context.isRtlLayout + + if (isRtl) { + setPadding(paddingLeft, paddingTop, start, paddingBottom) + } else { + setPadding(start, paddingTop, paddingRight, paddingBottom) + } +} + +internal fun View.setPaddingEnd(@Px start: Int) { + val isRtl = context.isRtlLayout + + if (isRtl) { + setPadding(start, paddingTop, paddingRight, paddingBottom) + } else { + setPadding(paddingLeft, paddingTop, start, paddingBottom) + } +} diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/widgets/avatar/AvatarStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/widgets/avatar/AvatarStyle.kt index 9d66b92ae5a..998d21cde4d 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/widgets/avatar/AvatarStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/widgets/avatar/AvatarStyle.kt @@ -25,6 +25,7 @@ import androidx.annotation.Px import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.dpToPx import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getDimension @@ -45,7 +46,7 @@ public data class AvatarStyle( @ColorInt public val onlineIndicatorBorderColor: Int, public val avatarShape: AvatarShape, @Px public val borderRadius: Float, -) { +) : ViewStyle { internal companion object { operator fun invoke(context: Context, attrs: AttributeSet?): AvatarStyle { diff --git a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/widgets/typing/TypingIndicatorViewStyle.kt b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/widgets/typing/TypingIndicatorViewStyle.kt index 4579a6add7e..95d49d5c2b1 100644 --- a/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/widgets/typing/TypingIndicatorViewStyle.kt +++ b/stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/widgets/typing/TypingIndicatorViewStyle.kt @@ -23,6 +23,7 @@ import androidx.annotation.LayoutRes import io.getstream.chat.android.ui.R import io.getstream.chat.android.ui.font.TextStyle import io.getstream.chat.android.ui.helper.TransformStyle +import io.getstream.chat.android.ui.helper.ViewStyle import io.getstream.chat.android.ui.utils.extensions.getColorCompat import io.getstream.chat.android.ui.utils.extensions.getDimension import io.getstream.chat.android.ui.utils.extensions.use @@ -37,7 +38,7 @@ import io.getstream.chat.android.ui.utils.extensions.use public data class TypingIndicatorViewStyle( @LayoutRes public val typingIndicatorAnimationView: Int, public val typingIndicatorUsersTextStyle: TextStyle, -) { +) : ViewStyle { internal companion object { operator fun invoke(context: Context, attrs: AttributeSet?): TypingIndicatorViewStyle { context.obtainStyledAttributes( diff --git a/stream-chat-android-ui-components/src/main/res/drawable/stream_ui_shape_search_view_background.xml b/stream-chat-android-ui-components/src/main/res/drawable/stream_ui_shape_search_view_background.xml index 5031f2c471c..d7132bb81e2 100644 --- a/stream-chat-android-ui-components/src/main/res/drawable/stream_ui_shape_search_view_background.xml +++ b/stream-chat-android-ui-components/src/main/res/drawable/stream_ui_shape_search_view_background.xml @@ -23,7 +23,7 @@ android:color="@color/stream_ui_white" /> diff --git a/stream-chat-android-ui-components/src/main/res/layout/stream_ui_channel_list_item_background_view.xml b/stream-chat-android-ui-components/src/main/res/layout/stream_ui_channel_list_item_background_view.xml index 1bbb129158f..f1bca4ac24f 100644 --- a/stream-chat-android-ui-components/src/main/res/layout/stream_ui_channel_list_item_background_view.xml +++ b/stream-chat-android-ui-components/src/main/res/layout/stream_ui_channel_list_item_background_view.xml @@ -17,6 +17,7 @@ + + + + @@ -40,26 +61,19 @@ android:id="@+id/channelNameLabel" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginHorizontal="8dp" + android:layout_marginStart="@dimen/stream_ui_channel_list_item_title_margin_start" + android:layout_marginEnd="8dp" android:ellipsize="end" android:maxLines="1" android:textAppearance="@style/StreamUiTextAppearance.BodyBold" android:textDirection="locale" - app:layout_constraintBottom_toTopOf="@+id/guideline" + app:layout_constraintBottom_toTopOf="@+id/spacer" app:layout_constraintEnd_toStartOf="@+id/muteIcon" app:layout_constraintStart_toEndOf="@+id/channelAvatarView" app:layout_constraintVertical_chainStyle="packed" tools:text="Gebruiker, Usuario, Benutzer" /> - - @@ -86,7 +100,7 @@ android:textDirection="locale" app:layout_constraintStart_toStartOf="@+id/channelNameLabel" app:layout_constraintEnd_toStartOf="@+id/messageStatusImageView" - app:layout_constraintTop_toBottomOf="@+id/guideline" + app:layout_constraintTop_toBottomOf="@+id/spacer" tools:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus a." /> @@ -94,10 +108,10 @@ android:id="@+id/lastMessageTimeLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginEnd="8dp" + android:layout_marginEnd="@dimen/stream_ui_channel_list_item_margin_end" android:textAppearance="@style/StreamUiTextAppearance.Footnote" android:textDirection="locale" - app:layout_constraintTop_toTopOf="@id/guideline" + app:layout_constraintTop_toBottomOf="@id/spacer" app:layout_constraintEnd_toEndOf="parent" tools:text="3:00PM" /> @@ -133,7 +147,7 @@ android:visibility="gone" android:layout_marginBottom="4dp" app:layout_constraintTop_toTopOf="@id/channelNameLabel" - app:layout_constraintBottom_toTopOf="@id/lastMessageTimeLabel" + app:layout_constraintBottom_toTopOf="@id/spacer" app:layout_constraintEnd_toStartOf="@id/unreadCountBadge" tools:src="@drawable/stream_ui_ic_mute" tools:visibility="visible" @@ -143,7 +157,7 @@ android:id="@+id/unreadCountBadge" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginEnd="8dp" + android:layout_marginEnd="@dimen/stream_ui_channel_list_item_margin_end" android:layout_marginBottom="4dp" android:background="@drawable/stream_ui_shape_badge_background" android:fontFamily="sans-serif-medium" @@ -153,7 +167,7 @@ android:textColor="@color/stream_ui_literal_white" android:textSize="@dimen/stream_ui_text_small" android:textDirection="locale" - app:layout_constraintBottom_toTopOf="@+id/lastMessageTimeLabel" + app:layout_constraintBottom_toTopOf="@+id/spacer" app:layout_constraintEnd_toEndOf="parent" tools:text="99" /> diff --git a/stream-chat-android-ui-components/src/main/res/layout/stream_ui_fragment_channel_list.xml b/stream-chat-android-ui-components/src/main/res/layout/stream_ui_fragment_channel_list.xml index 65a6e02ed9a..647f65f722b 100644 --- a/stream-chat-android-ui-components/src/main/res/layout/stream_ui_fragment_channel_list.xml +++ b/stream-chat-android-ui-components/src/main/res/layout/stream_ui_fragment_channel_list.xml @@ -36,8 +36,12 @@ android:id="@+id/searchInputView" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_margin="8dp" + android:layout_marginStart="@dimen/stream_ui_channel_list_search_margin_start" + android:layout_marginTop="@dimen/stream_ui_channel_list_search_margin_top" + android:layout_marginEnd="@dimen/stream_ui_channel_list_search_margin_end" + android:layout_marginBottom="@dimen/stream_ui_channel_list_search_margin_bottom" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/channelListHeaderView" /> diff --git a/stream-chat-android-ui-components/src/main/res/layout/stream_ui_search_view.xml b/stream-chat-android-ui-components/src/main/res/layout/stream_ui_search_view.xml index d766468727b..2c2acee66a9 100644 --- a/stream-chat-android-ui-components/src/main/res/layout/stream_ui_search_view.xml +++ b/stream-chat-android-ui-components/src/main/res/layout/stream_ui_search_view.xml @@ -24,9 +24,9 @@ + + + + + + + diff --git a/stream-chat-android-ui-components/src/main/res/values/attrs_search_input_view.xml b/stream-chat-android-ui-components/src/main/res/values/attrs_search_input_view.xml index c2847e14df8..dd529156ee8 100644 --- a/stream-chat-android-ui-components/src/main/res/values/attrs_search_input_view.xml +++ b/stream-chat-android-ui-components/src/main/res/values/attrs_search_input_view.xml @@ -21,10 +21,20 @@ + + + + + + + + + + diff --git a/stream-chat-android-ui-components/src/main/res/values/colors.xml b/stream-chat-android-ui-components/src/main/res/values/colors.xml index fbcc1e6e623..04824677ce3 100644 --- a/stream-chat-android-ui-components/src/main/res/values/colors.xml +++ b/stream-chat-android-ui-components/src/main/res/values/colors.xml @@ -79,4 +79,7 @@ true + + + @color/stream_ui_grey_whisper diff --git a/stream-chat-android-ui-components/src/main/res/values/dimens.xml b/stream-chat-android-ui-components/src/main/res/values/dimens.xml index 0064af4cac3..11b4d6e8815 100644 --- a/stream-chat-android-ui-components/src/main/res/values/dimens.xml +++ b/stream-chat-android-ui-components/src/main/res/values/dimens.xml @@ -68,9 +68,29 @@ 36dp + 1dp + 16dp + 8dp + 24dp + 24dp + 8dp + 24dp + 24dp + 8dp + + + 8dp + 8dp + 8dp + 8dp 64dp + 8dp + 8dp + 8dp + 0dp + 0.5 50dp 16dp 90dp diff --git a/stream-chat-android-ui-components/src/main/res/values/styles.xml b/stream-chat-android-ui-components/src/main/res/values/styles.xml index 7942cd30eb5..a1ca17587fe 100644 --- a/stream-chat-android-ui-components/src/main/res/values/styles.xml +++ b/stream-chat-android-ui-components/src/main/res/values/styles.xml @@ -245,6 +245,7 @@ @color/stream_ui_white @style/StreamUi.MessageList.Item.Avatar @style/StreamUi.MessageList.Header.Avatar + @style/StreamUi.ChannelListView @style/StreamUi.ChannelList.Item.Avatar @style/StreamUi.ChannelListHeader.Avatar @style/StreamUi.MentionPreview.Item.Avatar @@ -617,12 +618,13 @@ @dimen/stream_ui_avatar_size_medium @dimen/stream_ui_avatar_text_size_medium true - 8dp + @dimen/stream_ui_channel_list_item_margin_start 12dp 12dp