commit 6986873a6c61cb43cef09af526dee7a5c2aa1dfb
parent 16dad8707c9dbcd0edc264050a4c6abbb6ae1bc9
Author: lash <dev@holbrook.no>
Date:   Tue, 19 Mar 2024 16:59:37 +0000
Connect import source toggle to callback, action
Diffstat:
2 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/src/gtk/ui.c b/src/gtk/ui.c
@@ -19,6 +19,13 @@ static void new_item(GtkListItemFactory *factory, GtkListItem *item, gpointer us
 static void scan_menu_handle_state(KeeUicontext *uctx, char state_hint, kee_state_t *new_state, kee_state_t *old_state, GObject *head) {
 }
 
+static void act_scan_select(GActionGroup *act, GtkActionBar *foot) {
+	GVariant *v;
+
+	v = g_action_group_get_action_state(act, "src");
+	g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "have act select: %d", g_variant_get_uint32(v));
+}
+
 //int ui_init(struct ui_container *ui) {
 //	gtk_init();
 //	gst_init(0, NULL);
@@ -134,28 +141,48 @@ static GtkWidget* ui_build_scan_footer(KeeUicontext *uctx) {
 	GtkWidget *foot;
 	GtkWidget *butt;
 	GtkToggleButton *butt_prev;
+	GActionGroup *ag;
+	GAction *act;
+	GVariant *v;
 
 	foot = gtk_action_bar_new();
 
+	v = g_variant_new_uint32(0);
+	ag = G_ACTION_GROUP(g_simple_action_group_new());
+	act = G_ACTION(g_simple_action_new_stateful("src", G_VARIANT_TYPE_UINT32, v));
+	g_action_map_add_action(G_ACTION_MAP(ag), act);
+
+	v = g_variant_new_uint32(KEE_ACT_SCAN_QR);
 	butt = gtk_toggle_button_new();
 	gtk_button_set_icon_name(GTK_BUTTON(butt), "insert-image");
 	gtk_action_bar_pack_start(GTK_ACTION_BAR(foot), butt);
+	gtk_actionable_set_action_name(GTK_ACTIONABLE(butt), "import.src");
+	gtk_actionable_set_action_target_value(GTK_ACTIONABLE(butt), v);
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(butt), true);
 
 	butt_prev = GTK_TOGGLE_BUTTON(butt);
+	v = g_variant_new_uint32(KEE_ACT_SCAN_FILE);
 	butt = gtk_toggle_button_new();
 	gtk_toggle_button_set_group(GTK_TOGGLE_BUTTON(butt), butt_prev);
 	gtk_button_set_icon_name(GTK_BUTTON(butt), "document-new");
 	gtk_action_bar_pack_start(GTK_ACTION_BAR(foot), butt);
+	gtk_actionable_set_action_name(GTK_ACTIONABLE(butt), "import.src");
+	gtk_actionable_set_action_target_value(GTK_ACTIONABLE(butt), v);
 
 	butt_prev = GTK_TOGGLE_BUTTON(butt);
+	v = g_variant_new_uint32(KEE_ACT_SCAN_TEXT);
 	butt = gtk_toggle_button_new();
 	gtk_toggle_button_set_group(GTK_TOGGLE_BUTTON(butt), butt_prev);
 	gtk_button_set_icon_name(GTK_BUTTON(butt), "document-save");
 	gtk_action_bar_pack_start(GTK_ACTION_BAR(foot), butt);
+	gtk_actionable_set_action_name(GTK_ACTIONABLE(butt), "import.src");
+	gtk_actionable_set_action_target_value(GTK_ACTIONABLE(butt), v);
+
+	g_signal_connect(ag, "action-state-changed", G_CALLBACK(act_scan_select), ag);
 
 	g_object_set_data(G_OBJECT(uctx), KEE_W_FOOTER, GTK_ACTION_BAR(foot));
-	gtk_widget_set_visible(foot, false);
+
+	gtk_widget_insert_action_group(foot, "import", ag);
 
 	g_signal_connect (uctx, "state", G_CALLBACK(scan_menu_handle_state), foot);
 	return foot;
@@ -231,7 +258,8 @@ void ui_build(GtkApplication *app, KeeUicontext *uctx) {
 	widget = ui_build_scan(uctx);
 	kee_view_add(widget, "scan");
 
-	kee_view_next("view");
+	//kee_view_next("view");
+	kee_view_next("scan");
 	kee_view_next("unlock");
 
 	
diff --git a/src/gtk/ui.h b/src/gtk/ui.h
@@ -3,6 +3,12 @@
 
 #include <gtk/gtk.h>
 
+enum KeeActScan {
+	KEE_ACT_SCAN_QR = 1,
+	KEE_ACT_SCAN_FILE,
+	KEE_ACT_SCAN_TEXT
+};
+
 #include "kee-uicontext.h"
 
 void ui_build(GtkApplication *app, KeeUicontext *uctx);