From 564b63d508f350c907d8a5727230d3e81b2f3bf2 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 9 Apr 2025 17:46:51 +0600 Subject: [PATCH] Changed tooltip for services --- source/ubl-settings-services.c | 45 +++++++++++++++++++++------------- source/ubl-settings-services.h | 2 +- ubl-settings-services.glade | 16 +++++++----- 3 files changed, 39 insertions(+), 24 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 00a3d1f..3d1fc8a 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -1487,7 +1487,6 @@ gboolean on_tooltip_show(GtkWidget*, gint x, gint y, gboolean, GtkTooltip* toolt GtkTreeIter iter; if (gtk_tree_model_get_iter(model, &iter, path)) { gchar *name, *description, *state, *name_target; - gint64 activa, deactiva; int size; gtk_tree_model_get(model, &iter, 5, &name, 6, &description, 11, &state, -1); name_target = yon_char_new(name); @@ -1503,8 +1502,6 @@ gboolean on_tooltip_show(GtkWidget*, gint x, gint y, gboolean, GtkTooltip* toolt yon_char_remove_last_symbol(target[1], '\n'); free(yon_char_divide_search(target[2], "=", -1)); yon_char_remove_last_symbol(target[2], '\n'); - activa = g_ascii_strtoll(target[1], NULL, 10); - deactiva = g_ascii_strtoll(target[1], NULL, 10); gtk_label_set_text(GTK_LABEL(widgets->UnitLabel), target[0]); } gtk_label_set_text(GTK_LABEL(widgets->NameLabel), name); @@ -1516,21 +1513,35 @@ gboolean on_tooltip_show(GtkWidget*, gint x, gint y, gboolean, GtkTooltip* toolt free(state); if (target){ - gchar *formatted_activa = NULL; - gchar *formatted_deactiva = NULL; - if (activa) { - GDateTime *datetime = g_date_time_new_from_unix_local(activa); - formatted_activa = g_date_time_format(datetime, "%d:%m:%Y %T"); - g_date_time_unref(datetime); - } else { - formatted_activa = g_strdup(NULL_LABEL); + 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 (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_deactiva = 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 (deactiva) { - GDateTime *datetime = g_date_time_new_from_unix_local(deactiva); - formatted_deactiva = g_date_time_format(datetime, "%d:%m:%Y %T"); - g_date_time_unref(datetime); - } else { - formatted_deactiva = g_strdup(NULL_LABEL); + if (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); } gtk_label_set_text(GTK_LABEL(widgets->ActivateLabel), formatted_activa); diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index 1b5c73d..f5ab444 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -77,7 +77,7 @@ #define list_of_sockets_command "systemctl list-sockets --all --no-pager| sed -e 's/ */;/g'" #define list_of_timers_command "systemctl list-timers --all --no-pager| sed -e 's/ */;/g'" #define list_of_session_command "while IFS=\" \" read -r GET_SESSION GET_UID GET_USER GET_SEAT GET_TTY; do echo -e \"${GET_SESSION} $(loginctl session-status ${GET_SESSION} --no-page | sed -Enr \"s/^\\s*State: (.*)$/\1/p\") ${GET_UID} ${GET_USER} ${GET_SEAT} ${GET_TTY}\"; done < <(loginctl list-sessions --no-legend)" -#define get_activate_deactivate_times(target) yon_char_append("systemctl show -p ActiveEnterTimestampMonotonic -p InactiveEnterTimestampMonotonic -p Names ",target) +#define get_activate_deactivate_times(target) yon_char_append("systemctl show --timestamp=utc -p Names -p ActiveEnterTimestamp -p InactiveEnterTimestampMonotonic ",target) #define config_get_command(target) yon_char_append("cat ",target) diff --git a/ubl-settings-services.glade b/ubl-settings-services.glade index 860abb8..3a2b971 100644 --- a/ubl-settings-services.glade +++ b/ubl-settings-services.glade @@ -15,15 +15,19 @@ - + - + - + - + - + + + + + @@ -2081,7 +2085,7 @@ 20 - Seat ID + Seat ID | TTY True 4