]> git.sesse.net Git - vlc/blobdiff - plugins/beos/intf_beos.cpp
* Bug fixes and enhancements in the Gtk+/Gnome interfaces.
[vlc] / plugins / beos / intf_beos.cpp
index 05f1ec81adfcaa3367afb6c153274e961a42e523..17559bad3368e0b19fd375e12264b1d3440a4872 100644 (file)
@@ -2,7 +2,7 @@
  * intf_beos.cpp: beos interface
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: intf_beos.cpp,v 1.18 2001/03/06 19:52:03 richards Exp $
+ * $Id: intf_beos.cpp,v 1.20 2001/03/15 01:42:19 sam Exp $
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -76,7 +76,7 @@ extern "C"
 #include "input_ext-intf.h"
 
 #include "interface.h"
-#include "intf_plst.h"
+#include "intf_playlist.h"
 #include "intf_msg.h"
 #include "audio_output.h"
 #include "MsgVals.h"
@@ -120,13 +120,14 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char *name , intf_thread_t
     menu_bar = new BMenuBar(rect, "main menu");
     AddChild( menu_bar );
 
-       BMenu *m, *cd_menu;
+       BMenu *m; 
+       CDMenu *cd_menu;
 
        menu_bar->AddItem( m = new BMenu("File") );
        menu_bar->ResizeToPreferred();
        m->AddItem( new BMenuItem("Open File...", new BMessage(OPEN_FILE), 'O'));
-       cd_menu = new BMenu("Open DVD");
-       GetCD("/dev/disk", cd_menu);
+       cd_menu = new CDMenu("Open DVD");
+       //GetCD("/dev/disk", cd_menu);
        m->AddItem(cd_menu);
        m->AddSeparatorItem();
        m->AddItem( new BMenuItem("About...", new BMessage(B_ABOUT_REQUESTED), 'A'));
@@ -262,7 +263,7 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
            if(p_message->FindString("device", device) != B_ERROR)
                {
                sprintf(device_method_and_name, "dvd:%s", *device); 
-               intf_PlstAdd( p_main->p_playlist, PLAYLIST_END, device_method_and_name );
+               intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, device_method_and_name );
                }
        break;
 
@@ -386,8 +387,8 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
             if( p_message->FindRef( "refs", &ref ) == B_OK )
             {
                 BPath path( &ref );
-                char * psz_name = strdup(path.Path());
-                intf_PlstAdd( p_main->p_playlist, PLAYLIST_END, psz_name );
+                intf_PlaylistAdd( p_main->p_playlist,
+                                  PLAYLIST_END, path.Path() );
             }
 
         }
@@ -409,8 +410,42 @@ bool InterfaceWindow::QuitRequested()
     return( false );
 }
 
+/*****************************************************************************
+ * CDMenu::CDMenu
+ *****************************************************************************/
+
+CDMenu::CDMenu(const char *name)
+       : BMenu(name)
+{
+
+}
+/*****************************************************************************
+ * CDMenu::~CDMenu
+ *****************************************************************************/
+
+
+CDMenu::~CDMenu()
+{
+
+}
+/*****************************************************************************
+ * CDMenu::AttachedToWindow
+ *****************************************************************************/
+
+void CDMenu::AttachedToWindow(void)
+{
+int32 items = CountItems();
+for(int32 i = 0; i < items; i++)
+       RemoveItem(i); 
+GetCD("/dev/disk");
+BMenu::AttachedToWindow();
+}
+
+/*****************************************************************************
+ * CDMenu::GetCD
+ *****************************************************************************/
 
-int InterfaceWindow::GetCD(const char *directory, BMenu *cd_menu)
+int CDMenu::GetCD(const char *directory)
 { 
        BDirectory dir; 
        dir.SetTo(directory); 
@@ -435,7 +470,7 @@ int InterfaceWindow::GetCD(const char *directory, BMenu *cd_menu)
                if(entry.IsDirectory()) { 
                        if(strcmp(e.name, "floppy") == 0) 
                                continue; // ignore floppy (it is not silent) 
-                       int devfd = GetCD(name, cd_menu);
+                       int devfd = GetCD(name);
                        if(devfd >= 0)
                                {
                                return devfd;
@@ -443,7 +478,7 @@ int InterfaceWindow::GetCD(const char *directory, BMenu *cd_menu)
                } 
                else { 
                        int devfd; 
-                       device_geometry g; 
+                       device_geometry g;
                        status_t m;
 
                        if(strcmp(e.name, "raw") != 0) 
@@ -464,7 +499,7 @@ int InterfaceWindow::GetCD(const char *directory, BMenu *cd_menu)
                                                        msg->AddString("device", name);
                                                        BMenuItem *menu_item;
                                                        menu_item = new BMenuItem(name, msg);
-                                                       cd_menu->AddItem(menu_item);
+                                                       AddItem(menu_item);
                                                        continue;
                                                        }
                                }