mirror of
https://github.com/wiiu-env/homebrew_on_menu_plugin.git
synced 2024-11-22 02:29:15 +01:00
Add option to hide all .rpx
This commit is contained in:
parent
95fdc8900f
commit
dc80552d5f
@ -24,6 +24,9 @@ Via the plugin config menu (press L, DPAD Down and Minus on the gamepad) you can
|
|||||||
- Hides all homebrew from the Wii U Menu except the `sd:/wiiu/apps/homebrew_launcher.wuhb` and `sd:/wiiu/apps/homebrew_launcher/homebrew_launcher.wuhb`
|
- Hides all homebrew from the Wii U Menu except the `sd:/wiiu/apps/homebrew_launcher.wuhb` and `sd:/wiiu/apps/homebrew_launcher/homebrew_launcher.wuhb`
|
||||||
- Prefer .wuhb over .rpx (Default is true)
|
- Prefer .wuhb over .rpx (Default is true)
|
||||||
- Hides a `.rpx` from the Wii U Menu if a `.wuhb` with the same name exists in the same directory.
|
- Hides a `.rpx` from the Wii U Menu if a `.wuhb` with the same name exists in the same directory.
|
||||||
|
- Hide all .rpx (Default is false)
|
||||||
|
- Hides all `.rpx` from the Wii U Menu.
|
||||||
|
|
||||||
## Save data redirection
|
## Save data redirection
|
||||||
In order to preserve the order of homebrew apps even when you run the Wii U Menu without this plugin, this plugin will redirect the Wii U Menu save data to `sd:/wiiu/homebrew_on_menu_plugin`.
|
In order to preserve the order of homebrew apps even when you run the Wii U Menu without this plugin, this plugin will redirect the Wii U Menu save data to `sd:/wiiu/homebrew_on_menu_plugin`.
|
||||||
When no save data is found on the sd card, the current save data is copied from the console, but after that it's never updated.
|
When no save data is found on the sd card, the current save data is copied from the console, but after that it's never updated.
|
||||||
|
39
src/main.cpp
39
src/main.cpp
@ -64,6 +64,7 @@ WUPS_USE_STORAGE("homebrew_on_menu"); // Use the storage API
|
|||||||
|
|
||||||
#define HIDE_HOMEBREW_STRING "hideHomebrew"
|
#define HIDE_HOMEBREW_STRING "hideHomebrew"
|
||||||
#define PREFER_WUHB_OVER_RPX_STRING "hideRPXIfWUHBExists"
|
#define PREFER_WUHB_OVER_RPX_STRING "hideRPXIfWUHBExists"
|
||||||
|
#define HIDE_ALL_RPX_STRING "hideAllRPX"
|
||||||
|
|
||||||
#define HOMEBREW_APPS_DIRECTORY "fs:/vol/external01/wiiu/apps"
|
#define HOMEBREW_APPS_DIRECTORY "fs:/vol/external01/wiiu/apps"
|
||||||
#define HOMEBREW_LAUNCHER_FILENAME "homebrew_launcher.wuhb"
|
#define HOMEBREW_LAUNCHER_FILENAME "homebrew_launcher.wuhb"
|
||||||
@ -74,8 +75,10 @@ WUPS_USE_STORAGE("homebrew_on_menu"); // Use the storage API
|
|||||||
|
|
||||||
bool gHideHomebrew = false;
|
bool gHideHomebrew = false;
|
||||||
bool gPreferWUHBOverRPX = true;
|
bool gPreferWUHBOverRPX = true;
|
||||||
|
bool gHideAllRPX = false;
|
||||||
bool prevHideValue = false;
|
bool prevHideValue = false;
|
||||||
bool prevPreferWUHBOverRPXValue = false;
|
bool prevPreferWUHBOverRPXValue = false;
|
||||||
|
bool prevHideAllRPX = false;
|
||||||
|
|
||||||
INITIALIZE_PLUGIN() {
|
INITIALIZE_PLUGIN() {
|
||||||
memset((void *) ¤t_launched_title_info, 0, sizeof(current_launched_title_info));
|
memset((void *) ¤t_launched_title_info, 0, sizeof(current_launched_title_info));
|
||||||
@ -133,8 +136,21 @@ INITIALIZE_PLUGIN() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((storageRes = WUPS_GetBool(nullptr, HIDE_ALL_RPX_STRING, &gHideAllRPX)) == WUPS_STORAGE_ERROR_NOT_FOUND) {
|
||||||
|
// Add the value to the storage if it's missing.
|
||||||
|
storageRes = WUPS_StoreBool(nullptr, HIDE_ALL_RPX_STRING, gHideAllRPX);
|
||||||
|
if (storageRes != WUPS_STORAGE_ERROR_SUCCESS) {
|
||||||
|
DEBUG_FUNCTION_LINE_ERR("Failed to store bool %s (%d)", WUPS_GetStorageStatusStr(storageRes), storageRes);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (storageRes != WUPS_STORAGE_ERROR_SUCCESS) {
|
||||||
|
DEBUG_FUNCTION_LINE_ERR("Failed to get bool %s (%d)", WUPS_GetStorageStatusStr(storageRes), storageRes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
prevHideValue = gHideHomebrew;
|
prevHideValue = gHideHomebrew;
|
||||||
prevPreferWUHBOverRPXValue = gPreferWUHBOverRPX;
|
prevPreferWUHBOverRPXValue = gPreferWUHBOverRPX;
|
||||||
|
prevHideAllRPX = gHideAllRPX;
|
||||||
|
|
||||||
// Close storage
|
// Close storage
|
||||||
WUPS_CloseStorage();
|
WUPS_CloseStorage();
|
||||||
@ -163,6 +179,17 @@ void preferWUHBOverRPXChanged(ConfigItemBoolean *item, bool newValue) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void hideAllRPXChanged(ConfigItemBoolean *item, bool newValue) {
|
||||||
|
DEBUG_FUNCTION_LINE_VERBOSE("New value in gHideAllRPX: %d", newValue);
|
||||||
|
gHideAllRPX = newValue;
|
||||||
|
|
||||||
|
// If the value has changed, we store it in the storage.
|
||||||
|
WUPSStorageError storageRes = WUPS_StoreBool(nullptr, HIDE_ALL_RPX_STRING, gHideAllRPX);
|
||||||
|
if (storageRes != WUPS_STORAGE_ERROR_SUCCESS) {
|
||||||
|
DEBUG_FUNCTION_LINE_ERR("Failed to store bool: %s (%d)", WUPS_GetStorageStatusStr(storageRes), storageRes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
WUPS_GET_CONFIG() {
|
WUPS_GET_CONFIG() {
|
||||||
// We open the storage so we can persist the configuration the user did.
|
// We open the storage so we can persist the configuration the user did.
|
||||||
WUPSStorageError storageRes;
|
WUPSStorageError storageRes;
|
||||||
@ -180,6 +207,7 @@ WUPS_GET_CONFIG() {
|
|||||||
|
|
||||||
WUPSConfigItemBoolean_AddToCategoryHandled(config, cat, HIDE_HOMEBREW_STRING, "Hide all homebrew except Homebrew Launcher", gHideHomebrew, &hideHomebrewChanged);
|
WUPSConfigItemBoolean_AddToCategoryHandled(config, cat, HIDE_HOMEBREW_STRING, "Hide all homebrew except Homebrew Launcher", gHideHomebrew, &hideHomebrewChanged);
|
||||||
WUPSConfigItemBoolean_AddToCategoryHandled(config, cat, PREFER_WUHB_OVER_RPX_STRING, "Prefer .wuhb over .rpx", gPreferWUHBOverRPX, &preferWUHBOverRPXChanged);
|
WUPSConfigItemBoolean_AddToCategoryHandled(config, cat, PREFER_WUHB_OVER_RPX_STRING, "Prefer .wuhb over .rpx", gPreferWUHBOverRPX, &preferWUHBOverRPXChanged);
|
||||||
|
WUPSConfigItemBoolean_AddToCategoryHandled(config, cat, HIDE_ALL_RPX_STRING, "Hide all .rpx", gHideAllRPX, &hideAllRPXChanged);
|
||||||
|
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
@ -195,7 +223,7 @@ WUPS_CONFIG_CLOSED() {
|
|||||||
DEBUG_FUNCTION_LINE_ERR("Failed to close storage %s (%d)", WUPS_GetStorageStatusStr(storageRes), storageRes);
|
DEBUG_FUNCTION_LINE_ERR("Failed to close storage %s (%d)", WUPS_GetStorageStatusStr(storageRes), storageRes);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prevHideValue != gHideHomebrew || prevPreferWUHBOverRPXValue != gPreferWUHBOverRPX) {
|
if (prevHideValue != gHideHomebrew || prevPreferWUHBOverRPXValue != gPreferWUHBOverRPX || prevHideAllRPX != gHideAllRPX) {
|
||||||
if (!sTitleRebooting) {
|
if (!sTitleRebooting) {
|
||||||
_SYSLaunchTitleWithStdArgsInNoSplash(OSGetTitleID(), nullptr);
|
_SYSLaunchTitleWithStdArgsInNoSplash(OSGetTitleID(), nullptr);
|
||||||
sTitleRebooting = true;
|
sTitleRebooting = true;
|
||||||
@ -203,6 +231,7 @@ WUPS_CONFIG_CLOSED() {
|
|||||||
}
|
}
|
||||||
prevHideValue = gHideHomebrew;
|
prevHideValue = gHideHomebrew;
|
||||||
prevPreferWUHBOverRPXValue = gPreferWUHBOverRPX;
|
prevPreferWUHBOverRPXValue = gPreferWUHBOverRPX;
|
||||||
|
prevHideAllRPX = gHideAllRPX;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cleanup() {
|
void Cleanup() {
|
||||||
@ -357,7 +386,13 @@ void readCustomTitlesFromSD() {
|
|||||||
DirList dirList(HOMEBREW_APPS_DIRECTORY, ".rpx,.wuhb", DirList::Files | DirList::CheckSubfolders, 1);
|
DirList dirList(HOMEBREW_APPS_DIRECTORY, ".rpx,.wuhb", DirList::Files | DirList::CheckSubfolders, 1);
|
||||||
dirList.SortList();
|
dirList.SortList();
|
||||||
|
|
||||||
if (gPreferWUHBOverRPX) {
|
if (gHideAllRPX) {
|
||||||
|
for (int i = 0; i < dirList.GetFilecount(); i++) {
|
||||||
|
if (dirList.GetFilepath(i) != nullptr && !std::string_view(dirList.GetFilepath(i)).ends_with(".rpx")) {
|
||||||
|
listOfExecutables.emplace_back(dirList.GetFilepath(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (gPreferWUHBOverRPX) {
|
||||||
// map<[path without extension], vector<[extension]>>
|
// map<[path without extension], vector<[extension]>>
|
||||||
std::map<std::string, std::vector<std::string>> pathWithoutExtensionMap;
|
std::map<std::string, std::vector<std::string>> pathWithoutExtensionMap;
|
||||||
for (int i = 0; i < dirList.GetFilecount(); i++) {
|
for (int i = 0; i < dirList.GetFilecount(); i++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user