/*****************************************************************************
* eyetv.m: small class to control the notification parts of the EyeTV plugin
*****************************************************************************
-* Copyright (C) 2006-2007 the VideoLAN team
+* Copyright (C) 2006-2011 VLC authors and VideoLAN
* $Id$
*
* Authors: Felix Kühne <fkuehne at videolan dot org>
+* Damien Fouilleul <damienf at videolan dot org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
return _o_sharedInstance ? _o_sharedInstance : [[self alloc] init];
}
-- (id)init
+- (id)init
{
if (_o_sharedInstance) {
[self dealloc];
object: @"VLCEyeTVSupport"
suspensionBehavior: NSNotificationSuspensionBehaviorDeliverImmediately];
}
-
+
return _o_sharedInstance;
}
- (void)globalNotificationReceived: (NSNotification *)theNotification
{
- msg_Dbg( VLCIntf, "notification received in VLC with name %s and object %s",
- [[theNotification name] UTF8String], [[theNotification object] UTF8String] );
-
/* update our info on the used device */
if( [[theNotification name] isEqualToString: @"DeviceAdded"] )
b_deviceConnected = YES;
- (void)launchEyeTV
{
NSAppleScript *script = [[NSAppleScript alloc] initWithSource:
- @"tell application \"EyeTV\" to launch with server mode"];
+ @"tell application \"EyeTV\"\n"
+ "launch with server mode\n"
+ "end tell"];
+ NSDictionary *errorDict;
+ NSAppleEventDescriptor *descriptor = [script executeAndReturnError:&errorDict];
+ if( nil == descriptor )
+ {
+ NSString *errorString = [errorDict objectForKey:NSAppleScriptErrorMessage];
+ NSLog( @"opening EyeTV failed with error status '%@'", errorString );
+ }
+ [script release];
+}
+
+- (int)currentChannel
+{
+ int currentChannel = 0;
+ NSAppleScript *script = [[NSAppleScript alloc] initWithSource:
+ @"tell application \"EyeTV\" to get current channel"];
NSDictionary *errorDict;
NSAppleEventDescriptor *descriptor = [script executeAndReturnError:&errorDict];
- if( nil == descriptor )
+ if( nil == descriptor )
{
NSString *errorString = [errorDict objectForKey:NSAppleScriptErrorMessage];
- msg_Err( VLCIntf, "opening EyeTV failed with error code %s", [errorString UTF8String] );
+ NSLog( @"EyeTV channel inventory failed with error status '%@'", errorString );
+ }
+ else
+ {
+ currentChannel = (int)[descriptor int32Value];
}
[script release];
+ return currentChannel;
}
-- (void)switchChannelUp:(BOOL)b_yesOrNo
+- (int)switchChannelUp:(BOOL)b_yesOrNo
{
+ int currentChannel = 0;
NSAppleScript *script;
NSDictionary *errorDict;
NSAppleEventDescriptor *descriptor;
if( b_yesOrNo == YES )
{
script = [[NSAppleScript alloc] initWithSource:
- @"tell application \"EyeTV\" to channel_up"];
- msg_Dbg( VLCIntf, "telling eyetv to switch 1 channel up" );
+ @"tell application \"EyeTV\"\n"
+ "channel_up\n"
+ "get current channel\n"
+ "end tell"];
+ NSLog( @"telling eyetv to switch 1 channel up" );
}
else
{
- script = [[NSAppleScript alloc] initWithSource:@"tell application \"EyeTV\" to channel_down"];
- msg_Dbg( VLCIntf, "telling eyetv to switch 1 channel down" );
+ script = [[NSAppleScript alloc] initWithSource:
+ @"tell application \"EyeTV\"\n"
+ "channel_down\n"
+ "get current channel\n"
+ "end tell"];
+ NSLog( @"telling eyetv to switch 1 channel down" );
}
-
+
descriptor = [script executeAndReturnError:&errorDict];
- if( nil == descriptor )
+ if( nil == descriptor )
{
NSString *errorString = [errorDict objectForKey:NSAppleScriptErrorMessage];
- msg_Err( VLCIntf, "EyeTV channel change failed with error code %s", [errorString UTF8String] );
+ NSLog( @"EyeTV channel change failed with error status '%@'", errorString );
+ }
+ else
+ {
+ currentChannel = (int)[descriptor int32Value];
}
[script release];
+ return currentChannel;
}
- (void)selectChannel: (int)theChannelNum
{
case -2: // Composite
script = [[NSAppleScript alloc] initWithSource:
- @"tell application \"EyeTV\" to input_change input source composite video input"];
+ @"tell application \"EyeTV\"\n"
+ " input_change input source composite video input\n"
+ " show player_window\n"
+ "end tell"];
break;
case -1: // S-Video
script = [[NSAppleScript alloc] initWithSource:
- @"tell application \"EyeTV\" to input_change input source S video input"];
+ @"tell application \"EyeTV\"\n"
+ " input_change input source S video input\n"
+ " show player_window\n"
+ "end tell"];
break;
- case 0: // Tuner
+ case 0: // Last
script = [[NSAppleScript alloc] initWithSource:
- @"tell application \"EyeTV\" to input_change input source tuner input"];
+ @"tell application \"EyeTV\"\n"
+ " show player_window\n"
+ "end tell"];
break;
default:
if( theChannelNum > 0 )
{
NSString *channel_change = [NSString stringWithFormat:
- @"tell application \"EyeTV\" to channel_change channel number %d", theChannelNum];
+ @"tell application \"EyeTV\"\n"
+ " channel_change channel number %d\n"
+ " show player_window\n"
+ "end tell", theChannelNum];
script = [[NSAppleScript alloc] initWithSource:channel_change];
}
else
}
NSDictionary *errorDict;
NSAppleEventDescriptor *descriptor = [script executeAndReturnError:&errorDict];
- if( nil == descriptor )
+ if( nil == descriptor )
{
NSString *errorString = [errorDict objectForKey:NSAppleScriptErrorMessage];
- msg_Err( VLCIntf, "EyeTV source change failed with error code %s", [errorString UTF8String] );
+ NSLog( @"EyeTV source change failed with error status '%@'", errorString );
}
[script release];
}
-- (NSEnumerator *)getChannels
+- (NSEnumerator *)allChannels
{
NSEnumerator *channels = nil;
NSAppleScript *script = [[NSAppleScript alloc] initWithSource:
@"tell application \"EyeTV\" to get name of every channel"];
NSDictionary *errorDict;
NSAppleEventDescriptor *descriptor = [script executeAndReturnError:&errorDict];
- if( nil == descriptor )
+ if( nil == descriptor )
{
NSString *errorString = [errorDict objectForKey:NSAppleScriptErrorMessage];
- msg_Err( VLCIntf, "EyeTV channel inventory failed with error code %s", [errorString UTF8String] );
+ NSLog( @"EyeTV channel inventory failed with error status '%@'", errorString );
}
else
{
int count = [descriptor numberOfItems];
- int x=0;
+ int x=0;
NSMutableArray *channelArray = [NSMutableArray arrayWithCapacity:count];
while( x++ < count ) {
[channelArray addObject:[[descriptor descriptorAtIndex:x] stringValue]];