• R/O
  • SSH
  • HTTPS

alchemusica: 提交


Commit MetaInfo

修订版28 (tree)
时间2012-08-16 01:33:36
作者toshinagata1964

Log Message

Audio recording dialog now uses the document folder and name for save destinations

更改概述

差异

--- trunk/Classes/RecordPanelController.m (revision 27)
+++ trunk/Classes/RecordPanelController.m (revision 28)
@@ -37,6 +37,20 @@
3737 [super dealloc];
3838 }
3939
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+
4054 - (void)updateDisplay
4155 {
4256 MyMIDISequence *seq = [myDocument myMIDISequence];
@@ -221,6 +235,9 @@
221235
222236 - (void)reloadInfoFromDocument
223237 {
238+ NSString *str1, *str2;
239+ id obj;
240+ int tag;
224241 MyMIDISequence *seq = [myDocument myMIDISequence];
225242
226243 // In case window is not yet visible
@@ -254,6 +271,23 @@
254271
255272 [info setValue: [NSNumber numberWithBool: isAudio] forKey: MyRecordingInfoIsAudioKey];
256273
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+
257291 [self updateDisplay];
258292 }
259293
@@ -408,9 +442,16 @@
408442 - (IBAction)chooseDestinationFile:(id)sender
409443 {
410444 NSSavePanel *panel = [NSSavePanel savePanel];
411- NSString *filename, *foldername;
445+ NSString *filename, *foldername, *docpath;
446+ id obj;
447+ int tag;
412448 filename = [info valueForKey: MyRecordingInfoFileNameKey];
413449 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];
414455 if ([panel runModalForDirectory: [foldername stringByExpandingTildeInPath] file: filename] == NSFileHandlingPanelOKButton) {
415456 foldername = [[panel directory] stringByAbbreviatingWithTildeInPath];
416457 filename = [[panel filename] lastPathComponent];
--- trunk/Classes/PlayingViewController.m (revision 27)
+++ trunk/Classes/PlayingViewController.m (revision 28)
@@ -135,7 +135,6 @@
135135 [ffButton setEnabled: NO];
136136 [rewindButton setEnabled: NO];
137137 } else {
138- MDPlayer *recordingPlayer;
139138 status = MDPlayerGetStatus(player);
140139 [stopButton setEnabled: YES];
141140 [playButton setEnabled: YES];
@@ -146,31 +145,12 @@
146145 [recordButton setState:NSOnState];
147146 else
148147 [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- } */
159148 if (status == kMDPlayer_playing || status == kMDPlayer_exhausted) {
160149 playingOrRecording = YES;
161150 [playButton setState: NSOnState];
162- // currentTime = MDPlayerGetTime(player); /* Update the current time */
163151 } else [playButton setState: NSOffState];
164152
165153 [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);
174154 /* Display tick and time */
175155 if (currentTime == 0) {
176156 time = totalTime;
Show on old repository browser