From 520ed8327c5d04134619f47eebf3c81615665f13 Mon Sep 17 00:00:00 2001 From: drabux Date: Thu, 22 Jan 2015 23:37:07 -0500 Subject: Options to sort queue by date --- .../danoeh/antennapod/core/storage/DBWriter.java | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'core/src/main/java/de') diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java index d71d19433..41dde8656 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java @@ -24,6 +24,8 @@ import org.shredzone.flattr4j.model.Flattr; import java.io.File; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.LinkedList; import java.util.List; @@ -587,6 +589,49 @@ public class DBWriter { adapter.close(); } + /** + * Sort the FeedItems in the queue by date. + *

+ * This function must be run using the ExecutorService (dbExec). + * + * @param context A context that is used for opening a database connection. + * @param asc true sort by ascending order + * false sort by descending order + * @param broadcastUpdate true if this operation should trigger a QueueUpdateBroadcast. This option should be set to + * false if the caller wants to avoid unexpected updates of the GUI. + */ + public static void sortQueueItemByDate(final Context context, final boolean asc, final boolean broadcastUpdate) { + final PodDBAdapter adapter = new PodDBAdapter(context); + adapter.open(); + final List queue = DBReader.getQueue(context, adapter); + + if (queue != null) { + if (asc) { + Collections.sort(queue, new Comparator() { + public int compare(FeedItem f1, FeedItem f2) { + return f1.getPubDate().compareTo(f2.getPubDate()); + } + }); + } else { + Collections.sort(queue, new Comparator() { + public int compare(FeedItem f1, FeedItem f2) { + return f2.getPubDate().compareTo(f1.getPubDate()); + } + }); + } + + adapter.setQueue(queue); + if (broadcastUpdate) { + EventDistributor.getInstance() + .sendQueueUpdateBroadcast(); + } + + } else { + Log.e(TAG, "sortQueueItemByDate: Could not load queue"); + } + adapter.close(); + } + /** * Sets the 'read'-attribute of a FeedItem to the specified value. * -- cgit v1.2.3