Changeset 7cf5ddb in mainline for uspace/lib/ui/private/filelist.h


Ignore:
Timestamp:
2023-03-08T18:21:22Z (2 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!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/private/filelist.h

    rbea6233 r7cf5ddb  
    11/*
    2  * Copyright (c) 2022 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3737#define _UI_PRIVATE_FILELIST_H
    3838
    39 #include <adt/list.h>
    4039#include <gfx/color.h>
    41 #include <gfx/coord.h>
    4240#include <ipc/loc.h>
     41#include <ui/list.h>
    4342#include <ui/window.h>
    4443#include <stdint.h>
     
    6160        /** Containing file list */
    6261        struct ui_file_list *flist;
    63         /** Link to @c flist->entries */
    64         link_t lentries;
     62        /** List entry */
     63        ui_list_entry_t *entry;
    6564        /** File name */
    6665        char *name;
     
    8281
    8382        /** Containing window */
    84         ui_window_t *window;
     83        struct ui_window *window;
     84
     85        /** UI list */
     86        ui_list_t *list;
    8587
    8688        /** Callbacks */
     
    9092        void *cb_arg;
    9193
    92         /** File list rectangle */
    93         gfx_rect_t rect;
    94 
    95         /** Scrollbar */
    96         struct ui_scrollbar *scrollbar;
    97 
    9894        /** Directory-type entry color */
    9995        gfx_color_t *dir_color;
     
    10298        gfx_color_t *svc_color;
    10399
    104         /** File list entries (list of ui_file_list_entry_t) */
    105         list_t entries;
    106 
    107         /** Number of entries */
    108         size_t entries_cnt;
    109 
    110         /** First entry of current page */
    111         ui_file_list_entry_t *page;
    112 
    113         /** Index of first entry of current page */
    114         size_t page_idx;
    115 
    116         /** Cursor position */
    117         ui_file_list_entry_t *cursor;
    118 
    119         /** Index of entry under cursor */
    120         size_t cursor_idx;
    121 
    122         /** @c true iff the file list is active */
    123         bool active;
    124 
    125100        /** Directory */
    126101        char *dir;
    127102} ui_file_list_t;
    128103
    129 extern gfx_coord_t ui_file_list_entry_height(ui_file_list_t *);
    130 extern errno_t ui_file_list_entry_paint(ui_file_list_entry_t *, size_t);
    131 extern errno_t ui_file_list_paint(ui_file_list_t *);
    132 extern ui_evclaim_t ui_file_list_kbd_event(ui_file_list_t *, kbd_event_t *);
    133 extern ui_evclaim_t ui_file_list_pos_event(ui_file_list_t *, pos_event_t *);
    134 extern unsigned ui_file_list_page_size(ui_file_list_t *);
    135 extern void ui_file_list_inside_rect(ui_file_list_t *, gfx_rect_t *);
    136 extern void ui_file_list_scrollbar_rect(ui_file_list_t *, gfx_rect_t *);
    137 extern gfx_coord_t ui_file_list_scrollbar_pos(ui_file_list_t *);
    138 extern void ui_file_list_scrollbar_update(ui_file_list_t *);
    139104extern bool ui_file_list_is_active(ui_file_list_t *);
    140105extern void ui_file_list_entry_delete(ui_file_list_entry_t *);
     
    142107extern errno_t ui_file_list_sort(ui_file_list_t *);
    143108extern int ui_file_list_entry_ptr_cmp(const void *, const void *);
     109extern void ui_file_list_entry_attr_init(ui_file_list_entry_attr_t *);
     110extern errno_t ui_file_list_entry_append(ui_file_list_t *,
     111    ui_file_list_entry_attr_t *);
    144112extern ui_file_list_entry_t *ui_file_list_first(ui_file_list_t *);
    145113extern ui_file_list_entry_t *ui_file_list_last(ui_file_list_t *);
    146114extern ui_file_list_entry_t *ui_file_list_next(ui_file_list_entry_t *);
    147115extern ui_file_list_entry_t *ui_file_list_prev(ui_file_list_entry_t *);
    148 extern ui_file_list_entry_t *ui_file_list_page_nth_entry(ui_file_list_t *,
    149     size_t, size_t *);
    150 extern void ui_file_list_entry_attr_init(ui_file_list_entry_attr_t *);
    151 extern errno_t ui_file_list_entry_append(ui_file_list_t *,
    152     ui_file_list_entry_attr_t *);
    153 extern void ui_file_list_cursor_move(ui_file_list_t *, ui_file_list_entry_t *,
    154     size_t);
    155 extern void ui_file_list_cursor_up(ui_file_list_t *);
    156 extern void ui_file_list_cursor_down(ui_file_list_t *);
    157 extern void ui_file_list_cursor_top(ui_file_list_t *);
    158 extern void ui_file_list_cursor_bottom(ui_file_list_t *);
    159 extern void ui_file_list_page_up(ui_file_list_t *);
    160 extern void ui_file_list_page_down(ui_file_list_t *);
    161 extern void ui_file_list_scroll_up(ui_file_list_t *);
    162 extern void ui_file_list_scroll_down(ui_file_list_t *);
    163 extern void ui_file_list_scroll_page_up(ui_file_list_t *);
    164 extern void ui_file_list_scroll_page_down(ui_file_list_t *);
    165 extern void ui_file_list_scroll_pos(ui_file_list_t *, size_t);
    166116extern errno_t ui_file_list_open_dir(ui_file_list_t *, ui_file_list_entry_t *);
    167117extern errno_t ui_file_list_open_file(ui_file_list_t *, ui_file_list_entry_t *);
    168118extern void ui_file_list_activate_req(ui_file_list_t *);
    169119extern void ui_file_list_selected(ui_file_list_t *, const char *);
     120extern errno_t ui_file_list_paint(ui_file_list_t *);
     121extern int ui_file_list_list_compare(ui_list_entry_t *, ui_list_entry_t *);
    170122
    171123#endif
Note: See TracChangeset for help on using the changeset viewer.