diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/presetManager.mm	Fri Oct 10 13:20:55 2014 +0100
@@ -0,0 +1,183 @@
+//
+//  presetManager.mm
+//  oscSenderExample
+//
+//  Created by Robert Tubb on 07/11/2012.
+//
+//
+
+#include "presetManager.h"
+
+//---------------------------------------------------------------------------
+
+PresetManager presetManager;
+extern EventLogger eventLogger;
+
+//---------------------------------------------------------------------------
+void Preset::draw(){
+    // probably just hint values on sliders
+};
+//---------------------------------------------------------------------------
+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;
+    
+    for(vector<int>::iterator i; i < CCValues.end(); i++){
+        presetVal["CCValues"].append(*i);
+    }
+
+    return presetVal;
+}
+//---------------------------------------------------------------------------
+PresetManager::PresetManager(){
+    timesOpened = 0;
+    nextID = 0;
+   
+    string ts = ofGetTimestampString();
+    
+    presetAlertShowing = false;
+
+    
+    cout << "ofGetTimestampString: " << ts << '\n';
+}
+//---------------------------------------------------------------------------
+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::readJsonToPresets(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 ) thePresets.push_back(new Preset(jpresets[index]));
+    
+    //printAll();
+     
+}
+//---------------------------------------------------------------------------
+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];
+//        
+//    }
+    
+}
+//---------------------------------------------------------------------------
+// when save button pressed
+int PresetManager::savePreset(const string name, vector<int> stuff){
+
+    presetAlertShowing = false;
+    // check for same name
+    vector<Preset *>::iterator iter;
+    /*
+    for(iter = thePresets.begin(); iter < thePresets.end(); iter++){
+        if ((*iter)->name == name){
+            cout << " Preset by that name exists\n";
+            
+            // use exceptions!
+            return -1;
+        }
+    }
+     
+    if(name == ""){
+        cout << "Please name preset\n";
+        return -2;
+        
+    }
+     */
+
+    thePresets.push_back(new Preset(stuff, name, nextID, eventLogger.userName, eventLogger.deviceID));
+    eventLogger.logEvent(SAVE_PRESET); // TODO need to log details?
+
+    return nextID++;
+}
+
+
+//----------------------------------------------cu-----------------------------
+void PresetManager::startLoadAll(){
+    // get stuff from file
+    // load file
+
+    string fname = ofxiPhoneGetDocumentsDirectory() + PRESET_FILENAME;
+    
+    readJsonToPresets(fname);
+    
+    timesOpened++;
+}
+
+//---------------------------------------------------------------------------
+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::clearAll(){
+    thePresets.clear();
+}
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
\ No newline at end of file