diff --git a/app/src/main/java/de/kuschku/libquassel/client/BufferManager.java b/app/src/main/java/de/kuschku/libquassel/client/BufferManager.java index 5a76d6f3f4b398efe3964f05d2425cb1a8bb417f..2eb261a1f9065d81607f279df9909c8b4cf61477 100644 --- a/app/src/main/java/de/kuschku/libquassel/client/BufferManager.java +++ b/app/src/main/java/de/kuschku/libquassel/client/BufferManager.java @@ -25,8 +25,10 @@ import android.support.annotation.IntRange; import android.support.annotation.NonNull; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import de.kuschku.libquassel.localtypes.buffers.Buffer; import de.kuschku.libquassel.localtypes.buffers.Buffers; @@ -48,6 +50,7 @@ public class BufferManager { private final Map<String, Integer> buffersByChannel = new HashMap<>(); private final Map<Integer, ObservableSet<Integer>> buffersByNetwork = new HashMap<>(); private final ObservableSet<Integer> bufferIds = new ObservableSet<>(); + private Set<Integer> laterRequests = new HashSet<>(); public BufferManager(Client client) { this.client = client; @@ -85,6 +88,7 @@ public class BufferManager { public void init(List<BufferInfo> bufferInfos) { for (BufferInfo info : bufferInfos) { createBuffer(info); + laterRequests.add(info.id()); } } @@ -150,4 +154,11 @@ public class BufferManager { public ObservableSet<Integer> bufferIds() { return bufferIds; } + + public void doBacklogInit(int amount) { + for (int id : laterRequests) { + client.backlogManager().requestBacklogInitial(id, amount); + } + laterRequests.clear(); + } } diff --git a/app/src/main/java/de/kuschku/libquassel/client/Client.java b/app/src/main/java/de/kuschku/libquassel/client/Client.java index cc98ff191eca95f5d3c7a5bb8a2fda3cf6917e5f..2ee5319366cd8964e4e937f046292095e842090c 100644 --- a/app/src/main/java/de/kuschku/libquassel/client/Client.java +++ b/app/src/main/java/de/kuschku/libquassel/client/Client.java @@ -81,8 +81,7 @@ public class Client extends AClient { @NonNull private final NotificationManager notificationManager; private final List<String> initRequests = new LinkedList<>(); - private final List<Integer> backlogRequests = new LinkedList<>(); - private final QBacklogManager backlogManager; + private final QBacklogManager<? extends QBacklogManager> backlogManager; private final Map<String, List<SyncFunction>> bufferedSyncs = new HashMap<>(); private final Map<Integer, Pair<QBufferViewConfig, Integer>> bufferedBuffers = new HashMap<>(); private QBufferViewManager bufferViewManager; @@ -121,7 +120,7 @@ public class Client extends AClient { return aliasManager; } - public QBacklogManager backlogManager() { + public QBacklogManager<? extends QBacklogManager> backlogManager() { return backlogManager; } @@ -193,10 +192,9 @@ public class Client extends AClient { this.connectionStatus = connectionStatus; if (connectionStatus == ConnectionChangeEvent.Status.LOADING_BACKLOG) { - for (QNetwork network : networkManager().networks()) { - Log.d("libquassel", String.valueOf(network.channels())); - } - setConnectionStatus(ConnectionChangeEvent.Status.CONNECTED); + bufferManager().doBacklogInit(20); + } else if (connectionStatus == ConnectionChangeEvent.Status.CONNECTED) { + // FIXME: Init buffer activity state and highlightss } provider.sendEvent(new ConnectionChangeEvent(connectionStatus)); } @@ -372,17 +370,6 @@ public class Client extends AClient { return className + ":" + objectName; } - public void initBacklog(int id) { - backlogRequests.remove((Integer) id); - if (backlogRequests.isEmpty() && connectionStatus() == ConnectionChangeEvent.Status.LOADING_BACKLOG) - setConnectionStatus(ConnectionChangeEvent.Status.CONNECTED); - } - - public void requestInitBacklog(int id, int amount) { - backlogRequests.add(id); - backlogManager.requestBacklogInitial(id, amount); - } - public void setLatency(long latency) { assertNotNull(provider); diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/BacklogStorage.java b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/BacklogStorage.java index 0907bd1f8ec07ba8e4200f28496161c75adc6aac..34b15a618a30d1e1759e005a8a553d2e5da80b08 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/BacklogStorage.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/BacklogStorage.java @@ -39,6 +39,8 @@ public interface BacklogStorage { @NonNull BacklogFilter getFilter(@IntRange(from = 0) int bufferid); + int getLatest(@IntRange(from = 0) int bufferid); + void insertMessages(@IntRange(from = 0) int bufferId, Message... messages); void insertMessages(Message... messages); diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/MemoryBacklogStorage.java b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/MemoryBacklogStorage.java index 3d96429393f06ebef3a7e51b5373026f5eaaf9e2..491c09db51aee0a4c753fea8b05a6fd3ae5ce5e7 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/MemoryBacklogStorage.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/MemoryBacklogStorage.java @@ -39,6 +39,8 @@ public class MemoryBacklogStorage implements BacklogStorage { private final SparseArray<ObservableComparableSortedList<Message>> filteredBacklogs = new SparseArray<>(); @NonNull private final SparseArray<BacklogFilter> filters = new SparseArray<>(); + @NonNull + private final SparseArray<Integer> latestMessage = new SparseArray<>(); private Client client; @@ -63,12 +65,24 @@ public class MemoryBacklogStorage implements BacklogStorage { return filters.get(bufferid); } + @Override + public int getLatest(@IntRange(from = 0) int bufferid) { + return latestMessage.get(bufferid, -1); + } + @Override public void insertMessages(@IntRange(from = 0) int bufferId, @NonNull Message... messages) { ensureExisting(bufferId); for (Message message : messages) { client.unbufferBuffer(message.bufferInfo); backlogs.get(bufferId).add(message); + updateLatest(message); + } + } + + public void updateLatest(Message message) { + if (message.messageId > getLatest(message.bufferInfo.id())) { + latestMessage.put(message.bufferInfo.id(), message.messageId); } } @@ -78,6 +92,7 @@ public class MemoryBacklogStorage implements BacklogStorage { ensureExisting(message.bufferInfo.id()); client.unbufferBuffer(message.bufferInfo); backlogs.get(message.bufferInfo.id()).add(message); + updateLatest(message); } } diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferSyncer.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferSyncer.java index ea065e0e8071ec99ed16cdafb5b6acbf4f4cde46..c5b47b11f0033b3034eecbf94c5c8302295a0d98 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferSyncer.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferSyncer.java @@ -28,19 +28,19 @@ public abstract class ABufferSyncer<T extends ABufferSyncer<T>> extends Syncable @Override public void requestSetLastSeenMsg(int buffer, int msgId) { _requestSetLastSeenMsg(buffer, msgId); - syncVar("requestSetLastSeenMsg", buffer, msgId); + sync("requestSetLastSeenMsg", new String[]{"BufferId", "MsgId"}, new Object[]{buffer, msgId}); } @Override public void requestSetMarkerLine(int buffer, int msgId) { _requestSetMarkerLine(buffer, msgId); - syncVar("requestSetMarkerLine", buffer, msgId); + sync("requestSetMarkerLine", new String[]{"BufferId", "MsgId"}, new Object[]{buffer, msgId}); } @Override public void requestRemoveBuffer(int buffer) { _requestRemoveBuffer(buffer); - syncVar("requestRemoveBuffer", buffer); + sync("requestRemoveBuffer", new String[]{"BufferId"}, new Object[]{buffer}); } @Override @@ -52,7 +52,7 @@ public abstract class ABufferSyncer<T extends ABufferSyncer<T>> extends Syncable @Override public void requestRenameBuffer(int buffer, String newName) { _requestRenameBuffer(buffer, newName); - syncVar("requestRenameBuffer", buffer, newName); + sync("requestRenameBuffer", new String[]{"BufferId", "QString"}, new Object[]{buffer, newName}); } @Override @@ -64,7 +64,7 @@ public abstract class ABufferSyncer<T extends ABufferSyncer<T>> extends Syncable @Override public void requestMergeBuffersPermanently(int buffer1, int buffer2) { _requestMergeBuffersPermanently(buffer1, buffer2); - syncVar("requestMergeBuffersPermanently", buffer1, buffer2); + sync("requestMergeBuffersPermanently", new String[]{"BufferId", "BufferId"}, new Object[]{buffer1, buffer2}); } @Override @@ -82,24 +82,24 @@ public abstract class ABufferSyncer<T extends ABufferSyncer<T>> extends Syncable @Override public void requestMarkBufferAsRead(int buffer) { _requestMarkBufferAsRead(buffer); - syncVar("requestMarkBufferAsRead", buffer); + sync("requestMarkBufferAsRead", new String[]{"BufferId"}, new Object[]{buffer}); } @Override public void markBufferAsRead(int buffer) { _markBufferAsRead(buffer); - syncVar("markBufferAsRead", buffer); + sync("markBufferAsRead", new String[]{"BufferId"}, new Object[]{buffer}); } @Override public void setMarkerLine(int buffer, int msgId) { _setMarkerLine(buffer, msgId); - syncVar("setMarkerLine", buffer, msgId); + sync("setMarkerLine", new String[]{"BufferId", "MsgId"}, new Object[]{buffer, msgId}); } @Override public void setLastSeenMsg(int buffer, int msgId) { _setLastSeenMsg(buffer, msgId); - syncVar("setLastSeenMsg", buffer, msgId); + sync("setLastSeenMsg", new String[]{"BufferId", "MsgId"}, new Object[]{buffer, msgId}); } } diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java index 8713723e05ec1c3a18d1aad1ff5599ff4f6efb3c..f17d383435d714979516990ea86fab3a23cb1bba 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java @@ -23,7 +23,7 @@ package de.kuschku.libquassel.syncables.types.impl; import android.support.annotation.IntRange; import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import android.util.Log; import java.util.HashSet; import java.util.List; @@ -33,6 +33,7 @@ import java.util.Set; import de.kuschku.libquassel.BusProvider; import de.kuschku.libquassel.client.Client; import de.kuschku.libquassel.events.BacklogReceivedEvent; +import de.kuschku.libquassel.events.ConnectionChangeEvent; import de.kuschku.libquassel.localtypes.BacklogFilter; import de.kuschku.libquassel.localtypes.backlogstorage.BacklogStorage; import de.kuschku.libquassel.message.Message; @@ -46,6 +47,7 @@ public class BacklogManager extends ABacklogManager<BacklogManager> { private final Client client; private final BacklogStorage storage; private final Set<Integer> initialized = new HashSet<>(); + private final Set<Integer> waiting = new HashSet<>(); @IntRange(from = -1) private int openBuffer; @@ -66,10 +68,10 @@ public class BacklogManager extends ABacklogManager<BacklogManager> { @Override public void requestBacklogInitial(int id, int amount) { - if (initialized.contains(id)) + if (waiting.contains(id) || initialized.contains(id)) return; - initialized.add(id); + waiting.add(id); requestBacklog(id, -1, -1, amount, 0); } @@ -83,10 +85,25 @@ public class BacklogManager extends ABacklogManager<BacklogManager> { assertNotNull(provider); storage.insertMessages(id, messages.toArray(new Message[messages.size()])); - client.initBacklog(id); + if (messages.size() > 0 && !client.bufferManager().exists(messages.get(0).bufferInfo)) + client.bufferManager().createBuffer(messages.get(0).bufferInfo); provider.sendEvent(new BacklogReceivedEvent(id)); if (id == openBuffer && openBuffer != -1) - client.bufferSyncer().markBufferAsRead(openBuffer); + client.bufferSyncer().requestMarkBufferAsRead(openBuffer); + removeWaiting(id); + } + + private void removeWaiting(int id) { + waiting.remove(id); + initialized.add(id); + checkWaiting(); + } + + private void checkWaiting() { + Log.d("libquassel", "Backlog Requests: " + waiting.size() + "; " + waiting); + + if (waiting.isEmpty()) + client.setConnectionStatus(ConnectionChangeEvent.Status.CONNECTED); } @Override @@ -106,23 +123,26 @@ public class BacklogManager extends ABacklogManager<BacklogManager> { for (int id : buffers) { provider.sendEvent(new BacklogReceivedEvent(id)); if (id == openBuffer && openBuffer != -1) - client.bufferSyncer().markBufferAsRead(openBuffer); + client.bufferSyncer().requestMarkBufferAsRead(openBuffer); + waiting.remove(id); + initialized.add(id); } + checkWaiting(); } - @Nullable + @NonNull @Override public BacklogFilter filter(int id) { return storage.getFilter(id); } - @Nullable + @NonNull @Override public ObservableComparableSortedList<Message> unfiltered(int id) { return storage.getUnfiltered(id); } - @Nullable + @NonNull @Override public ObservableComparableSortedList<Message> filtered(int id) { return storage.getFiltered(id); @@ -132,14 +152,14 @@ public class BacklogManager extends ABacklogManager<BacklogManager> { public void open(int bufferId) { openBuffer = bufferId; if (bufferId != -1) - client.bufferSyncer().markBufferAsRead(bufferId); + client.bufferSyncer().requestMarkBufferAsRead(bufferId); } @Override public void receiveBacklog(Message msg) { storage.insertMessages(msg); if (msg.bufferInfo.id() == openBuffer && openBuffer != -1) - client.bufferSyncer().markBufferAsRead(openBuffer); + client.bufferSyncer().requestMarkBufferAsRead(openBuffer); } @Override diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferSyncer.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferSyncer.java index 5330304fb3a0c1ea4ca05d9437e66202686393be..967cb5bb0e4a91f330c01d231211f097a70d86b9 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferSyncer.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferSyncer.java @@ -22,9 +22,12 @@ package de.kuschku.libquassel.syncables.types.impl; import android.support.annotation.NonNull; +import android.util.Log; import android.util.SparseIntArray; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import de.kuschku.libquassel.BusProvider; import de.kuschku.libquassel.client.Client; @@ -32,19 +35,24 @@ import de.kuschku.libquassel.message.Message; import de.kuschku.libquassel.primitives.types.QVariant; import de.kuschku.libquassel.syncables.serializers.BufferSyncerSerializer; import de.kuschku.libquassel.syncables.types.abstracts.ABufferSyncer; +import de.kuschku.util.observables.lists.ObservableComparableSortedList; import de.kuschku.util.observables.lists.ObservableSortedList; public class BufferSyncer extends ABufferSyncer<BufferSyncer> { private SparseIntArray lastSeenMsgs = new SparseIntArray(); private SparseIntArray markerLines = new SparseIntArray(); + private SparseIntArray activities = new SparseIntArray(); + private Set<Integer> bufferIds = new HashSet<>(); public BufferSyncer(@NonNull Map<Integer, Integer> lastSeenMsgs, @NonNull Map<Integer, Integer> markerLines) { for (int bufferId : lastSeenMsgs.keySet()) { this.lastSeenMsgs.put(bufferId, lastSeenMsgs.get(bufferId)); + this.bufferIds.add(bufferId); } for (int bufferId : markerLines.keySet()) { this.markerLines.put(bufferId, markerLines.get(bufferId)); + this.bufferIds.add(bufferId); } } @@ -67,6 +75,11 @@ public class BufferSyncer extends ABufferSyncer<BufferSyncer> { if (oldLastSeenMsg < msgId) { lastSeenMsgs.put(buffer, msgId); } + setActivity(buffer, 0); + ObservableComparableSortedList<Message> filtered = client.backlogManager().filtered(buffer); + for (Message m : filtered) { + addActivity(m); + } _update(); } @@ -99,8 +112,9 @@ public class BufferSyncer extends ABufferSyncer<BufferSyncer> { @Override public void _removeBuffer(int buffer) { - markerLines.put(buffer, -1); - lastSeenMsgs.put(buffer, -1); + markerLines.removeAt(markerLines.indexOfKey(buffer)); + lastSeenMsgs.removeAt(lastSeenMsgs.indexOfKey(buffer)); + bufferIds.remove(buffer); client.bufferManager().removeBuffer(buffer); _update(); } @@ -133,7 +147,11 @@ public class BufferSyncer extends ABufferSyncer<BufferSyncer> { @Override public void _requestMarkBufferAsRead(int buffer) { - // Do nothing, we’re on the client – the server will receive the sync just as expected + int lastMessage = client.backlogStorage().getLatest(buffer); + if (lastMessage != -1) { + requestSetLastSeenMsg(buffer, lastMessage); + requestSetMarkerLine(buffer, lastMessage); + } } @Override @@ -166,4 +184,28 @@ public class BufferSyncer extends ABufferSyncer<BufferSyncer> { markerLines = from.markerLines; _update(); } + + public int activity(int bufferid) { + return activities.get(bufferid, 0); + } + + public void setActivity(int bufferid, int activity) { + activities.put(bufferid, activity); + } + + public void addActivity(int bufferid, int activity) { + activities.put(bufferid, activities.get(bufferid) | activity); + } + + public void addActivity(int bufferid, Message.Type type) { + addActivity(bufferid, type.value); + } + + public void addActivity(Message message) { + int lastSeenMsg = lastSeenMsg(message.bufferInfo.id()); + if (message.messageId > lastSeenMsg) { + addActivity(message.bufferInfo.id(), message.type); + Log.d("libquassel", "Unread: " + lastSeenMsg + "/" + message); + } + } } diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java index 8ff71404a40df0d322ab7908121186fcc56b36fa..51d95bda9ce4f23745248f563474c07534ab42f3 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java @@ -300,7 +300,7 @@ public class BufferViewConfig extends ABufferViewConfig<BufferViewConfig> { @Override public void _removeBufferPermanently(int bufferId) { if (buffers.contains(bufferId)) - buffers.remove(buffers.indexOf(bufferId)); + buffers.remove((Integer) bufferId); if (temporarilyRemovedBuffers.contains(bufferId)) temporarilyRemovedBuffers.remove(bufferId); diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBacklogManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBacklogManager.java index 9c1428b0d7b373ecaabf12b8a9f1d3aa81a2932e..d014ece3138833d7b881dd06e06109239611973d 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBacklogManager.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBacklogManager.java @@ -21,7 +21,7 @@ package de.kuschku.libquassel.syncables.types.interfaces; -import android.support.annotation.Nullable; +import android.support.annotation.NonNull; import java.util.List; @@ -55,13 +55,13 @@ public interface QBacklogManager<T extends QSyncableObject<T>> extends QSyncable void _receiveBacklogAll(int first, int last, int limit, int additional, List<Message> messages); - @Nullable + @NonNull BacklogFilter filter(int id); - @Nullable + @NonNull ObservableComparableSortedList<Message> unfiltered(int id); - @Nullable + @NonNull ObservableComparableSortedList<Message> filtered(int id); void open(int bufferId); diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferSyncer.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferSyncer.java index 31e63e09cb53c415fd3027d832f144aff5c81381..7ed12656da2be09d947e7b88582ecbfe9b4223f2 100644 --- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferSyncer.java +++ b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferSyncer.java @@ -21,6 +21,7 @@ package de.kuschku.libquassel.syncables.types.interfaces; +import de.kuschku.libquassel.message.Message; import de.kuschku.libquassel.syncables.Synced; public interface QBufferSyncer extends QObservable { @@ -93,4 +94,14 @@ public interface QBufferSyncer extends QObservable { void _markBufferAsRead(int buffer); + + int activity(int bufferid); + + void setActivity(int bufferid, int activity); + + void addActivity(int bufferid, int activity); + + void addActivity(int bufferid, Message.Type type); + + void addActivity(Message message); } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java index 90a848ee928cd051d119405e8aebf6fd03806a75..07901428c7400286c8d2bd6254a13dc2f778509c 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.java @@ -572,14 +572,16 @@ public class ChatActivity extends AppCompatActivity { private void selectBuffer(@IntRange(from = -1) int bufferId) { context.client().backlogManager().open(bufferId); if (bufferId == -1) { + status.bufferId = bufferId; swipeView.setEnabled(false); + context.client().backlogManager().open(bufferId); messageAdapter.setMessageList(MessageAdapter.emptyList()); toolbar.setTitle(getResources().getString(R.string.appName)); } else { - swipeView.setEnabled(true); - status.bufferId = bufferId; + swipeView.setEnabled(true); + context.client().backlogManager().open(bufferId); // Make sure we are actually connected ObservableSortedList<Message> list = context.client().backlogManager().filtered(bufferId); diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferItem.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferItem.java index e616feef9b456a2cf9f1820a85afda41db460a1e..d2882f7a3796f6fbca813ac0d3bc4e73d8f04bb3 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferItem.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferItem.java @@ -36,6 +36,7 @@ import de.kuschku.libquassel.localtypes.buffers.Buffer; import de.kuschku.libquassel.localtypes.buffers.ChannelBuffer; import de.kuschku.libquassel.localtypes.buffers.QueryBuffer; import de.kuschku.libquassel.localtypes.buffers.StatusBuffer; +import de.kuschku.libquassel.message.Message; import de.kuschku.libquassel.primitives.types.BufferInfo; import de.kuschku.quasseldroid_ng.R; import de.kuschku.quasseldroid_ng.ui.theme.AppContext; @@ -119,6 +120,17 @@ public class BufferItem extends SecondaryDrawerItem { return ColorHolder.fromColor(context.themeUtil().res.colorForegroundSecondary); } + @Override + public ColorHolder getTextColor() { + int type = context.client().bufferSyncer().activity(buffer.getInfo().id()); + if ((type & Message.Type.Plain.value | type & Message.Type.Notice.value) != 0) + return ColorHolder.fromColor(context.themeUtil().res.colorTintMessage); + else if ((type & ~Message.Type.DayChange.value) != 0) + return ColorHolder.fromColor(context.themeUtil().res.colorTintActivity); + else + return ColorHolder.fromColor(context.themeUtil().res.colorForeground); + } + @NonNull public Buffer getBuffer() { return buffer; diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigItem.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigItem.java index c52e2a71456cf3a055eea12a8435a5c2493b8f56..9f121e05472a3640ad2f0453c730cf74727d0767 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigItem.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigItem.java @@ -21,8 +21,6 @@ package de.kuschku.quasseldroid_ng.ui.chat.drawer; -import android.util.Log; - import com.mikepenz.materialdrawer.Drawer; import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem; @@ -87,7 +85,6 @@ public class BufferViewConfigItem implements DrawerItemCallback { for (NetworkItem item : networks) { if (ids.contains(item.getNetwork().networkId())) { int position = networks.indexOf(item); - Log.d("libquassel", item + ":" + position); drawer.addItemAtPosition(item, position); } }