]> uap-core.de Git - note.git/commitdiff
add nbconfig repo UI
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Tue, 29 Jul 2025 17:55:57 +0000 (19:55 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Tue, 29 Jul 2025 17:55:57 +0000 (19:55 +0200)
application/nbconfig.c
application/nbconfig.h
application/store.c
application/store.h

index 62f5139ce7f2d6500f42ee8cd2d6553646fccaef..314133eddf81a45293732b4b325fa9aaa41c097c 100644 (file)
@@ -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);
+                        
+                    }
+                }
             }
         }
     }
index 4a62e051771df8eee1c4c709c5deda6781a7fcef..94f2c4e6e83f48215ee8737e86cfe61a02266bf5 100644 (file)
@@ -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;
index a0e74e7984ba6d73039617126fc25916c5399e65..cdd173557a941e23cde828bfc3f5611cc711a69f 100644 (file)
@@ -36,6 +36,7 @@
 
 #include <cx/printf.h>
 #include <cx/array_list.h>
+#include <cx/linked_list.h>
 #include <cx/hash_map.h>
 #include <cx/mempool.h>
 
@@ -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);
index d1ff672498213687c43d2368bd9c5c82c29ff5a5..42e44c6bab2bb3918ee7b8cae376e1926f97aa3b 100644 (file)
@@ -44,6 +44,7 @@ typedef struct NoteStore {
     CxMempool *mp;
     Resource *root;
     Resource *trash;
+    CxList   *repositories;
 } NoteStore;
     
 typedef struct AsyncListResult {