diff --git a/gresource.xml b/gresource.xml index ddbefac..213b8b0 100644 --- a/gresource.xml +++ b/gresource.xml @@ -2,7 +2,6 @@ ubl-settings-datetime.glade - ubl-settings-datetime-error.glade ubl-settings-datetime.css diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 1d9c69f..0579c3f 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -32,7 +32,6 @@ add_custom_target(GLADE ubl-settings-datetime.glade) set(DEPENDFILES ../ubl-settings-datetime.glade - ../ubl-settings-datetime-error.glade ../gresource.xml ../ubl-settings-datetime-banner.png ../ubl-settings-datetime.css diff --git a/source/ubl-settings-datetime.c b/source/ubl-settings-datetime.c index 6e1941b..0ef7363 100644 --- a/source/ubl-settings-datetime.c +++ b/source/ubl-settings-datetime.c @@ -2,7 +2,34 @@ config main_config; -//functions +// functions + +int yon_char_parsed_compare(const void *a, const void *b){ + const config_str str_a = (const config_str)a; + const config_str str_b = (const config_str)b; + + // if (strstr(*str_a,"+")&&strstr(*str_b,"-")) return 1; + // else if (strstr(*str_a,"-")&&strstr(*str_b,"+")) return -1; + + // if (strstr(*str_a,"-")&&strstr(*str_b,"-")) return strcmp(*str_b,*str_a); + + if ((strstr(*str_a,"-")||strstr(*str_a,"+"))&&(strstr(*str_b,"-")||strstr(*str_b,"+"))){ + int a = atoi(*str_a+3); + int b = atoi(*str_b+3); + if (a>b) return 1; + else if (b>a) return -1; + else return 0; + } + return strcmp(*str_a, *str_b); +} + +config_str yon_char_parsed_sort(config_str parsed, int size){ + config_str new_parsed = yon_char_parsed_copy(parsed,size); + qsort(new_parsed,size,sizeof(char*),yon_char_parsed_compare); + return new_parsed; +} + +//Config functions void yon_save_parameters(main_window *widgets){ int mode = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->DHCPCombo)); switch(mode){ @@ -188,10 +215,12 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){ gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->ZoneCombo)); if (yon_file_is_directory(active)){ config_str parsed = yon_file_ls(active,&size); + config_str parsed_sorted = yon_char_parsed_sort(parsed,size); + yon_char_parsed_free(parsed,size); for (int i=0;iZoneCombo),parsed[i],_(parsed[i])); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->ZoneCombo),parsed_sorted[i],_(parsed_sorted[i])); } - if (size) yon_char_parsed_free(parsed,size); + if (size) yon_char_parsed_free(parsed_sorted,size); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ZoneCombo),0); } free(active); @@ -255,15 +284,21 @@ void on_ntp_sync(GtkWidget *, main_window *widgets){ switch(mode){ case 0: gtk_widget_set_sensitive(widgets->NTPEntry,0); + if (main_config.ntp_default){ + gtk_entry_set_text(GTK_ENTRY(widgets->NTPEntry),main_config.ntp_default); + } break; case 1: gtk_widget_set_sensitive(widgets->NTPEntry,0); + gtk_entry_set_text(GTK_ENTRY(widgets->NTPEntry),""); break; case 2: gtk_widget_set_sensitive(widgets->NTPEntry,0); + gtk_entry_set_text(GTK_ENTRY(widgets->NTPEntry),""); break; case 3: gtk_widget_set_sensitive(widgets->NTPEntry,1); + gtk_entry_set_text(GTK_ENTRY(widgets->NTPEntry),""); break; } } @@ -317,6 +352,17 @@ void config_init(){ main_config.lock_save_global=0; main_config.lock_save_local=0; main_config.load_mode=1; + main_config.ntp_default = NULL; + + char *ntp_command = yon_config_parameter_prepare_command(NTPSERVERS_parameter_command,"default",NULL,NULL); + int size; + config_str parsed = yon_config_load(ntp_command,&size); + if (size>0){ + if (strcmp(parsed[0],"(null)\n")){ + yon_char_remove_last_symbol(parsed[0],'\n'); + main_config.ntp_default = parsed[0]; + } + } } /**yon_main_window_complete(main_window *widgets) @@ -352,23 +398,23 @@ void yon_main_window_complete(main_window *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->DHCPCombo),"changed",G_CALLBACK(on_ntp_sync),widgets); - g_signal_connect(G_OBJECT(widgets->SyncButton),"clicked",G_CALLBACK(on_sync_clicked),widgets); - g_signal_connect(G_OBJECT(widgets->SyncHardwareButton),"clicked",G_CALLBACK(on_sync_hardware_clicked),widgets); - g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(on_region_changed),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->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->DHCPCombo),"changed",G_CALLBACK(on_ntp_sync),widgets); + g_signal_connect(G_OBJECT(widgets->SyncButton),"clicked",G_CALLBACK(on_sync_clicked),widgets); + g_signal_connect(G_OBJECT(widgets->SyncHardwareButton),"clicked",G_CALLBACK(on_sync_hardware_clicked),widgets); + g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(on_region_changed),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); } // Initial data loading { diff --git a/source/ubl-settings-datetime.h b/source/ubl-settings-datetime.h index ed7c714..eef5b5e 100644 --- a/source/ubl-settings-datetime.h +++ b/source/ubl-settings-datetime.h @@ -59,6 +59,7 @@ char *local; typedef struct { template_config_fields + char *ntp_default; } config; typedef struct { @@ -136,4 +137,8 @@ void on_date_clicked(GtkWidget *,main_window *widgets); void on_date_accept(GtkWidget *,main_window *widgets); -void on_date_cancel(GtkWidget *, main_window *widgets); \ No newline at end of file +void on_date_cancel(GtkWidget *, main_window *widgets); + +config_str yon_char_parsed_sort(config_str parsed, int size); + +int yon_char_parsed_compare(const void *a, const void *b); \ No newline at end of file diff --git a/ubl-settings-datetime.desktop b/ubl-settings-datetime.desktop index 8e77257..a117928 100644 --- a/ubl-settings-datetime.desktop +++ b/ubl-settings-datetime.desktop @@ -4,7 +4,7 @@ Name=Date and Time Name[ru]=Дата и Время GenericName=Date and Time GenericName[ru]=Дата и Время -Comment=Setting the system date and time +Comment=Date and time configuration Comment[ru]=Настройка даты и времени системы Type=Application Exec=pkexec ubl-settings-datetime diff --git a/ubl-settings-datetime.pot b/ubl-settings-datetime.pot index 7020e9c..6cdc9a0 100644 --- a/ubl-settings-datetime.pot +++ b/ubl-settings-datetime.pot @@ -633,12 +633,6 @@ msgstr "" msgid "Funafuti" msgstr "" -msgid "GMT-1" -msgstr "" - -msgid "GMT-3" -msgstr "" - msgid "Gaborone" msgstr "" diff --git a/ubl-settings-datetime_ru.po b/ubl-settings-datetime_ru.po index b2ad32a..9ef4e39 100644 --- a/ubl-settings-datetime_ru.po +++ b/ubl-settings-datetime_ru.po @@ -638,12 +638,6 @@ msgstr "Фритаун" msgid "Funafuti" msgstr "Фунафути" -msgid "GMT-1" -msgstr "ГМТ-1" - -msgid "GMT-3" -msgstr "ГМТ-3" - msgid "Gaborone" msgstr "Габороне"