mirror of
https://gitlab.com/Theopse/fbi-i18n-zh.git
synced 2025-04-26 03:16:36 +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 "section.h"
|
||||||
#include "../error.h"
|
#include "../error.h"
|
||||||
#include "../../util.h"
|
#include "../../util.h"
|
||||||
|
#include "task.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
bool setup;
|
bool setup;
|
||||||
@ -38,10 +39,20 @@ static list_item cia_files_action_items[CIA_FILES_ACTION_COUNT] = {
|
|||||||
{"Paste", 0xFF000000, action_paste_contents},
|
{"Paste", 0xFF000000, action_paste_contents},
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DIRECTORIES_ACTION_COUNT 7
|
#define DIRECTORIES_ACTION_COUNT 4
|
||||||
|
|
||||||
static u32 directories_action_count = DIRECTORIES_ACTION_COUNT;
|
static u32 directories_action_count = DIRECTORIES_ACTION_COUNT;
|
||||||
static list_item directories_action_items[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 SD", 0xFF000000, action_install_cias_sd},
|
||||||
{"Install all CIAs to NAND", 0xFF000000, action_install_cias_nand},
|
{"Install all CIAs to NAND", 0xFF000000, action_install_cias_nand},
|
||||||
{"Delete all CIAs", 0xFF000000, action_delete_dir_cias},
|
{"Delete all CIAs", 0xFF000000, action_delete_dir_cias},
|
||||||
@ -75,11 +86,19 @@ static void files_action_update(ui_view* view, void* data, list_item** items, u3
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(fileInfo->isDirectory) {
|
if(fileInfo->isDirectory) {
|
||||||
|
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) {
|
if(*itemCount != &directories_action_count || *items != directories_action_items) {
|
||||||
*itemCount = &directories_action_count;
|
*itemCount = &directories_action_count;
|
||||||
*items = directories_action_items;
|
*items = directories_action_items;
|
||||||
}
|
}
|
||||||
} else if(fileInfo->isCia) {
|
}
|
||||||
|
} else {
|
||||||
|
if(fileInfo->isCia) {
|
||||||
if(*itemCount != &cia_files_action_count || *items != cia_files_action_items) {
|
if(*itemCount != &cia_files_action_count || *items != cia_files_action_items) {
|
||||||
*itemCount = &cia_files_action_count;
|
*itemCount = &cia_files_action_count;
|
||||||
*items = cia_files_action_items;
|
*items = cia_files_action_items;
|
||||||
@ -91,6 +110,7 @@ static void files_action_update(ui_view* view, void* data, list_item** items, u3
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static ui_view* files_action_create(file_info* info) {
|
static ui_view* files_action_create(file_info* info) {
|
||||||
return list_create(info->isDirectory ? "Directory Action" : "File Action", "A: Select, B: Return", info, files_action_update, files_action_draw_top);
|
return list_create(info->isDirectory ? "Directory Action" : "File Action", "A: Select, B: Return", info, files_action_update, files_action_draw_top);
|
||||||
|
@ -150,6 +150,7 @@ static Result task_load_files() {
|
|||||||
strncpy(dotFileInfo->path, files_path, PATH_MAX);
|
strncpy(dotFileInfo->path, files_path, PATH_MAX);
|
||||||
util_get_path_file(dotFileInfo->name, dotFileInfo->path, NAME_MAX);
|
util_get_path_file(dotFileInfo->name, dotFileInfo->path, NAME_MAX);
|
||||||
dotFileInfo->isDirectory = true;
|
dotFileInfo->isDirectory = true;
|
||||||
|
dotFileInfo->containsCias = false;
|
||||||
dotFileInfo->size = 0;
|
dotFileInfo->size = 0;
|
||||||
dotFileInfo->isCia = false;
|
dotFileInfo->isCia = false;
|
||||||
|
|
||||||
@ -167,6 +168,7 @@ static Result task_load_files() {
|
|||||||
util_get_parent_path(dotDotFileInfo->path, files_path, PATH_MAX);
|
util_get_parent_path(dotDotFileInfo->path, files_path, PATH_MAX);
|
||||||
util_get_path_file(dotDotFileInfo->name, dotDotFileInfo->path, NAME_MAX);
|
util_get_path_file(dotDotFileInfo->name, dotDotFileInfo->path, NAME_MAX);
|
||||||
dotDotFileInfo->isDirectory = true;
|
dotDotFileInfo->isDirectory = true;
|
||||||
|
dotDotFileInfo->containsCias = false;
|
||||||
dotDotFileInfo->size = 0;
|
dotDotFileInfo->size = 0;
|
||||||
dotDotFileInfo->isCia = false;
|
dotDotFileInfo->isCia = false;
|
||||||
|
|
||||||
@ -217,6 +219,7 @@ static Result task_load_files() {
|
|||||||
|
|
||||||
snprintf(fileInfo->path, PATH_MAX, "%s%s/", files_path, entryName);
|
snprintf(fileInfo->path, PATH_MAX, "%s%s/", files_path, entryName);
|
||||||
fileInfo->isDirectory = true;
|
fileInfo->isDirectory = true;
|
||||||
|
fileInfo->containsCias = false;
|
||||||
fileInfo->size = 0;
|
fileInfo->size = 0;
|
||||||
fileInfo->isCia = false;
|
fileInfo->isCia = false;
|
||||||
} else {
|
} else {
|
||||||
@ -224,6 +227,7 @@ static Result task_load_files() {
|
|||||||
|
|
||||||
snprintf(fileInfo->path, PATH_MAX, "%s%s", files_path, entryName);
|
snprintf(fileInfo->path, PATH_MAX, "%s%s", files_path, entryName);
|
||||||
fileInfo->isDirectory = false;
|
fileInfo->isDirectory = false;
|
||||||
|
fileInfo->containsCias = false;
|
||||||
fileInfo->size = 0;
|
fileInfo->size = 0;
|
||||||
fileInfo->isCia = false;
|
fileInfo->isCia = false;
|
||||||
|
|
||||||
@ -233,6 +237,8 @@ static Result task_load_files() {
|
|||||||
|
|
||||||
AM_TitleEntry titleEntry;
|
AM_TitleEntry titleEntry;
|
||||||
if(R_SUCCEEDED(AM_GetCiaFileInfo(MEDIATYPE_SD, &titleEntry, fileHandle))) {
|
if(R_SUCCEEDED(AM_GetCiaFileInfo(MEDIATYPE_SD, &titleEntry, fileHandle))) {
|
||||||
|
dotFileInfo->containsCias = true;
|
||||||
|
|
||||||
fileInfo->isCia = true;
|
fileInfo->isCia = true;
|
||||||
fileInfo->ciaInfo.titleId = titleEntry.titleID;
|
fileInfo->ciaInfo.titleId = titleEntry.titleID;
|
||||||
fileInfo->ciaInfo.version = titleEntry.version;
|
fileInfo->ciaInfo.version = titleEntry.version;
|
||||||
|
@ -29,6 +29,7 @@ typedef struct {
|
|||||||
char name[NAME_MAX];
|
char name[NAME_MAX];
|
||||||
char path[PATH_MAX];
|
char path[PATH_MAX];
|
||||||
bool isDirectory;
|
bool isDirectory;
|
||||||
|
bool containsCias;
|
||||||
u64 size;
|
u64 size;
|
||||||
bool isCia;
|
bool isCia;
|
||||||
cia_info ciaInfo;
|
cia_info ciaInfo;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user