Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/src/filedialog.c

    r11662bd re0cf963  
    11/*
    2  * Copyright (c) 2022 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4141#include <ui/label.h>
    4242#include <ui/filedialog.h>
    43 #include <ui/filelist.h>
    4443#include <ui/pbutton.h>
    4544#include <ui/resource.h>
     
    5453        .close = ui_file_dialog_wnd_close,
    5554        .kbd = ui_file_dialog_wnd_kbd
    56 };
    57 
    58 static void ui_file_dialog_flist_activate_req(ui_file_list_t *, void *);
    59 static void ui_file_dialog_flist_selected(ui_file_list_t *, void *,
    60     const char *);
    61 
    62 ui_file_list_cb_t ui_file_dialog_flist_cb = {
    63         .activate_req = ui_file_dialog_flist_activate_req,
    64         .selected = ui_file_dialog_flist_selected
    6555};
    6656
     
    10696        ui_label_t *label = NULL;
    10797        ui_entry_t *entry = NULL;
    108         ui_file_list_t *flist = NULL;
    10998        ui_pbutton_t *bok = NULL;
    11099        ui_pbutton_t *bcancel = NULL;
     
    126115                wparams.rect.p0.y = 0;
    127116                wparams.rect.p1.x = 40;
    128                 wparams.rect.p1.y = 20;
     117                wparams.rect.p1.y = 9;
    129118        } else {
    130119                wparams.rect.p0.x = 0;
    131120                wparams.rect.p0.y = 0;
    132121                wparams.rect.p1.x = 300;
    133                 wparams.rect.p1.y = 335;
     122                wparams.rect.p1.y = 135;
    134123        }
    135124
     
    178167        if (ui_is_textmode(ui)) {
    179168                rect.p0.x = 3;
    180                 rect.p0.y = 3;
     169                rect.p0.y = 4;
    181170                rect.p1.x = 37;
    182                 rect.p1.y = 4;
     171                rect.p1.y = 5;
    183172        } else {
    184173                rect.p0.x = 10;
     
    203192        entry = NULL;
    204193
    205         /* Files label */
    206         rc = ui_label_create(ui_res, "Files:", &label);
    207         if (rc != EOK)
    208                 goto error;
    209 
    210         /* FIXME: Auto layout */
    211         if (ui_is_textmode(ui)) {
    212                 rect.p0.x = 3;
    213                 rect.p0.y = 5;
    214                 rect.p1.x = 17;
    215                 rect.p1.y = 6;
    216         } else {
     194        rc = ui_pbutton_create(ui_res, "OK", &bok);
     195        if (rc != EOK)
     196                goto error;
     197
     198        ui_pbutton_set_cb(bok, &ui_file_dialog_bok_cb, dialog);
     199
     200        /* FIXME: Auto layout */
     201        if (ui_is_textmode(ui)) {
    217202                rect.p0.x = 10;
     203                rect.p0.y = 6;
     204                rect.p1.x = 20;
     205                rect.p1.y = 7;
     206        } else {
     207                rect.p0.x = 55;
    218208                rect.p0.y = 90;
    219                 rect.p1.x = 190;
    220                 rect.p1.y = 105;
    221         }
    222 
    223         ui_label_set_rect(label, &rect);
    224 
    225         rc = ui_fixed_add(fixed, ui_label_ctl(label));
    226         if (rc != EOK)
    227                 goto error;
    228 
    229         label = NULL;
    230 
    231         /* File list */
    232 
    233         rc = ui_file_list_create(window, false, &flist);
    234         if (rc != EOK)
    235                 goto error;
    236 
    237         /* FIXME: Auto layout */
    238         if (ui_is_textmode(ui)) {
    239                 rect.p0.x = 3;
    240                 rect.p0.y = 6;
    241                 rect.p1.x = 37;
    242                 rect.p1.y = 16;
    243         } else {
    244                 rect.p0.x = 10;
    245                 rect.p0.y = 110;
    246                 rect.p1.x = 290;
    247                 rect.p1.y = 280;
    248         }
    249 
    250         ui_file_list_set_rect(flist, &rect);
    251         ui_file_list_set_cb(flist, &ui_file_dialog_flist_cb, dialog);
    252 
    253         rc = ui_fixed_add(fixed, ui_file_list_ctl(flist));
    254         if (rc != EOK)
    255                 goto error;
    256 
    257         dialog->flist = flist;
    258         flist = NULL;
    259 
    260         rc = ui_file_list_read_dir(dialog->flist, ".");
    261         if (rc != EOK)
    262                 goto error;
    263 
    264         /* OK button */
    265 
    266         rc = ui_pbutton_create(ui_res, "OK", &bok);
    267         if (rc != EOK)
    268                 goto error;
    269 
    270         ui_pbutton_set_cb(bok, &ui_file_dialog_bok_cb, dialog);
    271 
    272         /* FIXME: Auto layout */
    273         if (ui_is_textmode(ui)) {
    274                 rect.p0.x = 10;
    275                 rect.p0.y = 17;
    276                 rect.p1.x = 20;
    277                 rect.p1.y = 18;
    278         } else {
    279                 rect.p0.x = 55;
    280                 rect.p0.y = 290;
    281209                rect.p1.x = 145;
    282                 rect.p1.y = 318;
     210                rect.p1.y = 118;
    283211        }
    284212
     
    294222        bok = NULL;
    295223
    296         /* Cancel button */
    297 
    298224        rc = ui_pbutton_create(ui_res, "Cancel", &bcancel);
    299225        if (rc != EOK)
     
    305231        if (ui_is_textmode(ui)) {
    306232                rect.p0.x = 22;
    307                 rect.p0.y = 17;
     233                rect.p0.y = 6;
    308234                rect.p1.x = 32;
    309                 rect.p1.y = 18;
     235                rect.p1.y = 7;
    310236        } else {
    311237                rect.p0.x = 155;
    312                 rect.p0.y = 290;
     238                rect.p0.y = 90;
    313239                rect.p1.x = 245;
    314                 rect.p1.y = 318;
     240                rect.p1.y = 118;
    315241        }
    316242
     
    337263        if (entry != NULL)
    338264                ui_entry_destroy(entry);
    339         if (flist != NULL)
    340                 ui_file_list_destroy(flist);
    341265        if (bok != NULL)
    342266                ui_pbutton_destroy(bok);
     
    404328        ui_file_dialog_t *dialog = (ui_file_dialog_t *) arg;
    405329        const char *fname;
    406         ui_evclaim_t claim;
    407 
    408         claim = ui_window_def_kbd(window, event);
    409         if (claim == ui_claimed)
    410                 return;
    411330
    412331        if (event->type == KEY_PRESS &&
     
    428347        }
    429348
    430 }
    431 
    432 static void ui_file_dialog_flist_activate_req(ui_file_list_t *flist, void *arg)
    433 {
    434         ui_file_dialog_t *dialog = (ui_file_dialog_t *) arg;
    435 
    436         ui_file_list_activate(dialog->flist);
    437         ui_entry_deactivate(dialog->ename);
    438 }
    439 
    440 static void ui_file_dialog_flist_selected(ui_file_list_t *flist, void *arg,
    441     const char *fname)
    442 {
    443         ui_file_dialog_t *dialog = (ui_file_dialog_t *) arg;
    444 
    445         dialog->cb->bok(dialog, dialog->arg, fname);
     349        ui_window_def_kbd(window, event);
    446350}
    447351
Note: See TracChangeset for help on using the changeset viewer.