From 026e54d7b956552ed92aa6db903c42e411756cbe Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 7 Feb 2024 17:25:55 +0600 Subject: [PATCH] User's groups now load correctly into groups choose window --- source/ubl-settings-usergroups.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 157c54a..cd8e344 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -468,6 +468,12 @@ void on_groups_multiple_clicked(GtkWidget *self, GtkEntry *output_target){ gtk_window_set_title(GTK_WINDOW(window->GroupsWindow),ADDITIONAL_GROUPS_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->HeaderLabel),ADDITIONAL_GROUPS_TITLE_LABEL); GtkTreeIter iter, itar; + char *output = (char*)gtk_entry_get_text(output_target); + int size=0; + config_str parsed=NULL; + if (!yon_char_is_empty(output)){ + parsed = yon_char_parse(output,&size,","); + } int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.groups_list),&iter); for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.groups_list),&iter)){ char *groupname; @@ -476,6 +482,16 @@ void on_groups_multiple_clicked(GtkWidget *self, GtkEntry *output_target){ gtk_list_store_set(window->list,&itar,1,groupname,-1); free(groupname); } + valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->list),&iter); + for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&iter)){ + char *groupname; + gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,1,&groupname,-1); + if (parsed){ + if (yon_char_parsed_check_exist(parsed,size,groupname)>-1){ + gtk_list_store_set(window->list,&iter,0,1,-1); + } + } + } dictionary *dict = NULL; yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); yon_dictionary_add_or_create_if_exists_with_data(dict,"output",output_target); @@ -1300,7 +1316,10 @@ void on_user_save(GtkWidget *self, dictionary *dict){ } additional_groups = (char*)gtk_entry_get_text(GTK_ENTRY(window->userAdditionalGroupsEntry)); - + char *default_groups = yon_config_get_by_key("USERGROUPS"); + if (!yon_char_is_empty(default_groups)&&!strcmp(default_groups,additional_groups)){ + additional_groups=""; + } long password_change_interval_minimum_active = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userPasswordChangeDelayMinimumSpin)); if (password_change_interval_minimum_active>0){ password_change_interval_minimum = yon_char_from_long(password_change_interval_minimum_active); @@ -1693,8 +1712,12 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), parsed_size>2?parameters[2]:""); } if (parsed_size>3){ - if (strcmp(parameters[3],"x")) - gtk_entry_set_text(GTK_ENTRY(window->userAdditionalGroupsEntry), parsed_size>3?parameters[3]:""); + if (strcmp(parameters[3],"x")){ + gtk_entry_set_text(GTK_ENTRY(window->userAdditionalGroupsEntry), parameters[3]); + } else { + char *default_groups = yon_config_get_by_key("USERGROUPS"); + gtk_entry_set_text(GTK_ENTRY(window->userAdditionalGroupsEntry), default_groups); + } } if (parsed_size>4&&!yon_char_is_empty(parameters[4])){