Changeset 7cf5ddb in mainline for uspace/app


Ignore:
Timestamp:
2023-03-08T18:21:22Z (3 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
42c2e65, 72ac106
Parents:
bea6233
Message:

Generic UI list control

Derived from file list, now file list is based on UI list.
Whew!

Location:
uspace/app
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/nav/panel.c

    rbea6233 r7cf5ddb  
    11/*
    2  * Copyright (c) 2022 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    6060};
    6161
     62static void panel_flist_activate_req(ui_file_list_t *, void *);
    6263static void panel_flist_selected(ui_file_list_t *, void *, const char *);
    6364
    6465/** Panel file list callbacks */
    6566static ui_file_list_cb_t panel_flist_cb = {
    66         .selected = panel_flist_selected
     67        .activate_req = panel_flist_activate_req,
     68        .selected = panel_flist_selected,
    6769};
    6870
     
    216218        gfx_coord2_t pos;
    217219        ui_control_t *ctl;
     220        ui_evclaim_t claim;
    218221
    219222        pos.x = event->hpos;
     
    222225                return ui_unclaimed;
    223226
     227        ctl = ui_file_list_ctl(panel->flist);
     228        claim = ui_control_pos_event(ctl, event);
     229        if (claim == ui_claimed)
     230                return ui_claimed;
     231
    224232        if (!panel->active && event->type == POS_PRESS)
    225233                panel_activate_req(panel);
    226234
    227         ctl = ui_file_list_ctl(panel->flist);
    228         return ui_control_pos_event(ctl, event);
     235        return ui_claimed;
    229236}
    230237
     
    416423}
    417424
     425/** File list in panel requests activation.
     426 *
     427 * @param flist File list
     428 * @param arg Argument (panel_t *)
     429 */
     430static void panel_flist_activate_req(ui_file_list_t *flist, void *arg)
     431{
     432        panel_t *panel = (panel_t *)arg;
     433
     434        panel_activate_req(panel);
     435}
     436
    418437/** File in panel file list was selected.
    419438 *
  • uspace/app/uidemo/uidemo.c

    rbea6233 r7cf5ddb  
    4444#include <ui/image.h>
    4545#include <ui/label.h>
     46#include <ui/list.h>
    4647#include <ui/menubar.h>
    4748#include <ui/menuentry.h>
     
    598599        ui_menu_entry_t *mmodify;
    599600        ui_menu_entry_t *mabout;
     601        ui_list_entry_attr_t eattr;
    600602        errno_t rc;
    601603
     
    11831185
    11841186        ui_tab_add(demo.tbasic, ui_fixed_ctl(demo.bfixed));
     1187
     1188        rc = ui_fixed_create(&demo.lfixed);
     1189        if (rc != EOK) {
     1190                printf("Error creating fixed layout.\n");
     1191                return rc;
     1192        }
     1193
     1194        rc = ui_list_create(window, false, &demo.list);
     1195        if (rc != EOK) {
     1196                printf("Error creating list.\n");
     1197                return rc;
     1198        }
     1199
     1200        ui_list_entry_attr_init(&eattr);
     1201
     1202        eattr.caption = "One";
     1203        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1204        if (rc != EOK) {
     1205                printf("Error adding list entry.\n");
     1206                return rc;
     1207        }
     1208
     1209        eattr.caption = "Two";
     1210        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1211        if (rc != EOK) {
     1212                printf("Error adding list entry.\n");
     1213                return rc;
     1214        }
     1215
     1216        eattr.caption = "Three";
     1217        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1218        if (rc != EOK) {
     1219                printf("Error adding list entry.\n");
     1220                return rc;
     1221        }
     1222
     1223        eattr.caption = "Four";
     1224        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1225        if (rc != EOK) {
     1226                printf("Error adding list entry.\n");
     1227                return rc;
     1228        }
     1229
     1230        eattr.caption = "Five";
     1231        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1232        if (rc != EOK) {
     1233                printf("Error adding list entry.\n");
     1234                return rc;
     1235        }
     1236
     1237        eattr.caption = "Six";
     1238        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1239        if (rc != EOK) {
     1240                printf("Error adding list entry.\n");
     1241                return rc;
     1242        }
     1243
     1244        /* FIXME: Auto layout */
     1245        if (ui_is_textmode(ui)) {
     1246                rect.p0.x = 4;
     1247                rect.p0.y = 5;
     1248                rect.p1.x = 41;
     1249                rect.p1.y = 10;
     1250        } else {
     1251                rect.p0.x = 15;
     1252                rect.p0.y = 88;
     1253                rect.p1.x = 245;
     1254                rect.p1.y = 173;
     1255        }
     1256
     1257        ui_list_set_rect(demo.list, &rect);
     1258
     1259        rc = ui_fixed_add(demo.lfixed, ui_list_ctl(demo.list));
     1260        if (rc != EOK) {
     1261                printf("Error adding control to layout.\n");
     1262                return rc;
     1263        }
     1264
     1265        ui_tab_add(demo.tlists, ui_fixed_ctl(demo.lfixed));
    11851266
    11861267        ui_window_add(window, ui_fixed_ctl(demo.fixed));
  • uspace/app/uidemo/uidemo.h

    rbea6233 r7cf5ddb  
    4242#include <ui/fixed.h>
    4343#include <ui/label.h>
     44#include <ui/list.h>
    4445#include <ui/menu.h>
    4546#include <ui/menubar.h>
     
    5960        ui_fixed_t *fixed;
    6061        ui_fixed_t *bfixed;
     62        ui_fixed_t *lfixed;
    6163        ui_menu_bar_t *mbar;
    6264        ui_menu_t *mfile;
     
    8082        ui_scrollbar_t *hscrollbar;
    8183        ui_scrollbar_t *vscrollbar;
     84        ui_list_t *list;
    8285} ui_demo_t;
    8386
Note: See TracChangeset for help on using the changeset viewer.