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