修订版 | 28 (tree) |
---|---|
时间 | 2012-08-16 01:33:36 |
作者 | toshinagata1964 |
Audio recording dialog now uses the document folder and name for save destinations
@@ -37,6 +37,20 @@ | ||
37 | 37 | [super dealloc]; |
38 | 38 | } |
39 | 39 | |
40 | +static id | |
41 | +sAllowedExtensionsForTag(int tag) | |
42 | +{ | |
43 | + id obj; | |
44 | + if (tag == 1) { | |
45 | + obj = [NSArray arrayWithObjects:@"wav", nil]; | |
46 | + } else if (tag == 0) { | |
47 | + obj = [NSArray arrayWithObjects:@"aiff", @"aif", nil]; | |
48 | + } else { | |
49 | + obj = nil; | |
50 | + } | |
51 | + return obj; | |
52 | +} | |
53 | + | |
40 | 54 | - (void)updateDisplay |
41 | 55 | { |
42 | 56 | MyMIDISequence *seq = [myDocument myMIDISequence]; |
@@ -221,6 +235,9 @@ | ||
221 | 235 | |
222 | 236 | - (void)reloadInfoFromDocument |
223 | 237 | { |
238 | + NSString *str1, *str2; | |
239 | + id obj; | |
240 | + int tag; | |
224 | 241 | MyMIDISequence *seq = [myDocument myMIDISequence]; |
225 | 242 | |
226 | 243 | // In case window is not yet visible |
@@ -254,6 +271,23 @@ | ||
254 | 271 | |
255 | 272 | [info setValue: [NSNumber numberWithBool: isAudio] forKey: MyRecordingInfoIsAudioKey]; |
256 | 273 | |
274 | + str1 = [[myDocument fileURL] path]; | |
275 | + str2 = [info valueForKey: MyRecordingInfoFileNameKey]; | |
276 | + obj = [info valueForKey:MyRecordingInfoAudioRecordingFormatKey]; | |
277 | + tag = (obj == nil ? 0 : [obj intValue]); | |
278 | + obj = sAllowedExtensionsForTag(tag); | |
279 | + if (str2 == nil && str1 != nil) { | |
280 | + str2 = [[str1 lastPathComponent] stringByDeletingPathExtension]; | |
281 | + if (obj != nil) | |
282 | + str2 = [str2 stringByAppendingPathExtension:[obj objectAtIndex:0]]; | |
283 | + [info setValue:str2 forKey:MyRecordingInfoFileNameKey]; | |
284 | + } | |
285 | + str2 = [info valueForKey:MyRecordingInfoFolderNameKey]; | |
286 | + if (str2 == nil && str1 != nil) { | |
287 | + str2 = [str1 stringByDeletingLastPathComponent]; | |
288 | + [info setValue:str2 forKey:MyRecordingInfoFolderNameKey]; | |
289 | + } | |
290 | + | |
257 | 291 | [self updateDisplay]; |
258 | 292 | } |
259 | 293 |
@@ -408,9 +442,16 @@ | ||
408 | 442 | - (IBAction)chooseDestinationFile:(id)sender |
409 | 443 | { |
410 | 444 | NSSavePanel *panel = [NSSavePanel savePanel]; |
411 | - NSString *filename, *foldername; | |
445 | + NSString *filename, *foldername, *docpath; | |
446 | + id obj; | |
447 | + int tag; | |
412 | 448 | filename = [info valueForKey: MyRecordingInfoFileNameKey]; |
413 | 449 | foldername = [info valueForKey: MyRecordingInfoFolderNameKey]; |
450 | + obj = [info valueForKey:MyRecordingInfoAudioRecordingFormatKey]; | |
451 | + tag = (obj == nil ? 0 : [obj intValue]); | |
452 | + obj = sAllowedExtensionsForTag(tag); | |
453 | + if (obj) | |
454 | + [panel setAllowedFileTypes:obj]; | |
414 | 455 | if ([panel runModalForDirectory: [foldername stringByExpandingTildeInPath] file: filename] == NSFileHandlingPanelOKButton) { |
415 | 456 | foldername = [[panel directory] stringByAbbreviatingWithTildeInPath]; |
416 | 457 | filename = [[panel filename] lastPathComponent]; |
@@ -135,7 +135,6 @@ | ||
135 | 135 | [ffButton setEnabled: NO]; |
136 | 136 | [rewindButton setEnabled: NO]; |
137 | 137 | } else { |
138 | - MDPlayer *recordingPlayer; | |
139 | 138 | status = MDPlayerGetStatus(player); |
140 | 139 | [stopButton setEnabled: YES]; |
141 | 140 | [playButton setEnabled: YES]; |
@@ -146,31 +145,12 @@ | ||
146 | 145 | [recordButton setState:NSOnState]; |
147 | 146 | else |
148 | 147 | [recordButton setState:NSOffState]; |
149 | - /* recordingPlayer = MDPlayerRecordingPlayer(); | |
150 | - if (recordingPlayer == NULL) { | |
151 | - [recordButton setEnabled: YES]; | |
152 | - [recordButton setState: NSOffState]; | |
153 | - } else if (recordingPlayer == player) { | |
154 | - [recordButton setEnabled: YES]; | |
155 | - [recordButton setState: (MDPlayerIsRecording(player) ? NSOnState : NSOffState)]; | |
156 | - } else { | |
157 | - [recordButton setEnabled: NO]; | |
158 | - } */ | |
159 | 148 | if (status == kMDPlayer_playing || status == kMDPlayer_exhausted) { |
160 | 149 | playingOrRecording = YES; |
161 | 150 | [playButton setState: NSOnState]; |
162 | - // currentTime = MDPlayerGetTime(player); /* Update the current time */ | |
163 | 151 | } else [playButton setState: NSOffState]; |
164 | 152 | |
165 | 153 | [pauseButton setState:(status == kMDPlayer_suspended ? NSOnState : NSOffState)]; |
166 | - /* if (MDSequenceGetIndexOfRecordingTrack([[myDocument myMIDISequence] mySequence]) < 0) | |
167 | - [recordButton setEnabled: NO]; | |
168 | - else [recordButton setEnabled: YES]; */ | |
169 | - | |
170 | - // if (resumeTimer != nil) | |
171 | - // time = currentTime; /* During FF/Rew/Slider actions, time should come from the controls */ | |
172 | - // else | |
173 | - // time = currentTime = MDPlayerGetTime(player); | |
174 | 154 | /* Display tick and time */ |
175 | 155 | if (currentTime == 0) { |
176 | 156 | time = totalTime; |