Changeset 1ec732a in mainline for uspace/app/nav


Ignore:
Timestamp:
2025-11-28T20:40:11Z (6 weeks ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
144fafd
Parents:
3a4c6d9
Message:

Verify file - navigator operation and command-line utility.

Location:
uspace/app/nav
Files:
6 added
9 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/nav/dlg/progress.c

    r3a4c6d9 r1ec732a  
    134134        /* FIXME: Auto layout */
    135135        if (ui_is_textmode(ui)) {
    136                 rect.p0.x = 3;
     136                rect.p0.x = 1;
    137137                rect.p0.y = 2;
    138                 rect.p1.x = 47;
     138                rect.p1.x = 49;
    139139                rect.p1.y = 3;
     140        } else {
     141                rect.p0.x = 10;
     142                rect.p0.y = 35;
     143                rect.p1.x = 390;
     144                rect.p1.y = 50;
     145        }
     146
     147        ui_label_set_rect(label, &rect);
     148        ui_label_set_halign(label, gfx_halign_center);
     149
     150        rc = ui_fixed_add(fixed, ui_label_ctl(label));
     151        if (rc != EOK)
     152                goto error;
     153
     154        dialog->ltotal_prog = label;
     155        label = NULL;
     156
     157        rc = ui_label_create(ui_res, "XXX of XXX (XXX%)", &label);
     158        if (rc != EOK)
     159                goto error;
     160
     161        /* FIXME: Auto layout */
     162        if (ui_is_textmode(ui)) {
     163                rect.p0.x = 1;
     164                rect.p0.y = 4;
     165                rect.p1.x = 49;
     166                rect.p1.y = 5;
    140167        } else {
    141168                rect.p0.x = 10;
     
    240267 *
    241268 * @param dialog Progress dialog
    242  * @param text New text for current file progress
     269 * @param progress Progress
    243270 *
    244271 * @return EOK on success or an error code
    245272 */
    246 errno_t progress_dlg_set_curf_prog(progress_dlg_t *dialog, const char *text)
    247 {
     273errno_t progress_dlg_set_progress(progress_dlg_t *dialog,
     274    fmgt_progress_t *progress)
     275{
     276        char buf[128];
    248277        errno_t rc;
    249278
    250         rc = ui_label_set_text(dialog->lcurf_prog, text);
     279        snprintf(buf, sizeof(buf), "Total: %s files, %s.",
     280            progress->total_procf, progress->total_procb);
     281
     282        rc = ui_label_set_text(dialog->ltotal_prog, buf);
    251283        if (rc != EOK)
    252284                return rc;
    253285
    254         return ui_label_paint(dialog->lcurf_prog);
     286        rc = ui_label_paint(dialog->ltotal_prog);
     287        if (rc != EOK)
     288                return rc;
     289
     290        snprintf(buf, sizeof(buf), "Current file: %s of %s (%s done).",
     291            progress->curf_procb, progress->curf_totalb,
     292            progress->curf_percent);
     293
     294        rc = ui_label_set_text(dialog->lcurf_prog, buf);
     295        if (rc != EOK)
     296                return rc;
     297
     298        rc = ui_label_paint(dialog->lcurf_prog);
     299        if (rc != EOK)
     300                return rc;
     301
     302        return EOK;
    255303}
    256304
  • uspace/app/nav/dlg/progress.h

    r3a4c6d9 r1ec732a  
    3838
    3939#include <errno.h>
     40#include <fmgt.h>
    4041#include <types/ui/ui.h>
    4142#include "../types/dlg/progress.h"
     
    4647extern void progress_dlg_set_cb(progress_dlg_t *, progress_dlg_cb_t *,
    4748    void *);
    48 extern errno_t progress_dlg_set_curf_prog(progress_dlg_t *, const char *);
     49extern errno_t progress_dlg_set_progress(progress_dlg_t *, fmgt_progress_t *);
    4950extern void progress_dlg_destroy(progress_dlg_t *);
    5051
  • uspace/app/nav/menu.c

    r3a4c6d9 r1ec732a  
    5757        ui_menu_entry_t *mopen;
    5858        ui_menu_entry_t *medit;
     59        ui_menu_entry_t *mverify;
    5960        ui_menu_entry_t *mfsep;
    6061        ui_menu_entry_t *mexit;
     
    9798        ui_menu_entry_set_cb(medit, nav_menu_file_edit, (void *) menu);
    9899
     100        rc = ui_menu_entry_create(mfile, "~V~erify", "Ctrl-V", &mverify);
     101        if (rc != EOK)
     102                goto error;
     103
     104        ui_menu_entry_set_cb(mverify, nav_menu_file_verify, (void *) menu);
     105
    99106        rc = ui_menu_entry_sep_create(mfile, &mfsep);
    100107        if (rc != EOK)
     
    194201}
    195202
     203/** File / Verify menu entry selected.
     204 *
     205 * @param mentry Menu entry
     206 * @param arg Argument (navigator_t *)
     207 */
     208void nav_menu_file_verify(ui_menu_entry_t *mentry, void *arg)
     209{
     210        nav_menu_t *menu = (nav_menu_t *)arg;
     211
     212        if (menu->cb != NULL && menu->cb->file_verify != NULL)
     213                menu->cb->file_verify(menu->cb_arg);
     214}
     215
    196216/** File / Exit menu entry selected.
    197217 *
  • uspace/app/nav/menu.h

    r3a4c6d9 r1ec732a  
    4949extern void nav_menu_file_open(ui_menu_entry_t *, void *);
    5050extern void nav_menu_file_edit(ui_menu_entry_t *, void *);
     51extern void nav_menu_file_verify(ui_menu_entry_t *, void *);
    5152extern void nav_menu_file_exit(ui_menu_entry_t *, void *);
    5253
  • uspace/app/nav/meson.build

    r3a4c6d9 r1ec732a  
    3232        'dlg/newfiledlg.c',
    3333        'dlg/progress.c',
     34        'dlg/verifydlg.c',
    3435        'main.c',
    3536        'menu.c',
     
    3738        'newfile.c',
    3839        'panel.c',
     40        'verify.c',
    3941)
    4042
     
    4345        'dlg/newfiledlg.c',
    4446        'dlg/progress.c',
     47        'dlg/verifydlg.c',
    4548        'menu.c',
    4649        'nav.c',
    4750        'newfile.c',
    4851        'panel.c',
     52        'verify.c',
    4953        'test/main.c',
    5054        'test/menu.c',
  • uspace/app/nav/nav.c

    r3a4c6d9 r1ec732a  
    5353#include "nav.h"
    5454#include "panel.h"
     55#include "verify.h"
    5556
    5657#define EDITOR_CMD "/app/edit"
     
    6768static void navigator_file_open(void *);
    6869static void navigator_file_edit(void *);
     70static void navigator_file_verify(void *);
    6971static void navigator_file_exit(void *);
    7072
     
    7375        .file_open = navigator_file_open,
    7476        .file_edit = navigator_file_edit,
     77        .file_verify = navigator_file_verify,
    7578        .file_exit = navigator_file_exit
    7679};
     
    135138                        navigator_file_edit((void *)navigator);
    136139                        break;
     140                case KC_V:
     141                        navigator_file_verify((void *)navigator);
     142                        break;
    137143                case KC_Q:
    138144                        ui_quit(navigator->ui);
     
    526532}
    527533
     534/** File / Verify menu entry selected */
     535static void navigator_file_verify(void *arg)
     536{
     537        navigator_t *navigator = (navigator_t *)arg;
     538
     539        ui_file_list_entry_t *entry;
     540        ui_file_list_entry_attr_t attr;
     541        fmgt_flist_t *flist;
     542        panel_t *panel;
     543        errno_t rc;
     544
     545        panel = navigator_get_active_panel(navigator);
     546        entry = ui_file_list_get_cursor(panel->flist);
     547        ui_file_list_entry_get_attr(entry, &attr);
     548
     549        rc = fmgt_flist_create(&flist);
     550        if (rc != EOK)
     551                return;
     552
     553        rc = fmgt_flist_append(flist, attr.name);
     554        if (rc != EOK) {
     555                fmgt_flist_destroy(flist);
     556                return;
     557        }
     558
     559        /* flist ownership transferred */
     560        navigator_verify_dlg(navigator, flist);
     561}
     562
    528563/** File / Exit menu entry selected */
    529564static void navigator_file_exit(void *arg)
  • uspace/app/nav/newfile.c

    r3a4c6d9 r1ec732a  
    259259{
    260260        navigator_t *nav = (navigator_t *)arg;
    261         char buf[128];
    262 
    263         snprintf(buf, sizeof(buf), "Written %s of %s (%s done).",
    264             progress->curf_procb, progress->curf_totalb,
    265             progress->curf_percent);
    266         progress_dlg_set_curf_prog(nav->progress_dlg, buf);
     261
     262        progress_dlg_set_progress(nav->progress_dlg, progress);
    267263}
    268264
  • uspace/app/nav/types/dlg/progress.h

    r3a4c6d9 r1ec732a  
    4646        /** Dialog window */
    4747        ui_window_t *window;
     48        /** Label with total progress */
     49        ui_label_t *ltotal_prog;
    4850        /** Label with current file progress */
    4951        ui_label_t *lcurf_prog;
  • uspace/app/nav/types/menu.h

    r3a4c6d9 r1ec732a  
    4949        /** File / Edit */
    5050        void (*file_edit)(void *);
     51        /** File / Verify */
     52        void (*file_verify)(void *);
    5153        /** File / Exit */
    5254        void (*file_exit)(void *);
Note: See TracChangeset for help on using the changeset viewer.