summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java6
-rw-r--r--app/src/main/res/menu/queue.xml18
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java45
-rw-r--r--core/src/main/res/values/strings.xml3
4 files changed, 70 insertions, 2 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
index 302739b6a..185af0e93 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
@@ -174,6 +174,12 @@ public class QueueFragment extends Fragment {
DBTasks.refreshAllFeeds(getActivity(), feeds);
}
return true;
+ case R.id.queue_sort_date_asc:
+ DBWriter.sortQueueItemByDate(getActivity(), true, true);
+ return true;
+ case R.id.queue_sort_date_desc:
+ DBWriter.sortQueueItemByDate(getActivity(), false, true);
+ return true;
default:
return false;
}
diff --git a/app/src/main/res/menu/queue.xml b/app/src/main/res/menu/queue.xml
index 0f06ea952..fa4d21b21 100644
--- a/app/src/main/res/menu/queue.xml
+++ b/app/src/main/res/menu/queue.xml
@@ -9,5 +9,19 @@
android:menuCategory="container"
custom:showAsAction="ifRoom"
android:icon="?attr/navigation_refresh"/>
-
-</menu> \ No newline at end of file
+
+ <item
+ android:id="@+id/queue_sort"
+ android:title="@string/sort">
+
+ <menu>
+ <item
+ android:id="@+id/queue_sort_date_asc"
+ android:title="@string/date_asc"/>
+ <item
+ android:id="@+id/queue_sort_date_desc"
+ android:title="@string/date_desc"/>
+ </menu>
+ </item>
+
+</menu>
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;
@@ -588,6 +590,49 @@ public class DBWriter {
}
/**
+ * Sort the FeedItems in the queue by date.
+ * <p/>
+ * 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<FeedItem> queue = DBReader.getQueue(context, adapter);
+
+ if (queue != null) {
+ if (asc) {
+ Collections.sort(queue, new Comparator<FeedItem>() {
+ public int compare(FeedItem f1, FeedItem f2) {
+ return f1.getPubDate().compareTo(f2.getPubDate());
+ }
+ });
+ } else {
+ Collections.sort(queue, new Comparator<FeedItem>() {
+ 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.
*
* @param context A context that is used for opening a database connection.
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index 130007016..d76cc533b 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -159,6 +159,9 @@
<string name="removed_from_queue">Item removed</string>
<string name="move_to_top_label">Move to top</string>
<string name="move_to_bottom_label">Move to bottom</string>
+ <string name="sort">Sort</string>
+ <string name="date_asc">ascending date</string>
+ <string name="date_desc">descending date</string>
<!-- Flattr -->
<string name="flattr_auth_label">Flattr sign-in</string>