9f3d51e8954c1c9251159cc847b53968cf0a3e5d
[vlc.git] / modules / gui / qt4 / components / open.hpp
1 /*****************************************************************************
2  * open.hpp : Panels for the open dialogs
3  ****************************************************************************
4  * Copyright (C) 2006-2007 the VideoLAN team
5  * $Id$
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
25 #ifndef _OPENPANELS_H_
26 #define _OPENPANELS_H_
27
28 #include <vlc/vlc.h>
29
30 #include <QFileDialog>
31
32 #include "ui/open_file.h"
33 #include "ui/open_disk.h"
34 #include "ui/open_net.h"
35 #include "ui/open_capture.h"
36
37 #ifdef HAVE_LIMITS_H
38 #   include <limits.h>
39 #endif
40
41 #define setSpinBoxFreq( spinbox ){ spinbox->setRange ( 0, INT_MAX ); \
42     spinbox->setAccelerated( true ); }
43
44 #define V4L_DEVICE         0x0
45 #define PVR_DEVICE         0x1
46 #define DVB_DEVICE         0x2
47 #define BDA_DEVICE         0x4
48 #define DSHOW_DEVICE       0x8
49
50 class QWidget;
51 class QLineEdit;
52 class QString;
53
54 class OpenPanel: public QWidget
55 {
56     Q_OBJECT;
57 public:
58     OpenPanel( QWidget *p, intf_thread_t *_p_intf ) : QWidget( p )
59     {
60         p_intf = _p_intf;
61     }
62     virtual ~OpenPanel() {};
63     virtual void clear() = 0;
64 protected:
65     intf_thread_t *p_intf;
66 public slots:
67     virtual void updateMRL() = 0;
68 signals:
69     void mrlUpdated( QString );
70     void methodChanged( QString method );
71 };
72
73 class FileOpenBox: public QFileDialog
74 {
75     Q_OBJECT;
76 public:
77     FileOpenBox( QWidget *parent, const QString &caption,
78         const QString &directory, const QString &filter ):
79         QFileDialog( parent, caption, directory, filter ) {}
80 public slots:
81     void accept();
82 };
83
84 class FileOpenPanel: public OpenPanel
85 {
86     Q_OBJECT;
87 public:
88     FileOpenPanel( QWidget *, intf_thread_t * );
89     virtual ~FileOpenPanel();
90     virtual void clear() ;
91     virtual void accept() ;
92 private:
93     Ui::OpenFile ui;
94     QStringList browse( QString );
95     FileOpenBox *dialogBox;
96     QLineEdit *lineFileEdit;
97 public slots:
98     virtual void updateMRL();
99 private slots:
100     void browseFile();
101     void browseFileSub();
102     void toggleSubtitleFrame();
103 };
104
105 class NetOpenPanel: public OpenPanel
106 {
107     Q_OBJECT;
108 public:
109     NetOpenPanel( QWidget *, intf_thread_t * );
110     virtual ~NetOpenPanel();
111     virtual void clear() ;
112 private:
113     Ui::OpenNetwork ui;
114 public slots:
115     virtual void updateMRL();
116 private slots:
117     void updateProtocol(int);
118     void updateAddress();
119 };
120
121 class DiscOpenPanel: public OpenPanel
122 {
123     Q_OBJECT;
124 public:
125     DiscOpenPanel( QWidget *, intf_thread_t * );
126     virtual ~DiscOpenPanel();
127     virtual void clear() ;
128 private:
129     Ui::OpenDisk ui;
130 public slots:
131     virtual void updateMRL() ;
132     virtual void updateButtons() ;
133 };
134
135
136 class CaptureOpenPanel: public OpenPanel
137 {
138     Q_OBJECT;
139 public:
140     CaptureOpenPanel( QWidget *, intf_thread_t * );
141     virtual ~CaptureOpenPanel();
142     virtual void clear() ;
143 private:
144     Ui::OpenCapture ui;
145     QRadioButton *dvbs, *dvbt, *dvbc;
146     QRadioButton *bdas, *bdat, *bdac;
147     QSpinBox  *v4lFreq, *pvrFreq, *pvrBitr ;
148     QLineEdit *v4lVideoDevice, *v4lAudioDevice;
149     QLineEdit *pvrDevice, *pvrRadioDevice;
150     QComboBox *v4lNormBox, *pvrNormBox, *bdaBandBox;
151     QSpinBox *dvbCard, *dvbFreq, *dvbSrate;
152     QSpinBox *bdaCard, *bdaFreq, *bdaSrate;
153
154     QLabel *bdaSrateLabel, *bdaBandLabel;
155
156 public slots:
157     virtual void updateMRL();
158 private slots:
159     void updateButtons();
160 };
161
162 #endif