diff --git a/glade/mainWindow.glade b/glade/mainWindow.glade index 94d7534..28c5759 100644 --- a/glade/mainWindow.glade +++ b/glade/mainWindow.glade @@ -461,11 +461,12 @@ - - New Entry - True + + Decrypt GPG True True + imageDecrypt + True False @@ -474,12 +475,11 @@ - - Decrypt GPG + + New Entry + True True True - imageDecrypt - True False @@ -560,9 +560,55 @@ - + True False + + + True + False + + + True + False + + + page0 + page0 + + + + + True + True + + + page1 + page1 + 1 + + + + + False + True + 0 + + + + + ... + True + True + True + Use custom format + + + False + True + 1 + + 1 diff --git a/src/mainwindow.c b/src/mainwindow.c index 4e5dcce..729411c 100644 --- a/src/mainwindow.c +++ b/src/mainwindow.c @@ -505,19 +505,50 @@ static void mainWindow_settings_comboNewDateFormat_changed(GtkComboBox *widget, mainWindow_set_new_file_date_format(mainWindow, gtk_combo_box_get_active_id(GTK_COMBO_BOX(mainWindow->settingsDialog.comboNewDateFormat))); } + +static void mainWindow_settings_buttonCustomNewFileDateFormat_clicked(GtkComboBox *widget, gpointer user_data) +{ + struct mainWindow *mainWindow = (struct mainWindow *)user_data; + + if (gtk_stack_get_visible_child(GTK_STACK(mainWindow->settingsDialog.stackNewDateFormat)) == mainWindow->settingsDialog.entryNewDateFormat) { + mainWindow_set_new_file_date_format(mainWindow, gtk_entry_get_text(mainWindow->settingsDialog.entryNewDateFormat)); + gtk_stack_set_visible_child(GTK_STACK(mainWindow->settingsDialog.stackNewDateFormat), + mainWindow->settingsDialog.comboNewDateFormat); + gtk_button_set_label(GTK_BUTTON(mainWindow->settingsDialog.buttonCustomNewFileDateFormat), "..."); + } else { + gtk_stack_set_visible_child(GTK_STACK(mainWindow->settingsDialog.stackNewDateFormat), + mainWindow->settingsDialog.entryNewDateFormat); + gtk_button_set_label(GTK_BUTTON(mainWindow->settingsDialog.buttonCustomNewFileDateFormat), "OK"); + } +} + const gchar *newDateFormats[] = {"%d.%m.%Y %H:%M", "%Y-%m-%d %H:%M", NULL}; void mainWindow_set_new_file_date_format(struct mainWindow *mainWindow, gchar *fmt) { + GDateTime *datetime; + gchar *text; + if (!fmt) { fmt = newDateFormats[0]; } g_free(mainWindow->newFileDateFormat); mainWindow->newFileDateFormat = g_strdup(fmt); - gtk_combo_box_set_active_id(mainWindow->settingsDialog.comboNewDateFormat, fmt); + gtk_entry_set_text(mainWindow->settingsDialog.entryNewDateFormat, fmt); + + /* Custom format -> Add to list for this session */ + if (!gtk_combo_box_set_active_id(mainWindow->settingsDialog.comboNewDateFormat, fmt)) { + datetime = g_date_time_new_now_local(); + text = g_date_time_format(datetime, fmt); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(mainWindow->settingsDialog.comboNewDateFormat), + fmt, text); + g_free(text); + g_date_time_unref(datetime); + gtk_combo_box_set_active_id(mainWindow->settingsDialog.comboNewDateFormat, fmt); + } } static gboolean mainWindow_settings_delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_data) @@ -564,6 +595,11 @@ static void mainWindow_configure_settings_dialog(struct mainWindow *mainWindow) (GCallback) mainWindow_settings_comboNewDateFormat_changed, mainWindow); + g_signal_connect(mainWindow->settingsDialog.buttonCustomNewFileDateFormat, + "clicked", + (GCallback) mainWindow_settings_buttonCustomNewFileDateFormat_clicked, + mainWindow); + g_signal_connect(mainWindow->settingsDialog.settingsDialog, "delete-event", (GCallback) mainWindow_settings_delete_event, @@ -619,6 +655,9 @@ struct mainWindow *mainWindow_new() mainWindow->settingsDialog.settingsDialog = GTK_WIDGET(gtk_builder_get_object(builder, "settingsDialog")); mainWindow->settingsDialog.comboDisplayMode = GTK_WIDGET(gtk_builder_get_object(builder, "comboDisplayMode")); mainWindow->settingsDialog.comboNewDateFormat = GTK_WIDGET(gtk_builder_get_object(builder, "comboNewDateFormat")); + mainWindow->settingsDialog.stackNewDateFormat = GTK_WIDGET(gtk_builder_get_object(builder, "stackNewDateFormat")); + mainWindow->settingsDialog.entryNewDateFormat = GTK_WIDGET(gtk_builder_get_object(builder, "entryNewDateFormat")); + mainWindow->settingsDialog.buttonCustomNewFileDateFormat = GTK_WIDGET(gtk_builder_get_object(builder, "buttonCustomNewFileDateFormat")); mainWindow->filterSettings.time_start = 0; mainWindow->filterSettings.time_end = -1; diff --git a/src/mainwindow.h b/src/mainwindow.h index 40408d8..6f4b02e 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -86,7 +86,10 @@ struct mainWindow { struct settingsDialog { GtkWidget *settingsDialog; GtkWidget *comboDisplayMode; + GtkWidget *stackNewDateFormat; GtkWidget *comboNewDateFormat; + GtkWidget *buttonCustomNewFileDateFormat; + GtkWidget *entryNewDateFormat; } settingsDialog; };