MacOSX/VLC_app: Better naming scheme for the different UI elements.
[vlc.git] / extras / MacOSX / VLC_app / Sources / VLCController.m
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$
7  *
8  * Authors: Pierre d'Herbemont <pdherbemont # videolan.org>
9  *
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.
14  *
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.
19  *
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  *****************************************************************************/
24
25 #import <VLC/VLC.h>
26
27 #import "VLCController.h" 
28 #import "VLCAppAdditions.h" 
29 #import "VLCValueTransformer.h" 
30
31 @interface VLCController ()
32 @property (readwrite,retain) NSArray * categories;
33 @end
34
35 /******************************************************************************
36  * VLCBrowsableVideoView
37  */
38 @implementation VLCController
39 @synthesize categories;
40
41 - (void)awakeFromNib
42 {
43     /***********************************
44      * Register our bindings value transformer
45      */
46     VLCFloat10000FoldTransformer *float100fold;
47     float100fold = [[[VLCFloat10000FoldTransformer alloc] init] autorelease];
48     [NSValueTransformer setValueTransformer:(id)float100fold forName:@"Float10000FoldTransformer"];
49     VLCNonNilAsBoolTransformer *nonNilAsBool;
50     nonNilAsBool = [[[VLCNonNilAsBoolTransformer alloc] init] autorelease];
51     [NSValueTransformer setValueTransformer:(id)nonNilAsBool forName:@"NonNilAsBoolTransformer"];
52
53     /***********************************
54      * categories: Main content
55      */
56     NSArray * mediaDiscoverers = [NSArray arrayWithObjects:
57         [[[VLCMediaDiscoverer alloc] initWithName:@"shoutcasttv"] autorelease],
58         [[[VLCMediaDiscoverer alloc] initWithName:@"shoutcast"] autorelease],
59         [[[VLCMediaDiscoverer alloc] initWithName:@"sap"] autorelease],
60         [[[VLCMediaDiscoverer alloc] initWithName:@"freebox"] autorelease], nil];
61
62     NSArray * playlists = [NSMutableArray arrayWithObjects:[VLCMedia mediaAsNodeWithName:@"Default Playlist"], nil];
63
64     NSDictionary * playlistsAsDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:
65                                 [@"Playlists" uppercaseString], @"descriptionInCategoriesList",
66                                 @"Playlists", @"descriptionInVideoView",
67                                 [NSNumber numberWithBool:NO], @"selectableInCategoriesList",
68                                 playlists, @"childrenInCategoriesList",
69                                 playlists, @"childrenInVideoView",
70                                 nil];
71
72     self.categories = [NSArray arrayWithObjects:
73                     [NSMutableDictionary dictionaryWithObjectsAndKeys:
74                         [@"Service Discovery" uppercaseString], @"descriptionInCategoriesList",
75                         @"Service Discovery", @"descriptionInVideoView",
76                         [NSNumber numberWithBool:NO], @"selectableInCategoriesList",
77                         mediaDiscoverers, @"childrenInCategoriesList",
78                         mediaDiscoverers, @"childrenInVideoView",
79                         nil],
80                     playlistsAsDictionary,
81                     nil];
82
83     /* Execution will continue in applicationDidFinishLaunching */
84     [NSApp setDelegate:self];
85 }
86
87 - (void)newMainWindow:(id)sender
88 {
89     if (![NSBundle loadNibNamed:@"MainWindow" owner:self])
90     {
91         NSLog(@"Warning! Could not load MainWindow file.\n");
92     }
93     /* We are done. Should be on screen if Visible at launch time is checked */
94 }
95
96 - (void)addPlaylist:(id)sender
97 {
98     // TODO
99     NSLog(@"unimplemented!");
100 }
101
102 @end
103
104 @implementation VLCController (NSAppDelegate)
105 - (void)applicationDidFinishLaunching:(NSNotification *)notification
106 {
107     [self newMainWindow: self];
108 }
109 @end