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