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

Changeset 252d03c in mainline for uspace/app/uidemo/uidemo.c


Ignore:
Timestamp:
2021-04-28T09:22:39Z (7 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
7470d97
Parents:
de227aba
Message:

Popping up a message, in text mode as well

File:
1 edited

Legend:

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

    rde227aba r252d03c  
    4646#include <ui/menuentry.h>
    4747#include <ui/menu.h>
     48#include <ui/msgdialog.h>
    4849#include <ui/pbutton.h>
    4950#include <ui/resource.h>
     
    8485};
    8586
     87static void uidemo_file_message(ui_menu_entry_t *, void *);
    8688static void uidemo_file_exit(ui_menu_entry_t *, void *);
     89
     90static void msg_dialog_button(ui_msg_dialog_t *, void *, unsigned);
     91static void msg_dialog_close(ui_msg_dialog_t *, void *);
     92
     93static ui_msg_dialog_cb_t msg_dialog_cb = {
     94        .button = msg_dialog_button,
     95        .close = msg_dialog_close
     96};
    8797
    8898/** Window close button was clicked.
     
    190200}
    191201
    192 /** File/exit menu entry selected.
     202/** File/message menu entry selected.
    193203 *
    194204 * @param mentry Menu entry
    195205 * @param arg Argument (demo)
    196206 */
     207static void uidemo_file_message(ui_menu_entry_t *mentry, void *arg)
     208{
     209        ui_demo_t *demo = (ui_demo_t *) arg;
     210        ui_msg_dialog_params_t mdparams;
     211        ui_msg_dialog_t *dialog;
     212        errno_t rc;
     213
     214        ui_msg_dialog_params_init(&mdparams);
     215        mdparams.caption = "Message For You";
     216        mdparams.text = "Hello, world!";
     217
     218        rc = ui_msg_dialog_create(demo->ui, &mdparams, &dialog);
     219        if (rc != EOK) {
     220                printf("Error creating message dialog.\n");
     221                return;
     222        }
     223
     224        ui_msg_dialog_set_cb(dialog, &msg_dialog_cb, &demo);
     225
     226}
     227
     228/** File/exit menu entry selected.
     229 *
     230 * @param mentry Menu entry
     231 * @param arg Argument (demo)
     232 */
    197233static void uidemo_file_exit(ui_menu_entry_t *mentry, void *arg)
    198234{
     
    200236
    201237        ui_quit(demo->ui);
     238}
     239
     240/** Message dialog button press.
     241 *
     242 * @param dialog Message dialog
     243 * @param arg Argument (ui_demo_t *)
     244 * @param bnum Button number
     245 */
     246static void msg_dialog_button(ui_msg_dialog_t *dialog, void *arg,
     247    unsigned bnum)
     248{
     249        ui_demo_t *demo = (ui_demo_t *) arg;
     250
     251        (void) demo;
     252        ui_msg_dialog_destroy(dialog);
     253}
     254
     255/** Message dialog close request.
     256 *
     257 * @param dialog Message dialog
     258 * @param arg Argument (ui_demo_t *)
     259 */
     260static void msg_dialog_close(ui_msg_dialog_t *dialog, void *arg)
     261{
     262        ui_demo_t *demo = (ui_demo_t *) arg;
     263
     264        (void) demo;
     265        ui_msg_dialog_destroy(dialog);
    202266}
    203267
     
    215279        gfx_bitmap_t *bitmap;
    216280        gfx_coord2_t off;
     281        ui_menu_entry_t *mmsg;
    217282        ui_menu_entry_t *mfoo;
    218283        ui_menu_entry_t *mbar;
     
    228293        }
    229294
     295        memset((void *) &demo, 0, sizeof(demo));
     296        demo.ui = ui;
     297
    230298        ui_wnd_params_init(&params);
    231299        params.caption = "UI Demo";
    232300        params.style |= ui_wds_resizable;
    233         params.rect.p0.x = 0;
    234         params.rect.p0.y = 0;
    235         params.rect.p1.x = 220;
    236         params.rect.p1.y = 350;
    237 
    238         memset((void *) &demo, 0, sizeof(demo));
    239         demo.ui = ui;
     301
     302        /* FIXME: Auto layout */
     303        if (ui_is_textmode(ui)) {
     304                params.rect.p0.x = 0;
     305                params.rect.p0.y = 0;
     306                params.rect.p1.x = 80;
     307                params.rect.p1.y = 25;
     308        } else {
     309                params.rect.p0.x = 0;
     310                params.rect.p0.y = 0;
     311                params.rect.p1.x = 220;
     312                params.rect.p1.y = 350;
     313        }
    240314
    241315        rc = ui_window_create(ui, &params, &window);
     
    269343        }
    270344
     345        rc = ui_menu_entry_create(demo.mfile, "Message", "", &mmsg);
     346        if (rc != EOK) {
     347                printf("Error creating menu.\n");
     348                return rc;
     349        }
     350
     351        ui_menu_entry_set_cb(mmsg, uidemo_file_message, (void *) &demo);
     352
    271353        rc = ui_menu_entry_create(demo.mfile, "Foo", "Ctrl-Alt-Del", &mfoo);
    272354        if (rc != EOK) {
     
    325407        }
    326408
    327         rect.p0.x = 4;
    328         rect.p0.y = 30;
    329         rect.p1.x = 216;
    330         rect.p1.y = 52;
     409        /* FIXME: Auto layout */
     410        if (ui_is_textmode(ui)) {
     411                rect.p0.x = 1;
     412                rect.p0.y = 2;
     413                rect.p1.x = 79;
     414                rect.p1.y = 3;
     415        } else {
     416                rect.p0.x = 4;
     417                rect.p0.y = 30;
     418                rect.p1.x = 216;
     419                rect.p1.y = 52;
     420        }
    331421        ui_menu_bar_set_rect(demo.mbar, &rect);
    332422
Note: See TracChangeset for help on using the changeset viewer.