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