diff --git a/source/ubl-settings-datetime.c b/source/ubl-settings-datetime.c index 6e1941b..96ea106 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); @@ -352,23 +381,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..d70e4f6 100644 --- a/source/ubl-settings-datetime.h +++ b/source/ubl-settings-datetime.h @@ -136,4 +136,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.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 "Габороне"