Blacklist editor in settings finally.

This commit is contained in:
J-D-K 2021-08-24 23:33:42 -04:00
parent 213f11a274
commit a88de19023
7 changed files with 174 additions and 91 deletions

View File

@ -1,6 +1,7 @@
#pragma once
#include <string>
#include <vector>
#include <unordered_map>
namespace cfg
@ -18,6 +19,7 @@ namespace cfg
bool isBlacklisted(const uint64_t& tid);
void addTitleToBlacklist(void *a);
void removeTitleFromBlacklist(const uint64_t& tid);
bool isFavorite(const uint64_t& tid);
void addTitleToFavorites(const uint64_t& tid);
@ -29,5 +31,7 @@ namespace cfg
void addPathToFilter(const uint64_t& tid, const std::string& _p);
extern std::unordered_map<std::string, bool> config;
extern std::vector<uint64_t> blacklist;
extern std::vector<uint64_t> favorites;
extern uint8_t sortType;
}

View File

@ -8,7 +8,7 @@
#include "gfx.h"
#define BLD_MON 8
#define BLD_DAY 19
#define BLD_DAY 24
#define BLD_YEAR 2021
namespace data

View File

@ -72,23 +72,24 @@ saveDataResetSuccess = 0, "Save for #%s# reset!"
settingsMenu = 0, "Empty Trash Bin"
settingsMenu = 1, "Check for Updates"
settingsMenu = 2, "Set JKSV Save Output Folder"
settingsMenu = 3, "Delete All Save Backups"
settingsMenu = 4, "Include Device Saves With Users: "
settingsMenu = 5, "Auto Backup On Restore: "
settingsMenu = 6, "Auto-Name Backups: "
settingsMenu = 7, "Overclock/CPU Boost: "
settingsMenu = 8, "Hold To Delete: "
settingsMenu = 9, "Hold To Restore: "
settingsMenu = 10, "Hold To Overwrite: "
settingsMenu = 11, "Force Mount: "
settingsMenu = 12, "Account System Saves: "
settingsMenu = 13, "Enable Writing to System Saves: "
settingsMenu = 14, "Use FS Commands Directly: "
settingsMenu = 15, "Export Saves to ZIP: "
settingsMenu = 16, "Force English To Be Used: "
settingsMenu = 17, "Enable Trash Bin: "
settingsMenu = 18, "Title Sorting Type: "
settingsMenu = 19, "Animation Scale: "
settingsMenu = 3, "Edit Blacklisted Titles"
settingsMenu = 4, "Delete All Save Backups"
settingsMenu = 5, "Include Device Saves With Users: "
settingsMenu = 6, "Auto Backup On Restore: "
settingsMenu = 7, "Auto-Name Backups: "
settingsMenu = 8, "Overclock/CPU Boost: "
settingsMenu = 9, "Hold To Delete: "
settingsMenu = 10, "Hold To Restore: "
settingsMenu = 11, "Hold To Overwrite: "
settingsMenu = 12, "Force Mount: "
settingsMenu = 13, "Account System Saves: "
settingsMenu = 14, "Enable Writing to System Saves: "
settingsMenu = 15, "Use FS Commands Directly: "
settingsMenu = 16, "Export Saves to ZIP: "
settingsMenu = 17, "Force English To Be Used: "
settingsMenu = 18, "Enable Trash Bin: "
settingsMenu = 19, "Title Sorting Type: "
settingsMenu = 20, "Animation Scale: "
settingsOff = 0, "Off"
settingsOn = 0, ">On>"
sortType = 0, "Alphabetical"

View File

