Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset ef734b7 in mainline


Ignore:
Timestamp:
2021-02-05T15:59:16Z (4 weeks ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
2ab8ab3, 44d63e5, 74e41ac, a97b7d3d
Parents:
5a68791
Message:

Slider UI control

Location:
uspace
Files:
5 added
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/uidemo/uidemo.c

    r5a68791 ref734b7  
    3737#include <io/pixelmap.h>
    3838#include <stdio.h>
     39#include <stdlib.h>
    3940#include <str.h>
    4041#include <ui/entry.h>
     
    7475};
    7576
     77static void slider_moved(ui_slider_t *, void *, gfx_coord_t);
     78
     79static ui_slider_cb_t slider_cb = {
     80        .moved = slider_moved
     81};
     82
    7683/** Window close button was clicked.
    7784 *
     
    150157}
    151158
     159/** Slider was moved.
     160 *
     161 * @param slider Slider
     162 * @param arg Argument (demo)
     163 * @param pos Position
     164 */
     165static void slider_moved(ui_slider_t *slider, void *arg, gfx_coord_t pos)
     166{
     167        ui_demo_t *demo = (ui_demo_t *) arg;
     168        char *str;
     169        errno_t rc;
     170        int rv;
     171
     172        rv = asprintf(&str, "Slider at %d of %d", (int) pos,
     173            ui_slider_length(slider));
     174        if (rv < 0) {
     175                printf("Out of memory.\n");
     176                return;
     177        }
     178
     179        rc = ui_entry_set_text(demo->entry, str);
     180        if (rc != EOK)
     181                printf("Error changing entry text.\n");
     182        (void) ui_entry_paint(demo->entry);
     183
     184        free(str);
     185}
     186
    152187/** Run UI demo on display server. */
    153188static errno_t ui_demo(const char *display_spec)
     
    177212        params.rect.p0.y = 0;
    178213        params.rect.p1.x = 220;
    179         params.rect.p1.y = 330;
     214        params.rect.p1.y = 340;
    180215
    181216        memset((void *) &demo, 0, sizeof(demo));
     
    397432
    398433        rc = ui_fixed_add(demo.fixed, ui_rbutton_ctl(demo.rb3));
     434        if (rc != EOK) {
     435                printf("Error adding control to layout.\n");
     436                return rc;
     437        }
     438
     439        rc = ui_slider_create(ui_res, "Slide!", &demo.slider);
     440        if (rc != EOK) {
     441                printf("Error creating button.\n");
     442                return rc;
     443        }
     444
     445        ui_slider_set_cb(demo.slider, &slider_cb, (void *) &demo);
     446
     447        rect.p0.x = 15;
     448        rect.p0.y = 300;
     449        rect.p1.x = 130;
     450        rect.p1.y = 320;
     451        ui_slider_set_rect(demo.slider, &rect);
     452
     453        rc = ui_fixed_add(demo.fixed, ui_slider_ctl(demo.slider));
    399454        if (rc != EOK) {
    400455                printf("Error adding control to layout.\n");
  • uspace/app/uidemo/uidemo.h

    r5a68791 ref734b7  
    4444#include <ui/pbutton.h>
    4545#include <ui/rbutton.h>
     46#include <ui/slider.h>
    4647#include <ui/ui.h>
    4748#include <ui/window.h>
     
    6263        ui_rbutton_t *rb2;
    6364        ui_rbutton_t *rb3;
     65        ui_slider_t *slider;
    6466} ui_demo_t;
    6567
  • uspace/lib/ui/meson.build

    r5a68791 ref734b7  
    4040        'src/rbutton.c',
    4141        'src/resource.c',
     42        'src/slider.c',
    4243        'src/ui.c',
    4344        'src/wdecor.c',
     
    5758        'test/rbutton.c',
    5859        'test/resource.c',
     60        'test/slider.c',
    5961        'test/ui.c',
    6062        'test/wdecor.c',
  • uspace/lib/ui/test/main.c

    r5a68791 ref734b7  
    4141PCUT_IMPORT(rbutton);
    4242PCUT_IMPORT(resource);
     43PCUT_IMPORT(slider);
    4344PCUT_IMPORT(ui);
    4445PCUT_IMPORT(wdecor);
Note: See TracChangeset for help on using the changeset viewer.