Mon, 29 Jan 2024 18:50:04 +0100
implement connecting to repositories
/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright 2024 Olaf Wintermann. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include "window.h" #include "davcontroller.h" #include <ui/stock.h> static UiIcon* folder_icon; static UiIcon* file_icon; void window_init(void) { folder_icon = ui_foldericon(16); file_icon = ui_fileicon(16); } UiObject* window_create(void) { UiObject* obj = ui_window("iDAV", NULL); MainWindow* wdata = ui_malloc(obj->ctx, sizeof(MainWindow)); memset(wdata, 0, sizeof(MainWindow)); obj->window = wdata; wdata->progress = ui_int_new(obj->ctx, "progress"); // navigation bar ui_hbox(obj, .fill = UI_OFF, .margin = 8) { ui_button(obj, .icon = "Back"); ui_button(obj, .icon = "Forward"); ui_path_textfield(obj, .fill = UI_ON, .varname = "path"); ui_progressspinner(obj, .value = wdata->progress); } // main content UiModel* model = ui_model(obj->ctx, UI_ICON_TEXT, "Name", UI_STRING, "Type", UI_STRING, "Last Modified", UI_STRING, "Size", -1); model->getvalue = (ui_getvaluefunc)window_resource_table_getvalue; ui_table(obj, .fill = UI_ON, .model = model, .varname = "reslist"); // status bar ui_hbox(obj, .fill = UI_OFF) { ui_label(obj, .label = ""); } ui_model_free(obj->ctx, model); return obj; } void* window_resource_table_getvalue(DavResource *res, int col) { switch (col) { case 0: { // icon return res->iscollection ? folder_icon : file_icon; } case 1: { // resource name return res->name; } case 2: { // type return ""; // TODO } case 3: { // last modified return ""; // TODO } case 4: { // size return ""; // TODO } } return NULL; } void window_progress(MainWindow *win, int on) { ui_set(win->progress, on); }