Commit 5ef5531d authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

MacOSX/Framework: Updated Sample code. (Patch by Enrique Osuna).

parent 9b89b833
/* Controller */
#import <Cocoa/Cocoa.h>
#import <VLC/VLC.h>
#import <VLC/VLCMediaPlayer.h>
@interface Controller : NSObject
{
IBOutlet id window;
IBOutlet id playlistOutline;
IBOutlet id videoHolderView;
VLCVideoView * videoView;
VLCMediaList *playlist;
VLCMediaPlayer *player;
int mediaIndex;
}
- (void)awakeFromNib;
- (void)setMediaIndex:(int)value;
- (void)play:(id)sender;
- (void)pause:(id)sender;
@end
#import "Controller.h"
static void *sleepForMe(void)
{
while (1) sleep(60);
}
@implementation Controller
- (void)awakeFromNib
{
// atexit((void*)sleepForMe); // Only used for memory leak debugging
[NSApp setDelegate:self];
// Allocate a VLCVideoView instance and tell it what area to occupy.
NSRect rect = NSMakeRect(0, 0, 0, 0);
rect.size = [videoHolderView frame].size;
videoView = [[VLCVideoView alloc] initWithFrame:rect];
[videoHolderView addSubview:videoView];
[videoView setAutoresizingMask: NSViewHeightSizable|NSViewWidthSizable];
playlist = [[VLCMediaList alloc] init];
[playlist setDelegate:self];
player = [[VLCMediaPlayer alloc] initWithVideoView:videoView];
mediaIndex = -1;
[playlistOutline registerForDraggedTypes:[NSArray arrayWithObjects:NSFilenamesPboardType, NSURLPboardType, nil]];
[playlistOutline setDoubleAction:@selector(changeAndPlay:)];
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
}
- (void)applicationWillTerminate:(NSNotification *)aNotification
{
[player pause];
[player setMedia:nil];
[player release];
[playlist release];
[videoView release];
}
- (void)changeAndPlay:(id)sender
{
if ([playlistOutline selectedRow] != mediaIndex)
{
[self setMediaIndex:[playlistOutline selectedRow]];
if (![player isPlaying])
[player play];
}
}
- (void)setMediaIndex:(int)value
{
if ([playlist count] <= 0)
return;
if (value < 0)
value = 0;
if (value > [playlist count] - 1)
value = [playlist count] - 1;
mediaIndex = value;
[player setMedia:[playlist mediaAtIndex:mediaIndex]];
}
- (void)play:(id)sender
{
[self setMediaIndex:mediaIndex+1];
if (![player isPlaying])
[player play];
}
- (void)pause:(id)sender
{
NSLog(@"Sending pause message to media player...");
[player pause];
}
//
- (void)mediaList:(VLCMediaList *)mediaList mediaAdded:(VLCMedia *)media atIndex:(int)index
{
[playlistOutline reloadData];
}
- (void)mediaList:(VLCMediaList *)mediaList mediaRemoved:(VLCMedia *)media atIndex:(int)index
{
[playlistOutline reloadData];
}
// NSTableView Implementation
- (int)numberOfRowsInTableView:(NSTableView *)tableView
{
return [playlist count];
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn
row:(int)row
{
return [[playlist mediaAtIndex:row] description];
}
- (NSDragOperation)tableView:(NSTableView*)tv validateDrop:(id <NSDraggingInfo>)info
proposedRow:(int)row proposedDropOperation:(NSTableViewDropOperation)op
{
return NSDragOperationEvery; /* This is for now */
}
- (BOOL)tableView:(NSTableView *)aTableView acceptDrop:(id <NSDraggingInfo>)info
row:(int)row dropOperation:(NSTableViewDropOperation)operation
{
int i;
NSArray *droppedItems = [[info draggingPasteboard] propertyListForType:NSFilenamesPboardType];
for (i = 0; i < [droppedItems count]; i++)
{
NSString * filename = [droppedItems objectAtIndex:i];
VLCMedia *media = [VLCMedia mediaWithURL:filename];
NSLog(@"%@ length = %@", media, [media lengthWaitUntilDate:[NSDate dateWithTimeIntervalSinceNow:60]]);
[playlist addMedia:media];
}
return YES;
}
@end
B/* Localized versions of Info.plist keys */ B/* Localized versions of Info.plist keys */
{
IBClasses = (
{
ACTIONS = {pause = id; play = id; };
CLASS = Controller;
LANGUAGE = ObjC;
OUTLETS = {playlistOutline = id; videoHolderView = id; window = id; };
SUPERCLASS = NSObject;
},
{CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
{CLASS = NSSegmentedControl; LANGUAGE = ObjC; SUPERCLASS = NSControl; }
);
IBVersion = 1;
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IBDocumentLocation</key>
<string>111 87 356 240 0 0 1440 878 </string>
<key>IBEditorPositions</key>
<dict>
<key>29</key>
<string>108 299 338 44 0 0 1440 878 </string>
</dict>
<key>IBFramework Version</key>
<string>446.1</string>
<key>IBOpenObjects</key>
<array>
<integer>29</integer>
<integer>21</integer>
</array>
<key>IBSystem Version</key>
<string>8R2218</string>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.yourcompany.test</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>
//
// main.m
// test
//
// Created by Pierre d'Herbemont on 13/04/07.
// Copyright __MyCompanyName__ 2007. All rights reserved.
//
#import <Cocoa/Cocoa.h>
#import <VLC/VLC.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
return NSApplicationMain(argc, (const char **) argv);
}
//
// Prefix header for all source files of the 'test' target in the 'test' project
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment