annotate 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
rev   line source
rt300@1 1 //
rt300@1 2 // presetManager.mm
rt300@1 3 // oscSenderExample
rt300@1 4 //
rt300@1 5 // Created by Robert Tubb on 07/11/2012.
rt300@1 6 //
rt300@1 7 //
rt300@1 8
rt300@1 9 #include "presetManager.h"
rt300@1 10
rt300@1 11 //---------------------------------------------------------------------------
rt300@1 12
rt300@1 13 PresetManager presetManager;
rt300@1 14 extern EventLogger eventLogger;
rt300@1 15
rt300@1 16 //---------------------------------------------------------------------------
rt300@1 17 void Preset::draw(){
rt300@1 18 // probably just hint values on sliders
rt300@1 19 };
rt300@1 20 //---------------------------------------------------------------------------
rt300@1 21 Json::Value Preset::presetToJson(){
rt300@1 22 // create the string for this instance of Preset object
rt300@1 23
rt300@1 24 Json::Value presetVal;
rt300@1 25
rt300@1 26 presetVal["creatorUserName"] = creatorUserName;
rt300@1 27 presetVal["creatorDeviceID"] = creatorDeviceID;
rt300@1 28 presetVal["creationTime"] = creationTime;
rt300@1 29 presetVal["name"] = name;
rt300@1 30
rt300@1 31 for(vector<int>::iterator i; i < CCValues.end(); i++){
rt300@1 32 presetVal["CCValues"].append(*i);
rt300@1 33 }
rt300@1 34
rt300@1 35 return presetVal;
rt300@1 36 }
rt300@1 37 //---------------------------------------------------------------------------
rt300@1 38 PresetManager::PresetManager(){
rt300@1 39 timesOpened = 0;
rt300@1 40 nextID = 0;
rt300@1 41
rt300@1 42 string ts = ofGetTimestampString();
rt300@1 43
rt300@1 44 presetAlertShowing = false;
rt300@1 45
rt300@1 46
rt300@1 47 cout << "ofGetTimestampString: " << ts << '\n';
rt300@1 48 }
rt300@1 49 //---------------------------------------------------------------------------
rt300@1 50 Json::Value PresetManager::allPresetsToJson(){
rt300@1 51 Json::Value root;
rt300@1 52
rt300@1 53 // use jsoncpp
rt300@1 54 vector<Preset *>::iterator presetIter;
rt300@1 55
rt300@1 56 int i = 0;
rt300@1 57 for(presetIter = thePresets.begin(); presetIter < thePresets.end(); presetIter++){
rt300@1 58 root["presets"][i] = (*presetIter)->presetToJson();
rt300@1 59 i++;
rt300@1 60 }
rt300@1 61
rt300@1 62 return root;
rt300@1 63 }
rt300@1 64 //---------------------------------------------------------------------------
rt300@1 65 void PresetManager::readJsonToPresets(const string &jsonFile){
rt300@1 66 Json::Value root;
rt300@1 67 Json::Reader reader;
rt300@1 68
rt300@1 69
rt300@1 70 ifstream theFile(jsonFile.c_str());
rt300@1 71 stringstream fileText;
rt300@1 72 string line;
rt300@1 73 if(!theFile){
rt300@1 74 cout<<"can't find preset file \n";
rt300@1 75 return;
rt300@1 76 }else{
rt300@1 77
rt300@1 78 while(theFile){
rt300@1 79 theFile >> line;
rt300@1 80 // cout << line << "\n"; // lots?
rt300@1 81 fileText << line;
rt300@1 82
rt300@1 83 }
rt300@1 84
rt300@1 85 theFile.close();
rt300@1 86 }
rt300@1 87
rt300@1 88 bool parsingSuccessful = reader.parse( fileText.str(), root );
rt300@1 89
rt300@1 90 if ( !parsingSuccessful )
rt300@1 91 {
rt300@1 92 // report to the user the failure and their locations in the document.
rt300@1 93 std::cout << "Failed to parse preset JSON: \n"
rt300@1 94 << reader.getFormattedErrorMessages();
rt300@1 95 return;
rt300@1 96 }
rt300@1 97
rt300@1 98 // now put into variables
rt300@1 99 const Json::Value jpresets = root["presets"];
rt300@1 100
rt300@1 101 for ( int index = 0; index < jpresets.size(); ++index ) thePresets.push_back(new Preset(jpresets[index]));
rt300@1 102
rt300@1 103 //printAll();
rt300@1 104
rt300@1 105 }
rt300@1 106 //---------------------------------------------------------------------------
rt300@1 107 void PresetManager::printAll(){
rt300@1 108 cout << "----------------ALL PRESETS-------------: \n";
rt300@1 109 cout << allPresetsToJson() << "\n";
rt300@1 110 }
rt300@1 111 //---------------------------------------------------------------------------
rt300@1 112 void PresetManager::showNameDialog(){
rt300@1 113 // if(!presetAlertViewController.alertShowing){ // this is to stop wierd infinite loop in ios5 (simulator)
rt300@1 114 // presetAlertShowing = true;
rt300@1 115 // [presetAlertViewController showPresetNamePrompt];
rt300@1 116 //
rt300@1 117 // }
rt300@1 118
rt300@1 119 }
rt300@1 120 //---------------------------------------------------------------------------
rt300@1 121 // when save button pressed
rt300@1 122 int PresetManager::savePreset(const string name, vector<int> stuff){
rt300@1 123
rt300@1 124 presetAlertShowing = false;
rt300@1 125 // check for same name
rt300@1 126 vector<Preset *>::iterator iter;
rt300@1 127 /*
rt300@1 128 for(iter = thePresets.begin(); iter < thePresets.end(); iter++){
rt300@1 129 if ((*iter)->name == name){
rt300@1 130 cout << " Preset by that name exists\n";
rt300@1 131
rt300@1 132 // use exceptions!
rt300@1 133 return -1;
rt300@1 134 }
rt300@1 135 }
rt300@1 136
rt300@1 137 if(name == ""){
rt300@1 138 cout << "Please name preset\n";
rt300@1 139 return -2;
rt300@1 140
rt300@1 141 }
rt300@1 142 */
rt300@1 143
rt300@1 144 thePresets.push_back(new Preset(stuff, name, nextID, eventLogger.userName, eventLogger.deviceID));
rt300@1 145 eventLogger.logEvent(SAVE_PRESET); // TODO need to log details?
rt300@1 146
rt300@1 147 return nextID++;
rt300@1 148 }
rt300@1 149
rt300@1 150
rt300@1 151 //----------------------------------------------cu-----------------------------
rt300@1 152 void PresetManager::startLoadAll(){
rt300@1 153 // get stuff from file
rt300@1 154 // load file
rt300@1 155
rt300@1 156 string fname = ofxiPhoneGetDocumentsDirectory() + PRESET_FILENAME;
rt300@1 157
rt300@1 158 readJsonToPresets(fname);
rt300@1 159
rt300@1 160 timesOpened++;
rt300@1 161 }
rt300@1 162
rt300@1 163 //---------------------------------------------------------------------------
rt300@1 164 void PresetManager::exitAndSaveAll(){
rt300@1 165 ofFile presetFile(ofxiPhoneGetDocumentsDirectory() +PRESET_FILENAME,ofFile::WriteOnly);
rt300@1 166
rt300@1 167 // stick all the stuff in a json value
rt300@1 168 Json::Value root = allPresetsToJson();
rt300@1 169
rt300@1 170 cout << root;
rt300@1 171 presetFile << root;
rt300@1 172
rt300@1 173 }
rt300@1 174
rt300@1 175 //---------------------------------------------------------------------------
rt300@1 176 void PresetManager::clearAll(){
rt300@1 177 thePresets.clear();
rt300@1 178 }
rt300@1 179 //---------------------------------------------------------------------------
rt300@1 180 //---------------------------------------------------------------------------
rt300@1 181 //---------------------------------------------------------------------------
rt300@1 182 //---------------------------------------------------------------------------
rt300@1 183 //---------------------------------------------------------------------------