application/application.c

changeset 8
726b24766437
parent 7
905ac52c910f
child 14
872d570ae843
--- a/application/application.c	Mon Jan 29 12:09:24 2024 +0100
+++ b/application/application.c	Mon Jan 29 18:50:04 2024 +0100
@@ -35,6 +35,7 @@
 
 #include "window.h"
 #include "config.h"
+#include "davcontroller.h"
 
 static DavContext* davctx;
 
@@ -51,8 +52,15 @@
 		exit(-1);
 	}
 
+	window_init();
+
+	// create new window
 	UiObject *win = window_create();
+	// create new browser document and attach it to the main window
+	DavBrowser *doc = davbrowser_create(win);
+	ui_attach_document(win->ctx, doc);
 
+	// create document for global settings (repolist, ...)
 	DavApp *app = application_create_app_document();
 	UiContext *global = ui_global_context();
 	ui_attach_document(global, app);
@@ -60,6 +68,11 @@
 	ui_show(win);
 }
 
+static void* davrepo_getname(void *elm, int unused) {
+	DavCfgRepository *repo = elm;
+	return repo->name.value.ptr;
+}
+
 void application_create_menu(void) {
 	// menu
 
@@ -68,7 +81,7 @@
 	ui_toolbar_item("Home", .icon = "Home");
 	ui_toolbar_item("NewWindow", .icon = "NewWindow");
     ui_toolbar_menu("Repo", .label = "Repository") {
-        ui_menu_itemlist(.varname = "repolist", .onselect = action_repo_selected);
+        ui_menu_itemlist(.varname = "repolist", .getvalue = davrepo_getname, .onselect = action_repo_selected);
     }
 	ui_toolbar_item("Refresh", .icon = "Refresh");
 	ui_toolbar_item("NewFolder", .icon = "NewFolder");
@@ -115,13 +128,10 @@
 	DavConfig *config = get_config();
 	DavCfgRepository *repo = config->repositories;
 
-
-	// TODO: free list content ptr
 	ui_list_clear(app->repos);
 
 	for (DavCfgRepository *repo = config->repositories; repo; repo = repo->next) {
-		// TODO: copy repo name
-		ui_list_append(app->repos, repo->name.value.ptr);
+		ui_list_append(app->repos, repo);
 	}
 }
 
@@ -132,5 +142,7 @@
 
 
 void action_repo_selected(UiEvent *event, void *data) {
-	
+	DavCfgRepository *repo = event->eventdata;
+	DavBrowser *browser = event->document;
+	davbrowser_connect2repo(event->obj, browser, repo);
 }

mercurial