diff options
-rw-r--r-- | apps/filetree.c | 83 |
1 files changed, 37 insertions, 46 deletions
diff --git a/apps/filetree.c b/apps/filetree.c index 75a32a9e42..1944713d13 100644 --- a/apps/filetree.c +++ b/apps/filetree.c | |||
@@ -330,42 +330,43 @@ int ft_load(struct tree_context* c, const char* tempdir) | |||
330 | } | 330 | } |
331 | 331 | ||
332 | dptr->attr = info.attribute; | 332 | dptr->attr = info.attribute; |
333 | int dir_attr = (dptr->attr & ATTR_DIRECTORY); | ||
333 | 334 | ||
334 | /* check for known file types */ | 335 | /* check for known file types */ |
335 | if ( !(dptr->attr & ATTR_DIRECTORY) ) | 336 | if ( !(dir_attr) ) |
336 | dptr->attr |= filetype_get_attr((char *)entry->d_name); | 337 | dptr->attr |= filetype_get_attr((char *)entry->d_name); |
337 | 338 | ||
339 | int file_attr = (dptr->attr & FILE_ATTR_MASK); | ||
340 | |||
338 | /* filter out non-visible files */ | 341 | /* filter out non-visible files */ |
339 | if ((!(dptr->attr & ATTR_DIRECTORY) && ( | 342 | if ((!(dir_attr) && ((*c->dirfilter == SHOW_PLAYLIST && |
340 | (*c->dirfilter == SHOW_PLAYLIST && | 343 | file_attr != FILE_ATTR_M3U) || |
341 | (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_M3U) || | 344 | ((*c->dirfilter == SHOW_MUSIC && file_attr != FILE_ATTR_AUDIO) && |
342 | ((*c->dirfilter == SHOW_MUSIC && | 345 | file_attr != FILE_ATTR_M3U) || |
343 | (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_AUDIO) && | ||
344 | (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_M3U) || | ||
345 | (*c->dirfilter == SHOW_SUPPORTED && !filetype_supported(dptr->attr)))) || | 346 | (*c->dirfilter == SHOW_SUPPORTED && !filetype_supported(dptr->attr)))) || |
346 | (*c->dirfilter == SHOW_WPS && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_WPS) || | 347 | (*c->dirfilter == SHOW_WPS && file_attr != FILE_ATTR_WPS) || |
347 | (*c->dirfilter == SHOW_FONT && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_FONT) || | 348 | (*c->dirfilter == SHOW_FONT && file_attr != FILE_ATTR_FONT) || |
348 | (*c->dirfilter == SHOW_SBS && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_SBS) || | 349 | (*c->dirfilter == SHOW_SBS && file_attr != FILE_ATTR_SBS) || |
349 | #if CONFIG_TUNER | 350 | #if CONFIG_TUNER |
350 | (*c->dirfilter == SHOW_FMS && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_FMS) || | 351 | (*c->dirfilter == SHOW_FMS && file_attr != FILE_ATTR_FMS) || |
351 | #endif | 352 | #endif |
352 | #ifdef HAVE_REMOTE_LCD | 353 | #ifdef HAVE_REMOTE_LCD |
353 | (*c->dirfilter == SHOW_RWPS && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_RWPS) || | 354 | (*c->dirfilter == SHOW_RWPS && file_attr != FILE_ATTR_RWPS) || |
354 | (*c->dirfilter == SHOW_RSBS && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_RSBS) || | 355 | (*c->dirfilter == SHOW_RSBS && file_attr != FILE_ATTR_RSBS) || |
355 | #if CONFIG_TUNER | 356 | #if CONFIG_TUNER |
356 | (*c->dirfilter == SHOW_RFMS && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_RFMS) || | 357 | (*c->dirfilter == SHOW_RFMS && file_attr != FILE_ATTR_RFMS) || |
357 | #endif | 358 | #endif |
358 | #endif | 359 | #endif |
359 | #if CONFIG_TUNER | 360 | #if CONFIG_TUNER |
360 | (*c->dirfilter == SHOW_FMR && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_FMR) || | 361 | (*c->dirfilter == SHOW_FMR && file_attr != FILE_ATTR_FMR) || |
361 | #endif | 362 | #endif |
362 | (*c->dirfilter == SHOW_M3U && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_M3U) || | 363 | (*c->dirfilter == SHOW_M3U && file_attr != FILE_ATTR_M3U) || |
363 | (*c->dirfilter == SHOW_CFG && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_CFG) || | 364 | (*c->dirfilter == SHOW_CFG && file_attr != FILE_ATTR_CFG) || |
364 | (*c->dirfilter == SHOW_LNG && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_LNG) || | 365 | (*c->dirfilter == SHOW_LNG && file_attr != FILE_ATTR_LNG) || |
365 | (*c->dirfilter == SHOW_MOD && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_MOD) || | 366 | (*c->dirfilter == SHOW_MOD && file_attr != FILE_ATTR_MOD) || |
366 | (*c->dirfilter == SHOW_PLUGINS && (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_ROCK && | 367 | (*c->dirfilter == SHOW_PLUGINS && file_attr != FILE_ATTR_ROCK && |
367 | (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_LUA && | 368 | file_attr != FILE_ATTR_LUA && |
368 | (dptr->attr & FILE_ATTR_MASK) != FILE_ATTR_OPX) || | 369 | file_attr != FILE_ATTR_OPX) || |
369 | (callback_show_item && !callback_show_item(entry->d_name, dptr->attr, c))) | 370 | (callback_show_item && !callback_show_item(entry->d_name, dptr->attr, c))) |
370 | { | 371 | { |
371 | continue; | 372 | continue; |
@@ -384,7 +385,7 @@ int ft_load(struct tree_context* c, const char* tempdir) | |||
384 | strcpy(dptr->name, (char *)entry->d_name); | 385 | strcpy(dptr->name, (char *)entry->d_name); |
385 | name_buffer_used += len + 1; | 386 | name_buffer_used += len + 1; |
386 | 387 | ||
387 | if (dptr->attr & ATTR_DIRECTORY) /* count the remaining dirs */ | 388 | if (dir_attr) /* count the remaining dirs */ |
388 | c->dirsindir++; | 389 | c->dirsindir++; |
389 | } | 390 | } |
390 | c->filesindir = files_in_dir; | 391 | c->filesindir = files_in_dir; |
@@ -432,6 +433,13 @@ static void ft_load_font(char *file) | |||
432 | viewportmanager_theme_changed(THEME_UI_VIEWPORT); | 433 | viewportmanager_theme_changed(THEME_UI_VIEWPORT); |
433 | } | 434 | } |
434 | 435 | ||
436 | static void ft_apply_skin_file(char *buf, char *file, const int maxlen) | ||
437 | { | ||
438 | splash(0, ID2P(LANG_WAIT)); | ||
439 | set_file(buf, file, maxlen); | ||
440 | settings_apply_skins(); | ||
441 | } | ||
442 | |||
435 | int ft_enter(struct tree_context* c) | 443 | int ft_enter(struct tree_context* c) |
436 | { | 444 | { |
437 | int rc = GO_TO_PREVIOUS; | 445 | int rc = GO_TO_PREVIOUS; |
@@ -539,49 +547,32 @@ int ft_enter(struct tree_context* c) | |||
539 | 547 | ||
540 | break; | 548 | break; |
541 | case FILE_ATTR_FMS: | 549 | case FILE_ATTR_FMS: |
542 | splash(0, ID2P(LANG_WAIT)); | 550 | ft_apply_skin_file(buf, global_settings.fms_file, MAX_FILENAME); |
543 | set_file(buf, (char *)global_settings.fms_file, MAX_FILENAME); | ||
544 | settings_apply_skins(); | ||
545 | break; | 551 | break; |
546 | #ifdef HAVE_REMOTE_LCD | 552 | #ifdef HAVE_REMOTE_LCD |
547 | case FILE_ATTR_RFMS: | 553 | case FILE_ATTR_RFMS: |
548 | splash(0, ID2P(LANG_WAIT)); | 554 | ft_apply_skin_file(buf, global_settings.rfms_file, MAX_FILENAME); |
549 | set_file(buf, (char *)global_settings.rfms_file, MAX_FILENAME); | ||
550 | settings_apply_skins(); | ||
551 | break; | 555 | break; |
552 | #endif | 556 | #endif |
553 | #endif | 557 | #endif |
554 | |||
555 | case FILE_ATTR_SBS: | 558 | case FILE_ATTR_SBS: |
556 | splash(0, ID2P(LANG_WAIT)); | 559 | ft_apply_skin_file(buf, global_settings.sbs_file, MAX_FILENAME); |
557 | set_file(buf, (char *)global_settings.sbs_file, MAX_FILENAME); | ||
558 | settings_apply_skins(); | ||
559 | break; | 560 | break; |
560 | #ifdef HAVE_REMOTE_LCD | 561 | #ifdef HAVE_REMOTE_LCD |
561 | case FILE_ATTR_RSBS: | 562 | case FILE_ATTR_RSBS: |
562 | splash(0, ID2P(LANG_WAIT)); | 563 | ft_apply_skin_file(buf, global_settings.rsbs_file, MAX_FILENAME); |
563 | set_file(buf, (char *)global_settings.rsbs_file, MAX_FILENAME); | ||
564 | settings_apply_skins(); | ||
565 | break; | 564 | break; |
566 | #endif | 565 | #endif |
567 | /* wps config file */ | 566 | /* wps config file */ |
568 | case FILE_ATTR_WPS: | 567 | case FILE_ATTR_WPS: |
569 | splash(0, ID2P(LANG_WAIT)); | 568 | ft_apply_skin_file(buf, global_settings.wps_file, MAX_FILENAME); |
570 | set_file(buf, (char *)global_settings.wps_file, | ||
571 | MAX_FILENAME); | ||
572 | settings_apply_skins(); | ||
573 | break; | 569 | break; |
574 | |||
575 | #if defined(HAVE_REMOTE_LCD) && (NB_SCREENS > 1) | 570 | #if defined(HAVE_REMOTE_LCD) && (NB_SCREENS > 1) |
576 | /* remote-wps config file */ | 571 | /* remote-wps config file */ |
577 | case FILE_ATTR_RWPS: | 572 | case FILE_ATTR_RWPS: |
578 | splash(0, ID2P(LANG_WAIT)); | 573 | ft_apply_skin_file(buf, global_settings.rwps_file, MAX_FILENAME); |
579 | set_file(buf, (char *)global_settings.rwps_file, | ||
580 | MAX_FILENAME); | ||
581 | settings_apply_skins(); | ||
582 | break; | 574 | break; |
583 | #endif | 575 | #endif |
584 | |||
585 | case FILE_ATTR_CFG: | 576 | case FILE_ATTR_CFG: |
586 | splash(0, ID2P(LANG_WAIT)); | 577 | splash(0, ID2P(LANG_WAIT)); |
587 | if (!settings_load_config(buf,true)) | 578 | if (!settings_load_config(buf,true)) |