Select Git revision
SimpleBacklogManager.java
-
Janne Mareike Koschinski authoredJanne Mareike Koschinski authored
SimpleBacklogManager.java 2.60 KiB
package de.kuschku.libquassel.backlogmanagers;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.util.SparseArray;
import com.google.common.collect.Lists;
import java.util.List;
import de.kuschku.libquassel.BusProvider;
import de.kuschku.libquassel.Client;
import de.kuschku.libquassel.events.BacklogReceivedEvent;
import de.kuschku.libquassel.functions.types.InitDataFunction;
import de.kuschku.libquassel.functions.types.SyncFunction;
import de.kuschku.libquassel.message.Message;
import de.kuschku.libquassel.primitives.types.QVariant;
import de.kuschku.util.ObservableList;
public class SimpleBacklogManager extends BacklogManager {
SparseArray<ObservableList<Message>> backlogs = new SparseArray<>();
private BusProvider busProvider;
public SimpleBacklogManager(BusProvider busProvider) {
this.busProvider = busProvider;
}
public void requestBacklog(int bufferId, int from, int to, int count, int extra) {
busProvider.dispatch(new SyncFunction("BacklogManager", "", "requestBacklog", Lists.newArrayList(
new QVariant<>("BufferId", bufferId),
new QVariant<>("MsgId", from),
new QVariant<>("MsgId", to),
new QVariant<>(count),
new QVariant<>(extra)
)));
}
public void receiveBacklog(int bufferId, int from, int to, int count, int extra, List<Message> messages) {
get(bufferId).list.addAll(messages);
busProvider.sendEvent(new BacklogReceivedEvent(bufferId));
}
@Override
public void displayMessage(int bufferId, Message message) {
get(bufferId).list.add(message);
}
public void bind(int bufferId, @Nullable RecyclerView.Adapter adapter) {
if (adapter == null)
get(bufferId).setCallback(null);
else
get(bufferId).setCallback(new ObservableList.RecyclerViewAdapterCallback(adapter));
}
@Override
public void requestMoreBacklog(int bufferId, int count) {
ObservableList<Message> backlog = backlogs.get(bufferId);
int messageId =
(backlog == null) ? -1 :
(backlog.first() == null) ? -1 :
backlog.first().messageId;
requestBacklog(bufferId, -1, -1, count, 0);
}
public ObservableList<Message> get(int bufferId) {
if (backlogs.get(bufferId) == null)
backlogs.put(bufferId, new ObservableList<>(Message.class));
return backlogs.get(bufferId);
}
@Override
public void init(InitDataFunction function, BusProvider provider, Client client) {
}
}