Commit ecebadec authored by Damien Fouilleul's avatar Damien Fouilleul

MacOS X: more EyeTV GUI improvements

parent 1bc33071
...@@ -33,8 +33,9 @@ ...@@ -33,8 +33,9 @@
- (BOOL)isEyeTVrunning; - (BOOL)isEyeTVrunning;
- (BOOL)isDeviceConnected; - (BOOL)isDeviceConnected;
- (void)launchEyeTV; - (void)launchEyeTV;
- (void)switchChannelUp:(BOOL)b_yesOrNo; - (int)currentChannel;
- (int)switchChannelUp:(BOOL)b_yesOrNo;
- (void)selectChannel:(int)theChannelNum; - (void)selectChannel:(int)theChannelNum;
- (NSEnumerator *)getChannels; - (NSEnumerator *)allChannels;
@end @end
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
* $Id$ * $Id$
* *
* Authors: Felix Kühne <fkuehne at videolan dot org> * 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 * 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 * it under the terms of the GNU General Public License as published by
...@@ -86,19 +87,42 @@ static VLCEyeTVController *_o_sharedInstance = nil; ...@@ -86,19 +87,42 @@ static VLCEyeTVController *_o_sharedInstance = nil;
- (void)launchEyeTV - (void)launchEyeTV
{ {
NSAppleScript *script = [[NSAppleScript alloc] initWithSource: 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; NSDictionary *errorDict;
NSAppleEventDescriptor *descriptor = [script executeAndReturnError:&errorDict]; NSAppleEventDescriptor *descriptor = [script executeAndReturnError:&errorDict];
if( nil == descriptor ) if( nil == descriptor )
{ {
NSString *errorString = [errorDict objectForKey:NSAppleScriptErrorMessage]; NSString *errorString = [errorDict objectForKey:NSAppleScriptErrorMessage];
msg_Err( VLCIntf, "opening EyeTV failed with error code %s", [errorString UTF8String] ); msg_Err( VLCIntf, "opening EyeTV failed with error status '%s'", [errorString UTF8String] );
} }
[script release]; [script release];
} }
- (void)switchChannelUp:(BOOL)b_yesOrNo - (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 )
{
NSString *errorString = [errorDict objectForKey:NSAppleScriptErrorMessage];
msg_Err( VLCIntf, "EyeTV channel inventory failed with error status '%s'", [errorString UTF8String] );
}
else
{
currentChannel = (int)[descriptor int32Value];
}
[script release];
return currentChannel;
}
- (int)switchChannelUp:(BOOL)b_yesOrNo
{
int currentChannel = 0;
NSAppleScript *script; NSAppleScript *script;
NSDictionary *errorDict; NSDictionary *errorDict;
NSAppleEventDescriptor *descriptor; NSAppleEventDescriptor *descriptor;
...@@ -106,12 +130,23 @@ static VLCEyeTVController *_o_sharedInstance = nil; ...@@ -106,12 +130,23 @@ static VLCEyeTVController *_o_sharedInstance = nil;
if( b_yesOrNo == YES ) if( b_yesOrNo == YES )
{ {
script = [[NSAppleScript alloc] initWithSource: script = [[NSAppleScript alloc] initWithSource:
@"tell application \"EyeTV\" to channel_up"]; @"tell application \"EyeTV\"\n"
"channel_up\n"
"volume_change level 0\n"
"tell application \"System Events\" to set visible of process \"EyeTV\" to false\n"
"get current channel\n"
"end tell"];
msg_Dbg( VLCIntf, "telling eyetv to switch 1 channel up" ); msg_Dbg( VLCIntf, "telling eyetv to switch 1 channel up" );
} }
else else
{ {
script = [[NSAppleScript alloc] initWithSource:@"tell application \"EyeTV\" to channel_down"]; script = [[NSAppleScript alloc] initWithSource:
@"tell application \"EyeTV\"\n"
"channel_down\n"
"volume_change level 0\n"
"tell application \"System Events\" to set visible of process \"EyeTV\" to false\n"
"get current channel\n"
"end tell"];
msg_Dbg( VLCIntf, "telling eyetv to switch 1 channel down" ); msg_Dbg( VLCIntf, "telling eyetv to switch 1 channel down" );
} }
...@@ -119,9 +154,14 @@ static VLCEyeTVController *_o_sharedInstance = nil; ...@@ -119,9 +154,14 @@ static VLCEyeTVController *_o_sharedInstance = nil;
if( nil == descriptor ) if( nil == descriptor )
{ {
NSString *errorString = [errorDict objectForKey:NSAppleScriptErrorMessage]; NSString *errorString = [errorDict objectForKey:NSAppleScriptErrorMessage];
msg_Err( VLCIntf, "EyeTV channel change failed with error code %s", [errorString UTF8String] ); msg_Err( VLCIntf, "EyeTV channel change failed with error status '%s'", [errorString UTF8String] );
}
else
{
currentChannel = (int)[descriptor int32Value];
} }
[script release]; [script release];
return currentChannel;
} }
- (void)selectChannel: (int)theChannelNum - (void)selectChannel: (int)theChannelNum
...@@ -131,21 +171,37 @@ static VLCEyeTVController *_o_sharedInstance = nil; ...@@ -131,21 +171,37 @@ static VLCEyeTVController *_o_sharedInstance = nil;
{ {
case -2: // Composite case -2: // Composite
script = [[NSAppleScript alloc] initWithSource: 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"
" volume_change level 0\n"
" tell application \"System Events\" to set visible of process \"EyeTV\" to false\n"
"end tell"];
break; break;
case -1: // S-Video case -1: // S-Video
script = [[NSAppleScript alloc] initWithSource: 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"
" volume_change level 0\n"
" tell application \"System Events\" to set visible of process \"EyeTV\" to false\n"
"end tell"];
break; break;
case 0: // Tuner case 0: // Tuner
script = [[NSAppleScript alloc] initWithSource: script = [[NSAppleScript alloc] initWithSource:
@"tell application \"EyeTV\" to input_change input source tuner input"]; @"tell application \"EyeTV\"\n"
" input_change input source tuner input"
" volume_change level 0\n"
" tell application \"System Events\" to set visible of process \"EyeTV\" to false\n"
"end tell"];
break; break;
default: default:
if( theChannelNum > 0 ) if( theChannelNum > 0 )
{ {
NSString *channel_change = [NSString stringWithFormat: 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"
" volume_change level 0\n"
" tell application \"System Events\" to set visible of process \"EyeTV\" to false\n"
"end tell", theChannelNum];
script = [[NSAppleScript alloc] initWithSource:channel_change]; script = [[NSAppleScript alloc] initWithSource:channel_change];
} }
else else
...@@ -156,12 +212,12 @@ static VLCEyeTVController *_o_sharedInstance = nil; ...@@ -156,12 +212,12 @@ static VLCEyeTVController *_o_sharedInstance = nil;
if( nil == descriptor ) if( nil == descriptor )
{ {
NSString *errorString = [errorDict objectForKey:NSAppleScriptErrorMessage]; NSString *errorString = [errorDict objectForKey:NSAppleScriptErrorMessage];
msg_Err( VLCIntf, "EyeTV source change failed with error code %s", [errorString UTF8String] ); msg_Err( VLCIntf, "EyeTV source change failed with error status '%s'", [errorString UTF8String] );
} }
[script release]; [script release];
} }
- (NSEnumerator *)getChannels - (NSEnumerator *)allChannels
{ {
NSEnumerator *channels = nil; NSEnumerator *channels = nil;
NSAppleScript *script = [[NSAppleScript alloc] initWithSource: NSAppleScript *script = [[NSAppleScript alloc] initWithSource:
...@@ -171,7 +227,7 @@ static VLCEyeTVController *_o_sharedInstance = nil; ...@@ -171,7 +227,7 @@ static VLCEyeTVController *_o_sharedInstance = nil;
if( nil == descriptor ) if( nil == descriptor )
{ {
NSString *errorString = [errorDict objectForKey:NSAppleScriptErrorMessage]; NSString *errorString = [errorDict objectForKey:NSAppleScriptErrorMessage];
msg_Err( VLCIntf, "EyeTV channel inventory failed with error code %s", [errorString UTF8String] ); msg_Err( VLCIntf, "EyeTV channel inventory failed with error status '%s'", [errorString UTF8String] );
} }
else else
{ {
......
...@@ -799,9 +799,9 @@ static VLCOpen *_o_sharedMainInstance = nil; ...@@ -799,9 +799,9 @@ static VLCOpen *_o_sharedMainInstance = nil;
- (IBAction)eyetvSwitchChannel:(id)sender - (IBAction)eyetvSwitchChannel:(id)sender
{ {
if( sender == o_eyetv_nextProgram_btn ) if( sender == o_eyetv_nextProgram_btn )
[[[VLCMain sharedInstance] getEyeTVController] switchChannelUp: YES]; [o_eyetv_channels_pop selectItemWithTag:[[[VLCMain sharedInstance] getEyeTVController] switchChannelUp: YES]];
else if( sender == o_eyetv_previousProgram_btn ) else if( sender == o_eyetv_previousProgram_btn )
[[[VLCMain sharedInstance] getEyeTVController] switchChannelUp: NO]; [o_eyetv_channels_pop selectItemWithTag:[[[VLCMain sharedInstance] getEyeTVController] switchChannelUp: NO]];
else if( sender == o_eyetv_channels_pop ) else if( sender == o_eyetv_channels_pop )
[[[VLCMain sharedInstance] getEyeTVController] selectChannel: [[[VLCMain sharedInstance] getEyeTVController] selectChannel:
[[sender selectedItem] tag]]; [[sender selectedItem] tag]];
...@@ -856,7 +856,7 @@ static VLCOpen *_o_sharedMainInstance = nil; ...@@ -856,7 +856,7 @@ static VLCOpen *_o_sharedMainInstance = nil;
[o_eyetv_chn_status_txt setHidden: NO]; [o_eyetv_chn_status_txt setHidden: NO];
/* retrieve info */ /* retrieve info */
NSEnumerator *channels = [[[VLCMain sharedInstance] getEyeTVController] getChannels]; NSEnumerator *channels = [[[VLCMain sharedInstance] getEyeTVController] allChannels];
int x = -2; int x = -2;
[[[o_eyetv_channels_pop menu] addItemWithTitle: _NS("Composite input") [[[o_eyetv_channels_pop menu] addItemWithTitle: _NS("Composite input")
action: nil action: nil
...@@ -879,11 +879,15 @@ static VLCOpen *_o_sharedMainInstance = nil; ...@@ -879,11 +879,15 @@ static VLCOpen *_o_sharedMainInstance = nil;
action: nil action: nil
keyEquivalent: @""] setTag:x++]; keyEquivalent: @""] setTag:x++];
} }
/* make Tuner the default */
[o_eyetv_channels_pop selectItemWithTag:[[[VLCMain sharedInstance] getEyeTVController] currentChannel]];
} }
/* clean up GUI */ /* clean up GUI */
[o_eyetv_chn_bgbar setHidden: YES]; [o_eyetv_chn_bgbar setHidden: YES];
[o_eyetv_chn_status_txt setHidden: YES]; [o_eyetv_chn_status_txt setHidden: YES];
[o_mrl setStringValue: @"eyetv:"];
} }
- (IBAction)subsChanged:(id)sender - (IBAction)subsChanged:(id)sender
......
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