8e389c03f8
Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места. Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
42 lines
990 B
C
42 lines
990 B
C
/* sc_panel.h — состояние одной независимой файловой панели. */
|
|
|
|
#ifndef SC_PANEL_H
|
|
#define SC_PANEL_H
|
|
|
|
#include <stdint.h>
|
|
#include "sc_entry.h"
|
|
|
|
#define SC_SOURCE_REAL_FS 0u
|
|
|
|
typedef enum {
|
|
SC_SORT_NAME = 0,
|
|
SC_SORT_EXTENSION,
|
|
SC_SORT_SIZE,
|
|
SC_SORT_DATE
|
|
} ScSortKey;
|
|
|
|
typedef struct {
|
|
char path[256];
|
|
uint16_t count;
|
|
uint16_t cursor;
|
|
uint16_t top;
|
|
uint32_t total_size;
|
|
uint16_t selected_count;
|
|
uint32_t selected_size;
|
|
uint8_t source_kind;
|
|
uint8_t phys_page;
|
|
uint8_t truncated;
|
|
uint8_t dirty;
|
|
uint8_t sort_key;
|
|
uint8_t sort_descending;
|
|
} ScPanel;
|
|
|
|
int sc_panel_init(ScPanel *panel, uint8_t phys_page);
|
|
int sc_panel_refresh(ScPanel *panel);
|
|
int sc_panel_selected(const ScPanel *panel, ScDirEntry *entry);
|
|
int sc_panel_open_selected(ScPanel *panel);
|
|
int sc_panel_parent(ScPanel *panel);
|
|
void sc_panel_normalize_view(ScPanel *panel);
|
|
|
|
#endif
|