From 99360ddc9441ad8a46d40521f6fa0b70f5bc58b8 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 14 Apr 2025 15:48:59 +0600 Subject: [PATCH] Added switch to session button --- source/ubl-settings-services.c | 32 ++++++++++++++++++++--- source/ubl-settings-services.h | 5 +++- ubl-settings-services.glade | 47 +++++++++++++++++++++++++--------- 3 files changed, 67 insertions(+), 17 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 21fbfad..22c5bdd 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -553,14 +553,16 @@ void on_sessions_selection_changed(GtkWidget *, main_window *widgets){ gtk_widget_set_sensitive(widgets->SessionStopButton,1); gtk_widget_set_sensitive(widgets->SessionBlockButton,1); gtk_widget_set_sensitive(widgets->SessionStartButton,1); + gtk_widget_set_sensitive(widgets->SessionSwitchButton,1); } else { gtk_widget_set_sensitive(widgets->SessionStopButton,0); gtk_widget_set_sensitive(widgets->SessionBlockButton,0); gtk_widget_set_sensitive(widgets->SessionStartButton,0); + gtk_widget_set_sensitive(widgets->SessionSwitchButton,0); } } -void yon_sessions_update(main_window *widgets){ +gboolean yon_sessions_update(main_window *widgets){ gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SessionMainTree),NULL); gtk_list_store_clear(widgets->SessionsList); int sessions_size; @@ -574,10 +576,11 @@ void yon_sessions_update(main_window *widgets){ else parsed[1]=INACTIVE_LABEL; if (parsed&&size>4){ gtk_list_store_append(widgets->SessionsList,&iter); - gtk_list_store_set(widgets->SessionsList,&iter,0,atoi(parsed[0]),1,parsed[1],2,atoi(parsed[2]),3,parsed[3],4,parsed[4],-1); + gtk_list_store_set(widgets->SessionsList,&iter,0,atoi(parsed[0]),1,parsed[1],2,atoi(parsed[2]),3,parsed[3],4,yon_char_unite(parsed[4]," | ",parsed[5],NULL),5,parsed[4],6,parsed[5],-1); } } gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SessionMainTree),GTK_TREE_MODEL(widgets->SessionsList)); + return G_SOURCE_REMOVE; } void on_session_activate(GtkWidget *self, main_window *widgets){ @@ -619,6 +622,25 @@ void on_session_end(GtkWidget *self, main_window *widgets){ } } +void on_session_unlock(GtkWidget *self, main_window *widgets){ + GtkTreeModel *model = GTK_TREE_MODEL(widgets->SessionsList); + GtkTreeIter iter; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SessionMainTree)),&model,&iter)){ + int id; + gtk_tree_model_get(model,&iter,0,&id,-1); + dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); + char *convert = yon_char_from_int(id); + data->action_text = SESSION_ACTIVATE_TOOLTIP_LABEL(convert); + data->data = NULL; + data->function = NULL; + if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){ + yon_launch(session_activate_session(convert)); + free(convert); + yon_sessions_update(widgets); + } + } +} + void on_session_block(GtkWidget *self, main_window *widgets){ GtkTreeModel *model = GTK_TREE_MODEL(widgets->SessionsList); GtkTreeIter iter; @@ -1349,7 +1371,7 @@ void* yon_interface_update(main_window *widgets){ g_idle_add((GSourceFunc)yon_system_config_set,data); } } - yon_sessions_update(widgets); + g_idle_add((GSourceFunc)yon_sessions_update,widgets); for (size_t i=0;iSessionRestartButton=yon_gtk_builder_get_widget(builder,"SessionRestartButton"); widgets->SessionMainTree=yon_gtk_builder_get_widget(builder,"SessionMainTree"); + widgets->SessionSwitchButton=yon_gtk_builder_get_widget(builder,"SessionSwitchButton"); widgets->SessionStartButton=yon_gtk_builder_get_widget(builder,"SessionStartButton"); widgets->SessionStopButton=yon_gtk_builder_get_widget(builder,"SessionStopButton"); widgets->SessionBlockButton=yon_gtk_builder_get_widget(builder,"SessionBlockButton"); @@ -1817,7 +1840,8 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->ConfigUpdateButton),"clicked",G_CALLBACK(on_interface_update),widgets); g_signal_connect(G_OBJECT(widgets->SessionRestartButton),"clicked",G_CALLBACK(on_interface_update),widgets); - g_signal_connect(G_OBJECT(widgets->SessionStartButton),"clicked",G_CALLBACK(on_session_activate),widgets); + g_signal_connect(G_OBJECT(widgets->SessionSwitchButton),"clicked",G_CALLBACK(on_session_activate),widgets); + g_signal_connect(G_OBJECT(widgets->SessionStartButton),"clicked",G_CALLBACK(on_session_unlock),widgets); g_signal_connect(G_OBJECT(widgets->SessionStopButton),"clicked",G_CALLBACK(on_session_end),widgets); g_signal_connect(G_OBJECT(widgets->SessionBlockButton),"clicked",G_CALLBACK(on_session_block),widgets); g_signal_connect(G_OBJECT(widgets->SessionMainTree),"cursor-changed",G_CALLBACK(on_sessions_selection_changed),widgets); diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index ab20d3e..f6083a8 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -227,6 +227,7 @@ typedef struct { GtkWidget *SessionRestartButton; GtkWidget *SessionMainTree; + GtkWidget *SessionSwitchButton; GtkWidget *SessionStartButton; GtkWidget *SessionStopButton; GtkWidget *SessionBlockButton; @@ -388,7 +389,9 @@ void on_service_restart_confirmed(GtkWidget *self,char *service_name); void on_system_system_restart_clicked(GtkWidget *self, main_window *widgets); -void yon_sessions_update(main_window *widgets); +gboolean yon_sessions_update(main_window *widgets); + +void on_session_unlock(GtkWidget *self, main_window *widgets); void on_session_activate(); diff --git a/ubl-settings-services.glade b/ubl-settings-services.glade index 9cd9768..e4c66c8 100644 --- a/ubl-settings-services.glade +++ b/ubl-settings-services.glade @@ -369,12 +369,12 @@ True False - com.ublinux.ubl-settings-services.stop-symbolic + com.ublinux.libublsettingsui-gtk3.move-away-symbolic True False - com.ublinux.ubl-settings-services.play-symbolic + com.ublinux.libublsettingsui-gtk3.changes-allow-symbolic True @@ -441,6 +441,11 @@ False com.ublinux.libublsettingsui-gtk3.sync-symbolic + + True + False + com.ublinux.libublsettingsui-gtk3.move-in-symbolic + True False @@ -474,7 +479,7 @@ True False - com.ublinux.ubl-settings-services.lock-symbolic + com.ublinux.libublsettingsui-gtk3.changes-prevent-symbolic @@ -1970,13 +1975,13 @@ - + True False True True - Activate session - image11 + Terminate session + image24 @@ -1988,13 +1993,13 @@ - + True False True True - Terminate session - image10 + Lock session + image9 @@ -2006,13 +2011,13 @@ - + True False True True - Lock session - image9 + Activate session + image11 @@ -2023,6 +2028,24 @@ 4 + + + True + False + True + True + Terminate session + image10 + + + + False + True + 5 + + False