Options to sort queue by date

This commit is contained in:
drabux 2015-01-22 23:37:07 -05:00
parent efcbbfe2b9
commit 520ed8327c
4 changed files with 70 additions and 2 deletions

View File

@ -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;
}

View File

@ -9,5 +9,19 @@
android:menuCategory="container"
custom:showAsAction="ifRoom"
android:icon="?attr/navigation_refresh"/>
</menu>
<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>

View File

@ -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.
* <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.
*

View File

@ -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>