Skip to content
Snippets Groups Projects
Select Git revision
  • 75d924d4fa30695da19469ccc1a3c584e3fc707e
  • master default protected
  • greenkeeper/webpack-4.10.1
  • greenkeeper/webpack-4.10.0
  • greenkeeper/webpack-4.9.2
  • greenkeeper/promise-polyfill-8.0.0
  • greenkeeper/webpack-4.9.1
  • greenkeeper/webpack-4.9.0
  • greenkeeper/webpack-manifest-plugin-2.0.3
  • greenkeeper/update-to-node-10
  • gh-pages
  • greenkeeper/webpack-4.8.3
  • greenkeeper/webpack-4.8.2
  • greenkeeper/webpack-4.7.0
  • greenkeeper/webpack-manifest-plugin-2.0.2
  • greenkeeper/webpack-manifest-plugin-2.0.1
  • greenkeeper/style-loader-0.21.0
  • greenkeeper/webpack-4.6.0
  • greenkeeper/sass-loader-7.0.1
  • greenkeeper/sass-loader-7.0.0
  • greenkeeper/webpack-manifest-plugin-2.0.0
  • 2.7.3
  • 2.7.2
  • 2.7.1
  • 2.7.0
  • 2.6.6
  • 2.6.5
  • 2.6.4
  • 2.6.3
  • 2.6.2
  • 2.6.1
  • 2.6.0
  • 2.5.5
  • 2.5.4
  • 2.5.3
  • 2.5.2
  • 2.5.1
  • 2.5.0
  • 2.4.0
  • 2.3.0
  • 2.2.6
41 results

index.md

Blame
  • SimpleBacklogManager.java 3.40 KiB
    package de.kuschku.libquassel.backlogmanagers;
    
    import android.support.annotation.IntRange;
    import android.support.annotation.NonNull;
    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.observables.AutoScroller;
    import de.kuschku.util.observables.callbacks.wrappers.AdapterUICallbackWrapper;
    import de.kuschku.util.observables.lists.ObservableComparableSortedList;
    import de.kuschku.util.observables.lists.ObservableSortedList;
    
    import static de.kuschku.util.AndroidAssert.assertNotNull;
    
    public class SimpleBacklogManager extends BacklogManager {
        @NonNull
        private final SparseArray<ObservableSortedList<Message>> backlogs = new SparseArray<>();
        @NonNull
        private final BusProvider busProvider;
    
        public SimpleBacklogManager(@NonNull 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(@IntRange(from=0) int bufferId, int from, int to, int count, int extra, @NonNull List<Message> messages) {
            get(bufferId).list.addAll(messages);
    
            busProvider.sendEvent(new BacklogReceivedEvent(bufferId));
        }
    
        @Override
        public void displayMessage(@IntRange(from=0) int bufferId, @NonNull Message message) {
            ObservableSortedList<Message> messages = get(bufferId);
            assertNotNull(messages);
    
            messages.list.add(message);
        }
    
        public void bind(@IntRange(from=0) int bufferId, @NonNull RecyclerView.Adapter adapter, @Nullable AutoScroller scroller) {
            ObservableSortedList<Message> messages = get(bufferId);
            assertNotNull(messages);
    
            messages.addCallback(new AdapterUICallbackWrapper(adapter, scroller));
        }
    
        @Override
        public void requestMoreBacklog(@IntRange(from=0) int bufferId, int count) {
            ObservableSortedList<Message> backlog = backlogs.get(bufferId);
            int messageId =
                    (backlog == null) ? -1 :
                    (backlog.last() == null) ? -1 :
                    backlog.last().messageId;
    
            requestBacklog(bufferId, -1, messageId, count, 0);
        }
    
        public ObservableSortedList<Message> get(@IntRange(from=0) int bufferId) {
            if (backlogs.get(bufferId) == null)
                backlogs.put(bufferId, new ObservableComparableSortedList<>(Message.class, true));
    
            ObservableSortedList<Message> messages = backlogs.get(bufferId);
            assertNotNull(messages);
    
            return messages;
        }
    
        @Override
        public void init(@NonNull InitDataFunction function, @NonNull BusProvider provider, @NonNull Client client) {
    
        }
    }