/*****************************************************************************
* preferences_widgets.hpp : Widgets for preferences panels
****************************************************************************
- * Copyright (C) 2006 the VideoLAN team
+ * Copyright (C) 2006-2007 the VideoLAN team
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Antoine Cellerier <dionoea@videolan.org>
+ * Jean-Baptiste Kempf <jb@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
-#ifndef _INFOPANELS_H_
-#define _INFOPANELS_H_
-#include <vlc/vlc.h>
+#ifndef _PREFERENCESWIDGETS_H_
+#define _PREFERENCESWIDGETS_H_
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc_common.h>
+
+#include "qt4.hpp"
+#include <assert.h>
+
#include <QWidget>
-#include <QTreeWidget>
+
+#include <QCheckBox>
+#include <QComboBox>
#include <QLineEdit>
+#include <QTreeWidget>
#include <QSpinBox>
+#include <QLabel>
#include <QDoubleSpinBox>
-#include <QComboBox>
-#include <QCheckBox>
+#include <QPushButton>
#include <QVector>
-#include "ui/input_stats.h"
-#include "qt4.hpp"
-#include <assert.h>
+#include <QDialog>
+
+
+class QFile;
+class QTreeWidget;
+class QTreeWidgetItem;
+class QGroupBox;
+class QGridLayout;
+class QDialogButtonBox;
+class QVBoxLayout;
class ConfigControl : public QObject
{
- Q_OBJECT;
+ Q_OBJECT
public:
ConfigControl( vlc_object_t *_p_this, module_config_t *_p_conf,
QWidget *p ) : p_this( _p_this ), p_item( _p_conf )
}
virtual ~ConfigControl() {};
virtual int getType() = 0;
- char * getName() { return p_item->psz_name; }
+ const char * getName() { return p_item->psz_name; }
QWidget *getWidget() { assert( widget ); return widget; }
bool isAdvanced() { return p_item->b_advanced; }
virtual void hide() { getWidget()->hide(); };
QString _name;
QWidget *widget;
bool _advanced;
+#if 0
+/* You shouldn't use that now..*/
signals:
void Updated();
+#endif
};
/*******************************************************
*******************************************************/
class VIntConfigControl : public ConfigControl
{
+Q_OBJECT
public:
VIntConfigControl( vlc_object_t *a, module_config_t *b, QWidget *c ) :
ConfigControl(a,b,c) {};
ConfigControl(a,b) {};
virtual ~VIntConfigControl() {};
virtual int getValue() = 0;
- virtual int getType() { return 1; }
+ virtual int getType() { return CONFIG_ITEM_INTEGER; }
};
class IntegerConfigControl : public VIntConfigControl
{
+Q_OBJECT
public:
IntegerConfigControl( vlc_object_t *, module_config_t *, QWidget *,
QGridLayout *, int& );
IntegerConfigControl( vlc_object_t *, module_config_t *,
QLabel*, QSpinBox* );
+ IntegerConfigControl( vlc_object_t *, module_config_t *,
+ QLabel*, QSlider* );
virtual ~IntegerConfigControl() {};
virtual int getValue();
- virtual void show() { spin->show(); label->show(); }
- virtual void hide() { spin->hide(); label->hide(); }
+ virtual void show() { spin->show(); if( label ) label->show(); }
+ virtual void hide() { spin->hide(); if( label ) label->hide(); }
protected:
QSpinBox *spin;
-
private:
QLabel *label;
void finish();
void finish();
};
+class IntegerRangeSliderConfigControl : public VIntConfigControl
+{
+public:
+ IntegerRangeSliderConfigControl( vlc_object_t *, module_config_t *,
+ QLabel *, QSlider * );
+ virtual ~IntegerRangeSliderConfigControl() {};
+ virtual int getValue();
+protected:
+ QSlider *slider;
+private:
+ QLabel *label;
+ void finish();
+};
+
class IntegerListConfigControl : public VIntConfigControl
{
+Q_OBJECT
public:
IntegerListConfigControl( vlc_object_t *, module_config_t *, QWidget *,
bool, QGridLayout*, int& );
QComboBox*, bool );
virtual ~IntegerListConfigControl() {};
virtual int getValue();
- virtual void hide() { combo->hide(); label->hide(); }
- virtual void show() { combo->show(); label->show(); }
+ virtual void hide() { combo->hide(); if( label ) label->hide(); }
+ virtual void show() { combo->show(); if( label ) label->show(); }
private:
- void finish( bool );
+ void finish(module_config_t *, bool );
QLabel *label;
QComboBox *combo;
+private slots:
+ void actionRequested( int );
+
};
class BoolConfigControl : public VIntConfigControl
virtual int getValue();
virtual void show() { checkbox->show(); }
virtual void hide() { checkbox->hide(); }
+ virtual int getType() { return CONFIG_ITEM_BOOL; }
private:
QCheckBox *checkbox;
void finish();
*******************************************************/
class VFloatConfigControl : public ConfigControl
{
+ Q_OBJECT
public:
VFloatConfigControl( vlc_object_t *a, module_config_t *b, QWidget *c ) :
ConfigControl(a,b,c) {};
ConfigControl(a,b) {};
virtual ~VFloatConfigControl() {};
virtual float getValue() = 0;
- virtual int getType() { return 2; }
+ virtual int getType() { return CONFIG_ITEM_FLOAT; }
};
class FloatConfigControl : public VFloatConfigControl
{
+ Q_OBJECT
public:
FloatConfigControl( vlc_object_t *, module_config_t *, QWidget *,
QGridLayout *, int& );
QLabel*, QDoubleSpinBox* );
virtual ~FloatConfigControl() {};
virtual float getValue();
- virtual void show() { spin->show(); label->show(); }
- virtual void hide() { spin->hide(); label->hide(); }
+ virtual void show() { spin->show(); if( label ) label->show(); }
+ virtual void hide() { spin->hide(); if( label ) label->hide(); }
protected:
QDoubleSpinBox *spin;
class FloatRangeConfigControl : public FloatConfigControl
{
+ Q_OBJECT
public:
FloatRangeConfigControl( vlc_object_t *, module_config_t *, QWidget *,
QGridLayout *, int& );
*******************************************************/
class VStringConfigControl : public ConfigControl
{
+ Q_OBJECT
public:
VStringConfigControl( vlc_object_t *a, module_config_t *b, QWidget *c ) :
ConfigControl(a,b,c) {};
ConfigControl(a,b) {};
virtual ~VStringConfigControl() {};
virtual QString getValue() = 0;
- virtual int getType() { return 3; }
+ virtual int getType() { return CONFIG_ITEM_STRING; }
};
class StringConfigControl : public VStringConfigControl
{
+ Q_OBJECT
public:
StringConfigControl( vlc_object_t *, module_config_t *, QWidget *,
QGridLayout *, int&, bool pwd );
QLineEdit*, bool pwd );
virtual ~StringConfigControl() {};
virtual QString getValue() { return text->text(); };
- virtual void show() { text->show(); label->show(); }
- virtual void hide() { text->hide(); label->hide(); }
+ virtual void show() { text->show(); if( label ) label->show(); }
+ virtual void hide() { text->hide(); if( label ) label->hide(); }
private:
void finish();
QLineEdit *text;
QLabel *label;
};
+class FileConfigControl : public VStringConfigControl
+{
+ Q_OBJECT;
+public:
+ FileConfigControl( vlc_object_t *, module_config_t *, QWidget *,
+ QGridLayout *, int&, bool pwd );
+ FileConfigControl( vlc_object_t *, module_config_t *, QLabel *,
+ QLineEdit *, QPushButton *, bool pwd );
+ virtual ~FileConfigControl() {};
+ virtual QString getValue() { return text->text(); };
+ virtual void show() { text->show(); if( label ) label->show(); browse->show(); }
+ virtual void hide() { text->hide(); if( label ) label->hide(); browse->hide(); }
+public slots:
+ virtual void updateField();
+protected:
+ void finish();
+ QLineEdit *text;
+ QLabel *label;
+ QPushButton *browse;
+};
+
+class DirectoryConfigControl : public FileConfigControl
+{
+ Q_OBJECT;
+public:
+ DirectoryConfigControl( vlc_object_t *, module_config_t *, QWidget *,
+ QGridLayout *, int&, bool pwd );
+ DirectoryConfigControl( vlc_object_t *, module_config_t *, QLabel *,
+ QLineEdit *, QPushButton *, bool pwd );
+ virtual ~DirectoryConfigControl() {};
+public slots:
+ virtual void updateField();
+};
+
+#if 0
+class FontConfigControl : public FileConfigControl
+{
+ Q_OBJECT;
+public:
+ FontConfigControl( vlc_object_t *, module_config_t *, QWidget *,
+ QGridLayout *, int&, bool pwd );
+ FontConfigControl( vlc_object_t *, module_config_t *, QLabel *,
+ QLineEdit *, QPushButton *, bool pwd );
+ virtual ~FontConfigControl() {};
+public slots:
+ virtual void updateField();
+};
+#endif
+
class ModuleConfigControl : public VStringConfigControl
{
public:
QComboBox*, bool );
virtual ~ModuleConfigControl() {};
virtual QString getValue();
- virtual void hide() { combo->hide(); label->hide(); }
- virtual void show() { combo->show(); label->show(); }
+ virtual void hide() { combo->hide(); if( label ) label->hide(); }
+ virtual void show() { combo->show(); if( label ) label->show(); }
private:
void finish( bool );
QLabel *label;
QComboBox *combo;
};
+struct checkBoxListItem {
+ QCheckBox *checkBox;
+ char *psz_module;
+};
+
class ModuleListConfigControl : public VStringConfigControl
{
Q_OBJECT;
virtual void hide();
virtual void show();
public slots:
- void wakeUp_TheUserJustClickedOnSomething( int value );
+ void onUpdate( int value );
private:
void finish( bool );
- QVector<QCheckBox*> modules;
- QLabel *label;
+ QVector<checkBoxListItem*> modules;
+ QGroupBox *groupBox;
QLineEdit *text;
};
class StringListConfigControl : public VStringConfigControl
{
+ Q_OBJECT;
public:
StringListConfigControl( vlc_object_t *, module_config_t *, QWidget *,
bool, QGridLayout*, int& );
QComboBox*, bool );
virtual ~StringListConfigControl() {};
virtual QString getValue();
- virtual void hide() { combo->hide(); label->hide(); }
- virtual void show() { combo->show(); label->show(); }
+ virtual void hide() { combo->hide(); if( label ) label->hide(); }
+ virtual void show() { combo->show(); if( label ) label->show(); }
+ QComboBox *combo;
private:
- void finish( bool );
+ void finish(module_config_t *, bool );
QLabel *label;
- QComboBox *combo;
+private slots:
+ void actionRequested( int );
+
};
+
+void setfillVLCConfigCombo(const char *configname, intf_thread_t *p_intf,
+ QComboBox *combo, QWidget *parent = 0 );
+
#if 0
struct ModuleCheckBox {
QCheckBox *checkbox;
/**********************************************************************
* Key selector widget
**********************************************************************/
+class KeyShortcutEdit: public QLineEdit
+{
+ Q_OBJECT
+public:
+ void setValue( int _value ){ value = _value; }
+ int getValue() const { return value; }
+public slots:
+ virtual void clear(void) { value = 0; QLineEdit::clear(); }
+private:
+ int value;
+ virtual void mousePressEvent( QMouseEvent *event );
+signals:
+ void pressed();
+};
+
class KeySelectorControl : public ConfigControl
{
Q_OBJECT;
public:
KeySelectorControl( vlc_object_t *, module_config_t *, QWidget *,
QGridLayout*, int& );
- virtual int getType() { return 4; }
+ virtual int getType() { return CONFIG_ITEM_KEY; }
virtual ~KeySelectorControl() {};
- virtual void hide() { table->hide(); label->hide(); }
- virtual void show() { table->show(); label->show(); }
+ virtual void hide() { table->hide(); if( label ) label->hide(); }
+ virtual void show() { table->show(); if( label ) label->show(); }
void doApply();
private:
void finish();
QLabel *label;
QTreeWidget *table;
+ KeyShortcutEdit *shortcutValue;
+ QList<module_config_t *> values;
+private slots:
+ void setTheKey();
+ void selectKey( QTreeWidgetItem * = NULL );
+ void select1Key();
};
+class KeyInputDialog : public QDialog
+{
+public:
+ KeyInputDialog( QTreeWidget *, QString, QWidget * );
+ int keyValue;
+ bool conflicts;
+private:
+ QTreeWidget *table;
+ void checkForConflicts( int i_vlckey );
+ void keyPressEvent( QKeyEvent *);
+ void wheelEvent( QWheelEvent *);
+ QLabel *selected;
+ QVBoxLayout *vLayout;
+ QDialogButtonBox *buttonBox;
+};
#endif