Changeset 2309891 in mainline for uspace/app/nav/nav.c


Ignore:
Timestamp:
2025-12-14T17:15:57Z (3 days ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
79b77ce
Parents:
144fafd
Message:

Copy files (Navigator and command line).

TODO Overwrite query, new I/O error types.

File:
1 edited

Legend:

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

    r144fafd r2309891  
    4848#include <ui/ui.h>
    4949#include <ui/window.h>
     50#include "copy.h"
    5051#include "dlg/ioerrdlg.h"
    5152#include "menu.h"
     
    6970static void navigator_file_edit(void *);
    7071static void navigator_file_verify(void *);
     72static void navigator_file_copy(void *);
    7173static void navigator_file_exit(void *);
    7274
     
    7678        .file_edit = navigator_file_edit,
    7779        .file_verify = navigator_file_verify,
     80        .file_copy = navigator_file_copy,
    7881        .file_exit = navigator_file_exit
    7982};
     
    141144                        navigator_file_verify((void *)navigator);
    142145                        break;
     146                case KC_C:
     147                        navigator_file_copy((void *)navigator);
     148                        break;
    143149                case KC_Q:
    144150                        ui_quit(navigator->ui);
     
    325331        for (i = 0; i < navigator_panels; i++) {
    326332                if (panel_is_active(navigator->panel[i]))
     333                        return navigator->panel[i];
     334        }
     335
     336        /* This should not happen */
     337        assert(false);
     338        return NULL;
     339}
     340
     341/** Get the currently inactive navigator panel.
     342 *
     343 * @param navigator Navigator
     344 * @return Currently inactive panel
     345 */
     346panel_t *navigator_get_inactive_panel(navigator_t *navigator)
     347{
     348        int i;
     349
     350        for (i = 0; i < navigator_panels; i++) {
     351                if (!panel_is_active(navigator->panel[i]))
    327352                        return navigator->panel[i];
    328353        }
     
    561586}
    562587
     588/** File / Copy menu entry selected */
     589static void navigator_file_copy(void *arg)
     590{
     591        navigator_t *navigator = (navigator_t *)arg;
     592
     593        ui_file_list_entry_t *entry;
     594        ui_file_list_entry_attr_t attr;
     595        fmgt_flist_t *flist;
     596        panel_t *panel;
     597        errno_t rc;
     598
     599        panel = navigator_get_active_panel(navigator);
     600        entry = ui_file_list_get_cursor(panel->flist);
     601        ui_file_list_entry_get_attr(entry, &attr);
     602
     603        rc = fmgt_flist_create(&flist);
     604        if (rc != EOK)
     605                return;
     606
     607        rc = fmgt_flist_append(flist, attr.name);
     608        if (rc != EOK) {
     609                fmgt_flist_destroy(flist);
     610                return;
     611        }
     612
     613        /* flist ownership transferred */
     614        navigator_copy_dlg(navigator, flist);
     615}
     616
    563617/** File / Exit menu entry selected */
    564618static void navigator_file_exit(void *arg)
Note: See TracChangeset for help on using the changeset viewer.