@ -10,8 +10,8 @@
#include "type.h"
std::unordered_map<std::string, bool> cfg::config;
static std::vector<uint64_t> blacklist;
static std::vector<uint64_t> favorites;
std::vector<uint64_t> cfg::blacklist;
std::vector<uint64_t> cfg::favorites;
static std::unordered_map<uint64_t, std::string> pathDefs;
uint8_t cfg::sortType;
const char *cfgPath = "sdmc:/config/JKSV/JKSV.cfg", *titleDefPath = "sdmc:/config/JKSV/titleDefs.txt", *workDirLegacy = "sdmc:/switch/jksv_dir.txt";
@ -27,7 +27,7 @@ const std::string _true_ = "true", _false_ = "false";
bool cfg::isBlacklisted(const uint64_t& tid)
{
for(uint64_t& bid : blacklist)
for(uint64_t& bid : cfg::blacklist)
if(tid == bid) return true;
return false;
@ -39,7 +39,7 @@ void cfg::addTitleToBlacklist(void *a)
threadInfo *t = (threadInfo *)a;
data::userTitleInfo *d = data::getCurrentUserTitleInfo();
uint64_t tid = d->tid;
blacklist.push_back(tid);
cfg::blacklist.push_back(tid);
for(data::user& u : data::users)
{
for(unsigned i = 0; i < u.titleInfo.size(); i++)
@ -49,9 +49,20 @@ void cfg::addTitleToBlacklist(void *a)
t->finished = true;
}
void cfg::removeTitleFromBlacklist(const uint64_t& tid)
{
for(unsigned i = 0; i < cfg::blacklist.size(); i++)
{
if(cfg::blacklist[i] == tid)
cfg::blacklist.erase(cfg::blacklist.begin() + i);
}
data::loadUsersTitles(false);
ui::ttlRefresh();
}
bool cfg::isFavorite(const uint64_t& tid)
{
for(uint64_t& fid : favorites)
for(uint64_t& fid : cfg::favorites)
if(tid == fid) return true;
return false;
@ -59,9 +70,9 @@ bool cfg::isFavorite(const uint64_t& tid)
static int getFavoriteIndex(const uint64_t& tid)
{
for(unsigned i = 0; i < favorites.size(); i++)
for(unsigned i = 0; i < cfg::favorites.size(); i++)
{
if(tid == favorites[i])
if(tid == cfg::favorites[i])
return i;
}
return -1;
@ -72,10 +83,10 @@ void cfg::addTitleToFavorites(const uint64_t& tid)
if(cfg::isFavorite(tid))
{
int rem = getFavoriteIndex(tid);
favorites.erase(favorites.begin() + rem);
cfg::favorites.erase(cfg::favorites.begin() + rem);
}
else
favorites.push_back(tid);
cfg::favorites.push_back(tid);
data::sortUserTitles();
ui::ttlRefresh();
@ -222,12 +233,12 @@ static void loadConfigLegacy()
static void loadFavoritesLegacy()
{
std::string legacyFavPath = fs::getWorkDir() + "favorites.txt";
std::string legacyFavPath = fs::getWorkDir() + "cfg::favorites.txt";
if(fs::fileExists(legacyFavPath))
{
fs::dataFile fav(legacyFavPath);
while(fav.readNextLine(false))
favorites.push_back(strtoul(fav.getLine().c_str(), NULL, 16));
cfg::favorites.push_back(strtoul(fav.getLine().c_str(), NULL, 16));
fav.close();
fs::delfile(legacyFavPath);
}
@ -235,12 +246,12 @@ static void loadFavoritesLegacy()
static void loadBlacklistLegacy()
{
std::string legacyBlPath = fs::getWorkDir() + "blacklist.txt";
std::string legacyBlPath = fs::getWorkDir() + "cfg::blacklist.txt";
if(fs::fileExists(legacyBlPath))
{
fs::dataFile bl(legacyBlPath);
while(bl.readNextLine(false))
blacklist.push_back(strtoul(bl.getLine().c_str(), NULL, 16));
cfg::blacklist.push_back(strtoul(bl.getLine().c_str(), NULL, 16));
bl.close();
fs::delfile(legacyBlPath);
}
@ -355,14 +366,14 @@ void cfg::loadConfig()
case 16:
{
std::string tid = cfgRead.getNextValueStr();
favorites.push_back(strtoul(tid.c_str(), NULL, 16));
cfg::favorites.push_back(strtoul(tid.c_str(), NULL, 16));
}
break;
case 17:
{
std::string tid = cfgRead.getNextValueStr();
blacklist.push_back(strtoul(tid.c_str(), NULL, 16));
cfg::blacklist.push_back(strtoul(tid.c_str(), NULL, 16));
}
break;
@ -404,17 +415,17 @@ void cfg::saveConfig()
fprintf(cfgOut, "titleSortType = %s\n", sortTypeText().c_str());
fprintf(cfgOut, "animationScale = %f\n", ui::animScale);
if(!favorites.empty())
if(!cfg::favorites.empty())
{
fprintf(cfgOut, "\n#favorites\n");
for(uint64_t& f : favorites)
for(uint64_t& f : cfg::favorites)
fprintf(cfgOut, "favorite = 0x%016lX\n", f);
}
if(!blacklist.empty())
if(!cfg::blacklist.empty())
{
fprintf(cfgOut, "\n#blacklist\n");
for(uint64_t& b : blacklist)
for(uint64_t& b : cfg::blacklist)
fprintf(cfgOut, "blacklist = 0x%016lX\n", b);
}
fclose(cfgOut);

View File

@ -219,6 +219,9 @@ bool data::loadUsersTitles(bool clearUsers)
else
tid = info.application_id;
if(!titleIsLoaded(tid))
addTitleToList(tid);
//Don't bother with this stuff
if(cfg::isBlacklisted(tid) || !accountSystemSaveCheck(info) || !testMount(info))
continue;
@ -258,9 +261,6 @@ bool data::loadUsersTitles(bool clearUsers)
break;
}
if(!titleIsLoaded(tid))
addTitleToList(tid);
int u = getUserIndex(info.uid);
if(u == -1)
{
@ -273,7 +273,6 @@ bool data::loadUsersTitles(bool clearUsers)
pdmqryQueryPlayStatisticsByApplicationIdAndUserAccountId(info.application_id, info.uid, false, &playStats);
else
memset(&playStats, 0, sizeof(PdmPlayStatistics));
users[u].addUserTitleInfo(tid, &info, &playStats);
}
fsSaveDataInfoReaderClose(&it);

View File

@ -8,6 +8,8 @@
#include "util.h"
ui::menu *ui::settMenu;
static ui::slideOutPanel *blEditPanel;
static ui::menu *blEditMenu;
//This is the name of strings used here
static const char *settMenuStr = "settingsMenu";
@ -27,6 +29,9 @@ static inline void toggleBool(bool& b)
b = true;
}
//Declaration, implementation further down
static void blEditMenuPopulate();
static void settMenuCallback(void *a)
{
switch(ui::padKeysDown())
@ -67,6 +72,49 @@ static void settMenuDeleteAllBackups(void *a)
ui::confirm(send);
}
static void blEditDrawFunc(void *a)
{
SDL_Texture *target = (SDL_Texture *)a;
blEditMenu->draw(target, &ui::txtCont, true);
}
static void blEditMenuCallback(void *a)
{
switch(ui::padKeysDown())
{
case HidNpadButton_B:
ui::updateInput();
blEditMenu->setActive(false);
ui::settMenu->setActive(true);
blEditPanel->closePanel();
break;
}
}
static void blEditMenuRemoveTitle(void *a)
{
uint64_t remTID = cfg::blacklist[blEditMenu->getSelected()];
cfg::removeTitleFromBlacklist(remTID);
if(cfg::blacklist.size() > 0)
blEditMenuPopulate();
else
{
blEditMenu->setActive(false);
ui::settMenu->setActive(true);
blEditPanel->closePanel();
}
}
static void blEditMenuPopulate()
{
blEditMenu->reset();
for(unsigned i = 0; i < cfg::blacklist.size(); i++)
{
blEditMenu->addOpt(NULL, data::getTitleNameByTID(cfg::blacklist[i]));
blEditMenu->optAddButtonEvent(i, HidNpadButton_A, blEditMenuRemoveTitle, NULL);
}
}
//Todo: this different
static void toggleOpt(void *a)
{
@ -98,73 +146,83 @@ static void toggleOpt(void *a)
break;
case 3:
settMenuDeleteAllBackups(NULL);
if(cfg::blacklist.size() > 0)
{
blEditMenuPopulate();
ui::settMenu->setActive(false);
blEditMenu->setActive(true);
blEditPanel->openPanel();
}
break;
case 4:
toggleBool(cfg::config["incDev"]);
settMenuDeleteAllBackups(NULL);
break;
case 5:
toggleBool(cfg::config["autoBack"]);
toggleBool(cfg::config["incDev"]);
break;
case 6:
toggleBool(cfg::config["autoName"]);
toggleBool(cfg::config["autoBack"]);
break;
case 7:
toggleBool(cfg::config["ovrClk"]);
toggleBool(cfg::config["autoName"]);
break;
case 8:
toggleBool(cfg::config["holdDel"]);
toggleBool(cfg::config["ovrClk"]);
break;
case 9:
toggleBool(cfg::config["holdRest"]);
toggleBool(cfg::config["holdDel"]);
break;
case 10:
toggleBool(cfg::config["holdOver"]);
toggleBool(cfg::config["holdRest"]);
break;
case 11:
toggleBool(cfg::config["forceMount"]);
toggleBool(cfg::config["holdOver"]);
break;
case 12:
toggleBool(cfg::config["accSysSave"]);
toggleBool(cfg::config["forceMount"]);
break;
case 13:
toggleBool(cfg::config["sysSaveWrite"]);
toggleBool(cfg::config["accSysSave"]);
break;
case 14:
toggleBool(cfg::config["directFsCmd"]);
toggleBool(cfg::config["sysSaveWrite"]);
break;
case 15:
toggleBool(cfg::config["zip"]);
toggleBool(cfg::config["directFsCmd"]);
break;
case 16:
toggleBool(cfg::config["langOverride"]);
toggleBool(cfg::config["zip"]);
break;
case 17:
toggleBool(cfg::config["trashBin"]);
toggleBool(cfg::config["langOverride"]);
break;
case 18:
toggleBool(cfg::config["trashBin"]);
break;
case 19:
if(++cfg::sortType > 2)
cfg::sortType = 0;
data::loadUsersTitles(false);
ui::ttlRefresh();
break;
case 19:
case 20:
ui::animScale += 0.5f;
if(ui::animScale > 8)
ui::animScale = 1;
@ -174,25 +232,25 @@ static void toggleOpt(void *a)
static void updateMenuText()
{
ui::settMenu->editOpt(4, NULL, ui::getUIString(settMenuStr, 4) + getBoolText(cfg::config["incDev"]));
ui::settMenu->editOpt(5, NULL, ui::getUIString(settMenuStr, 5) + getBoolText(cfg::config["autoBack"]));
ui::settMenu->editOpt(6, NULL, ui::getUIString(settMenuStr, 6) + getBoolText(cfg::config["autoName"]));
ui::settMenu->editOpt(7, NULL, ui::getUIString(settMenuStr, 7) + getBoolText(cfg::config["ovrClk"]));
ui::settMenu->editOpt(8, NULL, ui::getUIString(settMenuStr, 8) + getBoolText(cfg::config["holdDel"]));
ui::settMenu->editOpt(9, NULL, ui::getUIString(settMenuStr, 9) + getBoolText(cfg::config["holdRest"]));
ui::settMenu->editOpt(10, NULL, ui::getUIString(settMenuStr, 10) + getBoolText(cfg::config["holdOver"]));
ui::settMenu->editOpt(11, NULL, ui::getUIString(settMenuStr, 11) + getBoolText(cfg::config["forceMount"]));
ui::settMenu->editOpt(12, NULL, ui::getUIString(settMenuStr, 12) + getBoolText(cfg::config["accSysSave"]));
ui::settMenu->editOpt(13, NULL, ui::getUIString(settMenuStr, 13) + getBoolText(cfg::config["sysSaveWrite"]));
ui::settMenu->editOpt(14, NULL, ui::getUIString(settMenuStr, 14) + getBoolText(cfg::config["directFsCmd"]));
ui::settMenu->editOpt(15, NULL, ui::getUIString(settMenuStr, 15) + getBoolText(cfg::config["zip"]));
ui::settMenu->editOpt(16, NULL, ui::getUIString(settMenuStr, 16) + getBoolText(cfg::config["langOverride"]));
ui::settMenu->editOpt(17, NULL, ui::getUIString(settMenuStr, 17) + getBoolText(cfg::config["trashBin"]));
ui::settMenu->editOpt(18, NULL, ui::getUIString(settMenuStr, 18) + ui::getUICString("sortType", cfg::sortType));
ui::settMenu->editOpt(5, NULL, ui::getUIString(settMenuStr, 5) + getBoolText(cfg::config["incDev"]));
ui::settMenu->editOpt(6, NULL, ui::getUIString(settMenuStr, 6) + getBoolText(cfg::config["autoBack"]));
ui::settMenu->editOpt(7, NULL, ui::getUIString(settMenuStr, 7) + getBoolText(cfg::config["autoName"]));
ui::settMenu->editOpt(8, NULL, ui::getUIString(settMenuStr, 8) + getBoolText(cfg::config["ovrClk"]));
ui::settMenu->editOpt(9, NULL, ui::getUIString(settMenuStr, 9) + getBoolText(cfg::config["holdDel"]));
ui::settMenu->editOpt(10, NULL, ui::getUIString(settMenuStr, 10) + getBoolText(cfg::config["holdRest"]));
ui::settMenu->editOpt(11, NULL, ui::getUIString(settMenuStr, 11) + getBoolText(cfg::config["holdOver"]));
ui::settMenu->editOpt(12, NULL, ui::getUIString(settMenuStr, 12) + getBoolText(cfg::config["forceMount"]));
ui::settMenu->editOpt(13, NULL, ui::getUIString(settMenuStr, 13) + getBoolText(cfg::config["accSysSave"]));
ui::settMenu->editOpt(14, NULL, ui::getUIString(settMenuStr, 14) + getBoolText(cfg::config["sysSaveWrite"]));
ui::settMenu->editOpt(15, NULL, ui::getUIString(settMenuStr, 15) + getBoolText(cfg::config["directFsCmd"]));
ui::settMenu->editOpt(16, NULL, ui::getUIString(settMenuStr, 16) + getBoolText(cfg::config["zip"]));
ui::settMenu->editOpt(17, NULL, ui::getUIString(settMenuStr, 17) + getBoolText(cfg::config["langOverride"]));
ui::settMenu->editOpt(18, NULL, ui::getUIString(settMenuStr, 18) + getBoolText(cfg::config["trashBin"]));
ui::settMenu->editOpt(19, NULL, ui::getUIString(settMenuStr, 19) + ui::getUICString("sortType", cfg::sortType));
char tmp[16];
sprintf(tmp, "%.1f", ui::animScale);
ui::settMenu->editOpt(19, NULL, ui::getUIString(settMenuStr, 19) + std::string(tmp));
ui::settMenu->editOpt(20, NULL, ui::getUIString(settMenuStr, 20) + std::string(tmp));
}
void ui::settInit()
@ -201,9 +259,15 @@ void ui::settInit()
ui::settMenu->setCallback(settMenuCallback, NULL);
ui::settMenu->setActive(false);
blEditPanel = new ui::slideOutPanel(512, 720, 0, ui::SLD_RIGHT, blEditDrawFunc);
blEditMenu = new ui::menu(8, 32, 492, 20, 6);
blEditMenu->setCallback(blEditMenuCallback, NULL);
blEditMenu->setActive(false);
ui::registerPanel(blEditPanel);
optHelpX = 1220 - gfx::getTextWidth(ui::getUICString("helpSettings", 0), 18);
for(unsigned i = 0; i < 20; i++)
for(unsigned i = 0; i < 21; i++)
{
ui::settMenu->addOpt(NULL, ui::getUIString("settingsMenu", i));
ui::settMenu->optAddButtonEvent(i, HidNpadButton_A, toggleOpt, NULL);
@ -213,10 +277,13 @@ void ui::settInit()
void ui::settExit()
{
delete ui::settMenu;
delete blEditMenu;
delete blEditPanel;
}
void ui::settUpdate()
{
blEditMenu->update();
ui::settMenu->update();
}

View File

@ -76,23 +76,24 @@ void ui::initStrings()
addUIString("settingsMenu", 0, "Empty Trash Bin");
addUIString("settingsMenu", 1, "Check for Updates");
addUIString("settingsMenu", 2, "Set JKSV Save Output Folder");
addUIString("settingsMenu", 3, "Delete All Save Backups");
addUIString("settingsMenu", 4, "Include Device Saves With Users: ");
addUIString("settingsMenu", 5, "Auto Backup On Restore: ");
addUIString("settingsMenu", 6, "Auto-Name Backups: ");
addUIString("settingsMenu", 7, "Overclock/CPU Boost: ");
addUIString("settingsMenu", 8, "Hold To Delete: ");
addUIString("settingsMenu", 9, "Hold To Restore: ");
addUIString("settingsMenu", 10, "Hold To Overwrite: ");
addUIString("settingsMenu", 11, "Force Mount: ");
addUIString("settingsMenu", 12, "Account System Saves: ");
addUIString("settingsMenu", 13, "Enable Writing to System Saves: ");
addUIString("settingsMenu", 14, "Use FS Commands Directly: ");
addUIString("settingsMenu", 15, "Export Saves to ZIP: ");
addUIString("settingsMenu", 16, "Force English To Be Used: ");
addUIString("settingsMenu", 17, "Enable Trash Bin: ");
addUIString("settingsMenu", 18, "Title Sorting Type: ");
addUIString("settingsMenu", 19, "Animation Scale: ");
addUIString("settingsMenu", 3, "Edit Blacklisted Titles");
addUIString("settingsMenu", 4, "Delete All Save Backups");
addUIString("settingsMenu", 5, "Include Device Saves With Users: ");
addUIString("settingsMenu", 6, "Auto Backup On Restore: ");
addUIString("settingsMenu", 7, "Auto-Name Backups: ");
addUIString("settingsMenu", 8, "Overclock/CPU Boost: ");
addUIString("settingsMenu", 9, "Hold To Delete: ");
addUIString("settingsMenu", 10, "Hold To Restore: ");
addUIString("settingsMenu", 11, "Hold To Overwrite: ");
addUIString("settingsMenu", 12, "Force Mount: ");
addUIString("settingsMenu", 13, "Account System Saves: ");
addUIString("settingsMenu", 14, "Enable Writing to System Saves: ");
addUIString("settingsMenu", 15, "Use FS Commands Directly: ");
addUIString("settingsMenu", 16, "Export Saves to ZIP: ");
addUIString("settingsMenu", 17, "Force English To Be Used: ");
addUIString("settingsMenu", 18, "Enable Trash Bin: ");
addUIString("settingsMenu", 19, "Title Sorting Type: ");
addUIString("settingsMenu", 20, "Animation Scale: ");
//Sort Strings for ^
addUIString("sortType", 0, "Alphabetical");