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
+
+
+
+ True
+ True
0
@@ -3757,12 +3782,13 @@ agreement
False
True
+ end
1
- False
+ True
True
3