kde.cpp
上传用户:riyaled888
上传日期:2009-03-27
资源大小:7338k
文件大小:5k
源码类别:

多媒体

开发平台:

MultiPlatform

  1. /*****************************************************************************
  2.  * kde.cpp : KDE plugin for vlc
  3.  *****************************************************************************
  4.  * Copyright (C) 2001 VideoLAN
  5.  * $Id: kde.cpp 6961 2004-03-05 17:34:23Z sam $
  6.  *
  7.  * Authors: Andres Krapf <dae@chez.com> Sun Mar 25 2001
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  22.  *****************************************************************************/
  23. #include "common.h"
  24. #include "interface.h"
  25. #include <iostream>
  26. #include <kaction.h>
  27. #include <kapp.h>
  28. #include <kaboutdata.h>
  29. #include <kcmdlineargs.h>
  30. #include <klocale.h>
  31. #include <kmainwindow.h>
  32. #include <kstdaction.h>
  33. #include <qwidget.h>
  34. /*****************************************************************************
  35.  * The local class and prototypes
  36.  *****************************************************************************/
  37. class KInterface;
  38. class KAboutData;
  39. static int open( vlc_object_t * p_this );
  40. static void close( vlc_object_t * p_this );
  41. static void run(intf_thread_t *p_intf);
  42. /*****************************************************************************
  43.  * Module descriptor
  44.  *****************************************************************************/
  45. vlc_module_begin();
  46.     /* int i = getenv( "DISPLAY" ) == NULL ? 8 : 85; */
  47.     set_description( _("KDE interface") );
  48.     add_file( "kde-uirc", DATA_PATH "/ui.rc", NULL, N_( "path to ui.rc file" ), NULL, VLC_TRUE );
  49.     set_capability( "interface", 0 ); /* 0 used to be i, disabled because kvlc not maintained */
  50.     set_program( "kvlc" );
  51.     set_callbacks( open, close );
  52. vlc_module_end();
  53. /*****************************************************************************
  54.  * KThread::open: initialize and create window
  55.  *****************************************************************************/
  56. static int open(vlc_object_t *p_this)
  57. {
  58.     intf_thread_t *p_intf = (intf_thread_t *)p_this;
  59.     /* Allocate instance and initialize some members */
  60.     p_intf->p_sys = (intf_sys_t *)malloc( sizeof( intf_sys_t ) );
  61.     if( p_intf->p_sys == NULL )
  62.     {
  63.         msg_Err( p_intf, "out of memory" );
  64.         return( 1 );
  65.     }
  66.     p_intf->pf_run = run;
  67.     return ( 0 );
  68. }
  69. /*****************************************************************************
  70.  * KThread::close: destroy interface window
  71.  *****************************************************************************/
  72. static void close(vlc_object_t *p_this)
  73. {
  74.     intf_thread_t *p_intf = (intf_thread_t *)p_this;
  75.     if( p_intf->p_sys->p_input )
  76.     {
  77.         vlc_object_release( p_intf->p_sys->p_input );
  78.     }
  79.     delete p_intf->p_sys->p_app;
  80.     delete p_intf->p_sys->p_about;
  81.     msg_Unsubscribe(p_intf, p_intf->p_sys->p_msg);
  82.     free( p_intf->p_sys );
  83. }
  84. /*****************************************************************************
  85.  * KThread::run: KDE thread
  86.  *****************************************************************************
  87.  * This part of the interface is in a separate thread so that we can call
  88.  * exec() from within it without annoying the rest of the program.
  89.  *****************************************************************************/
  90. void run(intf_thread_t *p_intf)
  91. {
  92.     p_intf->p_sys->p_about =
  93.       new KAboutData( "kvlc", I18N_NOOP("Kvlc"), VERSION,
  94.          _("This is the VLC media player, a DVD, MPEG and DivX player. It can "
  95.            "play MPEG and MPEG2 files from a file or from a network source."),
  96.          KAboutData::License_GPL,
  97.          _("(c) 1996-2004 the VideoLAN team"),
  98.          0, 0, "");
  99.     p_intf->p_sys->p_about->addAuthor( "the VideoLAN team", 0,
  100.                                        "<videolan@videolan.org>" );
  101.     int argc = 5;
  102.     char *argv[] = { "vlc", "--icon", DATA_PATH "/kvlc32x32.png", "--miniicon", DATA_PATH "/kvlc16x16.png" };
  103.     KCmdLineArgs::init( argc, argv, p_intf->p_sys->p_about );
  104.     /* Subscribe to message queue */
  105.     p_intf->p_sys->p_msg = msg_Subscribe( p_intf );
  106.     p_intf->p_sys->p_app = new KApplication();
  107.     p_intf->p_sys->p_window = new KInterface(p_intf);
  108.     p_intf->p_sys->p_window->setCaption( VOUT_TITLE " (KDE interface)" );
  109.     p_intf->p_sys->p_input = NULL;
  110.     p_intf->p_sys->p_window->show();
  111.     p_intf->p_sys->p_app->exec();
  112. }