Changeset 68b9e540 in mainline


Ignore:
Timestamp:
2021-10-04T12:39:55Z (3 years ago)
Author:
Jiri Svoboda <jiri@…>
Children:
0e5ed803
Parents:
d097daca
git-author:
Jiri Svoboda <jiri@…> (2021-10-03 17:39:36)
git-committer:
Jiri Svoboda <jiri@…> (2021-10-04 12:39:55)
Message:

Add panel class and add unit tests for all classes

Location:
uspace/app/nav
Files:
7 added
5 edited

Legend:

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

    rd097daca r68b9e540  
    4747/** Create navigator menu.
    4848 *
    49  * @param navigator Navigator
     49 * @param window Navigator window
    5050 * @param rmenu Place to store pointer to new menu
    5151 * @return EOK on success or an error code
    5252 */
    53 errno_t nav_menu_create(navigator_t *navigator, nav_menu_t **rmenu)
     53errno_t nav_menu_create(ui_window_t *window, nav_menu_t **rmenu)
    5454{
    5555        nav_menu_t *menu;
     
    6464                return ENOMEM;
    6565
    66         rc = ui_menu_bar_create(navigator->ui, navigator->window,
     66        menu->window = window;
     67        menu->ui = ui_window_get_ui(window);
     68
     69        rc = ui_menu_bar_create(menu->ui, menu->window,
    6770            &menu->menubar);
    6871        if (rc != EOK)
     
    7780                goto error;
    7881
    79         ui_menu_entry_set_cb(mexit, nav_file_exit, (void *) navigator);
     82        ui_menu_entry_set_cb(mexit, nav_file_exit, (void *) menu);
    8083
    81         ui_window_get_app_rect(navigator->window, &arect);
     84        ui_window_get_app_rect(menu->window, &arect);
    8285
    8386        rect.p0 = arect.p0;
     
    8689        ui_menu_bar_set_rect(menu->menubar, &rect);
    8790
    88         rc = ui_fixed_add(navigator->fixed, ui_menu_bar_ctl(menu->menubar));
    89         if (rc != EOK)
    90                 goto error;
    91 
    92         menu->navigator = navigator;
    9391        *rmenu = menu;
    9492        return EOK;
     
    104102void nav_menu_destroy(nav_menu_t *menu)
    105103{
    106         if (menu->menubar != NULL) {
    107                 ui_fixed_remove(menu->navigator->fixed,
    108                     ui_menu_bar_ctl(menu->menubar));
     104        if (menu->menubar != NULL)
    109105                ui_menu_bar_destroy(menu->menubar);
    110         }
    111106
    112107        free(menu);
     108}
     109
     110/** Return base UI control for the menu bar.
     111 *
     112 * @param menu Navigator menu
     113 * @return UI control
     114 */
     115ui_control_t *nav_menu_ctl(nav_menu_t *menu)
     116{
     117        return ui_menu_bar_ctl(menu->menubar);
    113118}
    114119
  • uspace/app/nav/menu.h

    rd097daca r68b9e540  
    3838
    3939#include <errno.h>
     40#include <ui/control.h>
    4041#include <ui/menu.h>
    4142#include <ui/menubar.h>
    4243#include <ui/menuentry.h>
     44#include <ui/ui.h>
     45#include <ui/window.h>
    4346#include "nav.h"
    4447
    4548/** Navigator menu */
    4649typedef struct nav_menu {
    47         navigator_t *navigator;
     50        ui_t *ui;
     51        ui_window_t *window;
    4852        ui_menu_bar_t *menubar;
    4953} nav_menu_t;
    5054
    51 extern errno_t nav_menu_create(navigator_t *, nav_menu_t **);
     55extern errno_t nav_menu_create(ui_window_t *, nav_menu_t **);
    5256extern void nav_menu_destroy(nav_menu_t *);
     57extern ui_control_t *nav_menu_ctl(nav_menu_t *);
    5358
    5459#endif
  • uspace/app/nav/meson.build

    rd097daca r68b9e540  
    2929deps = [ 'ui' ]
    3030src = files(
     31        'main.c',
    3132        'menu.c',
    3233        'nav.c',
     34        'panel.c',
    3335)
     36
     37test_src = files(
     38        'menu.c',
     39        'nav.c',
     40        'panel.c',
     41        'test/main.c',
     42        'test/menu.c',
     43        'test/nav.c',
     44        'test/panel.c',
     45)
  • uspace/app/nav/nav.c

    rd097daca r68b9e540  
    4646#include "nav.h"
    4747
    48 static errno_t navigator_create(const char *, navigator_t **);
    49 static void navigator_destroy(navigator_t *);
    50 
    5148static void wnd_close(ui_window_t *, void *);
    5249
     
    7370 * @return EOK on success or ane error code
    7471 */
    75 static errno_t navigator_create(const char *display_spec,
     72errno_t navigator_create(const char *display_spec,
    7673    navigator_t **rnavigator)
    7774{
     
    111108        ui_window_add(navigator->window, ui_fixed_ctl(navigator->fixed));
    112109
    113         rc = nav_menu_create(navigator, &navigator->menu);
     110        rc = nav_menu_create(navigator->window, &navigator->menu);
    114111        if (rc != EOK)
    115112                goto error;
     113
     114        rc = ui_fixed_add(navigator->fixed, nav_menu_ctl(navigator->menu));
     115        if (rc != EOK) {
     116                printf("Error adding control to layout.\n");
     117                return rc;
     118        }
    116119
    117120        rc = ui_window_paint(navigator->window);
     
    128131}
    129132
    130 static void navigator_destroy(navigator_t *navigator)
     133void navigator_destroy(navigator_t *navigator)
    131134{
     135        ui_fixed_remove(navigator->fixed, nav_menu_ctl(navigator->menu));
     136
    132137        if (navigator->menu != NULL)
    133138                nav_menu_destroy(navigator->menu);
     
    140145
    141146/** Run navigator on the specified display. */
    142 static errno_t navigator_run(const char *display_spec)
     147errno_t navigator_run(const char *display_spec)
    143148{
    144149        navigator_t *navigator;
     
    155160}
    156161
    157 static void print_syntax(void)
    158 {
    159         printf("Syntax: nav [-d <display-spec>]\n");
    160 }
    161 
    162 int main(int argc, char *argv[])
    163 {
    164         const char *display_spec = UI_CONSOLE_DEFAULT;
    165         errno_t rc;
    166         int i;
    167 
    168         i = 1;
    169         while (i < argc && argv[i][0] == '-') {
    170                 if (str_cmp(argv[i], "-d") == 0) {
    171                         ++i;
    172                         if (i >= argc) {
    173                                 printf("Argument missing.\n");
    174                                 print_syntax();
    175                                 return 1;
    176                         }
    177 
    178                         display_spec = argv[i++];
    179                 } else {
    180                         printf("Invalid option '%s'.\n", argv[i]);
    181                         print_syntax();
    182                         return 1;
    183                 }
    184         }
    185 
    186         if (i < argc) {
    187                 print_syntax();
    188                 return 1;
    189         }
    190 
    191         rc = navigator_run(display_spec);
    192         if (rc != EOK)
    193                 return 1;
    194 
    195         return 0;
    196 }
    197 
    198162/** @}
    199163 */
  • uspace/app/nav/nav.h

    rd097daca r68b9e540  
    3737#define NAV_H
    3838
     39#include <errno.h>
    3940#include <display.h>
    4041#include <ui/fixed.h>
     
    5455} navigator_t;
    5556
     57extern errno_t navigator_create(const char *, navigator_t **);
     58extern void navigator_destroy(navigator_t *);
     59extern errno_t navigator_run(const char *);
     60
     61
    5662#endif
    5763
Note: See TracChangeset for help on using the changeset viewer.