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