From 424b1b1c320190633686b564dab2505790d60a45 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 27 Jan 2025 18:05:05 +0600 Subject: [PATCH] Settings window finish --- source/ubl-settings-datetime.c | 26 ++++++++++++++++---------- source/ubl-settings-datetime.h | 6 +++++- source/ubl-strings.h | 5 ++++- ubl-settings-datetime.glade | 2 ++ ubl-settings-datetime.pot | 4 ++++ ubl-settings-datetime_ru.po | 4 ++++ 6 files changed, 35 insertions(+), 12 deletions(-) diff --git a/source/ubl-settings-datetime.c b/source/ubl-settings-datetime.c index cdd3a7f..06b89b3 100644 --- a/source/ubl-settings-datetime.c +++ b/source/ubl-settings-datetime.c @@ -246,7 +246,7 @@ void yon_interface_update(main_window *widgets){ GDateTime *datetime = g_date_time_new_now_local(); char *time = g_date_time_format(datetime,"%H %M"); - char *date = g_date_time_format(datetime,"%Y.%m.%d"); + char *date = g_date_time_format(datetime,yon_settings_configuration_get(date_format_parameter)); gtk_calendar_select_month(GTK_CALENDAR(widgets->DateCalendar),g_date_time_get_month(datetime)-1,g_date_time_get_year(datetime)); gtk_calendar_select_day(GTK_CALENDAR(widgets->DateCalendar),g_date_time_get_day_of_month(datetime)); @@ -314,6 +314,10 @@ void *on_sync_error(void*){ return NULL; } +void on_date_format_changed(GtkWidget *, main_window *widgets){ + yon_interface_update(widgets); +} + void *yon_sync_thread_start(void *arg){ struct datetime_arg *data = (struct datetime_arg*)arg; char *command_time = time_sync_command(data->time); @@ -396,10 +400,8 @@ void on_sync_hardware_clicked(){ void on_date_accept(GtkWidget *,main_window *widgets){ guint year=0, month=0, day=0; gtk_calendar_get_date(GTK_CALENDAR(widgets->DateCalendar),&year,&month,&day); - char *ye_str = yon_char_from_int(year); - char *mo_str = yon_char_from_int(++month); - char *da_str = yon_char_from_int(day); - char *date = yon_char_unite(ye_str,".",month<10?"0":"",mo_str,".",day<10?"0":"",da_str,NULL); + GDateTime *datetime = g_date_time_new_local(year,++month,day,0,0,0); + char *date = g_date_time_format(datetime,yon_settings_configuration_get(date_format_parameter)); gtk_entry_set_text(GTK_ENTRY(widgets->DateEntry),date); gtk_popover_popdown(GTK_POPOVER(widgets->DatePopover)); free(date); @@ -494,9 +496,6 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->TimeSyncTypeCombo),"changed",G_CALLBACK(yon_save_parameters),widgets); g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(yon_save_parameters),widgets); g_signal_connect(G_OBJECT(widgets->ZoneCombo),"changed",G_CALLBACK(yon_save_parameters),widgets); - - yon_ubl_settings_window_init(GTK_MENU(gtk_widget_get_parent(widgets->DocumentationMenuItem))); - yon_configuration_window_add_combo_box_parameter(CONFIGURATION_PARAMETER_BOOL,"Test","Test parameter","D.M.Y","DD.MM.YYYY","D-M-Y","DD-MM-YYYY","D/M/Y","DD/MM/YYYY","M-D-Y","MM-DD-YYYY",NULL); } // Initial data loading { @@ -519,6 +518,15 @@ void yon_main_window_complete(main_window *widgets){ if (size) yon_char_parsed_free(parsed,size); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->RegionCombo),0); } + + + + yon_window_config_setup(GTK_WINDOW(widgets->Window)); + char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL); + yon_window_config_load(path); + + yon_ubl_settings_window_init(GTK_MENU(gtk_widget_get_parent(widgets->DocumentationMenuItem))); + yon_configuration_window_add_combo_box_parameter(CONFIGURATION_PARAMETER_BOOL,date_format_parameter,DATE_FORMAT_SETTINGS_LABEL,G_CALLBACK(on_date_format_changed),widgets,"%d.%m.%Y","DD.MM.YYYY","%d-%m-%Y","DD-MM-YYYY","%d/%m/%Y","DD/MM/YYYY","%m-%d-%Y","MM-DD-YYYY",NULL); yon_load_proceed(YON_CONFIG_LOCAL); yon_interface_update(widgets); @@ -539,8 +547,6 @@ int main(int argc, char *argv[]){ gtk_init(&argc,&argv); template_main_window *widgets = yon_ubl_window_setup(); yon_main_window_complete((main_window*)widgets); - char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL); - yon_window_config_load(path); if (getuid()!=0){ textdomain(template_ui_LocaleName); yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); diff --git a/source/ubl-settings-datetime.h b/source/ubl-settings-datetime.h index fac65e6..a49b374 100644 --- a/source/ubl-settings-datetime.h +++ b/source/ubl-settings-datetime.h @@ -52,6 +52,8 @@ #define zone_path "/usr/share/zoneinfo/" +#define date_format_parameter "DateFormat" + typedef char* string; string version_application; @@ -145,4 +147,6 @@ config_str yon_char_parsed_localize(config_str parsed, int size); config_str yon_char_parsed_sort(config_str parsed, int size); int yon_char_parsed_compare(const void *a, const void *b); -void on_save_done(main_window *widgets, config_str output, int size); \ No newline at end of file +void on_save_done(main_window *widgets, config_str output, int size); + +void on_date_format_changed(GtkWidget *, main_window *widgets); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index e8e7547..c029f59 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -21,4 +21,7 @@ #define TIME_ZONE_LABEL _("Time Zone") #define REGION_LABEL _("Region:") #define ZONE_LABEL _("Zone:") -#define LOCAL_TIME_LABEL _("Local time") \ No newline at end of file +#define LOCAL_TIME_LABEL _("Local time") + +#define DATE_FORMAT_SETTINGS_LABEL _("Date format:") +#define DATE_DORMAT_TOOLTIP_LABEL _("Date\nformat") \ No newline at end of file diff --git a/ubl-settings-datetime.glade b/ubl-settings-datetime.glade index 53cbffa..65c5bbc 100644 --- a/ubl-settings-datetime.glade +++ b/ubl-settings-datetime.glade @@ -143,6 +143,8 @@ -1 True False + Date +format True diff --git a/ubl-settings-datetime.pot b/ubl-settings-datetime.pot index 220246f..7d0efc4 100644 --- a/ubl-settings-datetime.pot +++ b/ubl-settings-datetime.pot @@ -33,6 +33,10 @@ msgstr "" msgid "Important field is empty" msgstr "" +#: source/ubl-strings.h:6 +msgid "Date format:" +msgstr "" + #: source/ubl-strings.h:7 msgid "Accept" msgstr "" diff --git a/ubl-settings-datetime_ru.po b/ubl-settings-datetime_ru.po index 7d19439..9e22de9 100644 --- a/ubl-settings-datetime_ru.po +++ b/ubl-settings-datetime_ru.po @@ -33,6 +33,10 @@ msgstr "Ошибка синхронизации аппаратных часов" msgid "Important field is empty" msgstr "Пустое важное поле" +#: source/ubl-strings.h:6 +msgid "Date format:" +msgstr "Формат даты:" + #: source/ubl-strings.h:7 msgid "Accept" msgstr "Принять"