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 @@
-
-
- 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;
};