3535#include <gdk/gdkkeysyms.h>
3636#include <gtk/gtk.h>
3737
38+ enum
39+ {
40+ DURATION_INVALID ,
41+ DURATION_ONE_HOUR ,
42+ DURATION_ONE_DAY ,
43+ DURATION_ONE_WEEK ,
44+ DURATION_ONE_MONTH ,
45+ DURATION_SIX_MONTHS ,
46+ DURATION_ONE_YEAR ,
47+ };
48+
3849typedef enum
3950{
4051 CAJA_QUERY_EDITOR_ROW_LOCATION ,
@@ -1054,7 +1065,7 @@ static GtkWidget *modtime_row_create_widgets(CajaQueryEditorRow *row)
10541065
10551066 gtk_combo_box_set_active (GTK_COMBO_BOX (combo ), 0 );
10561067
1057- duration_store = gtk_list_store_new (2 , G_TYPE_LONG , G_TYPE_STRING );
1068+ duration_store = gtk_list_store_new (2 , G_TYPE_INT , G_TYPE_STRING );
10581069 duration_combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (duration_store ));
10591070 g_object_unref (duration_store );
10601071
@@ -1063,17 +1074,17 @@ static GtkWidget *modtime_row_create_widgets(CajaQueryEditorRow *row)
10631074 "text" , 1 , NULL );
10641075
10651076 gtk_list_store_append (duration_store , & iter );
1066- gtk_list_store_set (duration_store , & iter , 0 , 3600 , 1 , _ ("1 Hour" ), -1 );
1077+ gtk_list_store_set (duration_store , & iter , 0 , DURATION_ONE_HOUR , 1 , _ ("1 Hour" ), -1 );
10671078 gtk_list_store_append (duration_store , & iter );
1068- gtk_list_store_set (duration_store , & iter , 0 , 86400 , 1 , _ ("1 Day" ), -1 );
1079+ gtk_list_store_set (duration_store , & iter , 0 , DURATION_ONE_DAY , 1 , _ ("1 Day" ), -1 );
10691080 gtk_list_store_append (duration_store , & iter );
1070- gtk_list_store_set (duration_store , & iter , 0 , 604800 , 1 , _ ("1 Week" ), -1 );
1081+ gtk_list_store_set (duration_store , & iter , 0 , DURATION_ONE_WEEK , 1 , _ ("1 Week" ), -1 );
10711082 gtk_list_store_append (duration_store , & iter );
1072- gtk_list_store_set (duration_store , & iter , 0 , 2419200 , 1 , _ ("1 Month" ), -1 );
1083+ gtk_list_store_set (duration_store , & iter , 0 , DURATION_ONE_MONTH , 1 , _ ("1 Month" ), -1 );
10731084 gtk_list_store_append (duration_store , & iter );
1074- gtk_list_store_set (duration_store , & iter , 0 , 14515200 , 1 , _ ("6 Months" ), -1 );
1085+ gtk_list_store_set (duration_store , & iter , 0 , DURATION_SIX_MONTHS , 1 , _ ("6 Months" ), -1 );
10751086 gtk_list_store_append (duration_store , & iter );
1076- gtk_list_store_set (duration_store , & iter , 0 , 29030400 , 1 , _ ("1 Year" ), -1 );
1087+ gtk_list_store_set (duration_store , & iter , 0 , DURATION_ONE_YEAR , 1 , _ ("1 Year" ), -1 );
10771088
10781089 gtk_combo_box_set_active (GTK_COMBO_BOX (duration_combo ), 0 );
10791090
@@ -1096,7 +1107,9 @@ static void modtime_row_add_to_query(CajaQueryEditorRow *row, CajaQuery *query)
10961107 GtkTreeIter iter ;
10971108 GtkTreeIter duration_iter ;
10981109 gboolean is_greater = FALSE;
1099- gint64 duration ;
1110+ GDateTime * now , * datetime ;
1111+ gint duration ;
1112+ gint64 timestamp ;
11001113
11011114 if (!GTK_IS_CONTAINER (row -> type_widget ))
11021115 return ;
@@ -1121,7 +1134,34 @@ static void modtime_row_add_to_query(CajaQueryEditorRow *row, CajaQuery *query)
11211134 duration_model = gtk_combo_box_get_model (GTK_COMBO_BOX (duration_combo ));
11221135 gtk_tree_model_get (duration_model , & duration_iter , 0 , & duration , -1 );
11231136
1124- caja_query_set_duration (query , is_greater ? duration : - duration );
1137+ now = g_date_time_new_now_local ();
1138+ switch (duration )
1139+ {
1140+ case DURATION_ONE_HOUR :
1141+ datetime = g_date_time_add_hours (now , -1 );
1142+ break ;
1143+ case DURATION_ONE_DAY :
1144+ datetime = g_date_time_add_days (now , -1 );
1145+ break ;
1146+ case DURATION_ONE_WEEK :
1147+ datetime = g_date_time_add_weeks (now , -1 );
1148+ break ;
1149+ case DURATION_ONE_MONTH :
1150+ datetime = g_date_time_add_months (now , -1 );
1151+ break ;
1152+ case DURATION_SIX_MONTHS :
1153+ datetime = g_date_time_add_months (now , -6 );
1154+ break ;
1155+ case DURATION_ONE_YEAR :
1156+ datetime = g_date_time_add_years (now , -1 );
1157+ break ;
1158+ }
1159+
1160+ g_date_time_unref (now );
1161+ timestamp = g_date_time_to_unix (datetime );
1162+ g_date_time_unref (datetime );
1163+
1164+ caja_query_set_timestamp (query , is_greater ? timestamp : - timestamp );
11251165}
11261166
11271167static void modtime_row_free_data (CajaQueryEditorRow * row )
0 commit comments