diff --git a/source/ubl-settings-datetime.c b/source/ubl-settings-datetime.c index decde24..2570a75 100644 --- a/source/ubl-settings-datetime.c +++ b/source/ubl-settings-datetime.c @@ -35,66 +35,66 @@ config_str yon_char_parsed_sort(config_str parsed, int size){ } //Config functions -void yon_save_parameters(main_window *widgets){ - int mode = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->DHCPCombo)); - switch(mode){ - case 0:yon_config_register(NTPSERVERS_parameter,NTPSERVERS_parameter_command,"default"); - break; - case 1:yon_config_register(NTPSERVERS_parameter,NTPSERVERS_parameter_command,"stop"); - break; - case 2:yon_config_register(NTPSERVERS_parameter,NTPSERVERS_parameter_command,"dhcp"); - break; - case 3: - char *value = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->NTPEntry)); - if (yon_char_is_empty(value)) { - yon_ubl_status_box_render(EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(widgets->NTPEntry); - return; - } - yon_config_register(NTPSERVERS_parameter,NTPSERVERS_parameter_command,value); - break; - } - const char *region = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->RegionCombo)); - const char *zone = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ZoneCombo)); +void yon_save_parameters(GtkWidget *self, main_window *widgets){ + if (self == widgets->DHCPCombo||self == widgets->NTPEntry){ + int mode = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->DHCPCombo)); + switch(mode){ + case 0:yon_config_register(NTPSERVERS_parameter,NTPSERVERS_parameter_command,"default"); + break; + case 1:yon_config_register(NTPSERVERS_parameter,NTPSERVERS_parameter_command,"stop"); + break; + case 2:yon_config_register(NTPSERVERS_parameter,NTPSERVERS_parameter_command,"dhcp"); + break; + case 3: + char *value = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->NTPEntry)); + if (yon_char_is_empty(value)) { + yon_ubl_status_box_render(EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(widgets->NTPEntry); + return; + } + yon_config_register(NTPSERVERS_parameter,NTPSERVERS_parameter_command,value); + break; + } + } else if (self == widgets->TimeSyncTypeCombo){ + int hwclock_sync = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->TimeSyncTypeCombo)); + if (hwclock_sync==1){ + yon_config_register(HWCLOCK_SYNC_parameter,HWCLOCK_SYNC_parameter_command,"localtime"); + } else if (hwclock_sync == 2) { + yon_config_register(HWCLOCK_SYNC_parameter,HWCLOCK_SYNC_parameter_command,"utc"); + } else { + yon_config_remove_by_key(HWCLOCK_SYNC_parameter); + } - if (!yon_char_is_empty(region)&&!yon_char_is_empty(zone)){ - char *zone_parameter = yon_char_unite((char*)region,"/",(char*)zone,NULL); - yon_config_register(ZONE_parameter,ZONE_parameter_command,zone_parameter); - free(zone_parameter); - } + } else if (self == widgets->RegionCombo||self == widgets->ZoneCombo){ + const char *region = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->RegionCombo)); + const char *zone = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ZoneCombo)); - int hwclock_sync = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->TimeSyncTypeCombo)); - if (hwclock_sync==1){ - yon_config_register(HWCLOCK_SYNC_parameter,HWCLOCK_SYNC_parameter_command,"localtime"); - } else if (hwclock_sync == 2) { - yon_config_register(HWCLOCK_SYNC_parameter,HWCLOCK_SYNC_parameter_command,"utc"); - } else { - yon_config_remove_by_key(HWCLOCK_SYNC_parameter); - } + if (!yon_char_is_empty(region)&&!yon_char_is_empty(zone)){ + char *zone_parameter = yon_char_unite((char*)region,"/",(char*)zone,NULL); + yon_config_register(ZONE_parameter,ZONE_parameter_command,zone_parameter); + free(zone_parameter); + } + } } -void on_config_save(GtkWidget *, main_window *widgets){ +void on_config_save(GtkWidget *){ main_config.save_config=2; - yon_save_parameters(widgets); yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_global_command,NULL); } -void on_config_save_global(GtkWidget *, main_window *widgets){ +void on_config_save_global(GtkWidget *){ main_config.save_config=0; - yon_save_parameters(widgets); yon_save_proceed(NULL,YON_CONFIG_GLOBAL,config_get_global_command,NULL); } -void on_config_save_local(GtkWidget *, main_window *widgets){ +void on_config_save_local(GtkWidget *){ main_config.save_config=1; - yon_save_parameters(widgets); yon_save_proceed(NULL,YON_CONFIG_LOCAL,config_get_local_command,NULL); } -void on_config_save_custom(GtkWidget *, main_window *widgets){ +void on_config_save_custom(GtkWidget *){ main_config.save_config=3; - yon_save_parameters(widgets); yon_save_proceed(NULL,YON_CONFIG_CUSTOM,config_get_global_command,NULL); } @@ -478,6 +478,11 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->DateButton),"clicked",G_CALLBACK(on_date_clicked),widgets); g_signal_connect(G_OBJECT(widgets->DateCancelButton),"clicked",G_CALLBACK(on_date_cancel),widgets); g_signal_connect(G_OBJECT(widgets->DateAcceptButton),"clicked",G_CALLBACK(on_date_accept),widgets); + g_signal_connect(G_OBJECT(widgets->DHCPCombo),"changed",G_CALLBACK(yon_save_parameters),widgets); + g_signal_connect(G_OBJECT(widgets->NTPEntry),"changed",G_CALLBACK(yon_save_parameters),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); } // Initial data loading { diff --git a/source/ubl-settings-datetime.h b/source/ubl-settings-datetime.h index 2791519..c1798e1 100644 --- a/source/ubl-settings-datetime.h +++ b/source/ubl-settings-datetime.h @@ -116,15 +116,15 @@ void on_sync_clicked(GtkWidget *, main_window *widgets); void on_ntp_sync(GtkWidget *, main_window *widgets); -void yon_save_parameters(main_window *widgets); +void yon_save_parameters(GtkWidget *self,main_window *widgets); -void on_config_save(GtkWidget *, main_window *widgets); +void on_config_save(GtkWidget *); -void on_config_save_global(GtkWidget *, main_window *widgets); +void on_config_save_global(GtkWidget *); -void on_config_save_local(GtkWidget *, main_window *widgets); +void on_config_save_local(GtkWidget *); -void on_config_save_custom(GtkWidget *, main_window *widgets); +void on_config_save_custom(GtkWidget *); void on_config_load_global();