kee

Offline IOU signer with QR as transport
git clone https://holbrook.no/src/kee
Info | Log | Files | Refs | README | LICENSE

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:
Msrc/context.c | 18+++++++++++++++++-
Msrc/context.h | 5++++-
Msrc/gtk/main.c | 14++++----------
Msrc/gtk/ui.c | 5++++-
Msrc/gtk/ui.h | 2+-
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);