WIP region changes

pull/207/head
parent 8915dc2e67
commit 2267dba47e

@ -1,6 +1,8 @@
#include "ubinstall-gtk.h" #include "ubinstall-gtk.h"
#ifdef TIMEZONEMAP_INCLUDE // #define TIMEZONEMAP_INCLUDE
#ifdef TIMEZONEMAP_INCLUDE
#include "timezonemap/cc-timezone-map.h" #include "timezonemap/cc-timezone-map.h"
#include "timezonemap/tz.h"
#endif #endif
int yon_region_save(main_window *widgets){ int yon_region_save(main_window *widgets){
@ -21,22 +23,6 @@ int yon_region_save(main_window *widgets){
return 1; return 1;
} }
#ifdef TIMEZONEMAP_INCLUDE
void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *);
void on_zone_changed(GtkWidget *, main_window *widgets){
g_signal_handlers_block_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets);
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));
if (!yon_char_is_empty(region)&&!yon_char_is_empty(zone)){
char *timezone = yon_char_unite(region,"/",zone,NULL);
cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),timezone);
free(timezone);
}
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets);
}
#endif
void on_region_changed(GtkComboBox *self, main_window *widgets){ void on_region_changed(GtkComboBox *self, main_window *widgets){
char *active = (char*)gtk_combo_box_get_active_id(self); char *active = (char*)gtk_combo_box_get_active_id(self);
active = yon_char_append("/usr/share/zoneinfo/",active); active = yon_char_append("/usr/share/zoneinfo/",active);
@ -54,6 +40,20 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){
} }
#ifdef TIMEZONEMAP_INCLUDE #ifdef TIMEZONEMAP_INCLUDE
void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *);
void on_zone_changed(GtkWidget *, main_window *widgets){
g_signal_handlers_block_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets);
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));
if (!yon_char_is_empty(region)&&!yon_char_is_empty(zone)){
char *timezone = yon_char_unite(region,"/",zone,NULL);
cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),timezone);
free(timezone);
}
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets);
}
void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *widgets){ void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *widgets){
if (!location) return; if (!location) return;
g_signal_handlers_block_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets); g_signal_handlers_block_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets);
@ -65,13 +65,33 @@ void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_wind
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets);
} }
#endif #endif
void on_region_entry_changed(GtkWidget *, main_window *widgets){
GtkTreeIter iter;
int found = 0;
for_iter(widgets->RegionTimezoneCompletionList, &iter){
char *target, *timezone;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->RegionTimezoneCompletionList),&iter,0,&target,1,&timezone,-1);
char *target_entry = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->RegionEntry));
if (!strcmp(target,target_entry)){
g_object_set_data(G_OBJECT(widgets->RegionEntry),zone_parameter,yon_char_new(timezone));
#ifdef TIMEZONEMAP_INCLUDE
cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),timezone);
#endif
found = 1;
}
}
if (!found){
g_object_set_data(G_OBJECT(widgets->RegionEntry),zone_parameter,NULL);
}
}
void yon_region_init(main_window *widgets){ void yon_region_init(main_window *widgets){
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->RegionCombo)); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->RegionCombo));
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KeyboardNumLockCombo)); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KeyboardNumLockCombo));
#ifdef TIMEZONEMAP_INCLUDE #ifdef TIMEZONEMAP_INCLUDE
yon_debug_output("%s\n","TIMEZONEMAP enabled");
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->RegionMapBox)); GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->RegionMapBox));
if (list){ if (list){
GList *iter; GList *iter;
@ -87,7 +107,6 @@ void yon_region_init(main_window *widgets){
char *config_param = config(zone_parameter); char *config_param = config(zone_parameter);
if (!yon_char_is_empty(config_param)){ if (!yon_char_is_empty(config_param)){
cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),config_param); cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),config_param);
// cc_timezone_map_set_location(CC_TIMEZONE_MAP(widgets->RegionMapTarget),lon, lat);
} }
#endif #endif
int size; int size;
@ -98,6 +117,16 @@ void yon_region_init(main_window *widgets){
char *path = yon_char_append(zone_path,parsed[i]); char *path = yon_char_append(zone_path,parsed[i]);
if (yon_file_is_directory(path)){ if (yon_file_is_directory(path)){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->RegionCombo),parsed[i],_(parsed[i])); gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->RegionCombo),parsed[i],_(parsed[i]));
char *active = yon_char_append("/usr/share/zoneinfo/",parsed[i]);
int zone_size;
config_str zone_parsed = yon_file_ls(active,&zone_size);
GtkTreeIter iter;
for (int j=0;j<zone_size;j++){
char *zone_name = yon_char_unite(_(zone_parsed[j]),", ",_(parsed[i]), NULL);
char *zone_string = yon_char_unite(parsed[i],"/",zone_parsed[j], NULL);
gtk_list_store_append(widgets->RegionTimezoneCompletionList,&iter);
gtk_list_store_set(widgets->RegionTimezoneCompletionList,&iter,0,zone_name,1,zone_string,-1);
}
} }
free(path); free(path);
} }

