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@1
|
15 //---------------------------------------------------------------------------
|
rt300@1
|
16 void Preset::draw(){
|
rt300@1
|
17 // probably just hint values on sliders
|
rt300@1
|
18 };
|
rt300@1
|
19 //---------------------------------------------------------------------------
|
rt300@1
|
20 Json::Value Preset::presetToJson(){
|
rt300@1
|
21 // create the string for this instance of Preset object
|
rt300@1
|
22
|
rt300@1
|
23 Json::Value presetVal;
|
rt300@1
|
24
|
rt300@5
|
25 presetVal["creatorUserName"] = creatorUserName;
|
rt300@5
|
26 presetVal["creatorDeviceID"] = creatorDeviceID;
|
rt300@1
|
27 presetVal["creationTime"] = creationTime;
|
rt300@1
|
28 presetVal["name"] = name;
|
rt300@5
|
29 presetVal["imageFileName"] = imageFileName;
|
rt300@5
|
30
|
rt300@5
|
31 for(vector<int>::iterator i = CCValues.begin(); i < CCValues.end(); i++){
|
rt300@5
|
32 int c = *i;
|
rt300@5
|
33 presetVal["CCValues"].append(c);
|
rt300@1
|
34 }
|
rt300@1
|
35
|
rt300@1
|
36 return presetVal;
|
rt300@1
|
37 }
|
rt300@1
|
38 //---------------------------------------------------------------------------
|
rt300@1
|
39 PresetManager::PresetManager(){
|
rt300@1
|
40 timesOpened = 0;
|
rt300@1
|
41 nextID = 0;
|
rt300@1
|
42
|
rt300@1
|
43 string ts = ofGetTimestampString();
|
rt300@1
|
44
|
rt300@1
|
45 presetAlertShowing = false;
|
rt300@1
|
46
|
rt300@1
|
47
|
rt300@1
|
48 cout << "ofGetTimestampString: " << ts << '\n';
|
rt300@1
|
49 }
|
rt300@1
|
50 //---------------------------------------------------------------------------
|
rt300@1
|
51 Json::Value PresetManager::allPresetsToJson(){
|
rt300@1
|
52 Json::Value root;
|
rt300@1
|
53
|
rt300@1
|
54 // use jsoncpp
|
rt300@1
|
55 vector<Preset *>::iterator presetIter;
|
rt300@1
|
56
|
rt300@1
|
57 int i = 0;
|
rt300@1
|
58 for(presetIter = thePresets.begin(); presetIter < thePresets.end(); presetIter++){
|
rt300@1
|
59 root["presets"][i] = (*presetIter)->presetToJson();
|
rt300@1
|
60 i++;
|
rt300@1
|
61 }
|
rt300@1
|
62
|
rt300@1
|
63 return root;
|
rt300@1
|
64 }
|
rt300@1
|
65 //---------------------------------------------------------------------------
|
rt300@5
|
66 void PresetManager::loadPresetsFromJsonFile(const string &jsonFile){
|
rt300@1
|
67 Json::Value root;
|
rt300@1
|
68 Json::Reader reader;
|
rt300@1
|
69
|
rt300@1
|
70
|
rt300@1
|
71 ifstream theFile(jsonFile.c_str());
|
rt300@1
|
72 stringstream fileText;
|
rt300@1
|
73 string line;
|
rt300@1
|
74 if(!theFile){
|
rt300@1
|
75 cout<<"can't find preset file \n";
|
rt300@1
|
76 return;
|
rt300@1
|
77 }else{
|
rt300@1
|
78
|
rt300@1
|
79 while(theFile){
|
rt300@1
|
80 theFile >> line;
|
rt300@1
|
81 // cout << line << "\n"; // lots?
|
rt300@1
|
82 fileText << line;
|
rt300@1
|
83
|
rt300@1
|
84 }
|
rt300@1
|
85
|
rt300@1
|
86 theFile.close();
|
rt300@1
|
87 }
|
rt300@1
|
88
|
rt300@1
|
89 bool parsingSuccessful = reader.parse( fileText.str(), root );
|
rt300@1
|
90
|
rt300@1
|
91 if ( !parsingSuccessful )
|
rt300@1
|
92 {
|
rt300@1
|
93 // report to the user the failure and their locations in the document.
|
rt300@1
|
94 std::cout << "Failed to parse preset JSON: \n"
|
rt300@1
|
95 << reader.getFormattedErrorMessages();
|
rt300@1
|
96 return;
|
rt300@1
|
97 }
|
rt300@1
|
98
|
rt300@1
|
99 // now put into variables
|
rt300@1
|
100 const Json::Value jpresets = root["presets"];
|
rt300@1
|
101
|
rt300@1
|
102 for ( int index = 0; index < jpresets.size(); ++index ) thePresets.push_back(new Preset(jpresets[index]));
|
rt300@6
|
103
|
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@5
|
122 void 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@6
|
132 (*iter)->setValues(values);
|
rt300@5
|
133 updatePresetFile();
|
rt300@5
|
134 eventLogger.logEvent(SAVE_PRESET); // TODO need to log details?
|
rt300@5
|
135 return;
|
rt300@1
|
136 }
|
rt300@1
|
137 }
|
rt300@1
|
138
|
rt300@1
|
139 if(name == ""){
|
rt300@1
|
140 cout << "Please name preset\n";
|
rt300@1
|
141
|
rt300@1
|
142 }
|
rt300@1
|
143
|
rt300@4
|
144 thePresets.push_back(new Preset(values, name, nextID, eventLogger.userName, eventLogger.deviceID));
|
rt300@1
|
145 eventLogger.logEvent(SAVE_PRESET); // TODO need to log details?
|
rt300@5
|
146 updatePresetFile();
|
rt300@1
|
147
|
rt300@1
|
148 }
|
rt300@6
|
149 //-----------------------------------------------------------------------------
|
rt300@6
|
150 void PresetManager::generatePresetSlot(const string name, const string imagefn){
|
rt300@6
|
151 vector<int> values; // empty
|
rt300@6
|
152 thePresets.push_back(new Preset(values, name, nextID, eventLogger.userName, eventLogger.deviceID, imagefn));
|
rt300@6
|
153
|
rt300@6
|
154 }
|
rt300@5
|
155 //----------------------------------------------cu-----------------------------
|
rt300@4
|
156 vector<int> PresetManager::recallPreset(string name){
|
rt300@4
|
157 vector<Preset *>::iterator p;
|
rt300@5
|
158 for(p = thePresets.begin(); p < thePresets.end(); p++){
|
rt300@5
|
159 if ( (*p)->getName() == name){
|
rt300@5
|
160 return (*p)->getValues();
|
rt300@5
|
161 }
|
rt300@4
|
162 }
|
rt300@5
|
163 vector<int> empty;
|
rt300@5
|
164 return empty;
|
rt300@4
|
165 }
|
rt300@1
|
166 //----------------------------------------------cu-----------------------------
|
rt300@1
|
167 void PresetManager::startLoadAll(){
|
rt300@1
|
168
|
rt300@5
|
169 presetFileName = ofxiPhoneGetDocumentsDirectory() + PRESET_FILENAME;
|
rt300@1
|
170
|
rt300@5
|
171 loadPresetsFromJsonFile(presetFileName);
|
rt300@1
|
172
|
rt300@1
|
173 timesOpened++;
|
rt300@1
|
174 }
|
rt300@5
|
175 //---------------------------------------------------------------------------
|
rt300@5
|
176 void PresetManager::updatePresetFile(){
|
rt300@5
|
177
|
rt300@5
|
178 // TODO really inefficient
|
rt300@5
|
179
|
rt300@5
|
180 ofFile presetFile(presetFileName,ofFile::WriteOnly);
|
rt300@1
|
181
|
rt300@1
|
182 // stick all the stuff in a json value
|
rt300@1
|
183 Json::Value root = allPresetsToJson();
|
rt300@6
|
184
|
rt300@1
|
185 presetFile << root;
|
rt300@5
|
186 }
|
rt300@5
|
187 //---------------------------------------------------------------------------
|
rt300@5
|
188 void PresetManager::exitAndSaveAll(){
|
rt300@5
|
189 updatePresetFile();
|
rt300@1
|
190
|
rt300@1
|
191 }
|
rt300@1
|
192
|
rt300@1
|
193 //---------------------------------------------------------------------------
|
rt300@1
|
194 void PresetManager::clearAll(){
|
rt300@1
|
195 thePresets.clear();
|
rt300@1
|
196 }
|
rt300@1
|
197 //---------------------------------------------------------------------------
|
rt300@1
|
198 //---------------------------------------------------------------------------
|
rt300@1
|
199 //---------------------------------------------------------------------------
|
rt300@1
|
200 //---------------------------------------------------------------------------
|
rt300@1
|
201 //--------------------------------------------------------------------------- |