file list fixes

This commit is contained in:
2026-05-08 15:10:33 +03:00
parent 16be688712
commit b346e364c5
6 changed files with 36 additions and 11 deletions
+2 -2
View File
@@ -157,8 +157,8 @@ void app_refresh(app_t *app) {
if (app->modal.is_initiated != 0) {
wnoutrefresh(app->modal.win);
}
} else if (app->main_ui.cb_refresh != NULL) {
app->main_ui.cb_refresh(app);
} else if (app->main_ui.cb_ui_refresh != NULL) {
app->main_ui.cb_ui_refresh(app);
}
doupdate();
}
+1 -1
View File
@@ -13,7 +13,7 @@ typedef struct {
#define MAIN_UI_RESET(app) \
app->main_ui.ui = NULL; \
app->main_ui.cb_refresh = NULL; \
app->main_ui.cb_ui_refresh = NULL; \
app->main_ui.cb_b_press = NULL; \
app->main_ui.b_keys = NULL; \
app->main_ui.b_keys_len = 0;
+5 -1
View File
@@ -89,11 +89,15 @@ enum main_window_type {
mw_f_desc, /* file description */
};
typedef void (draw_f_t) (void *fui) ;
typedef struct main_window {
enum main_window_type type;
void *ui; /* structure which describes window UI */
int32_t (*cb_b_press) (void *app, void *args); /* callback on button press */
void (*cb_refresh) (void *app); /* refresh callback */
void (*cb_ui_refresh) (void *app); /* refresh callback */
void (*reset) (void *app); /* reset state of the window */
draw_f_t *draw;
struct action_key *b_keys;
int32_t b_keys_len;
} main_window_t;
-3
View File
@@ -139,15 +139,12 @@ void wait_register(query_args_t *q_args) {
int upload_confirm_cb(app_t *app, char *query, int q_len) {
if (!strncmp("finished\n", query, sizeof("finished\n") - 1)) {
w_ui_file_list_t *fui = (w_ui_file_list_t *)app->query_args->main_ui->ui;
w_notification("File upload", dc_normal,
"File %s is uploaded to the server!",
app->query_args->file->name);
clear_file_in_query(app->query_args);
app->query_args->state = S_FILE_LIST;
app->modal.needs_destroy = true;
w_fl_reset(fui);
server_send_string(app->query_args, "file list %u %u\n", fui->max_lines, 1);
return 0;
}
return 1; /* TODO: Error case */
+12 -1
View File
@@ -164,15 +164,20 @@ static int32_t process_user_input(app_t *app, w_cb_args_t *d_args) {
return OK;
}
void w_fl_reset_app(void *app);
void *w_fl_init(app_t *app) {
w_ui_file_list_t *fui = malloc(sizeof(w_ui_file_list_t));
app->main_ui.ui = fui;
app->main_ui.type = mw_fl_server;
app->main_ui.cb_refresh = w_fl_cb_refresh;
app->main_ui.cb_ui_refresh = w_fl_cb_refresh;
app->main_ui.b_keys = action_keys;
app->main_ui.b_keys_len = 4;
app->main_ui.cb_b_press = (w_cb_press_t)process_user_input;
app->main_ui.reset = w_fl_reset_app;
app->main_ui.draw = (draw_f_t *) w_fl_draw;
app->active_callback = w_fl_cb;
fui->w.callback = w_fl_cb;
w_init(&(fui->w), NULL, &(app->win), "");
WINDOW *win_parent = app->win;
fui->current_idx = 0;
@@ -221,6 +226,12 @@ void w_fl_reset(w_ui_file_list_t *fl_ui) {
fl_ui->active_search = false;
}
void w_fl_reset_app(void *app) {
app_t *_app = (app_t *) app;
w_ui_file_list_t *fl_ui = (w_ui_file_list_t *) _app->main_ui.ui;
w_fl_reset(fl_ui);
}
void w_fl_draw(w_ui_file_list_t *fui) {
int32_t sz_y, sz_x;
int64_t p_y, p_x;
+16 -3
View File
@@ -354,20 +354,24 @@ static int32_t process_user_input(app_t *app, w_cb_args_t *d_args) {
return OK;
}
void w_lfl_reset_app(void *app);
w_lfl_ui_t *w_lfl_init_win(app_t *app) {
w_lfl_ui_t *fui = malloc(sizeof(w_lfl_ui_t));
app->main_ui.ui = fui;
app->main_ui.type = mw_fl_local;
app->main_ui.cb_refresh = w_lfl_cb_refresh;
app->main_ui.cb_ui_refresh = w_lfl_cb_refresh;
app->main_ui.b_keys = action_keys;
app->main_ui.b_keys_len = 2;
app->main_ui.cb_b_press = (w_cb_press_t)process_user_input;
app->main_ui.reset = w_lfl_reset_app;
app->main_ui.draw = (draw_f_t *) w_lfl_draw;
app->active_callback = w_lfl_cb;
fui->w.callback = w_lfl_cb;
w_init(&(fui->w), NULL, &(app->win), "");
fui->current_idx = 0;
fui->win_info = NULL;
fui->d_path = NULL;
fui->w.callback = w_lfl_cb;
fui->w.sz.x = getmaxx(app->win);
fui->w.sz.y = getmaxy(app->win);
fui->cur_page = 1;
@@ -393,7 +397,16 @@ w_lfl_ui_t *w_lfl_init_win(app_t *app) {
return fui;
}
void w_lfl_reset(w_lfl_ui_t *fl_ui) { fl_ui->current_idx = 0; }
void w_lfl_reset(w_lfl_ui_t *fl_ui) {
fl_ui->current_idx = 0;
lfl_clear(&(fl_ui->start), &(fl_ui->current));
}
void w_lfl_reset_app(void *app) {
app_t *_app = app;
w_lfl_ui_t *fl_ui = (w_lfl_ui_t *) _app->main_ui.ui;
w_lfl_reset(fl_ui);
}
void w_lfl_draw(w_lfl_ui_t *fui) {
int32_t sz_y, sz_x;