annotate presetManager.mm @ 12:af71bf84660f

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