diff options
Diffstat (limited to 'Library/UefiShellUfmCommandLib')
-rw-r--r-- | Library/UefiShellUfmCommandLib/panel.c | 22 | ||||
-rw-r--r-- | Library/UefiShellUfmCommandLib/panel.h | 10 |
2 files changed, 32 insertions, 0 deletions
diff --git a/Library/UefiShellUfmCommandLib/panel.c b/Library/UefiShellUfmCommandLib/panel.c index 450d73b..6ee1939 100644 --- a/Library/UefiShellUfmCommandLib/panel.c +++ b/Library/UefiShellUfmCommandLib/panel.c @@ -335,3 +335,25 @@ BOOLEAN panel_cd_to(struct panel_ctx *p, CONST CHAR16 *path) return TRUE; } +BOOLEAN panel_mark_file(struct panel_ctx *p, UINTN line) +{ + UINTN idx = line - 1; + + if(!p->cwd) // we can mark only files + return FALSE; + + if(p->dirs->marked[idx]) { + UNHIGHLIGHT_LINE_AS_MARK(p, line); + p->marked--; + } + else { + HIGHLIGHT_LINE_AS_MARK(p, line); + p->marked++; + } + + p->dirs->marked[idx] = !p->dirs->marked[idx]; + update_marked_info(p); + wrefresh(p->wlist); + return TRUE; +} + diff --git a/Library/UefiShellUfmCommandLib/panel.h b/Library/UefiShellUfmCommandLib/panel.h index 908d260..8fdb19f 100644 --- a/Library/UefiShellUfmCommandLib/panel.h +++ b/Library/UefiShellUfmCommandLib/panel.h @@ -70,4 +70,14 @@ BOOLEAN panel_move_cursor(struct panel_ctx *p, UINTN line); */ BOOLEAN panel_cd_to(struct panel_ctx *p, CONST CHAR16 *path); +/* + * Marks the file as selected. Supports work only with files. + * + * p: the panel on which to operate + * line: the line coordinate (starts from 1) + * + * return: FALSE upon failure and TRUE upon successful completion +*/ +BOOLEAN panel_mark_file(struct panel_ctx *p, UINTN line); + #endif /* UFM_PANEL_H */ |