rt300@1: // rt300@1: // presetManager.h rt300@1: // oscSenderExample rt300@1: // rt300@1: // Created by Robert Tubb on 07/11/2012. rt300@1: // rt300@1: // rt300@1: rt300@1: // defines: rt300@1: // PresetManager rt300@1: // and Preset rt300@1: rt300@1: #ifndef __oscSenderExample__presetManager__ rt300@1: #define __oscSenderExample__presetManager__ rt300@1: rt300@1: #define PRESET_FILENAME "presets.json" rt300@1: rt300@1: #include rt300@1: #include rt300@1: #include "ofMain.h" rt300@1: #include "ofxiPhone.h" rt300@1: #include "ofxiPhoneExtras.h" rt300@1: #include "eventLogger.h" rt300@1: #include "json.h" rt300@1: #include rt300@1: rt300@1: rt300@1: //--------------------------------------------------------------------------- rt300@1: class Preset{ rt300@1: public: rt300@1: // important details - these saved to file (uploaded?) rt300@1: string creatorUserName; rt300@1: unsigned int creatorDeviceID; // unique user device ID rt300@1: string name; // name of preset rt300@1: unsigned long long creationTime; // datetime that preset was created milliseconds rt300@1: rt300@1: vector CCValues; // the actual data rt300@1: rt300@1: // from save button press rt300@1: Preset(vector aCCValues, string aname, int aID, string un, unsigned int uid){ rt300@1: CCValues = aCCValues; rt300@1: rt300@1: name = aname; rt300@1: creatorUserName = un; rt300@1: creatorDeviceID = uid; rt300@1: double timemsd = [NSDate timeIntervalSinceReferenceDate]; rt300@1: creationTime = (unsigned long long)(timemsd*1000); rt300@1: rt300@1: cout << "Create preset sys time: " << creationTime << "\n"; rt300@1: rt300@1: //TODO color / texture? rt300@1: }; rt300@1: // contruct from json value rt300@1: Preset(Json::Value jval){ rt300@1: rt300@1: name = jval["name"].asString(); rt300@1: creatorUserName = jval["creatorUserName"].asString(); rt300@1: creatorDeviceID = jval["creatorDeviceID"].asUInt(); rt300@1: rt300@1: rt300@1: creationTime = jval["creationTime"].asLargestInt(); // dodgy? rt300@1: rt300@1: rt300@1: Json::Value JArray = jval["CCValues"]; rt300@1: if(JArray.size() < 1){ rt300@1: cout << "No Presets"; rt300@1: } rt300@1: for ( unsigned int i = 0; i < JArray.size(); i++ ) rt300@1: { rt300@1: CCValues.push_back(JArray[i].asInt()); rt300@1: } rt300@1: rt300@1: rt300@1: } rt300@1: rt300@1: void draw(); rt300@1: Json::Value presetToJson(); rt300@1: rt300@1: string displayTextDescription(){ // eg: for grid hover rt300@1: // objC to C to C++ bleurgh rt300@1: NSDate *ocdate = [NSDate dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)(creationTime/1000.0)]; rt300@1: NSString *dateText = [ocdate description]; rt300@1: const char *date_str = [dateText cStringUsingEncoding:NSASCIIStringEncoding]; rt300@1: stringstream ss; rt300@1: ss << "Name: \t" << name << "\nCreation time: \t" << date_str << "\nCreator: \t" << creatorUserName << '\n'; rt300@1: return ss.str(); rt300@1: rt300@1: } rt300@4: rt300@4: string getName(){ rt300@4: return name; rt300@4: } rt300@4: vector getValues(){ rt300@4: return CCValues; rt300@4: } rt300@1: }; rt300@1: rt300@1: //--------------------------------------------------------------------------- rt300@1: class PresetManager{ rt300@1: public: rt300@1: int nextID; rt300@1: int timesOpened; rt300@1: bool presetAlertShowing; rt300@1: rt300@1: vector thePresets; rt300@1: rt300@1: int savePreset(string name, vector stuff); rt300@1: rt300@4: vector recallPreset(int presetID); // by name ? id? rt300@4: vector recallPreset(string name); // by name ? id? rt300@1: rt300@1: void printAll(); rt300@1: rt300@1: void startLoadAll(); // load everything from the json file rt300@1: void exitAndSaveAll(); // save stuff to the json file rt300@1: void clearAll(); rt300@1: Json::Value allPresetsToJson(); rt300@1: void readJsonToPresets(const string &jsonFile); rt300@1: void showNameDialog(); rt300@1: PresetManager(); rt300@1: }; rt300@1: rt300@1: rt300@1: rt300@1: #endif /* defined(__oscSenderExample__presetManager__) */