# HG changeset patch # User Robert Tubb # Date 1413471173 -3600 # Node ID 213df0baed47295e2b29b8951c2473e2a8117b8c # Parent 60b54ba87f6a26fe4932d391e3d598691cfb6b3a presets file is updated when one is saved. diff -r 60b54ba87f6a -r 213df0baed47 MessageOrganiser.h --- a/MessageOrganiser.h Thu Oct 16 14:34:14 2014 +0100 +++ b/MessageOrganiser.h Thu Oct 16 15:52:53 2014 +0100 @@ -668,8 +668,12 @@ void loadPreset(string pname){ vector values = presetManager.recallPreset(pname); + if (values.size()){ candidateSynth.setAllParams(values); setAllSlidersToValues(values); + }else{ + cout << "ERROR, no preset found" << endl; + } } // called from UI void paramChangeCallback(int mappingID, int value){ diff -r 60b54ba87f6a -r 213df0baed47 TestController.h --- a/TestController.h Thu Oct 16 14:34:14 2014 +0100 +++ b/TestController.h Thu Oct 16 15:52:53 2014 +0100 @@ -4,7 +4,9 @@ // // Created by Robert Tubb on 16/01/2014. // -// + + +// controller for as-long-as-it-takes, arbitrary target tests #ifndef __tweakathlon__TestController__ #define __tweakathlon__TestController__ diff -r 60b54ba87f6a -r 213df0baed47 presetManager.h --- a/presetManager.h Thu Oct 16 14:34:14 2014 +0100 +++ b/presetManager.h Thu Oct 16 15:52:53 2014 +0100 @@ -33,11 +33,12 @@ unsigned int creatorDeviceID; // unique user device ID string name; // name of preset unsigned long long creationTime; // datetime that preset was created milliseconds - + string imageFileName; vector CCValues; // the actual data + ofImage presetImage; // from save button press - Preset(vector aCCValues, string aname, int aID, string un, unsigned int uid){ + Preset(vector aCCValues, string aname, int aID, string un, unsigned int uid, string imageFile = ""){ CCValues = aCCValues; name = aname; @@ -49,6 +50,10 @@ cout << "Create preset sys time: " << creationTime << "\n"; //TODO color / texture? + imageFileName = imageFile; + if (imageFile != ""){ + presetImage.loadImage(imageFile); + } }; // contruct from json value Preset(Json::Value jval){ @@ -59,9 +64,10 @@ creationTime = jval["creationTime"].asLargestInt(); // dodgy? - + imageFileName = jval["imageFileName"].asString(); Json::Value JArray = jval["CCValues"]; + if(JArray.size() < 1){ cout << "No Presets"; } @@ -69,7 +75,10 @@ { CCValues.push_back(JArray[i].asInt()); } - + + if (imageFileName != ""){ + presetImage.loadImage(imageFileName); + } } @@ -98,28 +107,28 @@ //--------------------------------------------------------------------------- class PresetManager{ public: + PresetManager(); + void savePreset(string name, vector stuff); + vector recallPreset(int presetID); + vector recallPreset(string name); + void startLoadAll(); // load everything from the json file + void exitAndSaveAll(); // save stuff to the json file + void printAll(); + void clearAll(); +protected: + string presetFileName; int nextID; int timesOpened; bool presetAlertShowing; vector thePresets; + + Json::Value allPresetsToJson(); + void loadPresetsFromJsonFile(const string &jsonFile); + void updatePresetFile(); + void showNameDialog(); - int savePreset(string name, vector stuff); - - vector recallPreset(int presetID); // by name ? id? - vector recallPreset(string name); // by name ? id? - - void printAll(); - - void startLoadAll(); // load everything from the json file - void exitAndSaveAll(); // save stuff to the json file - void clearAll(); - Json::Value allPresetsToJson(); - void readJsonToPresets(const string &jsonFile); - void showNameDialog(); - PresetManager(); }; - #endif /* defined(__oscSenderExample__presetManager__) */ diff -r 60b54ba87f6a -r 213df0baed47 presetManager.mm --- a/presetManager.mm Thu Oct 16 14:34:14 2014 +0100 +++ b/presetManager.mm Thu Oct 16 15:52:53 2014 +0100 @@ -23,13 +23,15 @@ Json::Value presetVal; - presetVal["creatorUserName"] = creatorUserName; - presetVal["creatorDeviceID"] = creatorDeviceID; + presetVal["creatorUserName"] = creatorUserName; + presetVal["creatorDeviceID"] = creatorDeviceID; presetVal["creationTime"] = creationTime; presetVal["name"] = name; - - for(vector::iterator i; i < CCValues.end(); i++){ - presetVal["CCValues"].append(*i); + presetVal["imageFileName"] = imageFileName; + + for(vector::iterator i = CCValues.begin(); i < CCValues.end(); i++){ + int c = *i; + presetVal["CCValues"].append(c); } return presetVal; @@ -62,7 +64,7 @@ return root; } //--------------------------------------------------------------------------- -void PresetManager::readJsonToPresets(const string &jsonFile){ +void PresetManager::loadPresetsFromJsonFile(const string &jsonFile){ Json::Value root; Json::Reader reader; @@ -100,7 +102,7 @@ for ( int index = 0; index < jpresets.size(); ++index ) thePresets.push_back(new Preset(jpresets[index])); - //printAll(); + printAll(); } //--------------------------------------------------------------------------- @@ -119,7 +121,7 @@ } //--------------------------------------------------------------------------- // when save button pressed -int PresetManager::savePreset(const string name, vector values){ +void PresetManager::savePreset(const string name, vector values){ presetAlertShowing = false; // check for same name @@ -130,6 +132,9 @@ cout << "WARNING Preset by that name exists, overwriting\n"; // overwrite it (*iter)->CCValues = values; + updatePresetFile(); + eventLogger.logEvent(SAVE_PRESET); // TODO need to log details? + return; } } @@ -138,43 +143,47 @@ } - thePresets.push_back(new Preset(values, name, nextID, eventLogger.userName, eventLogger.deviceID)); eventLogger.logEvent(SAVE_PRESET); // TODO need to log details? + updatePresetFile(); - return nextID++; } - +//----------------------------------------------cu----------------------------- vector PresetManager::recallPreset(string name){ vector::iterator p; - for(p = thePresets.begin(); p < thePresets.end(); p++){ - if ( (*p)->getName() == name){ - return (*p)->getValues(); - } + for(p = thePresets.begin(); p < thePresets.end(); p++){ + if ( (*p)->getName() == name){ + return (*p)->getValues(); + } } - + vector empty; + return empty; } //----------------------------------------------cu----------------------------- void PresetManager::startLoadAll(){ - // get stuff from file - // load file - string fname = ofxiPhoneGetDocumentsDirectory() + PRESET_FILENAME; + presetFileName = ofxiPhoneGetDocumentsDirectory() + PRESET_FILENAME; - readJsonToPresets(fname); + loadPresetsFromJsonFile(presetFileName); timesOpened++; } +//--------------------------------------------------------------------------- +void PresetManager::updatePresetFile(){ + + // TODO really inefficient + + ofFile presetFile(presetFileName,ofFile::WriteOnly); -//--------------------------------------------------------------------------- -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::exitAndSaveAll(){ + updatePresetFile(); } diff -r 60b54ba87f6a -r 213df0baed47 testApp.mm --- a/testApp.mm Thu Oct 16 14:34:14 2014 +0100 +++ b/testApp.mm Thu Oct 16 15:52:53 2014 +0100 @@ -2,6 +2,7 @@ #include "ofAppiOSWindow.h" extern EventLogger eventLogger; +extern PresetManager presetManager; // static members inited here. not my choice. int SynthParam::mappingUID = 88000; @@ -20,6 +21,7 @@ testController = new TestController; + presetManager.startLoadAll(); messageOrganiser.init(&core, testController); timeController.init();