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