]> git.sesse.net Git - vlc/blobdiff - modules/gui/macosx/playlist.m
* withCString is deprecated in 10.4. Use WithUTF8String instead, as VLC's core is...
[vlc] / modules / gui / macosx / playlist.m
index e0e6c22c2df22e7a9aae6808abe0728b177cd964..a13cfa3b808d001671526151b0545c24f8b98504 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * playlist.m: MacOS X interface module
  *****************************************************************************
-* Copyright (C) 2002-2006 the VideoLAN team
+* Copyright (C) 2002-2007 the VideoLAN team
  * $Id$
  *
  * Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
         if( !EMPTY_STR( psz_title ) )
         {
             o_value = [NSString stringWithUTF8String: psz_title];
-            if( o_value == NULL )
-                o_value = [NSString stringWithCString: psz_title];
         }
         else
         {
             if( psz_name != NULL )
             {
                 o_value = [NSString stringWithUTF8String: psz_name];
-                if( o_value == NULL )
-                    o_value = [NSString stringWithCString: psz_name];
             }
             free( psz_name );
         }
         if( [[o_tc identifier] isEqualToString:@"2"] && !EMPTY_STR( psz_artist ) )
         {
             o_value = [NSString stringWithUTF8String: psz_artist];
-            if( o_value == NULL )
-                o_value = [NSString stringWithCString: psz_artist];
         }
         else if( [[o_tc identifier] isEqualToString:@"3"] )
         {
 - (void)awakeFromNib
 {
     playlist_t * p_playlist = pl_Yield( VLCIntf );
-    vlc_list_t *p_list = vlc_list_find( p_playlist, VLC_OBJECT_MODULE,
-                                        FIND_ANYWHERE );
 
-    int i_index;
+    int i;
 
     [super awakeFromNib];
 
 
     o_tc_sortColumn = nil;
 
-    for( i_index = 0; i_index < p_list->i_count; i_index++ )
+    char ** ppsz_name;
+    char ** ppsz_services = services_discovery_GetServicesNames( p_playlist, &ppsz_name );
+    
+    for( i = 0; ppsz_services[i]; i++ )
     {
         vlc_bool_t  b_enabled;
         char        *objectname;
         NSMenuItem  *o_lmi;
-        module_t    *p_parser = (module_t *)p_list->p_values[i_index].p_object ;
 
-        if( !strcmp( p_parser->psz_capability, "services_discovery" ) )
-        {
-            /* Check for submodules */
-            int i = -1;
-            while( p_parser->pp_shortcuts[++i] != NULL ); i--;
+        char * name = ppsz_name[i] ? ppsz_name[i] : ppsz_services[i];
+        /* Check whether to enable these menuitems */
+        b_enabled = playlist_IsServicesDiscoveryLoaded( p_playlist, objectname );
+
+        /* Create the menu entries used in the playlist menu */
+        o_lmi = [[o_mi_services submenu] addItemWithTitle:
+                 [NSString stringWithUTF8String: name]
+                                         action: @selector(servicesChange:)
+                                         keyEquivalent: @""];
+        [o_lmi setTarget: self];
+        [o_lmi setRepresentedObject: [NSString stringWithUTF8String: ppsz_services[i]]];
+        if( b_enabled ) [o_lmi setState: NSOnState];
+
+        /* Create the menu entries for the main menu */
+        o_lmi = [[o_mm_mi_services submenu] addItemWithTitle:
+                 [NSString stringWithUTF8String: name]
+                                         action: @selector(servicesChange:)
+                                         keyEquivalent: @""];
+        [o_lmi setTarget: self];
+        [o_lmi setRepresentedObject: [NSString stringWithUTF8String: ppsz_services[i]]];
+        if( b_enabled ) [o_lmi setState: NSOnState];
+
+        free( ppsz_services[i] );
+        free( ppsz_name[i] );
+    }
+    free( ppsz_services );
+    free( ppsz_name );
 
-            /* Check whether to enable these menuitems */
-            objectname = i>=0 ? (char *)p_parser->pp_shortcuts[i] : (char *)p_parser->psz_object_name;
-            b_enabled = playlist_IsServicesDiscoveryLoaded( p_playlist, objectname );
-            /* Create the menu entries used in the playlist menu */
-            o_lmi = [[o_mi_services submenu] addItemWithTitle:
-                     [NSString stringWithUTF8String:
-                     p_parser->psz_longname ? p_parser->psz_longname :
-                     ( p_parser->psz_shortname ? p_parser->psz_shortname:
-                     objectname)]
-                                             action: @selector(servicesChange:)
-                                             keyEquivalent: @""];
-            [o_lmi setTarget: self];
-            [o_lmi setRepresentedObject: [NSString stringWithCString: objectname]];
-            if( b_enabled ) [o_lmi setState: NSOnState];
-            /* Create the menu entries for the main menu */
-            o_lmi = [[o_mm_mi_services submenu] addItemWithTitle:
-                     [NSString stringWithUTF8String:
-                     p_parser->psz_longname ? p_parser->psz_longname :
-                     ( p_parser->psz_shortname ? p_parser->psz_shortname:
-                     objectname)]
-                                             action: @selector(servicesChange:)
-                                             keyEquivalent: @""];
-            [o_lmi setTarget: self];
-            [o_lmi setRepresentedObject: [NSString stringWithCString:objectname]];
-            if( b_enabled ) [o_lmi setState: NSOnState];
-        }
-    }
-    vlc_list_release( p_list );
     vlc_object_release( p_playlist );
 
     //[self playlistUpdated];
         {
             NSMutableString *o_temp, *o_temp2;
             o_temp = [NSMutableString stringWithString: o_uri];
-            o_temp2 = [NSMutableString stringWithCString: mounts[i_index].f_mntfromname];
+            o_temp2 = [NSMutableString stringWithUTF8String: mounts[i_index].f_mntfromname];
             [o_temp replaceOccurrencesOfString: @"/dev/rdisk" withString: @"/dev/disk" options:nil range:NSMakeRange(0, [o_temp length]) ];
             [o_temp2 replaceOccurrencesOfString: @"s0" withString: @"" options:nil range:NSMakeRange(0, [o_temp2 length]) ];
             [o_temp2 replaceOccurrencesOfString: @"s1" withString: @"" options:nil range:NSMakeRange(0, [o_temp2 length]) ];
 
             if( strstr( [o_temp fileSystemRepresentation], [o_temp2 fileSystemRepresentation] ) != NULL )
             {
-                o_name = [[NSFileManager defaultManager] displayNameAtPath: [NSString stringWithCString:mounts[i_index].f_mntonname]];
+                o_name = [[NSFileManager defaultManager] displayNameAtPath: [NSString stringWithUTF8String:mounts[i_index].f_mntonname]];
             }
         }
     }
         buf = (struct statfs *) malloc (sizeof(struct statfs));
         statfs( [o_uri fileSystemRepresentation], buf );
         psz_dev = strdup(buf->f_mntfromname);
-        o_temp = [NSMutableString stringWithCString: psz_dev ];
+        o_temp = [NSMutableString stringWithUTF8String: psz_dev ];
         [o_temp replaceOccurrencesOfString: @"/dev/disk" withString: @"/dev/rdisk" options:nil range:NSMakeRange(0, [o_temp length]) ];
         [o_temp replaceOccurrencesOfString: @"s0" withString: @"" options:nil range:NSMakeRange(0, [o_temp length]) ];
         [o_temp replaceOccurrencesOfString: @"s1" withString: @"" options:nil range:NSMakeRange(0, [o_temp length]) ];
     vlc_object_release( p_playlist );
     return NO;
 }
-
-/* Delegate method of NSWindow */
-/*- (void)windowWillClose:(NSNotification *)aNotification
-{
-    [o_btn_playlist setState: NSOffState];
-}
-*/
 @end