diff options
Diffstat (limited to 'ui/gtk/extcap_gtk.c')
-rw-r--r-- | ui/gtk/extcap_gtk.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/ui/gtk/extcap_gtk.c b/ui/gtk/extcap_gtk.c index 55d93892c9..c2c679c353 100644 --- a/ui/gtk/extcap_gtk.c +++ b/ui/gtk/extcap_gtk.c @@ -24,6 +24,7 @@ #include <string.h> #include <gtk/gtk.h> +#include <glib.h> #include <ui/gtk/gui_utils.h> #include <wsutil/filesystem.h> @@ -134,6 +135,11 @@ GHashTable *extcap_gtk_get_state(GtkWidget *widget) { int multi_num = 0; + guint year; + guint month; + guint day; + guint64 unix_ts; + widget_list = (GSList *) g_object_get_data(G_OBJECT(widget), EXTCAP_GTK_DATA_KEY_WIDGETLIST); @@ -183,6 +189,16 @@ GHashTable *extcap_gtk_get_state(GtkWidget *widget) { continue; } break; + case EXTCAP_ARG_TIMESTAMP: { + GTimeZone* tz = g_time_zone_new("UTC"); + gtk_calendar_get_date((GtkCalendar*)list_widget, &year, &month, &day); + GDateTime* datetime = g_date_time_new(tz, year, month, day, 0, 0, 0); + unix_ts = g_date_time_to_unix(datetime); + call_string = g_strdup_printf("%" G_GINT64_MODIFIER "u", unix_ts); + g_date_time_unref(datetime); + g_time_zone_unref(tz); + } + break; case EXTCAP_ARG_RADIO: if ((radio_widget = (GtkWidget *) g_object_get_data( G_OBJECT(list_widget), @@ -765,7 +781,7 @@ GSList *extcap_populate_gtk_vbox(GList *arguments, GtkWidget *vbox, extcap_arg *arg_iter = NULL; extcap_complex *prev_complex = NULL; - gchar *prev_call, *default_str; + gchar *prev_call = NULL, *default_str; GList * arg_list = g_list_first(arguments); if ( arg_list == NULL ) @@ -850,6 +866,22 @@ GSList *extcap_populate_gtk_vbox(GList *arguments, GtkWidget *vbox, if (default_str != NULL) g_free(default_str); break; + case EXTCAP_ARG_TIMESTAMP: + default_str = NULL; + if (prev_complex != NULL) + default_str = extcap_get_complex_as_string(prev_complex); + else if (arg_iter->default_complex != NULL) + default_str = extcap_get_complex_as_string( + arg_iter->default_complex); + label = gtk_label_new(arg_iter->display); + gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.1f); + if (default_str != NULL) { + gtk_entry_set_text(GTK_ENTRY(item), default_str); + g_free(default_str); + } + + item = gtk_calendar_new(); + break; case EXTCAP_ARG_BOOLEAN: case EXTCAP_ARG_BOOLFLAG: item = gtk_check_button_new_with_label(arg_iter->display); |