Mercurial > hg > tweakathon2ios
view presetManager.mm @ 44:d810aa9ca03a
times. cosmetic stuff
author | Robert Tubb <rt300@eecs.qmul.ac.uk> |
---|---|
date | Mon, 15 Dec 2014 17:33:41 +0000 |
parents | 93317878abef |
children |
line wrap: on
line source
// // presetManager.mm // oscSenderExample // // Created by Robert Tubb on 07/11/2012. // // #include "presetManager.h" //--------------------------------------------------------------------------- extern EventLogger eventLogger; //--------------------------------------------------------------------------- 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; presetVal["imageFileName"] = imageFileName; for(vector<int>::iterator i = CCValues.begin(); i < CCValues.end(); i++){ int c = *i; presetVal["CCValues"].append(c); } return presetVal; } //--------------------------------------------------------------------------- PresetManager::PresetManager(){ timesOpened = 0; nextID = 0; string ts = ofGetTimestampString(); presetAlertShowing = false; cout << "ofGetTimestampString: " << ts << '\n'; } void PresetManager::makeNeutralPreset(){ vector<int> middleVals; for(int i = 0; i < TOTAL_NUM_PARAMS ; i++){ middleVals.push_back(64); } neutralPreset = Preset(middleVals, "Neutral", 999, "whocares", 999, "buttron.png"); } //------------------------------------------------------------------------- Preset* PresetManager::getNeutralPreset(){ return &neutralPreset; } //--------------------------------------------------------------------------- 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::loadPresetsFromJsonFile(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 ){ // check that it is our user ID if (jpresets[index]["creatorUserName"].asString() == eventLogger.userName){ thePresets.push_back(new Preset(jpresets[index])); } } } //--------------------------------------------------------------------------- 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]; // // } } //--------------------------------------------------------------------------- void PresetManager::showOverwriteDialog(){ // if(!presetAlertViewController.alertShowing){ // this is to stop wierd infinite loop in ios5 (simulator) // presetAlertShowing = true; // [presetAlertViewController showPresetNamePrompt]; // // } } //------------------------------------------------ // when preset slot becomes a real preset to save void PresetManager::savePreset(Preset * aPreset){ vector<Preset *>::iterator iter; vector<int> logdetails; for(iter = thePresets.begin(); iter < thePresets.end(); iter++){ if ((*iter)->name == aPreset->name){ cout << "WARNING Preset by that name exists, overwriting\n"; // TODO throw up a dialog? showOverwriteDialog(); (*iter)->overwriteValues(aPreset->CCValues); updatePresetFile(); logdetails =aPreset->CCValues; logdetails.push_back(nextID); eventLogger.logEvent(SAVE_PRESET, logdetails); // TODO need to log index or name!? return; } } if(aPreset->name == ""){ cout << "Please name preset\n"; } thePresets.push_back(new Preset(aPreset->CCValues, aPreset->name, nextID++, eventLogger.userName, eventLogger.deviceID, aPreset->imageFileName)); logdetails = aPreset->CCValues; logdetails.push_back(nextID); eventLogger.logEvent(SAVE_PRESET, logdetails); // TODO need to log details? updatePresetFile(); } //--------------------------------------------------------------------------- // when save button pressed void PresetManager::savePreset(const string name, vector<int> values){ presetAlertShowing = false; // check for same name vector<Preset *>::iterator iter; vector<int> logdetails; for(iter = thePresets.begin(); iter < thePresets.end(); iter++){ if ((*iter)->name == name){ cout << "WARNING Preset by that name exists, overwriting\n"; // overwrite it (*iter)->overwriteValues(values); updatePresetFile(); logdetails =values; logdetails.push_back(nextID); eventLogger.logEvent(SAVE_PRESET,logdetails); // TODO need to log details? return; } } if(name == ""){ cout << "Please name preset\n"; } thePresets.push_back(new Preset(values, name, nextID++, eventLogger.userName, eventLogger.deviceID)); logdetails =values; logdetails.push_back(nextID); eventLogger.logEvent(SAVE_PRESET, logdetails); // TODO need to log details? updatePresetFile(); } //----------------------------------------------cu----------------------------- vector<int> PresetManager::getPresetValuesForName(string name){ vector<Preset *>::iterator p; for(p = thePresets.begin(); p < thePresets.end(); p++){ if ( (*p)->getName() == name){ return (*p)->getValues(); } } vector<int> empty; return empty; } //--------------------------------------------------------------------------- Preset* PresetManager::getPresetAtIndex(int index){ // if (index == -1){ // cout << " RETURNING NEUTRAL PRESET " << endl; // } if (index >= thePresets.size()){ cout << "ERROR: index " << index << " exceeds number of presets " << thePresets.size() << endl; cout << " YOU HAVENT DONE EXP STAGE??" << endl; return NULL; }else{ return thePresets[index]; } }; //--------------------------------------------------------------------------- void PresetManager::startLoadAll(){ presetFileName = ofxiPhoneGetDocumentsDirectory() + eventLogger.userName + '_' + PRESET_FILENAME; loadPresetsFromJsonFile(presetFileName); timesOpened++; } //--------------------------------------------------------------------------- void PresetManager::updatePresetFile(){ // TODO really inefficient ofFile presetFile(presetFileName,ofFile::WriteOnly); // stick all the stuff in a json value Json::Value root = allPresetsToJson(); presetFile << root; } //--------------------------------------------------------------------------- void PresetManager::exitAndSaveAll(){ updatePresetFile(); } //--------------------------------------------------------------------------- void PresetManager::clearAll(){ thePresets.clear(); } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //---------------------------------------------------------------------------