Changeset 08499f0 in mainline for uspace/app/uidemo/uidemo.c


Ignore:
Timestamp:
2026-05-16T22:12:20Z (12 hours ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Parents:
9389aaa
Message:

Animate progress bar in UI demo.

File:
1 edited

Legend:

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

    r9389aaa r08499f0  
    3333 */
    3434
     35#include <fibril_synch.h>
    3536#include <gfx/bitmap.h>
    3637#include <gfx/coord.h>
     
    6061#include "uidemo.h"
    6162
     63enum {
     64        scrollbar_update_interval_ms = 1000,
     65        ui_demo_progress_step = 17
     66};
     67
    6268static errno_t bitmap_moire(gfx_bitmap_t *, gfx_coord_t, gfx_coord_t);
    6369
     
    714720        (void) demo;
    715721        ui_msg_dialog_destroy(dialog);
     722}
     723
     724static void ui_demo_timer_fun(void *arg)
     725{
     726        ui_demo_t *demo = (ui_demo_t *) arg;
     727
     728        if (demo->progress_value < 100) {
     729                demo->progress_value += ui_demo_progress_step;
     730                if (demo->progress_value > 100)
     731                        demo->progress_value = 100;
     732        } else {
     733                demo->progress_value = 0;
     734        }
     735
     736        ui_progress_set_value(demo->progress, demo->progress_value);
     737
     738        if (ui_tab_is_selected(demo->tbars)) {
     739                ui_lock(demo->ui);
     740                ui_progress_paint(demo->progress);
     741                ui_unlock(demo->ui);
     742        }
     743
     744        fibril_timer_set(demo->timer, 1000 * scrollbar_update_interval_ms,
     745            ui_demo_timer_fun, (void *)demo);
    716746}
    717747
     
    14721502        ui_window_add(window, ui_fixed_ctl(demo.fixed));
    14731503
     1504        demo.timer = fibril_timer_create(NULL);
     1505        if (demo.timer == NULL) {
     1506                printf("Error creating timer.\n");
     1507                return ENOMEM;
     1508        }
     1509
     1510        fibril_timer_set(demo.timer, 1000 * scrollbar_update_interval_ms,
     1511            ui_demo_timer_fun, (void *)&demo);
     1512
    14741513        rc = ui_window_paint(window);
    14751514        if (rc != EOK) {
     
    14791518
    14801519        ui_run(ui);
     1520
     1521        fibril_timer_clear(demo.timer);
     1522        fibril_timer_destroy(demo.timer);
    14811523
    14821524        ui_window_destroy(window);
Note: See TracChangeset for help on using the changeset viewer.