1
0
mirror of git://projects.qi-hardware.com/gmenu2x.git synced 2024-11-25 18:05:20 +02:00

Remove unnecessary file existence check in GMenu2X::setSkin(2)

The existence of modifications to the skin configuration in the home
directory is now checked with ifstream::is_open, and the system's skin
configuration is used if that returns false.
This commit is contained in:
Nebuleon Fumika 2014-08-10 23:11:13 +00:00 committed by Maarten ter Huurne
parent ebb34f3e00
commit d6b2643610
2 changed files with 39 additions and 34 deletions

View File

@ -783,41 +783,16 @@ void GMenu2X::setSkin(const string &skin, bool setWallpaper) {
/* Load skin settings from user directory if present, /* Load skin settings from user directory if present,
* or from the system directory. */ * or from the system directory. */
string skinconfname = getHome() + "/skins/" + skin + "/skin.conf"; if (!readSkinConfig(getHome() + "/skins/" + skin + "/skin.conf")) {
if (!fileExists(skinconfname)) readSkinConfig(GMENU2X_SYSTEM_DIR "/skins/" + skin + "/skin.conf");
skinconfname = GMENU2X_SYSTEM_DIR "/skins/" + skin + "/skin.conf"; }
if (fileExists(skinconfname)) { if (setWallpaper && !skinConfStr["wallpaper"].empty()) {
ifstream skinconf(skinconfname.c_str(), ios_base::in); string fp = sc.getSkinFilePath("wallpapers/" + skinConfStr["wallpaper"]);
if (skinconf.is_open()) { if (!fp.empty())
string line; confStr["wallpaper"] = fp;
while (getline(skinconf, line, '\n')) { else
line = trim(line); WARNING("Unable to find wallpaper defined on skin %s\n", skin.c_str());
DEBUG("skinconf: '%s'\n", line.c_str());
string::size_type pos = line.find("=");
string name = trim(line.substr(0,pos));
string value = trim(line.substr(pos+1,line.length()));
if (value.length()>0) {
if (value.length()>1 && value.at(0)=='"' && value.at(value.length()-1)=='"')
skinConfStr[name] = value.substr(1,value.length()-2);
else if (value.at(0) == '#')
skinConfColors[stringToColor(name)] =
RGBAColor::fromString(value.substr(1, value.length()));
else
skinConfInt[name] = atoi(value.c_str());
}
}
skinconf.close();
if (setWallpaper && !skinConfStr["wallpaper"].empty()) {
string fp = sc.getSkinFilePath("wallpapers/" + skinConfStr["wallpaper"]);
if (!fp.empty())
confStr["wallpaper"] = fp;
else
WARNING("Unable to find wallpaper defined on skin %s\n", skin.c_str());
}
}
} }
evalIntConf(skinConfInt, "topBarHeight", 50, 32, 120); evalIntConf(skinConfInt, "topBarHeight", 50, 32, 120);
@ -834,6 +809,35 @@ void GMenu2X::setSkin(const string &skin, bool setWallpaper) {
initFont(); initFont();
} }
bool GMenu2X::readSkinConfig(const string& conffile)
{
ifstream skinconf(conffile.c_str(), ios_base::in);
if (skinconf.is_open()) {
string line;
while (getline(skinconf, line, '\n')) {
line = trim(line);
DEBUG("skinconf: '%s'\n", line.c_str());
string::size_type pos = line.find("=");
string name = trim(line.substr(0,pos));
string value = trim(line.substr(pos+1,line.length()));
if (value.length()>0) {
if (value.length()>1 && value.at(0)=='"' && value.at(value.length()-1)=='"')
skinConfStr[name] = value.substr(1,value.length()-2);
else if (value.at(0) == '#')
skinConfColors[stringToColor(name)] =
RGBAColor::fromString(value.substr(1, value.length()));
else
skinConfInt[name] = atoi(value.c_str());
}
}
skinconf.close();
return true;
} else {
return false;
}
}
void GMenu2X::showManual() { void GMenu2X::showManual() {
menu->selLinkApp()->showManual(); menu->selLinkApp()->showManual();
} }

View File

@ -154,6 +154,7 @@ public:
//Configuration settings //Configuration settings
bool useSelectionPng; bool useSelectionPng;
void setSkin(const std::string &skin, bool setWallpaper = true); void setSkin(const std::string &skin, bool setWallpaper = true);
bool readSkinConfig(const std::string& conffile);
SurfaceCollection sc; SurfaceCollection sc;
Translator tr; Translator tr;