Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /XspfQT/XspfQTAppDelegate.m

Parent Directory Parent Directory | Revision Log Revision Log


Revision 310 - (hide annotations) (download)
Sun Feb 21 00:01:17 2010 UTC (14 years, 1 month ago) by masakih
File size: 4355 byte(s)
[Fix] 環境設定パネルが最前面に来ているときに次のトラック、前のトラック、再生/一時停止を実行するとエラーが発生するのを修正。
1 masaki 2 //
2 masaki 72 // XspfQTAppDelegate.m
3 masaki 2 // XspfQT
4     //
5     // Created by Hori,Masaki on 08/08/31.
6     // Copyright 2008 masakih. All rights reserved.
7     //
8    
9 masaki 72 #import "XspfQTAppDelegate.h"
10 masaki 205
11     #import "XspfQTPreference.h"
12 masaki 72 #import "XspfQTValueTransformers.h"
13 masaki 63 #import "XspfQTInformationWindowController.h"
14 masaki 184 #import "XspfQTPreferenceWindowController.h"
15 masaki 2
16 masaki 201
17 masaki 72 @implementation XspfQTAppDelegate
18 masaki 2
19     + (void)initialize
20     {
21     [NSValueTransformer setValueTransformer:[[[XspfQTTimeTransformer alloc] init] autorelease]
22     forName:@"XspfQTTimeTransformer"];
23     [NSValueTransformer setValueTransformer:[[[XspfQTTimeDateTransformer alloc] init] autorelease]
24     forName:@"XspfQTTimeDateTransformer"];
25 masaki 133 [NSValueTransformer setValueTransformer:[[[XspfQTSizeToStringTransformer alloc] init] autorelease]
26     forName:@"XspfQTSizeToStringTransformer"];
27 masaki 137 [NSValueTransformer setValueTransformer:[[[XspfQTFileSizeStringTransformer alloc] init] autorelease]
28     forName:@"XspfQTFileSizeStringTransformer"];
29 masaki 205
30     [XspfQTPreference sharedInstance];
31 masaki 2 }
32    
33 masaki 50 - (void)awakeFromNib
34     {
35     NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
36     [nc addObserver:self
37     selector:@selector(windowDidBecomeMain:)
38     name:NSWindowDidBecomeMainNotification
39     object:nil];
40     [nc addObserver:self
41     selector:@selector(windowWillClose:)
42     name:NSWindowWillCloseNotification
43     object:nil];
44     }
45     - (void)dealloc
46     {
47     NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
48     [nc removeObserver:self];
49    
50     [super dealloc];
51     }
52 masaki 204
53 masaki 50 #pragma mark ### Actions ###
54     - (IBAction)playedTrack:(id)sender
55     {
56     // do noting.
57     }
58 masaki 63 - (IBAction)openInformationPanel:(id)sender
59     {
60     XspfQTInformationWindowController *wc;
61     wc = [XspfQTInformationWindowController sharedInstance];
62     [wc showWindow:sender];
63     }
64 masaki 184 - (IBAction)showPreferenceWindow:(id)sender
65     {
66     XspfQTPreferenceWindowController *pw;
67     pw = [XspfQTPreferenceWindowController sharedInstance];
68     [pw showWindow:self];
69     }
70 masaki 63 - (IBAction)togglePlayAndPause:(id)sender
71     {
72 masakih 310 id windowController = [mainWindowStore windowController];
73     if(![windowController respondsToSelector:@selector(togglePlayAndPause:)]) return;
74     [windowController togglePlayAndPause:sender];
75 masaki 63 }
76     - (IBAction)nextTrack:(id)sender
77     {
78 masakih 310 id windowController = [mainWindowStore windowController];
79     if(![windowController respondsToSelector:@selector(nextTrack:)]) return;
80 masaki 63 [[mainWindowStore windowController] nextTrack:sender];
81     }
82     - (IBAction)previousTrack:(id)sender
83     {
84 masakih 310 id windowController = [mainWindowStore windowController];
85     if(![windowController respondsToSelector:@selector(previousTrack:)]) return;
86 masaki 63 [[mainWindowStore windowController] previousTrack:sender];
87     }
88 masaki 50
89     #pragma mark ### NSMenu valivation ###
90     - (BOOL)validateMenuItem:(NSMenuItem *)menuItem
91     {
92 masakih 310 id windowController = [mainWindowStore windowController];
93     if([menuItem action] == @selector(togglePlayAndPause:)) {
94     if(![windowController respondsToSelector:@selector(togglePlayAndPause:)]) return NO;
95 masaki 63 }
96 masakih 310 if([menuItem action] == @selector(nextTrack:)) {
97     if(![windowController respondsToSelector:@selector(nextTrack:)]) return NO;
98 masaki 184 }
99 masakih 310 if([menuItem action] == @selector(previousTrack:)) {
100     if(![windowController respondsToSelector:@selector(previousTrack:)]) return NO;
101     }
102 masaki 63
103 masaki 50 if([menuItem tag] == 10000) {
104     NSWindow *m = mainWindowStore;
105     if(!m) {
106     m = [NSApp mainWindow];
107     }
108     NSString *title = [m valueForKeyPath:@"windowController.document.trackList.currentTrack.title"];
109     if(title) {
110     [menuItem setTitle:[NSString stringWithFormat:@"%@ played", title]];
111     } else {
112     [menuItem setTitle:@"Played Track Title"];
113     }
114     return NO;
115     }
116     if(!mainWindowStore) {
117     return NO;
118     }
119    
120     return YES;
121     }
122    
123 masaki 2 - (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender
124     {
125     return NO;
126     }
127    
128 masaki 50 - (void)storeMainWindow
129     {
130     mainWindowStore = [NSApp mainWindow];
131     }
132     - (void)unsaveMainWindow
133     {
134     mainWindowStore = nil;
135     }
136     - (void)applicationWillHide:(NSNotification *)notification
137     {
138     [self storeMainWindow];
139     }
140     - (void)applicationWillResignActive:(NSNotification *)notification
141     {
142     [self storeMainWindow];
143     }
144     - (void)applicationDidUnhide:(NSNotification *)notification
145     {
146     [self unsaveMainWindow];
147     }
148     - (void)applicationDidBecomeActive:(NSNotification *)notification
149     {
150     [self unsaveMainWindow];
151     }
152    
153     - (void)windowDidBecomeMain:(NSNotification *)notification
154     {
155     [self storeMainWindow];
156     }
157     - (void)windowWillClose:(NSNotification *)notification
158     {
159     [self unsaveMainWindow];
160     }
161    
162 masaki 2 @end

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26