diff options
Diffstat (limited to 'src/nautilus-search-popover.c')
-rw-r--r-- | src/nautilus-search-popover.c | 103 |
1 files changed, 21 insertions, 82 deletions
diff --git a/src/nautilus-search-popover.c b/src/nautilus-search-popover.c index 081dd07be..17e825f08 100644 --- a/src/nautilus-search-popover.c +++ b/src/nautilus-search-popover.c @@ -21,6 +21,7 @@ #include <glib/gi18n.h> #include <libnautilus-private/nautilus-file.h> +#include <libnautilus-private/nautilus-ui-utilities.h> #include <libnautilus-private/nautilus-global-preferences.h> struct _NautilusSearchPopover @@ -45,8 +46,6 @@ struct _NautilusSearchPopover NautilusQuery *query; }; -const gchar* get_text_for_day (gint days); - static void emit_date_changes_for_day (NautilusSearchPopover *popover, GPtrArray *date_range); @@ -540,15 +539,19 @@ fill_fuzzy_dates_listbox (NautilusSearchPopover *popover) GDateTime *maximum_dt, *now; GtkWidget *row; GDateTime *current_date; + GPtrArray *date_range; gint days, max_days; - days = 0; - + days = 1; maximum_dt = g_date_time_new_from_unix_local (0); now = g_date_time_new_now_local (); max_days = (g_date_time_get_year (now) - g_date_time_get_year (maximum_dt)) * 365; current_date = g_date_time_new_now_local (); + /* Add the no date filter element first */ + row = create_row_for_label ("Any time", TRUE); + gtk_container_add (GTK_CONTAINER (popover->dates_listbox), row); + /* This is a tricky loop. The main intention here is that each * timeslice (day, week, month) have 2 or 3 entries. Years, * however, are exceptions and should show many entries. @@ -556,14 +559,10 @@ fill_fuzzy_dates_listbox (NautilusSearchPopover *popover) while (days < max_days) { gchar *label; - gint normalized, step; + gint normalized; + gint step; - if (days == 0) - { - normalized = 0; - step = 1; - } - else if (days < 7) + if (days < 7) { /* days */ normalized = days; @@ -594,23 +593,19 @@ fill_fuzzy_dates_listbox (NautilusSearchPopover *popover) step = 1825; } - label = g_strdup_printf (get_text_for_day (days), normalized); - + current_date = g_date_time_add_days (now, -days); + date_range = g_ptr_array_new_full (2, (GDestroyNotify) g_date_time_unref); + g_ptr_array_add (date_range, g_date_time_ref (current_date)); + g_ptr_array_add (date_range, g_date_time_ref (now)); + label = get_text_for_date_range (date_range); row = create_row_for_label (label, normalized == 1); - if (days != 0) - { - current_date = g_date_time_add_days (now, -days); - g_object_set_data (G_OBJECT (row), "date", g_date_time_ref (current_date)); - } - else - { - g_object_set_data (G_OBJECT (row), "date", NULL); - } + g_object_set_data (G_OBJECT (row), "date", g_date_time_ref (current_date)); gtk_container_add (GTK_CONTAINER (popover->dates_listbox), row); g_free (label); g_date_time_unref (current_date); + g_ptr_array_unref (date_range); days += step; } @@ -644,35 +639,6 @@ fill_types_listbox (NautilusSearchPopover *popover) gtk_container_add (GTK_CONTAINER (popover->type_listbox), row); } -const gchar* -get_text_for_day (gint days) -{ - if (days == 0) - { - return _("Any time"); - } - else if (days < 7) - { - /* days */ - return ngettext ("%d day ago", "%d days ago", days); - } - else if (days < 30) - { - /* weeks */ - return ngettext ("Last week", "%d weeks ago", days / 7); - } - else if (days < 365) - { - /* months */ - return ngettext ("Last month", "%d months ago", days / 30); - } - else - { - /* years */ - return ngettext ("Last year", "%d years ago", days / 365); - } -} - static void show_date_selection_widgets (NautilusSearchPopover *popover, gboolean visible) @@ -799,55 +765,28 @@ update_date_label (NautilusSearchPopover *popover, GDateTime *initial_date; GDateTime *end_date; GDateTime *now; - gchar *formatted_date; gchar *label; - guint normalized; now = g_date_time_new_now_local (); initial_date = g_ptr_array_index (date_range, 0); - end_date = g_ptr_array_index (date_range, 1); + end_date = g_ptr_array_index (date_range, 0); days = g_date_time_difference (end_date, initial_date) / G_TIME_SPAN_DAY; - formatted_date = g_date_time_format (initial_date, "%x"); - if (days < 1) - { - label = g_strdup (formatted_date); - } - else - { - if (days < 7) - { - normalized = days; - } - else if (days < 30) - { - normalized = days / 7; - } - else if (days < 365) - { - normalized = days / 30; - } - else - { - normalized = days / 365; - } - - label = g_strdup_printf (get_text_for_day (days), normalized); - } + label = get_text_for_date_range (date_range); - gtk_entry_set_text (GTK_ENTRY (popover->date_entry), formatted_date); + gtk_entry_set_text (GTK_ENTRY (popover->date_entry), days < 1 ? label : ""); gtk_widget_show (popover->clear_date_button); gtk_label_set_label (GTK_LABEL (popover->select_date_button_label), label); g_date_time_unref (now); - g_free (formatted_date); g_free (label); } else { gtk_label_set_label (GTK_LABEL (popover->select_date_button_label), _("Select Dates...")); + gtk_entry_set_text (GTK_ENTRY (popover->date_entry), ""); gtk_widget_hide (popover->clear_date_button); } } |