Changeset c3db721 in mainline for uspace/app/nav


Ignore:
Timestamp:
2025-10-10T20:35:05Z (3 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
c1383cd
Parents:
0cf3d5f
Message:

Allow aborting file management operation.

Location:
uspace/app/nav
Files:
4 edited

Legend:

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

    r0cf3d5f rc3db721  
    7979        .activate_req = navigator_panel_activate_req,
    8080        .file_open = navigator_panel_file_open
     81};
     82
     83static void navigator_progress_babort(progress_dlg_t *, void *);
     84static void navigator_progress_close(progress_dlg_t *, void *);
     85
     86progress_dlg_cb_t navigator_progress_cb = {
     87        .babort = navigator_progress_babort,
     88        .close = navigator_progress_close
    8189};
    8290
     
    596604}
    597605
     606/** Abort button pressed in progress dialog.
     607 *
     608 * @param dlg Progress dialog
     609 * @param arg Argument (navigator_t *)
     610 */
     611static void navigator_progress_babort(progress_dlg_t *dlg, void *arg)
     612{
     613        navigator_t *nav = (navigator_t *)arg;
     614
     615        (void)dlg;
     616        nav->abort_op = true;
     617}
     618
     619/** Progress dialog closed,
     620 *
     621 * @param dlg Progress dialog
     622 * @param arg Argument (navigator_t *)
     623 */
     624static void navigator_progress_close(progress_dlg_t *dlg, void *arg)
     625{
     626        navigator_t *nav = (navigator_t *)arg;
     627
     628        (void)dlg;
     629        nav->abort_op = true;
     630}
     631
    598632/** @}
    599633 */
  • uspace/app/nav/nav.h

    r0cf3d5f rc3db721  
    3838
    3939#include <errno.h>
     40#include "types/dlg/progress.h"
    4041#include "types/nav.h"
    4142#include "types/panel.h"
     43
     44extern progress_dlg_cb_t navigator_progress_cb;
    4245
    4346extern errno_t navigator_create(const char *, navigator_t **);
  • uspace/app/nav/newfile.c

    r0cf3d5f rc3db721  
    6464};
    6565
     66static bool new_file_abort_query(void *);
    6667static void new_file_progress(void *, fmgt_progress_t *);
    6768
    6869static fmgt_cb_t new_file_fmgt_cb = {
    69         .progress = new_file_progress
     70        .abort_query = new_file_abort_query,
     71        .progress = new_file_progress,
    7072};
    7173
     
    124126        return;
    125127error:
     128        fmgt_destroy(fmgt);
    126129        ui_lock(nav->ui);
    127130        progress_dlg_destroy(nav->progress_dlg);
     131        navigator_refresh_panels(nav);
    128132        ui_msg_dialog_params_init(&params);
    129133        params.caption = "Error";
     
    192196        }
    193197
     198        progress_dlg_set_cb(nav->progress_dlg, &navigator_progress_cb,
     199            (void *)nav);
     200
    194201        rc = navigator_worker_start(nav, new_file_wfunc, (void *)job);
    195202        if (rc != EOK) {
     
    231238}
    232239
     240/** New file abort query.
     241 *
     242 * @param arg Argument (navigator_t *)
     243 * @return @c true iff abort is requested
     244 */
     245static bool new_file_abort_query(void *arg)
     246{
     247        navigator_t *nav = (navigator_t *)arg;
     248
     249        return nav->abort_op;
     250}
     251
    233252/** New file progress update.
    234253 *
  • uspace/app/nav/types/nav.h

    r0cf3d5f rc3db721  
    3838
    3939#include <fibril.h>
     40#include <stdbool.h>
    4041#include <ui/fixed.h>
    4142#include <ui/ui.h>
     
    6263        /** Worker fibril ID */
    6364        fid_t worker_fid;
     65        /** Abort current file management operation */
     66        bool abort_op;
    6467} navigator_t;
    6568
Note: See TracChangeset for help on using the changeset viewer.