Commit e54692a4 authored by Yusuke Iwaki's avatar Yusuke Iwaki

adjust badge number

parent b22d5da8
...@@ -8,6 +8,7 @@ import android.support.v7.graphics.drawable.DrawerArrowDrawable; ...@@ -8,6 +8,7 @@ import android.support.v7.graphics.drawable.DrawerArrowDrawable;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.view.View; import android.view.View;
import java.util.List;
import chat.rocket.android.LaunchUtil; import chat.rocket.android.LaunchUtil;
import chat.rocket.android.R; import chat.rocket.android.R;
import chat.rocket.android.api.MethodCallHelper; import chat.rocket.android.api.MethodCallHelper;
...@@ -233,14 +234,20 @@ public class MainActivity extends AbstractAuthedActivity { ...@@ -233,14 +234,20 @@ public class MainActivity extends AbstractAuthedActivity {
.equalTo(RoomSubscription.ALERT, true) .equalTo(RoomSubscription.ALERT, true)
.equalTo(RoomSubscription.OPEN, true) .equalTo(RoomSubscription.OPEN, true)
.findAll()) .findAll())
.setOnUpdateListener(results -> updateRoomToolbarUnreadCount(results.size())); .setOnUpdateListener(this::updateRoomToolbarUnreadCount);
unreadRoomSubscriptionObserver.sub(); unreadRoomSubscriptionObserver.sub();
} }
private void updateRoomToolbarUnreadCount(int unreadCount) { private void updateRoomToolbarUnreadCount(List<RoomSubscription> unreadRooms) {
RoomToolbar toolbar = (RoomToolbar) findViewById(R.id.activity_main_toolbar); RoomToolbar toolbar = (RoomToolbar) findViewById(R.id.activity_main_toolbar);
if (toolbar != null) { if (toolbar != null) {
toolbar.setUnreadBudge(unreadCount); //ref: Rocket.Chat:client/startup/unread.js
final int numUnreadChannels = unreadRooms.size();
int numMentionsSum = 0;
for (RoomSubscription room : unreadRooms) {
numMentionsSum += room.getUnread();
}
toolbar.setUnreadBudge(numUnreadChannels, numMentionsSum);
} }
} }
......
...@@ -105,7 +105,7 @@ public class RoomToolbar extends Toolbar { ...@@ -105,7 +105,7 @@ public class RoomToolbar extends Toolbar {
titleTextView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null); titleTextView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
} }
public void setUnreadBudge(int numUnread) { public void setUnreadBudge(int numUnreadChannels, int numMentionsSum) {
if (getNavigationIcon() == null) { if (getNavigationIcon() == null) {
return; return;
} }
...@@ -118,16 +118,17 @@ public class RoomToolbar extends Toolbar { ...@@ -118,16 +118,17 @@ public class RoomToolbar extends Toolbar {
addView(budgeImageView, generateDefaultLayoutParams()); addView(budgeImageView, generateDefaultLayoutParams());
} }
if (numUnread > 0) { if (numUnreadChannels > 0) {
budgeImageView.setImageDrawable(getBudgeDrawable(numUnread)); budgeImageView.setImageDrawable(getBudgeDrawable(numMentionsSum));
budgeImageView.setVisibility(View.VISIBLE); budgeImageView.setVisibility(View.VISIBLE);
} else { } else {
budgeImageView.setVisibility(View.GONE); budgeImageView.setVisibility(View.GONE);
} }
} }
private Drawable getBudgeDrawable(int numUnread) { private Drawable getBudgeDrawable(int number) {
String icon = numUnread < 10 ? Integer.toString(numUnread) : ""; String icon = number > 99 ? "99+" :
(number <= 0 ? "" : Integer.toString(number));
return TextDrawable.builder() return TextDrawable.builder()
.beginConfig() .beginConfig()
.useFont(Typeface.SANS_SERIF) .useFont(Typeface.SANS_SERIF)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment