]> git.sesse.net Git - vlc/blobdiff - plugins/beos/intf_beos.cpp
* Ported Glide and MGA plugins to the new module API. MGA never worked,
[vlc] / plugins / beos / intf_beos.cpp
index fb955e947d17cdf64998e12cd795d9f2a8d2699a..1ff3d8b466e5d03441f578d11df6fb11c47952bd 100644 (file)
@@ -2,7 +2,7 @@
  * intf_beos.cpp: beos interface
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: intf_beos.cpp,v 1.7 2001/02/17 08:48:56 sam Exp $
+ * $Id: intf_beos.cpp,v 1.10 2001/02/20 07:49:12 sam Exp $
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -22,6 +22,9 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  *****************************************************************************/
 
+#define MODULE_NAME beos
+#include "modules_inner.h"
+
 /*****************************************************************************
  * Preamble
  *****************************************************************************/
 
 #include <stdio.h>
 #include <stdlib.h>                                      /* malloc(), free() */
+
 #include <kernel/OS.h>
+#include <storage/Path.h>
 #include <View.h>
 #include <Application.h>
 #include <Message.h>
+#include <NodeInfo.h>
 #include <Locker.h>
 #include <DirectWindow.h>
+
 #include <malloc.h>
 #include <string.h>
 
@@ -48,6 +55,7 @@ extern "C"
 #include "modules.h"
 
 #include "intf_msg.h"
+#include "intf_plst.h"
 #include "interface.h"
 
 #include "main.h"
@@ -68,10 +76,10 @@ typedef struct intf_sys_s
  * InterfaceWindow
  *****************************************************************************/
  
-InterfaceWindow::InterfaceWindow( BRect frame, const char *name , intf_thread_t  *p_intf )
-    : BWindow(frame, name, B_TITLED_WINDOW, B_NOT_RESIZABLE|B_NOT_ZOOMABLE)
+InterfaceWindow::InterfaceWindow( BRect frame, const char *name , intf_thread_t  *p_interface )
+    : BWindow(frame, name, B_TITLED_WINDOW, B_NOT_ZOOMABLE)
 {
-    p_interface = p_intf;
+    p_intf = p_interface;
     SetName( "interface" );
     
     BView * p_view;
@@ -98,9 +106,24 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
     {
     case B_KEY_DOWN:
         p_message->FindString( "bytes", (const char **)&psz_key );
-        p_interface->p_sys->i_key = psz_key[0];
+        p_intf->p_sys->i_key = psz_key[0];
         break;
         
+    case B_SIMPLE_DATA:
+        {
+            entry_ref ref;
+            if( p_message->FindRef( "refs", &ref ) == B_OK )
+            {
+                BPath path( &ref );
+                char * psz_name = strdup(path.Path());
+                intf_WarnMsg( 1, "intf: dropped text/uri-list data `%s'",
+                              psz_name );
+                intf_PlstAdd( p_main->p_playlist, PLAYLIST_END, psz_name );
+            }
+
+        }
+        break;
+
     default:
         BWindow::MessageReceived( p_message );
         break;
@@ -113,10 +136,11 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
 
 bool InterfaceWindow::QuitRequested()
 {
+    p_intf->b_die = 1;
+
     return( false );
 }
 
-
 extern "C"
 {
 
@@ -132,7 +156,7 @@ static void intf_Run       ( intf_thread_t *p_intf );
  * Functions exported as capabilities. They are declared as static so that
  * we don't pollute the namespace too much.
  *****************************************************************************/
-void intf_getfunctions( function_list_t * p_function_list )
+void _M( intf_getfunctions )( function_list_t * p_function_list )
 {
     p_function_list->pf_probe = intf_Probe;
     p_function_list->functions.intf.pf_open  = intf_Open;
@@ -153,13 +177,13 @@ static int intf_Probe( probedata_t *p_data )
         return( 999 );
     }
 
-    return( 1 );
+    return( 100 );
 }
 
 /*****************************************************************************
- * intf_Create: initialize dummy interface
+ * intf_Open: initialize dummy interface
  *****************************************************************************/
-static int intf_Create( intf_thread_t *p_intf )
+static int intf_Open( intf_thread_t *p_intf )
 {
     /* Allocate instance and initialize some members */
     p_intf->p_sys = (intf_sys_t*) malloc( sizeof( intf_sys_t ) );
@@ -172,8 +196,8 @@ static int intf_Create( intf_thread_t *p_intf )
     
     /* Create the interface window */
     p_intf->p_sys->p_window =
-        new InterfaceWindow( BRect( 100, 100, 200, 200 ),
-                             "Interface :)", p_intf );
+        new InterfaceWindow( BRect( 50, 50, 400, 100 ),
+                             VOUT_TITLE " (BeOS interface)", p_intf );
     if( p_intf->p_sys->p_window == 0 )
     {
         free( p_intf->p_sys );
@@ -188,9 +212,9 @@ static int intf_Create( intf_thread_t *p_intf )
 }
 
 /*****************************************************************************
- * intf_Destroy: destroy dummy interface
+ * intf_Close: destroy dummy interface
  *****************************************************************************/
-static void intf_Destroy( intf_thread_t *p_intf )
+static void intf_Close( intf_thread_t *p_intf )
 {
     /* Destroy the interface window */
     p_intf->p_sys->p_window->Lock();