Don't display CIA directory options if a directory contains no CIA files.

This commit is contained in:
Steven Smith 2016-02-15 19:34:04 -08:00
parent e1d1341820
commit f554c7f2a1
3 changed files with 39 additions and 12 deletions

View File

@ -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;
}
}
}
}

View File

@ -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;

View File

@ -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;