diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 0c2e995..3706494 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -23,7 +23,13 @@ include_directories(${PWQUALITY_INCLUDE_DIRS}) link_directories(${PWQUALITY_LIBRARY_DIRS}) add_definitions(${PWQUALITY_CFLAGS_OTHER}) +# pkg_check_modules(TIMEZONEMAP REQUIRED timezonemap) +# include_directories(${TIMEZONEMAP_INCLUDE_DIRS}) +# link_directories(${TIMEZONEMAP_LIBRARY_DIRS}) +# add_definitions(${TIMEZONEMAP_CFLAGS_OTHER}) + find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0) +find_library(TIMEZONEMAP_LIBRARIES_FOUND timezonemap) option(WEBKIT_FOUND "No" OFF) if(WEBKIT_LIBRARIES_FOUND) @@ -33,6 +39,14 @@ if(WEBKIT_LIBRARIES_FOUND) link_directories(${WEBKIT_LIBRARY_DIRS}) add_definitions(${WEBKIT_CFLAGS_OTHER}) endif() +if(TIMEZONEMAP_LIBRARIES_FOUND) + message("TIMEZONEMAP ENABLED") + add_definitions(-DTIMEZONEMAP_INCLUDE) + PKG_CHECK_MODULES(TIMEZONEMAP REQUIRED timezonemap) + include_directories(${TIMEZONEMAP_INCLUDE_DIRS}) + link_directories(${TIMEZONEMAP_LIBRARY_DIRS}) + add_definitions(${TIMEZONEMAP_CFLAGS_OTHER}) +endif() set(GRESOURCE_C resources.c) set(GRESOURCE_XML gresource.xml) @@ -156,8 +170,10 @@ set(LIBRARIES ${VTE291_LIBRARIES} ${JSON_LIBRARIES} ${PWQUALITY_LIBRARIES} + ${TIMEZONEMAP_LIBRARIES} pthread ublsettings + timezonemap ublsettings-gtk3 ublsettingsui-gtk3 ) diff --git a/source/ubinstall-gtk-region.c b/source/ubinstall-gtk-region.c index 1870f43..f08be53 100644 --- a/source/ubinstall-gtk-region.c +++ b/source/ubinstall-gtk-region.c @@ -1,4 +1,5 @@ #include "ubinstall-gtk.h" +#include "timezonemap/cc-timezone-map.h" int yon_region_save(main_window *widgets){ if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->RegionCombo))==-1){ @@ -34,7 +35,37 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){ free(active); } +void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *); +void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *widgets){ + char *zone = yon_char_new(cc_timezone_location_get_zone(location)); + char *timezone = yon_char_divide_search(zone,"/",-1); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->RegionCombo),timezone); + while(gtk_events_pending()) gtk_main_iteration(); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->ZoneCombo),zone); +} + + void yon_region_init(main_window *widgets){ + #ifdef TIMEZONEMAP_INCLUDE + yon_debug_output("%s\n","TIMEZONEMAP enabled"); + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->RegionMapBox)); + if (list){ + GList *iter; + for (iter = list; iter; iter=iter->next){ + gtk_widget_destroy(iter->data); + } + g_list_free(list); + } + widgets->RegionMapTarget = GTK_WIDGET(cc_timezone_map_new()); + gtk_box_pack_start(GTK_BOX(widgets->RegionMapBox),GTK_WIDGET(widgets->RegionMapTarget),1,1,0); + g_signal_connect(G_OBJECT(widgets->RegionMapTarget),"location-changed",G_CALLBACK(on_map_selection_changed),widgets); + gtk_widget_show(GTK_WIDGET(widgets->RegionMapTarget)); + char *config_param = config(zone_parameter); + if (!yon_char_is_empty(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 int size; config_str parsed = NULL; parsed = yon_dir_get_contents(zone_path,&size); diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index f785b7b..773d5fe 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -564,6 +564,8 @@ void yon_main_window_create(main_window *widgets){ widgets->InstallerCountryFilter=GTK_TREE_MODEL(gtk_builder_get_object(builder,"InstallerCountryFilter")); widgets->InstallerLanguageList=GTK_LIST_STORE(gtk_builder_get_object(builder,"InstallerLanguageList")); // widgets->LanguageCombo=yon_gtk_builder_get_widget(builder,"LanguageCombo"); + widgets->RegionMapBox=yon_gtk_builder_get_widget(builder,"RegionMapBox"); + widgets->RegionMapTarget=NULL; widgets->RegionCombo=yon_gtk_builder_get_widget(builder,"RegionCombo"); widgets->ZoneCombo=yon_gtk_builder_get_widget(builder,"ZoneCombo"); widgets->RegionSensitiveSwitch = yon_gtk_builder_get_widget(builder,"RegionSensitiveSwitch"); @@ -750,6 +752,7 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(on_region_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->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->KeyboardLayoutTree),"cursor-changed",G_CALLBACK(on_layout_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->KeyboardDefaultLayoutsSwitch),"state-set",G_CALLBACK(on_layout_default_toggled),widgets); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index d5cc5dd..698d945 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -496,6 +496,10 @@ typedef struct GtkListStore *InstallerLanguageList; GtkTreeModel *InstallerCountryFilter; // GtkWidget *LanguageCombo; + + GtkWidget *RegionMapBox; + GtkWidget *RegionMapTarget; + GtkWidget *RegionSensitiveSwitch; GtkWidget *RegionCombo; GtkWidget *ZoneCombo; @@ -640,7 +644,6 @@ typedef struct GtkTreeModel *LanguagesFilter; GtkTreeModel *LayoutsFilter; - GtkWidget *RegionSensitiveSwitch; GtkWidget *HostnameSensitiveSwitch; GtkWidget *KernelListBox; diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 4fbb1d6..587d466 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -3643,7 +3643,6 @@ agreement True False center - 10 5 @@ -3746,6 +3745,32 @@ agreement False True + end + 0 + + + + + True + False + 0 + none + 35.299999237060547 + + + True + False + False + vertical + + + + + + + + True + True 0 @@ -3757,12 +3782,13 @@ agreement False True + end 1 - False + True True 3