#include #include #include #include #include #include #include "settings.h" using namespace std; string Settings::getSettingsFilePath() { return settingsFilePath; } void Settings::setSettingsFilePath(string path) { settingsFilePath = path.append("settings.txt"); } void Settings::load() { //reset the settings settings = map(); sceneRoundTrip = vector(); pauseScenes = vector(); //read the settings file vector settingsElements; ifstream infile(settingsFilePath); string value; string line; size_t pos; int numValues; bool startMessageDisableFound = false; infile.seekg(0); while (infile.good()) { pos = line.npos; numValues = 0; //read json file getline(infile, line); //disable the start message? if (!startMessageDisableFound) { pos = line.find("\"StartMessageDisable\": "); if (pos != line.npos) { startMessageDisableFound = true; startMessageDisable = line.find("true") == line.npos ? false : true; } } //read values of the "editable list" UI element pos = line.find("\"value\":"); if (!line.empty() && pos != line.npos) { string temp = line.substr(pos + 10, line.npos - 1); stringstream lineStream = stringstream(temp); numValues = 0; //find Scene Round Trip if (temp.find("Scene Round Trip") != temp.npos) { //discard the first value ("Scene Round Trip") getline(lineStream, value, ','); while (lineStream.good()) { //Scene Round Trip,TriggerSceneHere,DelayHere,NextSceneHere,DelayHere,AnotherSceneHere,DelayHere,... getline(lineStream, value, ','); sceneRoundTrip.push_back(value); } //remove trailing /" of last value if (sceneRoundTrip.size() > 0) { sceneRoundTrip.back().pop_back(); } if (sceneRoundTrip.size() == 0 || sceneRoundTrip.size() % 2 != 0) { sceneRoundTrip.push_back(""); } } else if (temp.find("Pause Scene Names") != temp.npos) { //discard the first value ("Pause Scene Names") getline(lineStream, value, ','); while (lineStream.good()) { //Scene Round Trip,TriggerSceneHere,DelayHere,NextSceneHere,DelayHere,AnotherSceneHere,DelayHere,... getline(lineStream, value, ','); pauseScenes.push_back(value); } //remove trailing /" of last value if (pauseScenes.size() > 0) { pauseScenes.back().pop_back(); } } //find values for Scene switching else { //windowTitle,sceneName,isFullscreenValue while (lineStream.good()) { getline(lineStream, value, ','); settingsElements.push_back(value); numValues++; } //two values per line are expected //add missing value if (numValues < 3) { settingsElements.push_back(""); } //discard additional values for (numValues; numValues > 3; numValues--) { settingsElements.pop_back(); } //assing to data Data d = Data(); string isFullscreen = settingsElements.back(); d.isFullscreen = (isFullscreen.find("isFullscreen") != isFullscreen.npos) ? true : false; //dont remove an element if isFullscreen was not found if (d.isFullscreen) { settingsElements.pop_back(); } string sceneName = settingsElements.back(); d.sceneName = sceneName; settingsElements.pop_back(); string windowName = settingsElements.back(); settings.insert(pair(windowName, d)); settingsElements.pop_back(); } } } infile.close(); } bool Settings::getStartMessageDisable(){ return startMessageDisable; } map Settings::getMap() { return settings; } vector Settings::getSceneRoundTrip(){ return sceneRoundTrip; } vector Settings::getPauseScenes(){ return pauseScenes; }