]> git.sesse.net Git - vlc/commitdiff
MacOS X: more EyeTV GUI improvements
authorDamien Fouilleul <damienf@videolan.org>
Thu, 22 Nov 2007 23:59:30 +0000 (23:59 +0000)
committerDamien Fouilleul <damienf@videolan.org>
Thu, 22 Nov 2007 23:59:30 +0000 (23:59 +0000)
modules/gui/macosx/eyetv.h
modules/gui/macosx/eyetv.m
modules/gui/macosx/open.m

index 8f6300691c43f13d504d0248c4584b111328a043..c93dcfcc5bb71d5932b54264960ac4fa0e011bef 100644 (file)
@@ -33,8 +33,9 @@
 - (BOOL)isEyeTVrunning;\r
 - (BOOL)isDeviceConnected;\r
 - (void)launchEyeTV;\r
-- (void)switchChannelUp:(BOOL)b_yesOrNo;\r
+- (int)currentChannel;\r
+- (int)switchChannelUp:(BOOL)b_yesOrNo;\r
 - (void)selectChannel:(int)theChannelNum;\r
-- (NSEnumerator *)getChannels;\r
+- (NSEnumerator *)allChannels;\r
 \r
 @end\r
index b176b36bfbfdfbe7eb486d28057b536dd6013888..c6ad4c1d947d105c6635fc9457ea74cd4fcbe14c 100644 (file)
@@ -5,6 +5,7 @@
 * $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
@@ -86,19 +87,42 @@ static VLCEyeTVController *_o_sharedInstance = nil;
 - (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];
-        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];
 }
 
-- (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;
     NSDictionary *errorDict;
     NSAppleEventDescriptor *descriptor;
@@ -106,12 +130,23 @@ static VLCEyeTVController *_o_sharedInstance = nil;
     if( b_yesOrNo == YES )
     {
         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" );
     }
     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" );
     }
     
@@ -119,9 +154,14 @@ static VLCEyeTVController *_o_sharedInstance = nil;
     if( nil == descriptor ) 
     {
         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];
+    return currentChannel;
 }
 
 - (void)selectChannel: (int)theChannelNum
@@ -131,21 +171,37 @@ static VLCEyeTVController *_o_sharedInstance = nil;
     {
         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"
+                         "  volume_change level 0\n"
+                         "  tell application \"System Events\" to set visible of process \"EyeTV\" to false\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"
+                         "  volume_change level 0\n"
+                         "  tell application \"System Events\" to set visible of process \"EyeTV\" to false\n"
+                         "end tell"];
             break;
         case 0: // Tuner
             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;
         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"
+                     "  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];
             }
             else
@@ -156,12 +212,12 @@ static VLCEyeTVController *_o_sharedInstance = nil;
     if( nil == descriptor ) 
     {
         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];
 }
 
-- (NSEnumerator *)getChannels
+- (NSEnumerator *)allChannels
 {
     NSEnumerator *channels = nil;
     NSAppleScript *script = [[NSAppleScript alloc] initWithSource:
@@ -171,7 +227,7 @@ static VLCEyeTVController *_o_sharedInstance = nil;
     if( nil == descriptor ) 
     {
         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
     {
index ab5835fe8c113b71f33ca82385d9e1aaa885ea8a..d826c64e74016f9b41d556bfe87af23be4c58812 100644 (file)
@@ -799,9 +799,9 @@ static VLCOpen *_o_sharedMainInstance = nil;
 - (IBAction)eyetvSwitchChannel:(id)sender
 {
     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 )
-        [[[VLCMain sharedInstance] getEyeTVController] switchChannelUp: NO];
+        [o_eyetv_channels_pop selectItemWithTag:[[[VLCMain sharedInstance] getEyeTVController] switchChannelUp: NO]];
     else if( sender == o_eyetv_channels_pop )
         [[[VLCMain sharedInstance] getEyeTVController] selectChannel:
             [[sender selectedItem] tag]];
@@ -856,7 +856,7 @@ static VLCOpen *_o_sharedMainInstance = nil;
     [o_eyetv_chn_status_txt setHidden: NO];
  
     /* retrieve info */
-    NSEnumerator *channels = [[[VLCMain sharedInstance] getEyeTVController] getChannels];
+    NSEnumerator *channels = [[[VLCMain sharedInstance] getEyeTVController] allChannels];
     int x = -2;
     [[[o_eyetv_channels_pop menu] addItemWithTitle: _NS("Composite input")
                                                action: nil
@@ -879,11 +879,15 @@ static VLCOpen *_o_sharedMainInstance = nil;
                                                    action: nil
                                             keyEquivalent: @""] setTag:x++];
         }
+        /* make Tuner the default */
+        [o_eyetv_channels_pop selectItemWithTag:[[[VLCMain sharedInstance] getEyeTVController] currentChannel]];
     }
  
     /* clean up GUI */
     [o_eyetv_chn_bgbar setHidden: YES];
     [o_eyetv_chn_status_txt setHidden: YES];
+
+    [o_mrl setStringValue: @"eyetv:"];
 }
 
 - (IBAction)subsChanged:(id)sender