dialogs_provider.hpp
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:6k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * dialogs_provider.hpp : Dialogs provider
  3.  ****************************************************************************
  4.  * Copyright (C) 2006-2008 the VideoLAN team
  5.  * $Id: 105697cb5b247a6932ee84dc77746c0d0119e283 $
  6.  *
  7.  * Authors: Clément Stenac <zorglub@videolan.org>
  8.  *          Jean-Baptiste Kempf <jb@videolan.org>
  9.  *
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License as published by
  12.  * the Free Software Foundation; either version 2 of the License, or
  13.  * (at your option) any later version.
  14.  *
  15.  * This program is distributed in the hope that it will be useful,
  16.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  * GNU General Public License for more details.
  19.  *
  20.  * You should have received a copy of the GNU General Public License
  21.  * along with this program; if not, write to the Free Software
  22.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  23.  *****************************************************************************/
  24. #ifndef QVLC_DIALOGS_PROVIDER_H_
  25. #define QVLC_DIALOGS_PROVIDER_H_
  26. #ifdef HAVE_CONFIG_H
  27. # include "config.h"
  28. #endif
  29. #include <assert.h>
  30. #include "qt4.hpp"
  31. #include <QObject>
  32. #define ADD_FILTER_MEDIA( string )     
  33.     string += qtr( "Media Files" );    
  34.     string += " ( ";                   
  35.     string += EXTENSIONS_MEDIA;        
  36.     string += ");;";
  37. #define ADD_FILTER_VIDEO( string )     
  38.     string += qtr( "Video Files" );    
  39.     string += " ( ";                   
  40.     string += EXTENSIONS_VIDEO;        
  41.     string += ");;";
  42. #define ADD_FILTER_AUDIO( string )     
  43.     string += qtr( "Audio Files" );    
  44.     string += " ( ";                   
  45.     string += EXTENSIONS_AUDIO;        
  46.     string += ");;";
  47. #define ADD_FILTER_PLAYLIST( string )  
  48.     string += qtr( "Playlist Files" ); 
  49.     string += " ( ";                   
  50.     string += EXTENSIONS_PLAYLIST;     
  51.     string += ");;";
  52. #define ADD_FILTER_SUBTITLE( string )  
  53.     string += qtr( "Subtitles Files" );
  54.     string += " ( ";                   
  55.     string += EXTENSIONS_SUBTITLE;     
  56.     string += ");;";
  57. #define ADD_FILTER_ALL( string )       
  58.     string += qtr( "All Files" );      
  59.     string += " (*)";
  60. enum {
  61.     EXT_FILTER_MEDIA     =  0x01,
  62.     EXT_FILTER_VIDEO     =  0x02,
  63.     EXT_FILTER_AUDIO     =  0x04,
  64.     EXT_FILTER_PLAYLIST  =  0x08,
  65.     EXT_FILTER_SUBTITLE  =  0x10,
  66. };
  67. enum {
  68.     DialogEvent_Type = QEvent::User + DialogEventType + 1,
  69.     //PLUndockEvent_Type = QEvent::User + DialogEventType + 2;
  70.     //PLDockEvent_Type = QEvent::User + DialogEventType + 3;
  71.     SetVideoOnTopEvent_Type = QEvent::User + DialogEventType + 4,
  72. };
  73. class QEvent;
  74. class QSignalMapper;
  75. class QVLCMenu;
  76. #include <QStringList>
  77. class DialogsProvider : public QObject
  78. {
  79.     Q_OBJECT;
  80.     friend class QVLCMenu;
  81. public:
  82.     static DialogsProvider *getInstance()
  83.     {
  84.         assert( instance );
  85.         return instance;
  86.     }
  87.     static DialogsProvider *getInstance( intf_thread_t *p_intf )
  88.     {
  89.         if( !instance )
  90.             instance = new DialogsProvider( p_intf );
  91.         return instance;
  92.     }
  93.     static void killInstance()
  94.     {
  95.         delete instance;
  96.         instance = NULL;
  97.     }
  98.     static bool isAlive()
  99.     {
  100.         return ( instance != NULL );
  101.     }
  102.     QStringList showSimpleOpen( QString help = QString(),
  103.                                 int filters = EXT_FILTER_MEDIA |
  104.                                 EXT_FILTER_VIDEO | EXT_FILTER_AUDIO |
  105.                                 EXT_FILTER_PLAYLIST,
  106.                                 QString path = QString() );
  107.     bool isDying() { return b_isDying; }
  108. protected:
  109.     QSignalMapper *menusMapper;
  110.     QSignalMapper *menusUpdateMapper;
  111.     QSignalMapper *SDMapper;
  112.     void customEvent( QEvent *);
  113. private:
  114.     DialogsProvider( intf_thread_t *);
  115.     virtual ~DialogsProvider();
  116.     static DialogsProvider *instance;
  117.     intf_thread_t *p_intf;
  118.     bool b_isDying;
  119.     void openDialog( int );
  120.     void addFromSimple( bool, bool );
  121. public slots:
  122.     void playMRL( const QString & );
  123.     void playlistDialog();
  124.     void bookmarksDialog();
  125.     void mediaInfoDialog();
  126.     void mediaCodecDialog();
  127.     void prefsDialog();
  128.     void extendedDialog();
  129.     void synchroDialog();
  130.     void messagesDialog();
  131. #ifdef ENABLE_VLM
  132.     void vlmDialog();
  133. #endif
  134.     void helpDialog();
  135. #ifdef UPDATE_CHECK
  136.     void updateDialog();
  137. #endif
  138.     void aboutDialog();
  139.     void gotoTimeDialog();
  140.     void podcastConfigureDialog();
  141.     void toolbarDialog();
  142.     void pluginDialog();
  143.     void openFileGenericDialog( intf_dialog_args_t * );
  144.     void simpleOpenDialog();
  145.     void simplePLAppendDialog();
  146.     void simpleMLAppendDialog();
  147.     void openDialog();
  148.     void openDiscDialog();
  149.     void openFileDialog();
  150.     void openUrlDialog();
  151.     void openNetDialog();
  152.     void openCaptureDialog();
  153.     void PLAppendDialog();
  154.     void MLAppendDialog();
  155.     void PLOpenDir();
  156.     void PLAppendDir();
  157.     void MLAppendDir();
  158.     void streamingDialog( QWidget *parent, QString mrl, bool b_stream = true,
  159.                           QStringList options = QStringList("") );
  160.     void openAndStreamingDialogs();
  161.     void openAndTranscodingDialogs();
  162.     void openAPlaylist();
  163.     void saveAPlaylist();
  164.     void loadSubtitlesFile();
  165.     void quit();
  166. private slots:
  167.     void menuAction( QObject *);
  168.     void menuUpdateAction( QObject * );
  169.     void SDMenuAction( QString );
  170. signals:
  171.     void  toolBarConfUpdated();
  172. };
  173. class DialogEvent : public QEvent
  174. {
  175. public:
  176.     DialogEvent( int _i_dialog, int _i_arg, intf_dialog_args_t *_p_arg ) :
  177.                  QEvent( (QEvent::Type)(DialogEvent_Type) )
  178.     {
  179.         i_dialog = _i_dialog;
  180.         i_arg = _i_arg;
  181.         p_arg = _p_arg;
  182.     };
  183.     virtual ~DialogEvent() { };
  184.     int i_arg, i_dialog;
  185.     intf_dialog_args_t *p_arg;
  186. };
  187. #endif