Add xfw setting for sort dirs before files

This commit is contained in:
Willy-JL
2023-02-07 00:50:38 +00:00
parent e98ad6fc2c
commit edd3171d6c
4 changed files with 30 additions and 10 deletions
@@ -6,6 +6,7 @@
#include <m-string.h>
#include <storage/storage.h>
#include "toolbox/path.h"
#include "../../../settings/xtreme_settings/xtreme_settings.h"
#define FAP_MANIFEST_MAX_ICON_SIZE 32
@@ -84,11 +85,13 @@ static void ArchiveFile_t_clear(ArchiveFile_t* obj) {
}
static int ArchiveFile_t_cmp(const ArchiveFile_t* a, const ArchiveFile_t* b) {
if(a->type == ArchiveFileTypeFolder && b->type != ArchiveFileTypeFolder) {
return -1;
}
if(a->type != ArchiveFileTypeFolder && b->type == ArchiveFileTypeFolder) {
return 1;
if(!XTREME_SETTINGS()->sort_ignore_dirs) {
if(a->type == ArchiveFileTypeFolder && b->type != ArchiveFileTypeFolder) {
return -1;
}
if(a->type != ArchiveFileTypeFolder && b->type == ArchiveFileTypeFolder) {
return 1;
}
}
return furi_string_cmpi(a->path, b->path);
@@ -11,6 +11,7 @@
#include <gui/elements.h>
#include <furi.h>
#include "toolbox/path.h"
#include "../../../settings/xtreme_settings/xtreme_settings.h"
#define LIST_ITEMS 5u
#define MAX_LEN_PX 110
@@ -84,11 +85,13 @@ static int BrowserItem_t_cmp(const BrowserItem_t* a, const BrowserItem_t* b) {
if(b->type == BrowserItemTypeBack) {
return 1;
}
if(a->type == BrowserItemTypeFolder && b->type != BrowserItemTypeFolder) {
return -1;
}
if(a->type != BrowserItemTypeFolder && b->type == BrowserItemTypeFolder) {
return 1;
if(!XTREME_SETTINGS()->sort_ignore_dirs) {
if(a->type == BrowserItemTypeFolder && b->type != BrowserItemTypeFolder) {
return -1;
}
if(a->type != BrowserItemTypeFolder && b->type == BrowserItemTypeFolder) {
return 1;
}
}
return furi_string_cmpi(a->path, b->path);
@@ -87,6 +87,14 @@ static void xtreme_settings_scene_start_battery_style_changed(VariableItem* item
app->settings_changed = true;
}
static void xtreme_settings_scene_start_sort_folders_before_changed(VariableItem* item) {
XtremeSettingsApp* app = variable_item_get_context(item);
bool value = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, value ? "ON" : "OFF");
XTREME_SETTINGS()->sort_ignore_dirs = !value;
app->settings_changed = true;
}
static void xtreme_settings_scene_start_xp_level_changed(VariableItem* item) {
XtremeSettingsApp* app = variable_item_get_context(item);
app->dolphin_level = variable_item_get_current_value_index(item) + 1;
@@ -219,6 +227,11 @@ void xtreme_settings_scene_start_on_enter(void* context) {
variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, battery_style_names[value_index]);
item = variable_item_list_add(
var_item_list, "Sort folders before", 2, xtreme_settings_scene_start_sort_folders_before_changed, app);
variable_item_set_current_value_index(item, !xtreme_settings->sort_ignore_dirs);
variable_item_set_current_value_text(item, !xtreme_settings->sort_ignore_dirs ? "ON" : "OFF");
char level_str[4];
snprintf(level_str, 4, "%i", app->dolphin_level);
item = variable_item_list_add(
@@ -22,6 +22,7 @@ typedef struct {
char asset_pack[MAX_PACK_NAME_LEN];
BatteryStyle battery_style;
uint16_t anim_speed;
bool sort_ignore_dirs;
} XtremeSettings;
XtremeSettings* XTREME_SETTINGS();