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;
import android.support.v7.widget.Toolbar;
import android.view.View;
import java.util.List;
import chat.rocket.android.LaunchUtil;
import chat.rocket.android.R;
import chat.rocket.android.api.MethodCallHelper;
......@@ -233,14 +234,20 @@ public class MainActivity extends AbstractAuthedActivity {
.equalTo(RoomSubscription.ALERT, true)
.equalTo(RoomSubscription.OPEN, true)
.findAll())
.setOnUpdateListener(results -> updateRoomToolbarUnreadCount(results.size()));
.setOnUpdateListener(this::updateRoomToolbarUnreadCount);
unreadRoomSubscriptionObserver.sub();
}
private void updateRoomToolbarUnreadCount(int unreadCount) {
private void updateRoomToolbarUnreadCount(List<RoomSubscription> unreadRooms) {
RoomToolbar toolbar = (RoomToolbar) findViewById(R.id.activity_main_toolbar);
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 {
titleTextView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
}
public void setUnreadBudge(int numUnread) {
public void setUnreadBudge(int numUnreadChannels, int numMentionsSum) {
if (getNavigationIcon() == null) {
return;
}
......@@ -118,16 +118,17 @@ public class RoomToolbar extends Toolbar {
addView(budgeImageView, generateDefaultLayoutParams());
}
if (numUnread > 0) {
budgeImageView.setImageDrawable(getBudgeDrawable(numUnread));
if (numUnreadChannels > 0) {
budgeImageView.setImageDrawable(getBudgeDrawable(numMentionsSum));
budgeImageView.setVisibility(View.VISIBLE);
} else {
budgeImageView.setVisibility(View.GONE);
}
}
private Drawable getBudgeDrawable(int numUnread) {
String icon = numUnread < 10 ? Integer.toString(numUnread) : "";
private Drawable getBudgeDrawable(int number) {
String icon = number > 99 ? "99+" :
(number <= 0 ? "" : Integer.toString(number));
return TextDrawable.builder()
.beginConfig()
.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