diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java index c018a3460b12795a8ba4f4ce56bad3e11bbe9dd6..40b11fcddfcfa1cc62e5fe19d3c0eeb6a61117af 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java @@ -259,16 +259,44 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio final var items = binding.drawer.getItemAdapter().getAdapterItems(); final var tags = new TreeMap(); final var conversations = new ArrayList(); + var totalUnread = 0; + var dmUnread = 0; + var channelUnread = 0; populateWithOrderedConversations(conversations, false, false); for (final var c : conversations) { + final var unread = c.unreadCount(); + totalUnread += unread; + if (c.getMode() == Conversation.MODE_MULTI) { + channelUnread += unread; + } else { + dmUnread += unread; + } for (final var tag : c.getTags(this)) { if ("Channel".equals(tag.getName())) continue; var count = tags.get(tag); if (count == null) count = 0; - tags.put(tag, count + c.unreadCount()); + tags.put(tag, count + unread); } } + com.mikepenz.materialdrawer.util.MaterialDrawerSliderViewExtensionsKt.updateBadge( + binding.drawer, + DRAWER_UNREAD_CHATS, + new com.mikepenz.materialdrawer.holder.StringHolder(totalUnread > 0 ? new Integer(totalUnread).toString() : null) + ); + + com.mikepenz.materialdrawer.util.MaterialDrawerSliderViewExtensionsKt.updateBadge( + binding.drawer, + DRAWER_DIRECT_MESSAGES, + new com.mikepenz.materialdrawer.holder.StringHolder(dmUnread > 0 ? new Integer(dmUnread).toString() : null) + ); + + com.mikepenz.materialdrawer.util.MaterialDrawerSliderViewExtensionsKt.updateBadge( + binding.drawer, + DRAWER_CHANNELS, + new com.mikepenz.materialdrawer.holder.StringHolder(channelUnread > 0 ? new Integer(channelUnread).toString() : null) + ); + long id = 1000; final var inDrawer = new HashMap(); for (final var item : ImmutableList.copyOf(items)) { @@ -355,6 +383,9 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio com.mikepenz.materialdrawer.model.interfaces.IconableKt.setIconRes(manageAccount, R.drawable.ic_settings_24dp); accountHeader.addProfiles(manageAccount); + final var color = MaterialColors.getColor(binding.drawer, com.google.android.material.R.attr.colorPrimaryContainer); + final var textColor = MaterialColors.getColor(binding.drawer, com.google.android.material.R.attr.colorOnPrimaryContainer); + final var allChats = new com.mikepenz.materialdrawer.model.PrimaryDrawerItem(); allChats.setIdentifier(DRAWER_ALL_CHATS); com.mikepenz.materialdrawer.model.interfaces.NameableKt.setNameText(allChats, "All Chats"); @@ -364,16 +395,19 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio unreadChats.setIdentifier(DRAWER_UNREAD_CHATS); com.mikepenz.materialdrawer.model.interfaces.NameableKt.setNameText(unreadChats, "Unread Chats"); com.mikepenz.materialdrawer.model.interfaces.IconableKt.setIconRes(unreadChats, R.drawable.chat_unread_24dp); + unreadChats.setBadgeStyle(new com.mikepenz.materialdrawer.holder.BadgeStyle(com.mikepenz.materialdrawer.R.drawable.material_drawer_badge, color, color, textColor)); final var directMessages = new com.mikepenz.materialdrawer.model.PrimaryDrawerItem(); directMessages.setIdentifier(DRAWER_DIRECT_MESSAGES); com.mikepenz.materialdrawer.model.interfaces.NameableKt.setNameText(directMessages, "Direct Messages"); com.mikepenz.materialdrawer.model.interfaces.IconableKt.setIconRes(directMessages, R.drawable.ic_person_24dp); + directMessages.setBadgeStyle(new com.mikepenz.materialdrawer.holder.BadgeStyle(com.mikepenz.materialdrawer.R.drawable.material_drawer_badge, color, color, textColor)); final var channels = new com.mikepenz.materialdrawer.model.PrimaryDrawerItem(); channels.setIdentifier(DRAWER_CHANNELS); com.mikepenz.materialdrawer.model.interfaces.NameableKt.setNameText(channels, "Channels"); com.mikepenz.materialdrawer.model.interfaces.IconableKt.setIconRes(channels, R.drawable.ic_group_24dp); + channels.setBadgeStyle(new com.mikepenz.materialdrawer.holder.BadgeStyle(com.mikepenz.materialdrawer.R.drawable.material_drawer_badge, color, color, textColor)); binding.drawer.getItemAdapter().add( allChats,