1 /*****************************************************************************
2 * open.hpp : Panels for the open dialogs
3 ****************************************************************************
4 * Copyright (C) 2006-2007 the VideoLAN team
5 * Copyright (C) 2007 Société des arts technologiques
6 * Copyright (C) 2007 Savoir-faire Linux
9 * Authors: Clément Stenac <zorglub@videolan.org>
10 * Jean-Baptiste Kempf <jb@videolan.org>
11 * Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>
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.
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.
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 *****************************************************************************/
28 #ifndef _OPENPANELS_H_
29 #define _OPENPANELS_H_
35 #include <vlc_common.h>
37 #include <QFileDialog>
39 #include "ui/open_file.h"
40 #include "ui/open_disk.h"
41 #include "ui/open_net.h"
42 #include "ui/open_capture.h"
44 #include "components/preferences_widgets.hpp"
48 #define setSpinBoxFreq( spinbox ){ spinbox->setRange ( 0, INT_MAX ); \
49 spinbox->setAccelerated( true ); }
77 static const char *psz_devModule[] = { "v4l", "v4l2", "pvr", "dvb", "bda",
78 "dshow", "screen", "jack" };
84 class QStringListModel;
86 class OpenPanel: public QWidget
90 OpenPanel( QWidget *p, intf_thread_t *_p_intf ) : QWidget( p )
94 virtual ~OpenPanel() {};
95 virtual void clear() = 0;
97 intf_thread_t *p_intf;
99 virtual void updateMRL() = 0;
101 void mrlUpdated( QString );
102 void methodChanged( QString method );
105 class FileOpenBox: public QFileDialog
109 FileOpenBox( QWidget *parent, const QString &caption,
110 const QString &directory, const QString &filter ):
111 QFileDialog( parent, caption, directory, filter ) {}
117 class FileOpenPanel: public OpenPanel
121 FileOpenPanel( QWidget *, intf_thread_t * );
122 virtual ~FileOpenPanel();
123 virtual void clear() ;
124 virtual void accept() ;
127 QStringList browse( QString );
128 FileOpenBox *dialogBox;
129 QLineEdit *lineFileEdit;
130 QStringList fileCompleteList ;
132 virtual void updateMRL();
134 void browseFileSub();
135 void toggleSubtitleFrame();
138 class NetOpenPanel: public OpenPanel
142 NetOpenPanel( QWidget *, intf_thread_t * );
143 virtual ~NetOpenPanel();
144 virtual void clear() ;
147 QStringListModel *mrlList;
149 virtual void updateMRL();
151 void updateProtocol( int );
152 void updateCompleter();
155 class DiscOpenPanel: public OpenPanel
159 DiscOpenPanel( QWidget *, intf_thread_t * );
160 virtual ~DiscOpenPanel();
161 virtual void clear() ;
162 virtual void accept() ;
165 char *psz_dvddiscpath, *psz_vcddiscpath, *psz_cddadiscpath;
166 bool b_firstdvd, b_firstvcd, b_firstcdda;
168 virtual void updateMRL() ;
171 void updateButtons() ;
176 class CaptureOpenPanel: public OpenPanel
180 CaptureOpenPanel( QWidget *, intf_thread_t * );
181 virtual ~CaptureOpenPanel();
182 virtual void clear() ;
190 QRadioButton *bdas, *bdat, *bdac, *bdaa;
191 QSpinBox *bdaCard, *bdaFreq, *bdaSrate;
192 QLabel *bdaSrateLabel, *bdaBandLabel;
193 QComboBox *bdaBandBox;
194 StringListConfigControl *vdevDshowW, *adevDshowW;
195 QLineEdit *dshowVSizeLine;
197 QRadioButton *dvbs, *dvbt, *dvbc;
198 QSpinBox *v4lFreq, *pvrFreq, *pvrBitr;
199 QLineEdit *v4lVideoDevice, *v4lAudioDevice;
200 QLineEdit *v4l2VideoDevice, *v4l2AudioDevice;
201 QLineEdit *pvrDevice, *pvrRadioDevice;
202 QComboBox *v4lNormBox, *v4l2StdBox, *pvrNormBox;
203 QSpinBox *dvbCard, *dvbFreq, *dvbSrate;
204 QSpinBox *jackChannels, *jackCaching;
205 QCheckBox *jackPace, *jackConnect;
206 QLineEdit *jackPortsSelected;
211 virtual void updateMRL();
214 void updateButtons();
215 void advancedDialog();