Mercurial > hg > tweakathon2ios
diff presetManager.mm @ 1:7e0a19a538d4
added preset manager (untested)
author | Robert Tubb <rt300@eecs.qmul.ac.uk> |
---|---|
date | Fri, 10 Oct 2014 13:20:55 +0100 |
parents | |
children | 60b54ba87f6a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presetManager.mm Fri Oct 10 13:20:55 2014 +0100 @@ -0,0 +1,183 @@ +// +// presetManager.mm +// oscSenderExample +// +// Created by Robert Tubb on 07/11/2012. +// +// + +#include "presetManager.h" + +//--------------------------------------------------------------------------- + +PresetManager presetManager; +extern EventLogger eventLogger; + +//--------------------------------------------------------------------------- +void Preset::draw(){ + // probably just hint values on sliders +}; +//--------------------------------------------------------------------------- +Json::Value Preset::presetToJson(){ + // create the string for this instance of Preset object + + Json::Value presetVal; + + presetVal["creatorUserName"] = creatorUserName; + presetVal["creatorDeviceID"] = creatorDeviceID; + presetVal["creationTime"] = creationTime; + presetVal["name"] = name; + + for(vector<int>::iterator i; i < CCValues.end(); i++){ + presetVal["CCValues"].append(*i); + } + + return presetVal; +} +//--------------------------------------------------------------------------- +PresetManager::PresetManager(){ + timesOpened = 0; + nextID = 0; + + string ts = ofGetTimestampString(); + + presetAlertShowing = false; + + + cout << "ofGetTimestampString: " << ts << '\n'; +} +//--------------------------------------------------------------------------- +Json::Value PresetManager::allPresetsToJson(){ + Json::Value root; + + // use jsoncpp + vector<Preset *>::iterator presetIter; + + int i = 0; + for(presetIter = thePresets.begin(); presetIter < thePresets.end(); presetIter++){ + root["presets"][i] = (*presetIter)->presetToJson(); + i++; + } + + return root; +} +//--------------------------------------------------------------------------- +void PresetManager::readJsonToPresets(const string &jsonFile){ + Json::Value root; + Json::Reader reader; + + + ifstream theFile(jsonFile.c_str()); + stringstream fileText; + string line; + if(!theFile){ + cout<<"can't find preset file \n"; + return; + }else{ + + while(theFile){ + theFile >> line; + // cout << line << "\n"; // lots? + fileText << line; + + } + + theFile.close(); + } + + bool parsingSuccessful = reader.parse( fileText.str(), root ); + + if ( !parsingSuccessful ) + { + // report to the user the failure and their locations in the document. + std::cout << "Failed to parse preset JSON: \n" + << reader.getFormattedErrorMessages(); + return; + } + + // now put into variables + const Json::Value jpresets = root["presets"]; + + for ( int index = 0; index < jpresets.size(); ++index ) thePresets.push_back(new Preset(jpresets[index])); + + //printAll(); + +} +//--------------------------------------------------------------------------- +void PresetManager::printAll(){ + cout << "----------------ALL PRESETS-------------: \n"; + cout << allPresetsToJson() << "\n"; +} +//--------------------------------------------------------------------------- +void PresetManager::showNameDialog(){ +// if(!presetAlertViewController.alertShowing){ // this is to stop wierd infinite loop in ios5 (simulator) +// presetAlertShowing = true; +// [presetAlertViewController showPresetNamePrompt]; +// +// } + +} +//--------------------------------------------------------------------------- +// when save button pressed +int PresetManager::savePreset(const string name, vector<int> stuff){ + + presetAlertShowing = false; + // check for same name + vector<Preset *>::iterator iter; + /* + for(iter = thePresets.begin(); iter < thePresets.end(); iter++){ + if ((*iter)->name == name){ + cout << " Preset by that name exists\n"; + + // use exceptions! + return -1; + } + } + + if(name == ""){ + cout << "Please name preset\n"; + return -2; + + } + */ + + thePresets.push_back(new Preset(stuff, name, nextID, eventLogger.userName, eventLogger.deviceID)); + eventLogger.logEvent(SAVE_PRESET); // TODO need to log details? + + return nextID++; +} + + +//----------------------------------------------cu----------------------------- +void PresetManager::startLoadAll(){ + // get stuff from file + // load file + + string fname = ofxiPhoneGetDocumentsDirectory() + PRESET_FILENAME; + + readJsonToPresets(fname); + + timesOpened++; +} + +//--------------------------------------------------------------------------- +void PresetManager::exitAndSaveAll(){ + ofFile presetFile(ofxiPhoneGetDocumentsDirectory() +PRESET_FILENAME,ofFile::WriteOnly); + + // stick all the stuff in a json value + Json::Value root = allPresetsToJson(); + + cout << root; + presetFile << root; + +} + +//--------------------------------------------------------------------------- +void PresetManager::clearAll(){ + thePresets.clear(); +} +//--------------------------------------------------------------------------- +//--------------------------------------------------------------------------- +//--------------------------------------------------------------------------- +//--------------------------------------------------------------------------- +//--------------------------------------------------------------------------- \ No newline at end of file