@ -585,8 +585,10 @@ void yon_main_window_create(main_window *widgets){
widgets->RegionCombo=yon_gtk_builder_get_widget(builder,"RegionCombo"); widgets->RegionCombo=yon_gtk_builder_get_widget(builder,"RegionCombo");
widgets->ZoneCombo=yon_gtk_builder_get_widget(builder,"ZoneCombo"); widgets->ZoneCombo=yon_gtk_builder_get_widget(builder,"ZoneCombo");
widgets->RegionSensitiveSwitch = yon_gtk_builder_get_widget(builder,"RegionSensitiveSwitch"); widgets->RegionSensitiveSwitch = yon_gtk_builder_get_widget(builder,"RegionSensitiveSwitch");
widgets->RegionEntry = yon_gtk_builder_get_widget(builder,"RegionEntry");
widgets->RegionTimezoneCompletionList = GTK_LIST_STORE(gtk_builder_get_object(builder,"RegionTimezoneCompletionList"));
widgets->RegionTimezoneCompletionFilter = GTK_TREE_MODEL_FILTER(gtk_builder_get_object(builder,"RegionTimezoneCompletionFilter"));
// widgets->UserImage=yon_gtk_builder_get_widget(builder,"UserImage");
widgets->UserRootNameEntry=yon_gtk_builder_get_widget(builder,"UserRootNameEntry"); widgets->UserRootNameEntry=yon_gtk_builder_get_widget(builder,"UserRootNameEntry");
widgets->UserRootLoginEntry=yon_gtk_builder_get_widget(builder,"UserRootLoginEntry"); widgets->UserRootLoginEntry=yon_gtk_builder_get_widget(builder,"UserRootLoginEntry");
widgets->UserRootPasswordCombo=yon_gtk_builder_get_widget(builder,"UserRootPasswordCombo"); widgets->UserRootPasswordCombo=yon_gtk_builder_get_widget(builder,"UserRootPasswordCombo");
@ -774,6 +776,7 @@ void yon_main_window_create(main_window *widgets){
#ifdef TIMEZONEMAP_INCLUDE #ifdef TIMEZONEMAP_INCLUDE
g_signal_connect(G_OBJECT(widgets->ZoneCombo),"changed",G_CALLBACK(on_zone_changed),widgets); g_signal_connect(G_OBJECT(widgets->ZoneCombo),"changed",G_CALLBACK(on_zone_changed),widgets);
#endif #endif
g_signal_connect(G_OBJECT(widgets->RegionEntry),"changed",G_CALLBACK(on_region_entry_changed),widgets);
g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionCombo); g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionCombo);
g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->ZoneCombo); g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->ZoneCombo);
g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionMapBox); g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionMapBox);

@ -504,6 +504,10 @@ typedef struct
GtkWidget *RegionSensitiveSwitch; GtkWidget *RegionSensitiveSwitch;
GtkWidget *RegionCombo; GtkWidget *RegionCombo;
GtkWidget *ZoneCombo; GtkWidget *ZoneCombo;
GtkWidget *RegionEntry;
GtkListStore *RegionTimezoneCompletionList;
GtkTreeModelFilter *RegionTimezoneCompletionFilter;
GtkWidget *InstallationRadio; GtkWidget *InstallationRadio;
GtkWidget *InstallationNearRadio; GtkWidget *InstallationNearRadio;
@ -1476,4 +1480,6 @@ void yon_update_translation(main_window *widgets);
void yon_translation_init(GtkBuilder *builder); void yon_translation_init(GtkBuilder *builder);
void yon_licence_load(main_window *widgets); void yon_licence_load(main_window *widgets);
void on_network_removed(GtkWidget *,network_info *info); void on_network_removed(GtkWidget *,network_info *info);
char *yon_bootloader_get_os_name(char *parameter); char *yon_bootloader_get_os_name(char *parameter);
gboolean on_region_refilter(GtkTreeModel* model, GtkTreeIter* iter, main_window *widgets);
void on_region_entry_changed(GtkWidget *, main_window *widgets);

@ -273,6 +273,24 @@
<property name="valign">center</property> <property name="valign">center</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.pan-left-symbolic</property> <property name="icon-name">com.ublinux.libublsettingsui-gtk3.pan-left-symbolic</property>
</object> </object>
<object class="GtkListStore" id="RegionTimezoneCompletionList">
<columns>
<!-- column-name region/zone -->
<column type="gchararray"/>
<!-- column-name timezone -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkEntryCompletion" id="entrycompletion1">
<property name="model">RegionTimezoneCompletionList</property>
<property name="text-column">0</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
<object class="GtkListStore" id="StartupAppsList"> <object class="GtkListStore" id="StartupAppsList">
<columns> <columns>
<!-- column-name Autostart --> <!-- column-name Autostart -->
@ -3772,6 +3790,18 @@ agreement</property>
</packing> </packing>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="RegionEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="completion">entrycompletion1</property>
</object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>

Loading…
Cancel
Save