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

Changeset 297b1b3 in mainline


Ignore:
Timestamp:
2021-08-13T15:58:50Z (2 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
320abf3
Parents:
307d4d2
Message:

Radio button text mode

Location:
uspace
Files:
5 edited

Legend:

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

    r307d4d2 r297b1b3  
    752752            (void *) &demo);
    753753
    754         rect.p0.x = 15;
    755         rect.p0.y = 220;
    756         rect.p1.x = 140;
    757         rect.p1.y = 240;
     754        /* FIXME: Auto layout */
     755        if (ui_is_textmode(ui)) {
     756                rect.p0.x = 20;
     757                rect.p0.y = 14;
     758                rect.p1.x = 40;
     759                rect.p1.y = 15;
     760        } else {
     761                rect.p0.x = 15;
     762                rect.p0.y = 220;
     763                rect.p1.x = 140;
     764                rect.p1.y = 240;
     765        }
    758766        ui_rbutton_set_rect(demo.rbleft, &rect);
    759767
     
    771779        }
    772780
    773         rect.p0.x = 15;
    774         rect.p0.y = 250;
    775         rect.p1.x = 140;
    776         rect.p1.y = 270;
     781        /* FIXME: Auto layout */
     782        if (ui_is_textmode(ui)) {
     783                rect.p0.x = 20;
     784                rect.p0.y = 15;
     785                rect.p1.x = 40;
     786                rect.p1.y = 16;
     787        } else {
     788                rect.p0.x = 15;
     789                rect.p0.y = 250;
     790                rect.p1.x = 140;
     791                rect.p1.y = 270;
     792        }
    777793        ui_rbutton_set_rect(demo.rbcenter, &rect);
    778794        ui_rbutton_select(demo.rbcenter);
     
    791807        }
    792808
    793         rect.p0.x = 15;
    794         rect.p0.y = 280;
    795         rect.p1.x = 140;
    796         rect.p1.y = 300;
     809        /* FIXME: Auto layout */
     810        if (ui_is_textmode(ui)) {
     811                rect.p0.x = 20;
     812                rect.p0.y = 16;
     813                rect.p1.x = 40;
     814                rect.p1.y = 17;
     815        } else {
     816                rect.p0.x = 15;
     817                rect.p0.y = 280;
     818                rect.p1.x = 140;
     819                rect.p1.y = 300;
     820        }
    797821        ui_rbutton_set_rect(demo.rbright, &rect);
    798822
  • uspace/lib/ui/private/rbutton.h

    r307d4d2 r297b1b3  
    7777};
    7878
     79extern errno_t ui_rbutton_paint_gfx(ui_rbutton_t *);
     80extern errno_t ui_rbutton_paint_text(ui_rbutton_t *);
     81
    7982#endif
    8083
  • uspace/lib/ui/src/rbutton.c

    r307d4d2 r297b1b3  
    186186}
    187187
    188 /** Paint radio button.
     188/** Paint radio button in graphics mode.
    189189 *
    190190 * @param rbutton Radio button
    191191 * @return EOK on success or an error code
    192192 */
    193 errno_t ui_rbutton_paint(ui_rbutton_t *rbutton)
     193errno_t ui_rbutton_paint_gfx(ui_rbutton_t *rbutton)
    194194{
    195195        gfx_coord2_t pos;
     
    202202        center.y = rbutton->rect.p0.y + rbutton_oframe_r;
    203203
    204         /* Paint rbutton frame */
     204        /* Paint radio button frame */
    205205
    206206        rc = gfx_set_color(rbutton->group->res->gc,
     
    244244                goto error;
    245245
    246         /* Paint rbutton interior */
     246        /* Paint radio button interior */
    247247        depressed = rbutton->held && rbutton->inside;
    248248
     
    294294error:
    295295        return rc;
     296}
     297
     298/** Paint radio button in text mode.
     299 *
     300 * @param rbutton Radio button
     301 * @return EOK on success or an error code
     302 */
     303errno_t ui_rbutton_paint_text(ui_rbutton_t *rbutton)
     304{
     305        gfx_coord2_t pos;
     306        gfx_text_fmt_t fmt;
     307        bool depressed;
     308        errno_t rc;
     309
     310        /* Paint radio button */
     311
     312        depressed = rbutton->held && rbutton->inside;
     313
     314        pos.x = rbutton->rect.p0.x;
     315        pos.y = rbutton->rect.p0.y;
     316
     317        gfx_text_fmt_init(&fmt);
     318        fmt.color = depressed ? rbutton->group->res->entry_act_bg_color :
     319            rbutton->group->res->wnd_text_color;
     320        fmt.halign = gfx_halign_left;
     321        fmt.valign = gfx_valign_top;
     322
     323        rc = gfx_puttext(rbutton->group->res->font, &pos, &fmt,
     324            rbutton->group->selected == rbutton ? "(*)" : "( )");
     325        if (rc != EOK)
     326                goto error;
     327
     328        /* Paint radio button label */
     329
     330        pos.x += 4;
     331
     332        gfx_text_fmt_init(&fmt);
     333        fmt.color = rbutton->group->res->wnd_text_color;
     334        fmt.halign = gfx_halign_left;
     335        fmt.valign = gfx_valign_center;
     336
     337        rc = gfx_puttext(rbutton->group->res->font, &pos, &fmt,
     338            rbutton->caption);
     339        if (rc != EOK)
     340                goto error;
     341
     342        rc = gfx_update(rbutton->group->res->gc);
     343        if (rc != EOK)
     344                goto error;
     345
     346        return EOK;
     347error:
     348        return rc;
     349}
     350
     351/** Paint radio button.
     352 *
     353 * @param rbutton Radio button
     354 * @return EOK on success or an error code
     355 */
     356errno_t ui_rbutton_paint(ui_rbutton_t *rbutton)
     357{
     358        if (rbutton->group->res->textmode)
     359                return ui_rbutton_paint_text(rbutton);
     360        else
     361                return ui_rbutton_paint_gfx(rbutton);
    296362}
    297363
  • uspace/lib/ui/test/checkbox.c

    r307d4d2 r297b1b3  
    194194        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    195195
    196         rc = ui_resource_create(gc, true, &resource);
     196        rc = ui_resource_create(gc, false, &resource);
    197197        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    198198        PCUT_ASSERT_NOT_NULL(resource);
  • uspace/lib/ui/test/rbutton.c

    r307d4d2 r297b1b3  
    166166}
    167167
    168 /** Paint radio button */
    169 PCUT_TEST(paint)
     168/** Paint radio button in graphics mode */
     169PCUT_TEST(paint_gfx)
    170170{
    171171        errno_t rc;
     
    190190        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    191191
    192         rc = ui_rbutton_paint(rbutton);
     192        rc = ui_rbutton_paint_gfx(rbutton);
     193        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     194
     195        ui_rbutton_destroy(rbutton);
     196        ui_rbutton_group_destroy(group);
     197        ui_resource_destroy(resource);
     198
     199        rc = gfx_context_delete(gc);
     200        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     201}
     202
     203/** Paint radio button in text mode */
     204PCUT_TEST(paint_text)
     205{
     206        errno_t rc;
     207        gfx_context_t *gc = NULL;
     208        test_gc_t tgc;
     209        ui_rbutton_group_t *group = NULL;
     210        ui_resource_t *resource = NULL;
     211        ui_rbutton_t *rbutton;
     212
     213        memset(&tgc, 0, sizeof(tgc));
     214        rc = gfx_context_new(&ops, &tgc, &gc);
     215        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     216
     217        rc = ui_resource_create(gc, false, &resource);
     218        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     219        PCUT_ASSERT_NOT_NULL(resource);
     220
     221        rc = ui_rbutton_group_create(resource, &group);
     222        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     223
     224        rc = ui_rbutton_create(group, "Hello", NULL, &rbutton);
     225        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     226
     227        rc = ui_rbutton_paint_text(rbutton);
    193228        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    194229
Note: See TracChangeset for help on using the changeset viewer.