+ file list: search

This commit is contained in:
2026-02-12 16:44:17 +02:00
parent dfc3071702
commit 912166007b
2 changed files with 36 additions and 5 deletions
+1 -1
View File
@@ -109,7 +109,7 @@ void print_bars(app_t *app) {
/* add content to the bottom bar */
mvwprintw(app->win, app->coordinates.cur_y - 2, 2,
"F1 - Help | U - upload | F9 - Quit");
"F1 - Help | U - upload | S - search | F9 - Quit");
wattroff(app->win, A_REVERSE);
}
+34 -3
View File
@@ -19,16 +19,34 @@ void file_list_cb(callback_args_t *args) {
ui_file_list_t *fui = app->query_args->file_list_ui;
int32_t key = *((int32_t *)args->data);
char query[256];
char q_prefix[128];
int32_t q_len = 0;
if (fui->search_key->slen > 0) {
sprintf(q_prefix, "file search name %s", fui->search_key->data);
} else {
sprintf(q_prefix, "file list");
}
if (fui->active_search) {
if (key == KEY_BACKSPACE || key == KEY_DL) {
if (blength(fui->search_key)) {
btrunc(fui->search_key, blength(fui->search_key) - 1);
draw_file_list(fui);
}
} else if (key == '\n') {
fui->active_search = false;
fl_clear(fui->start, fui->current);
app->query_args->state = S_FILE_LIST;
if (fui->search_key->slen > 0) {
sprintf(query, "%s %u %u\n%n", q_prefix, fui->max_lines, 1, &q_len);
} else {
sprintf(query, "%s %u %u\n%n", q_prefix, fui->max_lines, 1, &q_len);
}
write(app->query_args->sd, query, q_len);
reset_file_list(fui);
} else {
bconchar(fui->search_key, key);
}
draw_file_list(fui);
}
return;
}
switch (key) {
@@ -39,7 +57,7 @@ void file_list_cb(callback_args_t *args) {
} else if (fui->current_page < fui->pages) {
fl_clear(fui->start, fui->current);
app->query_args->state = S_FILE_LIST;
sprintf(query, "file list %u %u\n%n", fui->max_lines,
sprintf(query, "%s %u %u\n%n", q_prefix, fui->max_lines,
fui->current_page + 1, &q_len);
write(app->query_args->sd, query, q_len);
reset_file_list(fui);
@@ -52,7 +70,7 @@ void file_list_cb(callback_args_t *args) {
} else if (fui->current_page > 1) {
fl_clear(fui->start, fui->current);
app->query_args->state = S_FILE_LIST;
sprintf(query, "file list %u %u\n%n", fui->max_lines,
sprintf(query, "%s %u %u\n%n", q_prefix, fui->max_lines,
fui->current_page - 1, &q_len);
write(app->query_args->sd, query, q_len);
reset_file_list(fui);
@@ -89,6 +107,7 @@ void reset_file_list(ui_file_list_t *fl_ui) {
fl_ui->current_count = 0;
fl_ui->full_count = 0;
fl_ui->activate_last = false;
fl_ui->active_search = false;
}
void draw_file_list(ui_file_list_t *fui) {
@@ -114,6 +133,8 @@ void draw_file_list(ui_file_list_t *fui) {
}
do {
if (el == NULL)
break;
if (p_y < 1) {
p_y++;
cur_el_idx++;
@@ -154,9 +175,17 @@ void draw_file_list(ui_file_list_t *fui) {
wattrset(parent_win, A_BOLD);
if (fui->active_search) {
mvwprintw(parent_win, p_y, p_x, "%s%*s", p_info, sz_x - p_len, "");
} else {
if (fui->search_key->slen > 0) {
wattrset(parent_win, A_REVERSE);
mvwprintw(parent_win, p_y, p_x, "[%s]", fui->search_key->data);
wattroff(parent_win, A_REVERSE);
mvwprintw(parent_win, p_y, p_x + fui->search_key->slen + 2, " %s",
p_info);
} else {
mvwprintw(parent_win, p_y, p_x, "%*s%s%*s", l_pad, "", p_info, l_pad, "");
}
}
wattroff(parent_win, A_BOLD);
/* draw file info */
@@ -166,6 +195,8 @@ void draw_file_list(ui_file_list_t *fui) {
wclear(i_win);
/* Write to the right side the information about the file */
if (active_el == NULL)
return;
char size_text[64];
size_to_text(active_el->size, size_text);