diff --git a/source/ubl-settings-datetime.c b/source/ubl-settings-datetime.c index cbfe175..7258c0e 100644 --- a/source/ubl-settings-datetime.c +++ b/source/ubl-settings-datetime.c @@ -67,7 +67,9 @@ void yon_save_parameters(GtkWidget *self, main_window *widgets){ if (!yon_window_config_check_init()) return; - GTimeZone *tz = g_time_zone_new_identifier(config(ZONE_parameter)); + char *parameter = config(ZONE_parameter); + GTimeZone *tz = g_time_zone_new_identifier(parameter); + if (!tz) return; GDateTime *datetime = g_date_time_new_now(tz); long hours = atol(g_date_time_format(datetime,"%H")); long minutes = atol(g_date_time_format(datetime,"%M")); @@ -97,75 +99,22 @@ int check_input(main_window *widgets){ return 1; } -void on_config_save(GtkWidget *,main_window *widgets){ - if (!check_input(widgets)) return; - main_config.save_config=2; - yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_global_command,NULL); -} - -void on_config_save_global(GtkWidget *,main_window *widgets){ - if (!check_input(widgets)) return; - main_config.save_config=0; - yon_save_proceed(NULL,YON_CONFIG_GLOBAL,config_get_global_command,NULL); -} - -void on_config_save_local(GtkWidget *,main_window *widgets){ - if (!check_input(widgets)) return; - main_config.save_config=1; - yon_save_proceed(NULL,YON_CONFIG_LOCAL,config_get_local_command,NULL); -} - -void on_config_save_custom(GtkWidget *,main_window *widgets){ - if (!check_input(widgets)) return; - main_config.save_config=3; - yon_save_proceed(NULL,YON_CONFIG_CUSTOM,config_get_global_command,NULL); -} - -void on_config_load_global(GtkWidget *,main_window *widgets){ - main_config.load_mode=YON_CONFIG_GLOBAL; - textdomain(template_ui_LocaleName); - yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - textdomain(LocaleName); - yon_load_proceed(YON_CONFIG_GLOBAL); - yon_interface_update(widgets); - -} - -void on_config_load_local(GtkWidget *,main_window *widgets){ - main_config.load_mode=YON_CONFIG_LOCAL; - textdomain(template_ui_LocaleName); - yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - textdomain(LocaleName); - yon_load_proceed(YON_CONFIG_LOCAL); - yon_interface_update(widgets); - -} - -void on_config_load_custom(GtkWidget *,main_window *widgets){ - main_config.load_mode=YON_CONFIG_CUSTOM; - textdomain(template_ui_LocaleName); - yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - textdomain(LocaleName); - yon_load_proceed(YON_CONFIG_CUSTOM); - yon_interface_update(widgets); -} - -void yon_load_proceed(YON_CONFIG_TYPE type){ +void yon_load_proceed(YON_CONFIG_TYPE type){ if (type!=YON_CONFIG_CUSTOM){ yon_config_clean(); + if (!yon_char_is_empty(config_get_default_command)) + yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); } - if (!yon_char_is_empty(config_get_default_command)) - yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); if (type==YON_CONFIG_GLOBAL){ - yon_config_load_config(type,config_get_global_command,NULL); + yon_config_load_config(type,config_get_command("global"),NULL); } else if (type==YON_CONFIG_LOCAL){ - yon_config_load_config(type,config_get_local_command,NULL); + yon_config_load_config(type,config_get_command("system"),NULL); } else if (type==YON_CONFIG_CUSTOM){ char *path=""; textdomain(template_ui_LocaleName); GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL); textdomain(LocaleName); - gtk_window_set_icon_name(GTK_WINDOW(dialog),icon_name); + gtk_window_set_icon_name(GTK_WINDOW(dialog),"com.ublinux.ubl-settings-services"); gtk_window_set_title(GTK_WINDOW(dialog),TITLE_LABEL); GtkFileFilter *filter = gtk_file_filter_new(); gtk_file_filter_add_pattern(filter,"*.ini"); @@ -179,7 +128,9 @@ void yon_load_proceed(YON_CONFIG_TYPE type){ path=file; } yon_config_clean(); - char *command = yon_config_get_custom_command(path); + if (!yon_char_is_empty(config_get_default_command)) + yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); + char *command = config_get_command(path); yon_config_load_config(type,command,NULL); gtk_widget_destroy(dialog); } else { @@ -188,6 +139,49 @@ void yon_load_proceed(YON_CONFIG_TYPE type){ } } +void on_config_local_load(GtkWidget *self,main_window *widgets){ + if (self){}; + yon_load_proceed(YON_CONFIG_LOCAL); + main_config.load_mode=1; + yon_interface_update(widgets); +} + +void on_config_global_load(GtkWidget *self,main_window *widgets){ + if (self){} + yon_load_proceed(YON_CONFIG_GLOBAL); + main_config.load_mode=0; + yon_interface_update(widgets); +} + +void on_config_custom_load(GtkWidget *self,main_window *widgets){ + if (self){} + yon_load_proceed(YON_CONFIG_CUSTOM); + main_config.load_mode=3; + yon_interface_update(widgets); +} + +void on_config_global_local_save(){ + main_config.save_config=YON_CONFIG_BOTH; + yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_command("global"),NULL); +} + +void on_config_local_save(){ + main_config.save_config=YON_CONFIG_LOCAL; + yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_command("system"),NULL); +} + +void on_config_global_save(){ + main_config.save_config=YON_CONFIG_GLOBAL; + yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_command("global"),NULL); +} + +void on_config_custom_save(GtkWidget *self, main_window *widgets){ + if (self&&widgets){} + main_config.save_config=YON_CONFIG_CUSTOM; + template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,config_get_command("system"),NULL); + if (window){}; +} + void on_save_done(main_window *widgets, config_str output, int size){ char *final_output = yon_char_parsed_to_string(output,size,""); if (final_output){ @@ -272,39 +266,41 @@ void yon_interface_update(main_window *widgets){ } GTimeZone *tz = g_time_zone_new_identifier(config(ZONE_parameter)); - GDateTime *datetime = g_date_time_new_now(tz); - char *time = g_date_time_format(datetime,"%H %M"); - char *format = yon_settings_configuration_get(date_format_parameter); - char *date = g_date_time_format(datetime,format?format:"%d.%m.%Y"); - 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)); - g_date_time_unref(datetime); - g_time_zone_unref(tz); + if (tz){ + GDateTime *datetime = g_date_time_new_now(tz); + char *time = g_date_time_format(datetime,"%H %M"); + char *format = yon_settings_configuration_get(date_format_parameter); + char *date = g_date_time_format(datetime,format?format:"%d.%m.%Y"); + 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)); + g_date_time_unref(datetime); + + if (!yon_char_is_empty(time)){ + char *hour = yon_char_divide_search(time," ",-1); + double hours = atof(hour); + double minutes = atof(time); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->HourSpin),hours); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->MinuteSpin),minutes); + free(hour); + free(time); + } else { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->HourSpin),0.0f); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->MinuteSpin),0.0f); + } - if (!yon_char_is_empty(time)){ - char *hour = yon_char_divide_search(time," ",-1); - double hours = atof(hour); - double minutes = atof(time); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->HourSpin),hours); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->MinuteSpin),minutes); - free(hour); - free(time); - } else { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->HourSpin),0.0f); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->MinuteSpin),0.0f); - } + if (!yon_char_is_empty(date)){ + gtk_entry_set_text(GTK_ENTRY(widgets->DateEntry),date); + } else { + gtk_entry_set_text(GTK_ENTRY(widgets->DateEntry),""); + } - if (!yon_char_is_empty(date)){ - gtk_entry_set_text(GTK_ENTRY(widgets->DateEntry),date); - } else { - gtk_entry_set_text(GTK_ENTRY(widgets->DateEntry),""); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->NTPEntry),G_CALLBACK(yon_save_parameters),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->DHCPCombo),G_CALLBACK(yon_save_parameters),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->TimeSyncTypeCombo),G_CALLBACK(yon_save_parameters),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionCombo),G_CALLBACK(yon_save_parameters),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(yon_save_parameters),widgets); + g_time_zone_unref(tz); } - - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->NTPEntry),G_CALLBACK(yon_save_parameters),widgets); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->DHCPCombo),G_CALLBACK(yon_save_parameters),widgets); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->TimeSyncTypeCombo),G_CALLBACK(yon_save_parameters),widgets); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionCombo),G_CALLBACK(yon_save_parameters),widgets); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(yon_save_parameters),widgets); } void on_date_clicked(GtkWidget *,main_window *widgets){ @@ -321,13 +317,17 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){ config_str parsed_sorted = yon_char_parsed_sort(parsed,size); yon_char_parsed_free(parsed,size); for (int i=0;iZoneCombo),parsed_sorted[i],name_string?name_string:_(parsed_sorted[i])); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->ZoneCombo),parsed_sorted[i],name_string?name_string:_(utc_string)); } if (size) yon_char_parsed_free(parsed_sorted,size); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ZoneCombo),0); @@ -621,14 +621,14 @@ void yon_main_window_complete(main_window **window){ main_config.widgets=widgets; // Signal configuration { - g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_save),widgets); - g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_save_global),widgets); - g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(on_config_save_local),widgets); - g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(on_config_save_custom),widgets); - - g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_load_global),widgets); - g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_load_local),widgets); - g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_load_custom),widgets); + g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_global_local_save),widgets); + g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets); + g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(on_config_local_save),widgets); + g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(on_config_custom_save),widgets); + + g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets); + g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets); + g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets); g_signal_connect(G_OBJECT(widgets->DHCPCombo),"changed",G_CALLBACK(on_ntp_sync),widgets); g_signal_connect(G_OBJECT(widgets->SyncButton),"clicked",G_CALLBACK(on_sync_clicked),widgets); diff --git a/source/ubl-settings-datetime.h b/source/ubl-settings-datetime.h index d17cdee..ce00a9c 100644 --- a/source/ubl-settings-datetime.h +++ b/source/ubl-settings-datetime.h @@ -29,9 +29,7 @@ #define icon_name "com.ublinux.ubl-settings-datetime" -#define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get clock HWCLOCK_SYNC ZONE", "ubconfig --source ",target," get network NTPSERVERS",NULL) -#define config_get_local_command "ubconfig --source system get clock HWCLOCK_SYNC ZONE", "ubconfig --source system get network NTPSERVERS" -#define config_get_global_command "ubconfig --source global get clock HWCLOCK_SYNC ZONE", "ubconfig --source global get network NTPSERVERS" +#define config_get_command(target) yon_char_unite("ubconfig --source ",target," get clock HWCLOCK_SYNC ZONE -- get network NTPSERVERS",NULL) #define config_get_default_command "" #define config_get_global_only_parameters "" @@ -129,21 +127,14 @@ void yon_save_parameters(GtkWidget *self,main_window *widgets); int check_input(main_window *widgets); -void on_config_save(GtkWidget *,main_window *widgets); - -void on_config_save_global(GtkWidget *,main_window *widgets); - -void on_config_save_local(GtkWidget *,main_window *widgets); - -void on_config_save_custom(GtkWidget *,main_window *widgets); - -void on_config_load_global(); - -void on_config_load_local(); - -void on_config_load_custom(); - void yon_load_proceed(YON_CONFIG_TYPE type); +void on_config_local_load(GtkWidget *self,main_window *widgets); +void on_config_global_load(GtkWidget *self,main_window *widgets); +void on_config_custom_load(GtkWidget *self,main_window *widgets); +void on_config_global_local_save(); +void on_config_local_save(); +void on_config_global_save(); +void on_config_custom_save(GtkWidget *self, main_window *widgets); void on_date_clicked(GtkWidget *,main_window *widgets); diff --git a/ubl-settings-datetime.glade b/ubl-settings-datetime.glade index 66e1e51..04e7d00 100644 --- a/ubl-settings-datetime.glade +++ b/ubl-settings-datetime.glade @@ -142,7 +142,7 @@ -1 True - False + True Date format