application/application.c

changeset 8
726b24766437
parent 7
905ac52c910f
child 14
872d570ae843
equal deleted inserted replaced
7:905ac52c910f 8:726b24766437
33 33
34 #include <libidav/webdav.h> 34 #include <libidav/webdav.h>
35 35
36 #include "window.h" 36 #include "window.h"
37 #include "config.h" 37 #include "config.h"
38 #include "davcontroller.h"
38 39
39 static DavContext* davctx; 40 static DavContext* davctx;
40 41
41 void application_init(void) { 42 void application_init(void) {
42 davctx = dav_context_new(); 43 davctx = dav_context_new();
49 if (load_config(davctx)) { 50 if (load_config(davctx)) {
50 // TODO: error 51 // TODO: error
51 exit(-1); 52 exit(-1);
52 } 53 }
53 54
55 window_init();
56
57 // create new window
54 UiObject *win = window_create(); 58 UiObject *win = window_create();
59 // create new browser document and attach it to the main window
60 DavBrowser *doc = davbrowser_create(win);
61 ui_attach_document(win->ctx, doc);
55 62
63 // create document for global settings (repolist, ...)
56 DavApp *app = application_create_app_document(); 64 DavApp *app = application_create_app_document();
57 UiContext *global = ui_global_context(); 65 UiContext *global = ui_global_context();
58 ui_attach_document(global, app); 66 ui_attach_document(global, app);
59 67
60 ui_show(win); 68 ui_show(win);
69 }
70
71 static void* davrepo_getname(void *elm, int unused) {
72 DavCfgRepository *repo = elm;
73 return repo->name.value.ptr;
61 } 74 }
62 75
63 void application_create_menu(void) { 76 void application_create_menu(void) {
64 // menu 77 // menu
65 78
66 79
67 // toolbar 80 // toolbar
68 ui_toolbar_item("Home", .icon = "Home"); 81 ui_toolbar_item("Home", .icon = "Home");
69 ui_toolbar_item("NewWindow", .icon = "NewWindow"); 82 ui_toolbar_item("NewWindow", .icon = "NewWindow");
70 ui_toolbar_menu("Repo", .label = "Repository") { 83 ui_toolbar_menu("Repo", .label = "Repository") {
71 ui_menu_itemlist(.varname = "repolist", .onselect = action_repo_selected); 84 ui_menu_itemlist(.varname = "repolist", .getvalue = davrepo_getname, .onselect = action_repo_selected);
72 } 85 }
73 ui_toolbar_item("Refresh", .icon = "Refresh"); 86 ui_toolbar_item("Refresh", .icon = "Refresh");
74 ui_toolbar_item("NewFolder", .icon = "NewFolder"); 87 ui_toolbar_item("NewFolder", .icon = "NewFolder");
75 ui_toolbar_item("NewFile", .icon = "Add"); 88 ui_toolbar_item("NewFile", .icon = "Add");
76 ui_toolbar_item("Upload", .label = "Upload", .icon = "Upload"); 89 ui_toolbar_item("Upload", .label = "Upload", .icon = "Upload");
113 126
114 void application_update_repolist(DavApp *app) { 127 void application_update_repolist(DavApp *app) {
115 DavConfig *config = get_config(); 128 DavConfig *config = get_config();
116 DavCfgRepository *repo = config->repositories; 129 DavCfgRepository *repo = config->repositories;
117 130
118
119 // TODO: free list content ptr
120 ui_list_clear(app->repos); 131 ui_list_clear(app->repos);
121 132
122 for (DavCfgRepository *repo = config->repositories; repo; repo = repo->next) { 133 for (DavCfgRepository *repo = config->repositories; repo; repo = repo->next) {
123 // TODO: copy repo name 134 ui_list_append(app->repos, repo);
124 ui_list_append(app->repos, repo->name.value.ptr);
125 } 135 }
126 } 136 }
127 137
128 138
129 DavContext* application_dav_context(void) { 139 DavContext* application_dav_context(void) {
130 return davctx; 140 return davctx;
131 } 141 }
132 142
133 143
134 void action_repo_selected(UiEvent *event, void *data) { 144 void action_repo_selected(UiEvent *event, void *data) {
135 145 DavCfgRepository *repo = event->eventdata;
146 DavBrowser *browser = event->document;
147 davbrowser_connect2repo(event->obj, browser, repo);
136 } 148 }

mercurial