ui: file list: fixes navigation (up/down/pup, pdown)
This commit is contained in:
+1
-1
@@ -136,7 +136,7 @@ int upload_confirm_cb(w_app_t *app, char *query, int q_len) {
|
||||
clear_file_in_query(app->query_args);
|
||||
app->query_args->state = S_FILE_LIST;
|
||||
app->modal.needs_destroy = true;
|
||||
w_fl_rest(fui);
|
||||
w_fl_reset(fui);
|
||||
server_send_string(app->query_args, "file list %u %u\n", fui->max_lines, 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
+19
-13
@@ -16,7 +16,7 @@
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
||||
void w_fl_rest(w_ui_file_list_t *fl_ui);
|
||||
void w_fl_reset(w_ui_file_list_t *fl_ui);
|
||||
|
||||
void w_fl_cb(w_cb_args_t *args) {
|
||||
w_app_t *app = args->app;
|
||||
@@ -45,7 +45,7 @@ void w_fl_cb(w_cb_args_t *args) {
|
||||
}
|
||||
server_send_string(app->query_args, "%s %u %u\n", q_prefix,
|
||||
fui->max_lines, 1);
|
||||
w_fl_rest(fui);
|
||||
w_fl_reset(fui);
|
||||
} else {
|
||||
bconchar(fui->search_key, key);
|
||||
w_fl_draw(fui);
|
||||
@@ -57,43 +57,48 @@ void w_fl_cb(w_cb_args_t *args) {
|
||||
case KEY_DOWN:
|
||||
if (fui->current_idx < fui->current_count - 1) {
|
||||
fui->current_idx++;
|
||||
w_fl_draw(fui);
|
||||
} else if (fui->current_page < fui->pages) {
|
||||
app->query_args->state = S_FILE_LIST;
|
||||
server_send_string(app->query_args, "%s %u %u\n", q_prefix,
|
||||
fui->max_lines, fui->current_page + 1);
|
||||
w_fl_rest(fui);
|
||||
w_fl_reset(fui);
|
||||
break;
|
||||
}
|
||||
w_fl_draw(fui);
|
||||
break;
|
||||
case KEY_UP:
|
||||
if (fui->current_idx > 0) {
|
||||
fui->current_idx--;
|
||||
w_fl_draw(fui);
|
||||
} else if (fui->current_page > 1) {
|
||||
app->query_args->state = S_FILE_LIST;
|
||||
server_send_string(app->query_args, "%s %u %u\n", q_prefix,
|
||||
fui->max_lines, fui->current_page - 1);
|
||||
w_fl_rest(fui);
|
||||
w_fl_reset(fui);
|
||||
fui->activate_last = true;
|
||||
break;
|
||||
}
|
||||
w_fl_draw(fui);
|
||||
break;
|
||||
case KEY_NPAGE:
|
||||
if (fui->current_page < fui->pages) {
|
||||
app->query_args->state = S_FILE_LIST;
|
||||
server_send_string(app->query_args, "%s %u %u\n", q_prefix,
|
||||
fui->max_lines, fui->current_page + 1);
|
||||
w_fl_rest(fui);
|
||||
w_fl_reset(fui);
|
||||
break;
|
||||
}
|
||||
w_fl_draw(fui);
|
||||
break;
|
||||
case KEY_PPAGE:
|
||||
if (fui->current_page > 1) {
|
||||
app->query_args->state = S_FILE_LIST;
|
||||
server_send_string(app->query_args, "%s %u %u\n", q_prefix,
|
||||
fui->max_lines, fui->current_page - 1);
|
||||
w_fl_rest(fui);
|
||||
w_fl_reset(fui);
|
||||
fui->activate_last = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
w_fl_draw(fui);
|
||||
break;
|
||||
case '\33':
|
||||
fui->active_search = false;
|
||||
@@ -103,7 +108,7 @@ void w_fl_cb(w_cb_args_t *args) {
|
||||
app->query_args->state = S_FILE_LIST;
|
||||
server_send_string(app->query_args, "%s %u %u\n", q_prefix, fui->max_lines,
|
||||
1);
|
||||
w_fl_rest(fui);
|
||||
w_fl_reset(fui);
|
||||
case '\n':
|
||||
ui_file_select(app->file_args, app->query_args, fui->current_idx + 1);
|
||||
break;
|
||||
@@ -126,14 +131,13 @@ w_ui_file_list_t *w_fl_init(w_app_t *app) {
|
||||
app->main_ui.type = mw_fl_server;
|
||||
app->main_ui.cb_refresh = w_fl_cb_refresh;
|
||||
w_init(&(fui->w), NULL, &(app->win), "");
|
||||
WINDOW *parent_win = app->win;
|
||||
WINDOW *win_parent = app->win;
|
||||
fui->current_idx = 0;
|
||||
fui->current_page = 1;
|
||||
fui->pages = 1;
|
||||
fui->current_count = 0;
|
||||
fui->full_count = 0;
|
||||
fui->activate_last = false;
|
||||
fui->max_lines = getmaxy(parent_win) - 3; /* 2+1 (bottom info line) */
|
||||
fui->active_search = false;
|
||||
fui->search_key = bfromcstrrangealloc(12, 64, "");
|
||||
fui->start = NULL;
|
||||
@@ -153,6 +157,8 @@ w_ui_file_list_t *w_fl_init(w_app_t *app) {
|
||||
/* create the action window */
|
||||
fui->win_info =
|
||||
newwin(app->coordinates.max_y - 4, right_w_x, 2, left_w_x + 1);
|
||||
fui->max_lines = getmaxy(fui->win_list) - 3; /* 2+1 (bottom info line) */
|
||||
|
||||
return fui;
|
||||
}
|
||||
|
||||
@@ -162,7 +168,7 @@ void w_fl_destroy(w_ui_file_list_t **fui) {
|
||||
*fui = NULL;
|
||||
}
|
||||
|
||||
void w_fl_rest(w_ui_file_list_t *fl_ui) {
|
||||
void w_fl_reset(w_ui_file_list_t *fl_ui) {
|
||||
fl_clear(fl_ui->start, fl_ui->current);
|
||||
fl_ui->current_idx = 0;
|
||||
fl_ui->current_page = 0;
|
||||
|
||||
@@ -29,7 +29,7 @@ typedef struct {
|
||||
void w_fl_draw(w_ui_file_list_t *fl_ui);
|
||||
w_ui_file_list_t *w_fl_init(w_app_t *app);
|
||||
void w_fl_cb(w_cb_args_t *args);
|
||||
void w_fl_rest(w_ui_file_list_t *fl_ui);
|
||||
void w_fl_reset(w_ui_file_list_t *fl_ui);
|
||||
void w_fl_destroy(w_ui_file_list_t **fui);
|
||||
|
||||
#endif
|
||||
@@ -19,7 +19,7 @@
|
||||
#include "fs_file_list.h"
|
||||
#include "widget_core.h"
|
||||
|
||||
void w_fl_rest(w_lfl_ui_t *fl_ui);
|
||||
void w_fl_reset(w_lfl_ui_t *fl_ui);
|
||||
|
||||
struct fl_args {
|
||||
char *name;
|
||||
@@ -225,22 +225,24 @@ void w_lfl_cb(w_cb_args_t *args) {
|
||||
if (fui->current_idx < fui->rows_num - 1) {
|
||||
fui->current = fui->current->next;
|
||||
fui->current_idx++;
|
||||
w_lfl_draw(fui);
|
||||
} else {
|
||||
page_next(fui);
|
||||
break;
|
||||
}
|
||||
}
|
||||
w_lfl_draw(fui);
|
||||
break;
|
||||
case KEY_UP:
|
||||
if (fui->current->prev != NULL) {
|
||||
if (fui->current_idx > 0) {
|
||||
fui->current = fui->current->prev;
|
||||
fui->current_idx--;
|
||||
w_lfl_draw(fui);
|
||||
} else {
|
||||
page_previous(fui);
|
||||
break;
|
||||
}
|
||||
}
|
||||
w_lfl_draw(fui);
|
||||
break;
|
||||
case KEY_NPAGE:
|
||||
page_next(fui);
|
||||
|
||||
Reference in New Issue
Block a user