mirror of
https://gitlab.com/Nanolx/homebrewfilter.git
synced 2024-11-01 15:15:09 +01:00
5cc895dfed
- show_all option - different (more elegant) fix for the empty page switch crash issue
168 lines
4.9 KiB
C++
168 lines
4.9 KiB
C++
|
|
#include <sstream>
|
|
|
|
#include "main.h"
|
|
#include "theme.h"
|
|
|
|
string get_setting(string source, string search)
|
|
{
|
|
if((signed)source.find(search + " = ") != -1)
|
|
{
|
|
source.erase(0, source.find(search + " = ") + search.length() +4);
|
|
source.erase(source.find("\""));
|
|
}
|
|
else
|
|
return "";
|
|
|
|
return source;
|
|
}
|
|
|
|
void load()
|
|
{
|
|
s32 fd;
|
|
u32 file_size;
|
|
static fstats filestats_settings ATTRIBUTE_ALIGN(32);
|
|
static fstats filestats_appios ATTRIBUTE_ALIGN(32);
|
|
static u8 filearray_settings[1024] ATTRIBUTE_ALIGN(32);
|
|
static u8 filearray_appios[1024] ATTRIBUTE_ALIGN(32);
|
|
|
|
Settings.ios_dat = "/title/00010001/54484246/data/appios.dat";
|
|
Settings.dir_dat = "/title/00010001/54484246/data/list.dat";
|
|
Settings.settings_dat = "/title/00010001/54484246/data/settings.dat";
|
|
|
|
AvailableCategoryLoad(Settings.dir_dat);
|
|
|
|
// get settings
|
|
fd = ISFS_Open(Settings.settings_dat.c_str(), ISFS_OPEN_READ);
|
|
if (fd <= 0)
|
|
ISFS_Close(fd);
|
|
|
|
ISFS_GetFileStats(fd, &filestats_settings);
|
|
|
|
file_size = ISFS_Read(fd, filearray_settings, filestats_settings.file_length);
|
|
|
|
ISFS_Close(fd);
|
|
|
|
if(file_size >= 0)
|
|
{
|
|
string source = (char*)filearray_settings;
|
|
|
|
if(get_setting(source, "device_dat") != "")
|
|
Settings.device_dat = get_setting(source, "device_dat");
|
|
|
|
if (get_setting(source, "theme") != "")
|
|
{
|
|
sprintf (Options.theme, get_setting(source, "theme").c_str());
|
|
theme(check_path(Settings.device_dat + ":/config/HBF/themes/") + Options.theme + "/");
|
|
}
|
|
|
|
if(get_setting(source, "language") != "")
|
|
{
|
|
sprintf (Options.language, get_setting(source, "language").c_str());
|
|
ini_Open(check_path(Settings.device_dat + ":/config/HBF/languages/") + Options.language + ".lang");
|
|
AvailableCategory.categories[0] = tr(Settings.category_name_all);
|
|
}
|
|
|
|
if(get_setting(source, "font") != "")
|
|
sprintf (Options.font, get_setting(source, "font").c_str());
|
|
|
|
if(get_setting(source, "slide_effect") != "")
|
|
Options.slide_effect = atoi(get_setting(source, "slide_effect").c_str());
|
|
|
|
if(get_setting(source, "last_category_name") != "")
|
|
{
|
|
if(KategorieNr(get_setting(source, "last_category_name")) != -1)
|
|
Settings.current_category = KategorieNr(get_setting(source, "last_category_name").c_str());
|
|
}
|
|
|
|
if(get_setting(source, "last_category") != "")
|
|
{
|
|
Options.last_category = atoi(get_setting(source, "last_category").c_str());
|
|
if(Options.last_category == 1)
|
|
Options.last_category = Settings.current_category +1;
|
|
}
|
|
|
|
if(get_setting(source, "last_app_name") != "")
|
|
Settings.startingAppName = get_setting(source, "last_app_name");
|
|
|
|
if(get_setting(source, "apps_nr") != "")
|
|
{
|
|
Options.apps = atoi(get_setting(source, "apps_nr").c_str());
|
|
if(Options.apps > 5)
|
|
Options.apps = 5;
|
|
else if(Options.apps < 4)
|
|
Options.apps = 4;
|
|
}
|
|
|
|
if(get_setting(source, "quick_start") != "")
|
|
Options.quick_start = atoi(get_setting(source, "quick_start").c_str());
|
|
|
|
if(get_setting(source, "show_all") != "")
|
|
Options.show_all = atoi(get_setting(source, "show_all").c_str());
|
|
|
|
if(get_setting(source, "navigation") != "")
|
|
Options.navigation = atoi(get_setting(source, "navigation").c_str());
|
|
|
|
if(get_setting(source, "network") != "")
|
|
{
|
|
Options.network = atoi(get_setting(source, "network").c_str());
|
|
Options.temp_network = Options.network;
|
|
}
|
|
|
|
if(get_setting(source, "newrevtext") != "")
|
|
{
|
|
Options.newrevtext = atoi(get_setting(source, "newrevtext").c_str());
|
|
Options.temp_newrevtext = Options.newrevtext;
|
|
}
|
|
|
|
if(get_setting(source, "code") != "")
|
|
{
|
|
sprintf (Settings.code, get_setting(source, "code").c_str());
|
|
strcpy (Options.temp_code, Settings.code);
|
|
}
|
|
|
|
if(get_setting(source, "grid") != "")
|
|
Settings.grid = atoi(get_setting(source, "grid").c_str());
|
|
|
|
if(get_setting(source, "device") != "")
|
|
Settings.device = get_setting(source, "device");
|
|
|
|
if(get_setting(source, "device_icon") != "")
|
|
Options.device_icon = atoi(get_setting(source, "device_icon").c_str());
|
|
|
|
if(get_setting(source, "system") != "")
|
|
Settings.system = atoi(get_setting(source, "system").c_str());
|
|
|
|
if(get_setting(source, "top") != "")
|
|
Settings.top = atoi(get_setting(source, "top").c_str());
|
|
|
|
if(get_setting(source, "bottom") != "")
|
|
Settings.bottom = atoi(get_setting(source, "bottom").c_str());
|
|
|
|
if(get_setting(source, "left") != "")
|
|
Settings.left = atoi(get_setting(source, "left").c_str());
|
|
|
|
if(get_setting(source, "right") != "")
|
|
Settings.right = atoi(get_setting(source, "right").c_str());
|
|
}
|
|
|
|
// get appios
|
|
fd = ISFS_Open(Settings.ios_dat.c_str(), ISFS_OPEN_READ);
|
|
if (fd <= 0)
|
|
ISFS_Close(fd);
|
|
|
|
ISFS_GetFileStats(fd, &filestats_appios);
|
|
|
|
file_size = ISFS_Read(fd, filearray_appios, filestats_appios.file_length);
|
|
|
|
ISFS_Close(fd);
|
|
|
|
if(file_size >= 0)
|
|
{
|
|
string line;
|
|
istringstream in((char*)filearray_appios);
|
|
while(getline(in, line))
|
|
appios.push_back(app_ios(line.substr(0, line.find(" = ")), atoi(line.substr(line.find(" = ") +3).c_str())));
|
|
}
|
|
}
|