diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/caja-query-editor.c | 58 | 
1 files changed, 49 insertions, 9 deletions
| diff --git a/src/caja-query-editor.c b/src/caja-query-editor.c index fc25b104..355c8e09 100644 --- a/src/caja-query-editor.c +++ b/src/caja-query-editor.c @@ -35,6 +35,17 @@  #include <gdk/gdkkeysyms.h>  #include <gtk/gtk.h> +enum +{ +        DURATION_INVALID, +        DURATION_ONE_HOUR, +        DURATION_ONE_DAY, +        DURATION_ONE_WEEK, +        DURATION_ONE_MONTH, +        DURATION_SIX_MONTHS, +        DURATION_ONE_YEAR, +}; +  typedef enum  {      CAJA_QUERY_EDITOR_ROW_LOCATION, @@ -1054,7 +1065,7 @@ static GtkWidget *modtime_row_create_widgets(CajaQueryEditorRow *row)      gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0); -    duration_store = gtk_list_store_new(2, G_TYPE_LONG, G_TYPE_STRING); +    duration_store = gtk_list_store_new(2, G_TYPE_INT, G_TYPE_STRING);      duration_combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(duration_store));      g_object_unref(duration_store); @@ -1063,17 +1074,17 @@ static GtkWidget *modtime_row_create_widgets(CajaQueryEditorRow *row)                                     "text", 1, NULL);      gtk_list_store_append(duration_store, &iter); -    gtk_list_store_set(duration_store, &iter, 0, 3600, 1, _("1 Hour"), -1); +    gtk_list_store_set(duration_store, &iter, 0, DURATION_ONE_HOUR, 1, _("1 Hour"), -1);      gtk_list_store_append(duration_store, &iter); -    gtk_list_store_set(duration_store, &iter, 0, 86400, 1, _("1 Day"), -1); +    gtk_list_store_set(duration_store, &iter, 0, DURATION_ONE_DAY, 1, _("1 Day"), -1);      gtk_list_store_append(duration_store, &iter); -    gtk_list_store_set(duration_store, &iter, 0, 604800, 1, _("1 Week"), -1); +    gtk_list_store_set(duration_store, &iter, 0, DURATION_ONE_WEEK, 1, _("1 Week"), -1);      gtk_list_store_append(duration_store, &iter); -    gtk_list_store_set(duration_store, &iter, 0, 2419200, 1, _("1 Month"), -1); +    gtk_list_store_set(duration_store, &iter, 0, DURATION_ONE_MONTH, 1, _("1 Month"), -1);      gtk_list_store_append(duration_store, &iter); -    gtk_list_store_set(duration_store, &iter, 0, 14515200, 1, _("6 Months"), -1); +    gtk_list_store_set(duration_store, &iter, 0, DURATION_SIX_MONTHS, 1, _("6 Months"), -1);      gtk_list_store_append(duration_store, &iter); -    gtk_list_store_set(duration_store, &iter, 0, 29030400, 1, _("1 Year"), -1); +    gtk_list_store_set(duration_store, &iter, 0, DURATION_ONE_YEAR, 1, _("1 Year"), -1);      gtk_combo_box_set_active(GTK_COMBO_BOX(duration_combo), 0); @@ -1096,7 +1107,9 @@ static void modtime_row_add_to_query(CajaQueryEditorRow *row, CajaQuery *query)      GtkTreeIter iter;      GtkTreeIter duration_iter;      gboolean is_greater = FALSE; -    gint64 duration; +    GDateTime *now, *datetime; +    gint duration; +    gint64 timestamp;      if (!GTK_IS_CONTAINER(row->type_widget))          return; @@ -1121,7 +1134,34 @@ static void modtime_row_add_to_query(CajaQueryEditorRow *row, CajaQuery *query)      duration_model = gtk_combo_box_get_model(GTK_COMBO_BOX(duration_combo));      gtk_tree_model_get(duration_model, &duration_iter, 0, &duration, -1); -    caja_query_set_duration(query, is_greater ? duration : -duration); +    now = g_date_time_new_now_local (); +    switch (duration) +    { +            case DURATION_ONE_HOUR: +                    datetime = g_date_time_add_hours (now, -1); +                    break; +            case DURATION_ONE_DAY: +                    datetime = g_date_time_add_days (now, -1); +                    break; +            case DURATION_ONE_WEEK: +                    datetime = g_date_time_add_weeks (now, -1); +                    break; +            case DURATION_ONE_MONTH: +                    datetime = g_date_time_add_months (now, -1); +                    break; +            case DURATION_SIX_MONTHS: +                    datetime = g_date_time_add_months (now, -6); +                    break; +            case DURATION_ONE_YEAR: +                    datetime = g_date_time_add_years (now, -1); +                    break; +    } + +    g_date_time_unref (now); +    timestamp = g_date_time_to_unix (datetime); +    g_date_time_unref (datetime); + +    caja_query_set_timestamp(query, is_greater ? timestamp: -timestamp);  }  static void modtime_row_free_data(CajaQueryEditorRow *row) | 
