mirror of
https://gitlab.com/Theopse/fbi-i18n-zh.git
synced 2025-04-06 03:58:02 +08:00
Don't display CIA directory options if a directory contains no CIA files.
This commit is contained in:
parent
e1d1341820
commit
f554c7f2a1
@ -10,6 +10,7 @@
|
||||
#include "section.h"
|
||||
#include "../error.h"
|
||||
#include "../../util.h"
|
||||
#include "task.h"
|
||||
|
||||
typedef struct {
|
||||
bool setup;
|
||||
@ -38,10 +39,20 @@ static list_item cia_files_action_items[CIA_FILES_ACTION_COUNT] = {
|
||||
{"Paste", 0xFF000000, action_paste_contents},
|
||||
};
|
||||
|
||||
#define DIRECTORIES_ACTION_COUNT 7
|
||||
#define DIRECTORIES_ACTION_COUNT 4
|
||||
|
||||
static u32 directories_action_count = DIRECTORIES_ACTION_COUNT;
|
||||
static list_item directories_action_items[DIRECTORIES_ACTION_COUNT] = {
|
||||
{"Delete all contents", 0xFF000000, action_delete_dir_contents},
|
||||
{"Delete", 0xFF000000, action_delete_contents},
|
||||
{"Copy", 0xFF000000, action_copy_contents},
|
||||
{"Paste", 0xFF000000, action_paste_contents},
|
||||
};
|
||||
|
||||
#define CIA_DIRECTORIES_ACTION_COUNT 7
|
||||
|
||||
static u32 cia_directories_action_count = CIA_DIRECTORIES_ACTION_COUNT;
|
||||
static list_item cia_directories_action_items[CIA_DIRECTORIES_ACTION_COUNT] = {
|
||||
{"Install all CIAs to SD", 0xFF000000, action_install_cias_sd},
|
||||
{"Install all CIAs to NAND", 0xFF000000, action_install_cias_nand},
|
||||
{"Delete all CIAs", 0xFF000000, action_delete_dir_cias},
|
||||
@ -75,19 +86,28 @@ static void files_action_update(ui_view* view, void* data, list_item** items, u3
|
||||
}
|
||||
|
||||
if(fileInfo->isDirectory) {
|
||||
if(*itemCount != &directories_action_count || *items != directories_action_items) {
|
||||
*itemCount = &directories_action_count;
|
||||
*items = directories_action_items;
|
||||
}
|
||||
} else if(fileInfo->isCia) {
|
||||
if(*itemCount != &cia_files_action_count || *items != cia_files_action_items) {
|
||||
*itemCount = &cia_files_action_count;
|
||||
*items = cia_files_action_items;
|
||||
if(fileInfo->containsCias) {
|
||||
if(*itemCount != &cia_directories_action_count || *items != cia_directories_action_items) {
|
||||
*itemCount = &cia_directories_action_count;
|
||||
*items = cia_directories_action_items;
|
||||
}
|
||||
} else {
|
||||
if(*itemCount != &directories_action_count || *items != directories_action_items) {
|
||||
*itemCount = &directories_action_count;
|
||||
*items = directories_action_items;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(*itemCount != &files_action_count || *items != files_action_items) {
|
||||
*itemCount = &files_action_count;
|
||||
*items = files_action_items;
|
||||
if(fileInfo->isCia) {
|
||||
if(*itemCount != &cia_files_action_count || *items != cia_files_action_items) {
|
||||
*itemCount = &cia_files_action_count;
|
||||
*items = cia_files_action_items;
|
||||
}
|
||||
} else {
|
||||
if(*itemCount != &files_action_count || *items != files_action_items) {
|
||||
*itemCount = &files_action_count;
|
||||
*items = files_action_items;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -150,6 +150,7 @@ static Result task_load_files() {
|
||||
strncpy(dotFileInfo->path, files_path, PATH_MAX);
|
||||
util_get_path_file(dotFileInfo->name, dotFileInfo->path, NAME_MAX);
|
||||
dotFileInfo->isDirectory = true;
|
||||
dotFileInfo->containsCias = false;
|
||||
dotFileInfo->size = 0;
|
||||
dotFileInfo->isCia = false;
|
||||
|
||||
@ -167,6 +168,7 @@ static Result task_load_files() {
|
||||
util_get_parent_path(dotDotFileInfo->path, files_path, PATH_MAX);
|
||||
util_get_path_file(dotDotFileInfo->name, dotDotFileInfo->path, NAME_MAX);
|
||||
dotDotFileInfo->isDirectory = true;
|
||||
dotDotFileInfo->containsCias = false;
|
||||
dotDotFileInfo->size = 0;
|
||||
dotDotFileInfo->isCia = false;
|
||||
|
||||
@ -217,6 +219,7 @@ static Result task_load_files() {
|
||||
|
||||
snprintf(fileInfo->path, PATH_MAX, "%s%s/", files_path, entryName);
|
||||
fileInfo->isDirectory = true;
|
||||
fileInfo->containsCias = false;
|
||||
fileInfo->size = 0;
|
||||
fileInfo->isCia = false;
|
||||
} else {
|
||||
@ -224,6 +227,7 @@ static Result task_load_files() {
|
||||
|
||||
snprintf(fileInfo->path, PATH_MAX, "%s%s", files_path, entryName);
|
||||
fileInfo->isDirectory = false;
|
||||
fileInfo->containsCias = false;
|
||||
fileInfo->size = 0;
|
||||
fileInfo->isCia = false;
|
||||
|
||||
@ -233,6 +237,8 @@ static Result task_load_files() {
|
||||
|
||||
AM_TitleEntry titleEntry;
|
||||
if(R_SUCCEEDED(AM_GetCiaFileInfo(MEDIATYPE_SD, &titleEntry, fileHandle))) {
|
||||
dotFileInfo->containsCias = true;
|
||||
|
||||
fileInfo->isCia = true;
|
||||
fileInfo->ciaInfo.titleId = titleEntry.titleID;
|
||||
fileInfo->ciaInfo.version = titleEntry.version;
|
||||
|
@ -29,6 +29,7 @@ typedef struct {
|
||||
char name[NAME_MAX];
|
||||
char path[PATH_MAX];
|
||||
bool isDirectory;
|
||||
bool containsCias;
|
||||
u64 size;
|
||||
bool isCia;
|
||||
cia_info ciaInfo;
|
||||
|
Loading…
x
Reference in New Issue
Block a user