[shotwell] Provide option to sort photos by filename, in addition to title, exporsure date and rating (#717878)
- From: Wolfgang Steitz <wsteitz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [shotwell] Provide option to sort photos by filename, in addition to title, exporsure date and rating (#717878)
- Date: Wed, 11 Mar 2015 20:26:43 +0000 (UTC)
commit 77a810da34d6b167a2691060cfd12be2c830bcd0
Author: Wolfgang Steitz <wsteitz gmail com>
Date: Wed Mar 11 21:24:44 2015 +0100
Provide option to sort photos by filename, in addition to title, exporsure date and rating (#717878)
src/MediaPage.vala | 19 ++++++++++++++++++-
src/Thumbnail.vala | 4 ++++
ui/media.ui | 1 +
3 files changed, 23 insertions(+), 1 deletions(-)
---
diff --git a/src/MediaPage.vala b/src/MediaPage.vala
index 9fbd4bd..6496503 100644
--- a/src/MediaPage.vala
+++ b/src/MediaPage.vala
@@ -122,7 +122,8 @@ public abstract class MediaPage : CheckerboardPage {
TITLE = 1,
EXPOSURE_DATE = 2,
RATING = 3,
- MAX = 3
+ FILENAME = 4,
+ MAX = 4
}
protected class ZoomSliderAssembly : Gtk.ToolItem {
@@ -498,6 +499,12 @@ public abstract class MediaPage : CheckerboardPage {
by_rating.tooltip = _("Sort photos by rating");
sort_crit_actions += by_rating;
+ Gtk.RadioActionEntry by_filename = { "SortByFilename", null, TRANSLATABLE, null,
+ TRANSLATABLE, SortBy.FILENAME };
+ by_filename.label = _("By _Filename");
+ by_filename.tooltip = _("Sort photos by filename");
+ sort_crit_actions += by_filename;
+
action_group.add_radio_actions(sort_crit_actions, sort_by, on_sort_changed);
// Sort order.
@@ -1220,6 +1227,13 @@ public abstract class MediaPage : CheckerboardPage {
predicate = Thumbnail.rating_comparator_predicate;
break;
+ case SortBy.FILENAME:
+ if (ascending)
+ comparator = Thumbnail.filename_ascending_comparator;
+ else comparator = Thumbnail.filename_descending_comparator;
+ predicate = Thumbnail.filename_comparator_predicate;
+ break;
+
default:
debug("Unknown sort criteria: %s", get_menu_sort_by().to_string());
comparator = Thumbnail.title_descending_comparator;
@@ -1240,6 +1254,9 @@ public abstract class MediaPage : CheckerboardPage {
case SortBy.RATING:
return "/MenuBar/ViewMenu/SortPhotos/SortByRating";
+
+ case SortBy.FILENAME:
+ return "/MenuBar/ViewMenu/SortPhotos/SortByFilename";
default:
debug("Unknown sort criteria: %d", sort_by);
diff --git a/src/Thumbnail.vala b/src/Thumbnail.vala
index ce3e789..4ce9e81 100644
--- a/src/Thumbnail.vala
+++ b/src/Thumbnail.vala
@@ -193,6 +193,10 @@ public class Thumbnail : MediaSourceItem {
return alteration.has_detail("metadata", "exposure-time");
}
+ public static bool filename_comparator_predicate(DataObject object, Alteration alteration) {
+ return alteration.has_detail("metadata", "filename");
+ }
+
public static int64 filename_ascending_comparator(void *a, void *b) {
string path_a = ((Thumbnail *) a)->media.get_file().get_basename().down();
string path_b = ((Thumbnail *) b)->media.get_file().get_basename().down();
diff --git a/ui/media.ui b/ui/media.ui
index 52489ef..befd0ed 100644
--- a/ui/media.ui
+++ b/ui/media.ui
@@ -55,6 +55,7 @@
<separator />
<menu name="SortPhotos" action="SortPhotos">
<menuitem name="SortByTitle" action="SortByTitle" />
+ <menuitem name="SortByFilename" action="SortByFilename" />
<menuitem name="SortByExposureDate" action="SortByExposureDate" />
<menuitem name="SortByRating" action="SortByRating" />
<separator />
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]