Changeset fa792e8 in mainline for uspace/app/nav/panel.c
- Timestamp:
- 2021-10-25T00:32:45Z (2 years ago)
- Branches:
- master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4fcc2de
- Parents:
- 1eb0fafe
- git-author:
- Jiri Svoboda <jiri@…> (2021-10-15 16:58:28)
- git-committer:
- jxsvoboda <5887334+jxsvoboda@…> (2021-10-25 00:32:45)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/nav/panel.c
r1eb0fafe rfa792e8 44 44 #include <ui/paint.h> 45 45 #include <ui/resource.h> 46 #include <vfs/vfs.h> 46 47 #include <qsort.h> 47 48 #include "panel.h" … … 93 94 94 95 rc = gfx_color_new_ega(0x0f, &panel->act_border_color); 96 if (rc != EOK) 97 goto error; 98 99 rc = gfx_color_new_ega(0x0f, &panel->dir_color); 95 100 if (rc != EOK) 96 101 goto error; … … 107 112 if (panel->curs_color != NULL) 108 113 gfx_color_delete(panel->curs_color); 114 if (panel->act_border_color != NULL) 115 gfx_color_delete(panel->act_border_color); 116 if (panel->dir_color != NULL) 117 gfx_color_delete(panel->dir_color); 109 118 ui_control_delete(panel->control); 110 119 free(panel); … … 121 130 gfx_color_delete(panel->curs_color); 122 131 gfx_color_delete(panel->act_border_color); 132 gfx_color_delete(panel->dir_color); 123 133 panel_clear_entries(panel); 124 134 ui_control_delete(panel->control); … … 157 167 if (entry == panel->cursor && panel->active) 158 168 fmt.color = panel->curs_color; 169 else if (entry->isdir) 170 fmt.color = panel->dir_color; 159 171 else 160 172 fmt.color = panel->color; … … 402 414 * @param panel Panel 403 415 * @param name File name 404 * @param size File size; 416 * @param size File size 417 * @param isdir @c true iff the entry is a directory 405 418 * @return EOK on success or an error code 406 419 */ 407 errno_t panel_entry_append(panel_t *panel, const char *name, uint64_t size) 420 errno_t panel_entry_append(panel_t *panel, const char *name, uint64_t size, 421 bool isdir) 408 422 { 409 423 panel_entry_t *entry; … … 421 435 422 436 entry->size = size; 437 entry->isdir = isdir; 423 438 link_initialize(&entry->lentries); 424 439 list_append(&entry->lentries, &panel->entries); … … 469 484 DIR *dir; 470 485 struct dirent *dirent; 486 vfs_stat_t finfo; 471 487 errno_t rc; 472 488 … … 477 493 dirent = readdir(dir); 478 494 while (dirent != NULL) { 479 rc = panel_entry_append(panel, dirent->d_name, 1);495 rc = vfs_stat_path(dirent->d_name, &finfo); 480 496 if (rc != EOK) 481 497 goto error; 498 499 rc = panel_entry_append(panel, dirent->d_name, 1, 500 finfo.is_directory); 501 if (rc != EOK) 502 goto error; 503 482 504 dirent = readdir(dir); 483 505 } … … 553 575 panel_entry_t *a = *(panel_entry_t **)pa; 554 576 panel_entry_t *b = *(panel_entry_t **)pb; 577 int dcmp; 578 579 /* Sort directories first */ 580 dcmp = b->isdir - a->isdir; 581 if (dcmp != 0) 582 return dcmp; 555 583 556 584 return str_cmp(a->name, b->name);
Note:
See TracChangeset
for help on using the changeset viewer.