+ 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 */ /* add content to the bottom bar */
mvwprintw(app->win, app->coordinates.cur_y - 2, 2, 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); 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; ui_file_list_t *fui = app->query_args->file_list_ui;
int32_t key = *((int32_t *)args->data); int32_t key = *((int32_t *)args->data);
char query[256]; char query[256];
char q_prefix[128];
int32_t q_len = 0; 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 (fui->active_search) {
if (key == KEY_BACKSPACE || key == KEY_DL) { if (key == KEY_BACKSPACE || key == KEY_DL) {
if (blength(fui->search_key)) { if (blength(fui->search_key)) {
btrunc(fui->search_key, blength(fui->search_key) - 1); 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 { } else {
bconchar(fui->search_key, key); bconchar(fui->search_key, key);
}
draw_file_list(fui); draw_file_list(fui);
}
return; return;
} }
switch (key) { switch (key) {
@@ -39,7 +57,7 @@ void file_list_cb(callback_args_t *args) {
} else if (fui->current_page < fui->pages) { } else if (fui->current_page < fui->pages) {
fl_clear(fui->start, fui->current); fl_clear(fui->start, fui->current);
app->query_args->state = S_FILE_LIST; 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); fui->current_page + 1, &q_len);
write(app->query_args->sd, query, q_len); write(app->query_args->sd, query, q_len);
reset_file_list(fui); reset_file_list(fui);
@@ -52,7 +70,7 @@ void file_list_cb(callback_args_t *args) {
} else if (fui->current_page > 1) { } else if (fui->current_page > 1) {
fl_clear(fui->start, fui->current); fl_clear(fui->start, fui->current);
app->query_args->state = S_FILE_LIST; 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); fui->current_page - 1, &q_len);
write(app->query_args->sd, query, q_len); write(app->query_args->sd, query, q_len);
reset_file_list(fui); 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->current_count = 0;
fl_ui->full_count = 0; fl_ui->full_count = 0;
fl_ui->activate_last = false; fl_ui->activate_last = false;
fl_ui->active_search = false;
} }
void draw_file_list(ui_file_list_t *fui) { void draw_file_list(ui_file_list_t *fui) {
@@ -114,6 +133,8 @@ void draw_file_list(ui_file_list_t *fui) {
} }
do { do {
if (el == NULL)
break;
if (p_y < 1) { if (p_y < 1) {
p_y++; p_y++;
cur_el_idx++; cur_el_idx++;
@@ -154,9 +175,17 @@ void draw_file_list(ui_file_list_t *fui) {
wattrset(parent_win, A_BOLD); wattrset(parent_win, A_BOLD);
if (fui->active_search) { if (fui->active_search) {
mvwprintw(parent_win, p_y, p_x, "%s%*s", p_info, sz_x - p_len, ""); 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 { } else {
mvwprintw(parent_win, p_y, p_x, "%*s%s%*s", l_pad, "", p_info, l_pad, ""); mvwprintw(parent_win, p_y, p_x, "%*s%s%*s", l_pad, "", p_info, l_pad, "");
} }
}
wattroff(parent_win, A_BOLD); wattroff(parent_win, A_BOLD);
/* draw file info */ /* draw file info */
@@ -166,6 +195,8 @@ void draw_file_list(ui_file_list_t *fui) {
wclear(i_win); wclear(i_win);
/* Write to the right side the information about the file */ /* Write to the right side the information about the file */
if (active_el == NULL)
return;
char size_text[64]; char size_text[64];
size_to_text(active_el->size, size_text); size_to_text(active_el->size, size_text);