commit 4d8235cb1d51c51af8a3b99512c73a277a7b5dd6
parent c05ae36358e2431a116e711a3f70155d08894a52
Author: lash <dev@holbrook.no>
Date: Mon, 11 Mar 2024 13:07:02 +0000
Send full context to ui setup
Diffstat:
5 files changed, 30 insertions(+), 14 deletions(-)
diff --git a/src/context.c b/src/context.c
@@ -1,14 +1,30 @@
#include <string.h>
+
#include "context.h"
#include "settings.h"
+#include "camera.h"
+#include "err.h"
+
+
+int kee_context_new(struct kee_context *ctx, void *front, struct kee_settings *settings) {
+ int r;
-void kee_context_new(struct kee_context *ctx, void *front, struct kee_settings *settings) {
memset(ctx, 0, sizeof(struct kee_context));
ctx->front = front;
ctx->state = 1;
ctx->settings = settings;
+
+ r = kee_camera_scan(&ctx->camera_devices);
+ if (r) {
+ return r;
+ }
+ return ERR_OK;
}
int kee_context_state(struct kee_context *ctx) {
return ctx->state;
}
+
+void kee_context_free(struct kee_context *ctx) {
+ kee_camera_free(&ctx->camera_devices);
+}
diff --git a/src/context.h b/src/context.h
@@ -3,15 +3,18 @@
#include "settings.h"
#include "db.h"
+#include "camera.h"
struct kee_context {
void *front;
struct kee_settings *settings;
+ struct kee_camera_devices camera_devices;
struct db_ctx db;
int state;
};
-void kee_context_new(struct kee_context *ctx, void *front, struct kee_settings *settings);
+int kee_context_new(struct kee_context *ctx, void *front, struct kee_settings *settings);
int kee_context_state(struct kee_context *ctx);
+void kee_context_free(struct kee_context *ctx);
#endif // _KEE_CONTEXT
diff --git a/src/gtk/main.c b/src/gtk/main.c
@@ -14,8 +14,8 @@ static void startup(GtkApplication *app, KeeUicontext *ctx) {
menu_setup(ctx);
}
-static void activate(GtkApplication *app, struct ui_container *ui) {
- ui_build(app, ui);
+static void activate(GtkApplication *app, struct kee_context *ctx) {
+ ui_build(app, ctx);
}
static void deactivate(GtkApplication *app, gpointer user_data) {
@@ -29,12 +29,6 @@ int main(int argc, char **argv) {
struct kee_settings settings;
struct kee_context ctx;
struct ui_container ui;
- struct kee_camera_devices camera_devices;
-
- r = kee_camera_scan(&camera_devices);
- if (r) {
- return r;
- }
r = ui_init(&ui);
if (r) {
@@ -51,13 +45,13 @@ int main(int argc, char **argv) {
db_connect(&ctx.db, "./testdata_mdb");
g_signal_connect (ui.gapp, "startup", G_CALLBACK (startup), uctx);
- g_signal_connect (ui.gapp, "activate", G_CALLBACK (activate), &ui);
+ g_signal_connect (ui.gapp, "activate", G_CALLBACK (activate), &ctx);
g_signal_connect (ui.gapp, "shutdown", G_CALLBACK (deactivate), uctx);
g_signal_connect (uctx, "scan_want", G_CALLBACK( ui_handle_scan) , &ctx);
r = g_application_run (G_APPLICATION (ui.gapp), argc, argv);
g_object_unref(ui.gapp);
- kee_camera_free(&camera_devices);
+ kee_context_free(&ctx);
return r;
}
diff --git a/src/gtk/ui.c b/src/gtk/ui.c
@@ -78,8 +78,11 @@ static GtkWidget* ui_build_view(struct ui_container *ui) {
return GTK_WIDGET(ui->front_view);
}
-void ui_build(GtkApplication *app, struct ui_container *ui) {
+void ui_build(GtkApplication *app, struct kee_context *ctx) {
GtkWidget *widget;
+ struct ui_container *ui;
+
+ ui = (struct ui_container*)ctx->front;
ui->win = GTK_APPLICATION_WINDOW(gtk_application_window_new (app));
ui->stack = GTK_STACK(gtk_stack_new());
diff --git a/src/gtk/ui.h b/src/gtk/ui.h
@@ -28,7 +28,7 @@ struct ui_container {
};
int ui_init(struct ui_container *ui);
-void ui_build(GtkApplication *app, struct ui_container *ui);
+void ui_build(GtkApplication *app, struct kee_context *ctx);
int ui_state_change(struct ui_container *ui, int set, int reset);
void ui_free(struct ui_container *ui);