From: Olaf Wintermann Date: Tue, 29 Jul 2025 17:55:57 +0000 (+0200) Subject: add nbconfig repo UI X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=30f144436a28cc73a8f7f843a21607621c049ece;p=note.git add nbconfig repo UI --- diff --git a/application/nbconfig.c b/application/nbconfig.c index 62f5139..314133e 100644 --- a/application/nbconfig.c +++ b/application/nbconfig.c @@ -53,9 +53,15 @@ static void* reslist_getvalue(void *data, int col) { return NULL; } +static void* repolist_get_value(void *data, int col) { + Repository *repo = data; + return repo->name; +} + void nbconfig_update_lists(NotebookConfigDialog *wdata) { ui_list_clear(wdata->tab1_groups); ui_list_clear(wdata->tab2_groups); + ui_list_clear(wdata->tab3_repositories); CxIterator i = cxListIterator(wdata->groups); cx_foreach(Resource *, res, i) { ui_list_append(wdata->tab1_groups, res); @@ -69,13 +75,16 @@ void nbconfig_update_lists(NotebookConfigDialog *wdata) { } i = cxListIterator(wdata->repositories); - // + cx_foreach(Repository *, repo, i) { + ui_list_append(wdata->tab3_repositories, repo); + } ui_list_update(wdata->tab1_groups); ui_list_update(wdata->tab1_repositories); ui_list_update(wdata->tab2_groups); ui_list_update(wdata->tab2_notebooks); ui_list_update(wdata->tab2_repositories); + ui_list_update(wdata->tab3_repositories); } static void nbconfig_tab1_load_group(NotebookConfigDialog *wdata, Resource *res) { @@ -331,6 +340,22 @@ static void nbconfig_notebooklist_move_down(UiEvent *event, void *userdata) { } +static void nbconfig_repolist_add(UiEvent *event, void *userdata) { + +} + +static void nbconfig_repolist_delete(UiEvent *event, void *userdata) { + +} + +static void nbconfig_repolist_move_up(UiEvent *event, void *userdata) { + +} + +static void nbconfig_repolist_move_down(UiEvent *event, void *userdata) { + +} + void notebook_config_dialog(void) { NoteStore *store = note_store_get(); // TODO: check store->root and show different dialog, when root is missing @@ -351,6 +376,12 @@ void notebook_config_dialog(void) { wdata->tab2_notebook_name = ui_string_new(obj->ctx, NULL); wdata->tab2_types = ui_list_new(obj->ctx, NULL); wdata->tab2_repositories = ui_list_new(obj->ctx, NULL); + wdata->tab3_repositories = ui_list_new(obj->ctx, NULL); + wdata->tab3_repo_name = ui_string_new(obj->ctx, NULL); + wdata->tab3_repo_local_path = ui_string_new(obj->ctx, NULL); + wdata->tab3_repo_url = ui_string_new(obj->ctx, NULL); + wdata->tab3_repo_encryption_key = ui_list_new(obj->ctx, NULL); + wdata->tab3_repo_isencrypted = ui_int_new(obj->ctx, NULL); wdata->repositories = cxArrayListCreate(a, NULL, CX_STORE_POINTERS, 32); wdata->groups = cxArrayListCreate(a, NULL, CX_STORE_POINTERS, 32); @@ -447,7 +478,38 @@ void notebook_config_dialog(void) { } } ui_tab(obj, "Repositories") { - + ui_hbox(obj, .margin = 10, .spacing = 10, .fill = TRUE) { + ui_vbox(obj) { + ui_listview(obj, .list = wdata->tab3_repositories, .getvalue = repolist_get_value, .fill = TRUE, .onactivate = NULL); + ui_hbox(obj) { + ui_button(obj, .icon = UI_ICON_NEW_FOLDER, .onclick = nbconfig_repolist_add); + ui_button(obj, .icon = UI_ICON_DELETE, .onclick = nbconfig_repolist_delete); + ui_button(obj, .icon = UI_ICON_GO_UP, .onclick = nbconfig_repolist_move_up); + ui_button(obj, .icon = UI_ICON_GO_DOWN, .onclick = nbconfig_repolist_move_down); + } + } + + ui_grid(obj, .columnspacing = 10, .rowspacing = 10, .fill = TRUE, .def_vfill = TRUE) { + ui_rlabel(obj, .label = "Name"); + ui_textfield(obj, .value = wdata->tab3_repo_name); + ui_newline(obj); + + ui_rlabel(obj, .label = "Local Path"); + ui_textfield(obj, .value = wdata->tab3_repo_local_path); + ui_newline(obj); + + ui_rlabel(obj, .label = "URL"); + ui_textfield(obj, .value = wdata->tab3_repo_url); + ui_newline(obj); + + ui_checkbox(obj, .label = "Encryption", .colspan = 2); + ui_newline(obj); + + ui_rlabel(obj, .label = "Encryption Key"); + ui_combobox(obj, .list = wdata->tab3_repo_encryption_key); + + } + } } } } diff --git a/application/nbconfig.h b/application/nbconfig.h index 4a62e05..94f2c4e 100644 --- a/application/nbconfig.h +++ b/application/nbconfig.h @@ -39,20 +39,26 @@ extern "C" { typedef struct NotebookConfigDialog { MainWindow *parent; - CxList *repositories; - CxList *groups; - CxList *notebooks; - CxMap *notebook_parents; + CxList *repositories; + CxList *groups; + CxList *notebooks; + CxMap *notebook_parents; - UiList *tab1_groups; - UiString *tab1_group_name; - UiList *tab1_types; - UiList *tab1_repositories; - UiList *tab2_notebooks; - UiList *tab2_groups; - UiString *tab2_notebook_name; - UiList *tab2_types; - UiList *tab2_repositories; + UiList *tab1_groups; + UiString *tab1_group_name; + UiList *tab1_types; + UiList *tab1_repositories; + UiList *tab2_notebooks; + UiList *tab2_groups; + UiString *tab2_notebook_name; + UiList *tab2_types; + UiList *tab2_repositories; + UiList *tab3_repositories; + UiString *tab3_repo_name; + UiString *tab3_repo_url; + UiString *tab3_repo_local_path; + UiList *tab3_repo_encryption_key; + UiInteger *tab3_repo_isencrypted; Resource *new_group; Resource *new_notebook; diff --git a/application/store.c b/application/store.c index a0e74e7..cdd1735 100644 --- a/application/store.c +++ b/application/store.c @@ -36,6 +36,7 @@ #include #include +#include #include #include @@ -365,6 +366,7 @@ void note_store_reload() { store->mp = mp; store->root = NULL; store->trash = NULL; + store->repositories = cxLinkedListCreate(a, NULL, CX_STORE_POINTERS); // key: resource_id value: Notebook* CxMap *collection_map = cxHashMapCreate(NULL, CX_STORE_POINTERS, cxListSize(collections) + 16); diff --git a/application/store.h b/application/store.h index d1ff672..42e44c6 100644 --- a/application/store.h +++ b/application/store.h @@ -44,6 +44,7 @@ typedef struct NoteStore { CxMempool *mp; Resource *root; Resource *trash; + CxList *repositories; } NoteStore; typedef struct AsyncListResult {