mirror of
https://github.com/J-D-K/JKSV.git
synced 2026-07-20 01:01:27 -05:00
Add title blacklist
This commit is contained in:
parent
cee671c682
commit
22bd9d5b9f
|
|
@ -14,6 +14,7 @@ namespace data
|
|||
|
||||
//Loads user + title info
|
||||
void loadDataInfo();
|
||||
void loadBlacklist();
|
||||
void exit();
|
||||
|
||||
//Class to help not load the same icons over and over
|
||||
|
|
@ -95,13 +96,15 @@ namespace data
|
|||
u128 userID;
|
||||
std::string username, userSafe;
|
||||
};
|
||||
//Adds title to blacklist
|
||||
void blacklistAdd(titledata& t);
|
||||
|
||||
//User vector
|
||||
extern std::vector<user> users;
|
||||
|
||||
//Stores current data we're using so I don't have to type so much.
|
||||
extern titledata curData;
|
||||
extern user curUser;
|
||||
extern user curUser;
|
||||
}
|
||||
|
||||
#endif // DATA_H
|
||||
|
|
|
|||
60
src/data.cpp
60
src/data.cpp
|
|
@ -44,6 +44,19 @@ static int getUserIndex(const u128& id)
|
|||
return -1;
|
||||
}
|
||||
|
||||
static std::vector<uint64_t> blacklist;
|
||||
|
||||
bool blacklisted(const uint64_t& id)
|
||||
{
|
||||
for(unsigned i = 0; i < blacklist.size(); i++)
|
||||
{
|
||||
if(id == blacklist[i])
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
namespace data
|
||||
{
|
||||
titledata curData;
|
||||
|
|
@ -54,6 +67,9 @@ namespace data
|
|||
|
||||
void loadDataInfo()
|
||||
{
|
||||
blacklist.clear();
|
||||
loadBlacklist();
|
||||
|
||||
icn defIcon;
|
||||
defIcon.load(0, "romfs:/img/icn/icnDefault.png");
|
||||
icons.push_back(defIcon);
|
||||
|
|
@ -81,7 +97,7 @@ namespace data
|
|||
if(R_FAILED(res) || total == 0)
|
||||
break;
|
||||
|
||||
if((info.SaveDataType == FsSaveDataType_SaveData) || sysSave)
|
||||
if((info.SaveDataType == FsSaveDataType_SaveData && !blacklisted(info.titleID)) || sysSave)
|
||||
{
|
||||
int u = getUserIndex(info.userID);
|
||||
if(u == -1)
|
||||
|
|
@ -314,4 +330,46 @@ namespace data
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
void loadBlacklist()
|
||||
{
|
||||
if(fs::fileExists(fs::getWorkDir() + "blacklist.txt"))
|
||||
{
|
||||
std::string line;
|
||||
std::fstream bl(fs::getWorkDir() + "blacklist.txt", std::ios::in);
|
||||
|
||||
while(std::getline(bl, line))
|
||||
{
|
||||
if(line[0] == '#' || line[0] == '\n')
|
||||
continue;
|
||||
|
||||
uint64_t pushID = std::strtoull(line.c_str(), NULL, 16);
|
||||
|
||||
blacklist.push_back(pushID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void blacklistAdd(titledata& t)
|
||||
{
|
||||
std::fstream bl(fs::getWorkDir() + "blacklist.txt", std::ios::app);
|
||||
|
||||
std::string titleLine = "#" + t.getTitle() + "\n";
|
||||
char idLine[32];
|
||||
sprintf(idLine, "0x%016lX\n", t.getID());
|
||||
|
||||
bl.write(titleLine.c_str(), titleLine.length());
|
||||
bl.write(idLine, std::strlen(idLine));
|
||||
bl.close();
|
||||
|
||||
//Remove it from every user
|
||||
for(unsigned i = 0; i < users.size(); i++)
|
||||
{
|
||||
for(unsigned j = 0; j < users[i].titles.size(); j++)
|
||||
{
|
||||
if(users[i].titles[j].getID() == t.getID())
|
||||
users[i].titles.erase(users[i].titles.begin() + j);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
16
src/ui.cpp
16
src/ui.cpp
|
|
@ -165,19 +165,21 @@ namespace ui
|
|||
//User Select
|
||||
int startX = 848;
|
||||
ui::button sel("", startX, 656, 110, 64);
|
||||
ui::button dmp("", startX += 110, 656, 110, 64);
|
||||
ui::button cls("", startX += 110, 656, 110, 64);
|
||||
ui::button dmp("", startX += 110, 656, 134, 64);
|
||||
ui::button cls("", startX += 134, 656, 110, 64);
|
||||
usrNav.push_back(sel);
|
||||
usrNav.push_back(dmp);
|
||||
usrNav.push_back(cls);
|
||||
|
||||
//Title
|
||||
startX = 914;
|
||||
startX = 804;
|
||||
ui::button ttlSel("", startX, 656, 110, 64);
|
||||
ui::button ttlDmp("", startX += 110, 656, 110, 64);
|
||||
ui::button ttlDmp("", startX += 110, 656, 134, 64);
|
||||
ui::button ttlBlk("", startX += 134, 656, 110, 64);
|
||||
ui::button ttlBck("", startX += 110, 656, 110, 64);
|
||||
ttlNav.push_back(ttlSel);
|
||||
ttlNav.push_back(ttlDmp);
|
||||
ttlNav.push_back(ttlBlk);
|
||||
ttlNav.push_back(ttlBck);
|
||||
|
||||
//Folder. Skip adv since it can't be touch controlled
|
||||
|
|
@ -265,12 +267,14 @@ namespace ui
|
|||
case TTL_SEL:
|
||||
case CLS_TTL:
|
||||
{
|
||||
unsigned startX = 914;
|
||||
unsigned startX = 804;
|
||||
texDraw(buttonA, frameBuffer, startX, 672);
|
||||
drawText("Select", frameBuffer, shared, startX += 38, 680, 14, mnuTxt);
|
||||
texDraw(buttonY, frameBuffer, startX += 72, 672);
|
||||
drawText("Dump All", frameBuffer, shared, startX += 38, 680, 14, mnuTxt);
|
||||
texDraw(buttonB, frameBuffer, startX += 96, 672);
|
||||
texDraw(buttonX, frameBuffer, startX += 96, 672);
|
||||
drawText("Blacklist", frameBuffer, shared, startX += 38, 682, 12, mnuTxt);
|
||||
texDraw(buttonB, frameBuffer, startX += 72, 672);
|
||||
drawText("Back", frameBuffer, shared, startX += 38, 680, 14, mnuTxt);
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -208,7 +208,11 @@ namespace ui
|
|||
{
|
||||
fs::dumpAllUserSaves(data::curUser);
|
||||
}
|
||||
else if(down & KEY_B || ttlNav[2].getEvent() == BUTTON_RELEASED)
|
||||
else if(down & KEY_X || ttlNav[2].getEvent() == BUTTON_RELEASED)
|
||||
{
|
||||
data::blacklistAdd(data::curUser.titles[selected]);
|
||||
}
|
||||
else if(down & KEY_B || ttlNav[3].getEvent() == BUTTON_RELEASED)
|
||||
{
|
||||
start = 0;
|
||||
selected = 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user