1 /*****************************************************************************
2 * VLCController.m: VLC.app main controller
3 *****************************************************************************
4 * Copyright (C) 2007 Pierre d'Herbemont
5 * Copyright (C) 2007 the VideoLAN team
6 * $Id: VLCController.m 23286 2007-11-23 21:40:20Z pdherbemont $
8 * Authors: Pierre d'Herbemont <pdherbemont # videolan.org>
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23 *****************************************************************************/
27 #import "VLCController.h"
28 #import "VLCAppAdditions.h"
29 #import "VLCValueTransformer.h"
31 @interface VLCController ()
32 @property (readwrite,retain) NSArray * arrayOfMasters;
33 @property (readwrite,retain) NSArray * arrayOfVideoViewMasters;
36 /******************************************************************************
37 * VLCBrowsableVideoView
39 @implementation VLCController
40 @synthesize arrayOfMasters;
41 @synthesize arrayOfVideoViewMasters;
45 /***********************************
46 * Register our bindings value transformer
48 VLCFloat10000FoldTransformer *float100fold;
49 float100fold = [[[VLCFloat10000FoldTransformer alloc] init] autorelease];
50 [NSValueTransformer setValueTransformer:(id)float100fold forName:@"Float10000FoldTransformer"];
51 VLCNonNilAsBoolTransformer *nonNilAsBool;
52 nonNilAsBool = [[[VLCNonNilAsBoolTransformer alloc] init] autorelease];
53 [NSValueTransformer setValueTransformer:(id)nonNilAsBool forName:@"NonNilAsBoolTransformer"];
55 /***********************************
56 * arrayOfMasters: MasterView OutlineView content
58 NSArray * arrayOfMediaDiscoverer = [NSArray arrayWithObjects:
59 [[[VLCMediaDiscoverer alloc] initWithName:@"shoutcasttv"] autorelease],
60 [[[VLCMediaDiscoverer alloc] initWithName:@"shoutcast"] autorelease],
61 [[[VLCMediaDiscoverer alloc] initWithName:@"sap"] autorelease],
62 [[[VLCMediaDiscoverer alloc] initWithName:@"freebox"] autorelease], nil];
64 arrayOfPlaylists = [NSMutableArray arrayWithObjects:[VLCMedia mediaAsNodeWithName:@"Default Playlist"], nil];
66 NSDictionary * playlists = [NSMutableDictionary dictionaryWithObjectsAndKeys:
67 [@"Playlists" uppercaseString], @"descriptionInMasterView",
68 [@"Playlists" uppercaseString], @"descriptionInVideoView",
69 [NSNumber numberWithBool:NO], @"selectableInMasterView",
70 arrayOfPlaylists, @"childrenInMasterView",
71 arrayOfPlaylists, @"childrenInVideoView",
74 self.arrayOfMasters = [NSArray arrayWithObjects:
75 [NSMutableDictionary dictionaryWithObjectsAndKeys:
76 [@"Service Discovery" uppercaseString], @"descriptionInMasterView",
77 [NSNumber numberWithBool:NO], @"selectableInMasterView",
78 arrayOfMediaDiscoverer, @"childrenInMasterView",
84 /***********************************
87 self.arrayOfVideoViewMasters = [NSArray arrayWithObjects:
88 [NSDictionary dictionaryWithObjectsAndKeys:
89 @"Service Discovery", @"descriptionInVideoView",
90 arrayOfMediaDiscoverer, @"childrenInVideoView",
95 /* Execution will continue in applicationDidFinishLaunching */
96 [NSApp setDelegate:self];
99 - (void)applicationDidFinishLaunching:(NSNotification *)notification
101 [self newMainWindow: self];
104 - (void)newMainWindow:(id)sender
106 if (![NSBundle loadNibNamed:@"MainWindow" owner:self])
108 NSLog(@"Warning! Could not load MainWindow file.\n");
110 /* We are done. Should be on screen if Visible at launch time is checked */
113 - (void)addPlaylist:(id)sender
115 [[arrayOfMasters mutableArrayValueForKey:@"[0].childrenInMasterView"] addObject:[VLCMedia mediaAsNodeWithName:@"Untitled Playlist"]];
120 @implementation VLCController (ExceptionHandlerDelegating)