From 6909659f3f21e58c9c01b200e1a51b72fef077f7 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 9 Oct 2025 14:00:18 +0600 Subject: [PATCH] Tooltip loading changes --- source/ubl-settings-services.c | 133 ++++++++++++++++++--------------- source/ubl-settings-services.h | 4 +- ubl-settings-services.glade | 10 ++- 3 files changed, 84 insertions(+), 63 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index d142d37..f667e90 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -1796,76 +1796,89 @@ gboolean on_tooltip_show(GtkWidget*, gint x, gint y, gboolean, GtkTooltip* toolt if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tree), tree_x, tree_y, &path, NULL, NULL, NULL)) { GtkTreeIter iter; if (gtk_tree_model_get_iter(model, &iter, path)) { - gchar *name, *description, *state, *name_target, *load_status, *active_status,*unit_path; + gchar *name, *description, *state, *name_target, *load_status, *active_status,*unit_path,*activate_time,*deactivate_time; int size; - gtk_tree_model_get(model, &iter, 5, &name, 6, &description, 13, &state, 14,&load_status,15,&active_status,16,&unit_path, -1); + gtk_tree_model_get(model, &iter, 5, &name, 6, &description, 13, &state, 14,&load_status,15,&active_status,16,&unit_path,17,&activate_time,18,&deactivate_time, -1); name_target = yon_char_new(name); if (name[0]=='-'){ name_target = yon_char_append("-- ",name_target); } - config_str target = yon_config_load(yon_debug_output("%s\n",get_activate_deactivate_times(name_target)), &size); - free(name_target); - if (target){ - free(yon_char_divide_search(target[0], "=", -1)); - yon_char_remove_last_symbol(target[0], '\n'); - free(yon_char_divide_search(target[1], "=", -1)); - yon_char_remove_last_symbol(target[1], '\n'); - free(yon_char_divide_search(target[2], "=", -1)); - yon_char_remove_last_symbol(target[2], '\n'); - } - - state[0]=g_ascii_toupper(state[0]); - load_status[0]=g_ascii_toupper(load_status[0]); - active_status[0]=g_ascii_toupper(active_status[0]); - gtk_label_set_text(GTK_LABEL(widgets->UnitLabel), unit_path); - gtk_label_set_markup(GTK_LABEL(widgets->NameLabel), yon_char_unite("",name,"",NULL)); - gtk_label_set_text(GTK_LABEL(widgets->DescriptionLabel), description); - gtk_label_set_text(GTK_LABEL(widgets->StatusQueryLabel), _(state)); - gtk_label_set_text(GTK_LABEL(widgets->AutostartLabel), _(load_status)); - gtk_label_set_text(GTK_LABEL(widgets->TooltipStatusLabel), _(active_status)); - - free(name); - free(description); - free(state); - - if (target){ - gchar *formatted_activa = g_strdup(NULL_LABEL);//!yon_char_is_empty(target[1])&&strcmp(target[1],"0")?target[1]:g_strdup(NULL_LABEL); - gchar *formatted_deactiva = g_strdup(NULL_LABEL);//!yon_char_is_empty(target[2])&&strcmp(target[2],"0")?target[2]:g_strdup(NULL_LABEL); - if (!yon_char_is_empty(target[1])&&strcmp(target[1],"0")){ - int activated_size; - config_str activated_parsed = yon_char_parse(target[1],&activated_size," "); - int date_size; - config_str date_parsed = yon_char_parse(activated_parsed[1],&date_size,"-"); - if (date_size>2){ - char *temp = date_parsed[0]; - date_parsed[0]=date_parsed[2]; - date_parsed[2]=temp; - formatted_activa = yon_char_unite(date_parsed?yon_char_parsed_to_string(date_parsed,date_size,"."):""," ",activated_parsed[2],NULL); - if (date_size) yon_char_parsed_free(date_parsed,date_size); - } - if (activated_size) yon_char_parsed_free(activated_parsed,activated_size); + + state[0]=g_ascii_toupper(state[0]); + load_status[0]=g_ascii_toupper(load_status[0]); + active_status[0]=g_ascii_toupper(active_status[0]); + gtk_label_set_text(GTK_LABEL(widgets->UnitLabel), unit_path); + gtk_label_set_markup(GTK_LABEL(widgets->NameLabel), yon_char_unite("",name,"",NULL)); + gtk_label_set_text(GTK_LABEL(widgets->DescriptionLabel), description); + gtk_label_set_text(GTK_LABEL(widgets->StatusQueryLabel), _(state)); + gtk_label_set_text(GTK_LABEL(widgets->AutostartLabel), _(load_status)); + gtk_label_set_text(GTK_LABEL(widgets->TooltipStatusLabel), _(active_status)); + + + free(name); + free(description); + free(state); + + + if (yon_char_is_empty(activate_time)||yon_char_is_empty(deactivate_time)){ + config_str target = yon_config_load(yon_debug_output("%s\n",get_activate_deactivate_times(name_target)), &size); + free(name_target); + if (target){ + free(yon_char_divide_search(target[0], "=", -1)); + yon_char_remove_last_symbol(target[0], '\n'); + free(yon_char_divide_search(target[1], "=", -1)); + yon_char_remove_last_symbol(target[1], '\n'); + free(yon_char_divide_search(target[2], "=", -1)); + yon_char_remove_last_symbol(target[2], '\n'); } - if (!yon_char_is_empty(target[2])&&strcmp(target[2],"0")){ - int deactivated_size; - config_str deactivated_parsed = yon_char_parse(target[2],&deactivated_size," "); - int date_size; - config_str date_parsed = yon_char_parse(deactivated_parsed[1],&date_size,"-"); - if (date_size>=2){ - char *temp = date_parsed[0]; - date_parsed[0]=date_parsed[2]; - date_parsed[2]=temp; - formatted_deactiva = yon_char_unite(date_parsed?yon_char_parsed_to_string(date_parsed,date_size,"."):""," ",deactivated_parsed[2],NULL); - if (date_size) yon_char_parsed_free(date_parsed,date_size); + if (target){ + gchar *formatted_activa = g_strdup(NULL_LABEL);//!yon_char_is_empty(target[1])&&strcmp(target[1],"0")?target[1]:g_strdup(NULL_LABEL); + gchar *formatted_deactiva = g_strdup(NULL_LABEL);//!yon_char_is_empty(target[2])&&strcmp(target[2],"0")?target[2]:g_strdup(NULL_LABEL); + if (!yon_char_is_empty(target[1])&&strcmp(target[1],"0")){ + int activated_size; + config_str activated_parsed = yon_char_parse(target[1],&activated_size," "); + int date_size; + config_str date_parsed = yon_char_parse(activated_parsed[1],&date_size,"-"); + if (date_size>2){ + char *temp = date_parsed[0]; + date_parsed[0]=date_parsed[2]; + date_parsed[2]=temp; + formatted_activa = yon_char_unite(date_parsed?yon_char_parsed_to_string(date_parsed,date_size,"."):""," ",activated_parsed[2],NULL); + if (date_size) yon_char_parsed_free(date_parsed,date_size); + } + if (activated_size) yon_char_parsed_free(activated_parsed,activated_size); } - if (deactivated_size) yon_char_parsed_free(deactivated_parsed,deactivated_size); - } + if (!yon_char_is_empty(target[2])&&strcmp(target[2],"0")){ + int deactivated_size; + config_str deactivated_parsed = yon_char_parse(target[2],&deactivated_size," "); + int date_size; + config_str date_parsed = yon_char_parse(deactivated_parsed[1],&date_size,"-"); + if (date_size>=2){ + char *temp = date_parsed[0]; + date_parsed[0]=date_parsed[2]; + date_parsed[2]=temp; + formatted_deactiva = yon_char_unite(date_parsed?yon_char_parsed_to_string(date_parsed,date_size,"."):""," ",deactivated_parsed[2],NULL); + if (date_size) yon_char_parsed_free(date_parsed,date_size); + } + if (deactivated_size) yon_char_parsed_free(deactivated_parsed,deactivated_size); + } + GtkTreeIter itar; + yon_tree_model_sort_filter_get_model_iter(GTK_TREE_MODEL_SORT(model),&iter,&itar); + GtkTreeModel *filter_model = gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(model)); + GtkTreeModel *list = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(filter_model)); - gtk_label_set_text(GTK_LABEL(widgets->ActivateLabel), formatted_activa); - gtk_label_set_text(GTK_LABEL(widgets->DeactivateLabel), formatted_deactiva); - g_free(formatted_activa); - g_free(formatted_deactiva); + gtk_list_store_set(GTK_LIST_STORE(list),&itar,17,formatted_activa,18,formatted_deactiva,-1); + + activate_time = yon_char_new(formatted_activa); + deactivate_time = yon_char_new(formatted_deactiva); + + g_free(formatted_activa); + g_free(formatted_deactiva); + } + gtk_label_set_text(GTK_LABEL(widgets->ActivateLabel), activate_time); + gtk_label_set_text(GTK_LABEL(widgets->DeactivateLabel), deactivate_time); } gtk_tree_path_free(path); return TRUE; diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index 9947e8d..3e6b8b7 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -154,8 +154,8 @@ #define reload_systemd_root_command "systemctl daemon-reload" #define reexec_systemd_root_command "systemctl daemon-reexec" -#define reload_systemd_user_command "systemctl --user daemon-reload" -#define reexec_systemd_user_command "systemctl --user daemon-reexec" +#define reload_systemd_user_command yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ daemon-reload",NULL) +#define reexec_systemd_user_command yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ daemon-reexec",NULL) #define session_activate_session(target) yon_char_append("loginctl activate ",target) #define session_terminate_session(target) yon_char_append("loginctl terminate-session ",target) diff --git a/ubl-settings-services.glade b/ubl-settings-services.glade index 7c5916a..8bc1385 100644 --- a/ubl-settings-services.glade +++ b/ubl-settings-services.glade @@ -1,5 +1,5 @@ - + @@ -75,6 +75,10 @@ + + + + @@ -456,6 +460,10 @@ + + + +