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

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * open.hpp : Panels for the open dialogs
  3.  ****************************************************************************
  4.  * Copyright (C) 2006-2009 the VideoLAN team
  5.  * Copyright (C) 2007 Société des arts technologiques
  6.  * Copyright (C) 2007 Savoir-faire Linux
  7.  * $Id: e7a2a36ba447705aebd53c8c0527a2bc63dad40b $
  8.  *
  9.  * Authors: Clément Stenac <zorglub@videolan.org>
  10.  *          Jean-Baptiste Kempf <jb@videolan.org>
  11.  *          Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>
  12.  *
  13.  * This program is free software; you can redistribute it and/or modify
  14.  * it under the terms of the GNU General Public License as published by
  15.  * the Free Software Foundation; either version 2 of the License, or
  16.  * (at your option) any later version.
  17.  *
  18.  * This program is distributed in the hope that it will be useful,
  19.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  20.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  21.  * GNU General Public License for more details.
  22.  *
  23.  * You should have received a copy of the GNU General Public License
  24.  * along with this program; if not, write to the Free Software
  25.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  26.  *****************************************************************************/
  27. #ifndef _OPENPANELS_H_
  28. #define _OPENPANELS_H_
  29. #ifdef HAVE_CONFIG_H
  30. # include "config.h"
  31. #endif
  32. #include "components/preferences_widgets.hpp"
  33. #include "ui/open_file.h"
  34. #include "ui/open_disk.h"
  35. #include "ui/open_net.h"
  36. #include "ui/open_capture.h"
  37. #include <QFileDialog>
  38. #include <limits.h>
  39. #define setSpinBoxFreq( spinbox ){ spinbox->setRange ( 0, INT_MAX ); 
  40.     spinbox->setAccelerated( true ); }
  41. enum
  42. {
  43.     NO_PROTO,
  44.     HTTP_PROTO,
  45.     HTTPS_PROTO,
  46.     MMS_PROTO,
  47.     FTP_PROTO,
  48.     RTSP_PROTO,
  49.     RTP_PROTO,
  50.     UDP_PROTO,
  51.     RTMP_PROTO
  52. };
  53. enum
  54. {
  55.     V4L_DEVICE,
  56.     V4L2_DEVICE,
  57.     PVR_DEVICE,
  58.     DVB_DEVICE,
  59.     BDA_DEVICE,
  60.     DSHOW_DEVICE,
  61.     SCREEN_DEVICE,
  62.     JACK_DEVICE
  63. };
  64. class QWidget;
  65. class QLineEdit;
  66. class QString;
  67. class QStringListModel;
  68. class OpenPanel: public QWidget
  69. {
  70.     Q_OBJECT;
  71. public:
  72.     OpenPanel( QWidget *p, intf_thread_t *_p_intf ) : QWidget( p )
  73.     {
  74.         p_intf = _p_intf;
  75.     }
  76.     virtual ~OpenPanel() {};
  77.     virtual void clear() = 0;
  78. protected:
  79.     intf_thread_t *p_intf;
  80. public slots:
  81.     virtual void updateMRL() = 0;
  82. signals:
  83.     void mrlUpdated( const QStringList&, const QString& );
  84.     void methodChanged( const QString& method );
  85. };
  86. class FileOpenBox: public QFileDialog
  87. {
  88.     Q_OBJECT;
  89. public:
  90.     FileOpenBox( QWidget *parent, const QString &caption,
  91.                  const QString &directory, const QString &filter ):
  92.                 QFileDialog( parent, caption, directory, filter ) {}
  93. public slots:
  94.     void accept(){}
  95.     void reject(){}
  96. };
  97. class FileOpenPanel: public OpenPanel
  98. {
  99.     Q_OBJECT;
  100. public:
  101.     FileOpenPanel( QWidget *, intf_thread_t * );
  102.     virtual ~FileOpenPanel();
  103.     virtual void clear() ;
  104.     virtual void accept() ;
  105. protected:
  106.     bool eventFilter(QObject *obj, QEvent *event)
  107.     {
  108.         if( event->type() == QEvent::Hide ||
  109.             event->type() == QEvent::HideToParent )
  110.         {
  111.             event->accept();
  112.             return true;
  113.         }
  114.         return false;
  115.     }
  116. private:
  117.     Ui::OpenFile ui;
  118.     FileOpenBox *dialogBox;
  119.     void BuildOldPanel();
  120. public slots:
  121.     virtual void updateMRL();
  122. private slots:
  123.     void browseFileSub();
  124.     void browseFile();
  125.     void deleteFile();
  126.     void toggleSubtitleFrame( bool );
  127. };
  128. class NetOpenPanel: public OpenPanel
  129. {
  130.     Q_OBJECT;
  131. public:
  132.     NetOpenPanel( QWidget *, intf_thread_t * );
  133.     virtual ~NetOpenPanel();
  134.     virtual void clear() ;
  135. private:
  136.     Ui::OpenNetwork ui;
  137.     QStringListModel *mrlList;
  138. public slots:
  139.     virtual void updateMRL();
  140. private slots:
  141.     void updateProtocol( int );
  142.     void updateCompleter();
  143. };
  144. class DiscOpenPanel: public OpenPanel
  145. {
  146.     Q_OBJECT;
  147. public:
  148.     DiscOpenPanel( QWidget *, intf_thread_t * );
  149.     virtual ~DiscOpenPanel();
  150.     virtual void clear() ;
  151.     virtual void accept() ;
  152. private:
  153.     Ui::OpenDisk ui;
  154.     char *psz_dvddiscpath, *psz_vcddiscpath, *psz_cddadiscpath;
  155.     bool b_firstdvd, b_firstvcd, b_firstcdda;
  156. public slots:
  157.     virtual void updateMRL() ;
  158. private slots:
  159.     void browseDevice();
  160.     void updateButtons() ;
  161.     void eject();
  162. };
  163. class CaptureOpenPanel: public OpenPanel
  164. {
  165.     Q_OBJECT;
  166. public:
  167.     CaptureOpenPanel( QWidget *, intf_thread_t * );
  168.     virtual ~CaptureOpenPanel();
  169.     virtual void clear() ;
  170. private:
  171.     Ui::OpenCapture ui;
  172.     bool isInitialized;
  173.     QString advMRL;
  174.     QDialog *adv;
  175. #ifdef WIN32
  176.     QRadioButton *bdas, *bdat, *bdac, *bdaa;
  177.     QSpinBox *bdaCard, *bdaFreq, *bdaSrate;
  178.     QLabel *bdaSrateLabel, *bdaBandLabel;
  179.     QComboBox *bdaBandBox;
  180.     StringListConfigControl *vdevDshowW, *adevDshowW;
  181.     QLineEdit *dshowVSizeLine;
  182. #else
  183.     QRadioButton *dvbs, *dvbt, *dvbc;
  184.     QLabel *dvbBandLabel, *dvbSrateLabel;
  185.     QSpinBox  *v4lFreq, *pvrFreq, *pvrBitr;
  186.     QLineEdit *v4lVideoDevice, *v4lAudioDevice;
  187.     QLineEdit *v4l2VideoDevice, *v4l2AudioDevice;
  188.     QLineEdit *pvrDevice, *pvrRadioDevice;
  189.     QComboBox *v4lNormBox, *v4l2StdBox, *pvrNormBox, *dvbBandBox;
  190.     QSpinBox *dvbCard, *dvbFreq, *dvbSrate;
  191.     QSpinBox *jackChannels, *jackCaching;
  192.     QCheckBox *jackPace, *jackConnect;
  193.     QLineEdit *jackPortsSelected;
  194. #endif
  195.     QSpinBox *screenFPS;
  196. public slots:
  197.     virtual void updateMRL();
  198.     void initialize();
  199. private slots:
  200.     void updateButtons();
  201.     void advancedDialog();
  202. };
  203. #endif