X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fcomponents%2Fpreferences_widgets.hpp;h=1b9ff8173e7ed8e97f677c275598cc63b3c28c50;hb=f437e6eb9cd9be0c004013c2593c2fed109c6daf;hp=e19cf760c439365996ed7cf1c63530f5f41e49c3;hpb=f10eac9f21c88d529de88ae1b8eeece388f3068c;p=vlc diff --git a/modules/gui/qt4/components/preferences_widgets.hpp b/modules/gui/qt4/components/preferences_widgets.hpp index e19cf760c4..1b9ff8173e 100644 --- a/modules/gui/qt4/components/preferences_widgets.hpp +++ b/modules/gui/qt4/components/preferences_widgets.hpp @@ -1,10 +1,12 @@ /***************************************************************************** * 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 + * Antoine Cellerier + * Jean-Baptiste Kempf * * 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 @@ -23,21 +25,36 @@ #ifndef _INFOPANELS_H_ #define _INFOPANELS_H_ + #include -#include -#include -#include "ui/input_stats.h" + #include "qt4.hpp" #include -class QSpinBox; -class QString; -class QComboBox; -class QCheckBox; +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +class QFile; +class QTreeWidget; +class QTreeWidgetItem; +class QGroupBox; +class QGridLayout; +class QDialogButtonBox; 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 ) @@ -50,20 +67,30 @@ public: widget = NULL; } virtual ~ConfigControl() {}; - QString getName() { return qfu( p_item->psz_name ); } + virtual int getType() = 0; + 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(); }; + virtual void show() { getWidget()->show(); }; static ConfigControl * createControl( vlc_object_t*, module_config_t*,QWidget* ); + static ConfigControl * createControl( vlc_object_t*, + module_config_t*,QWidget*, + QGridLayout *, int& ); + void doApply( intf_thread_t *); protected: vlc_object_t *p_this; module_config_t *p_item; QString _name; QWidget *widget; bool _advanced; +#if 0 +/* You shouldn't use that now..*/ signals: void Updated(); +#endif }; /******************************************************* @@ -71,65 +98,152 @@ signals: *******************************************************/ class VIntConfigControl : public ConfigControl { +Q_OBJECT public: VIntConfigControl( vlc_object_t *a, module_config_t *b, QWidget *c ) : ConfigControl(a,b,c) {}; + VIntConfigControl( vlc_object_t *a, module_config_t *b ) : + ConfigControl(a,b) {}; virtual ~VIntConfigControl() {}; virtual int getValue() = 0; + virtual int getType() { return 1; } }; -#if 0 class IntegerConfigControl : public VIntConfigControl { +Q_OBJECT public: - IntegerConfigControl( vlc_object_t *, module_config_t *, QWidget * ); - virtual ~IntegerConfigControl(); + 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(); -private: + 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(); +}; + +class IntegerRangeConfigControl : public IntegerConfigControl +{ +public: + IntegerRangeConfigControl( vlc_object_t *, module_config_t *, QWidget *, + QGridLayout *, int& ); + IntegerRangeConfigControl( vlc_object_t *, module_config_t *, + QLabel*, QSpinBox* ); +private: + 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 +{ +public: + IntegerListConfigControl( vlc_object_t *, module_config_t *, QWidget *, + bool, QGridLayout*, int& ); + IntegerListConfigControl( vlc_object_t *, module_config_t *, QLabel *, + QComboBox*, bool ); + virtual ~IntegerListConfigControl() {}; + virtual int getValue(); + 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; }; class BoolConfigControl : public VIntConfigControl { public: - IntConfigControl( vlc_object_t *, module_config_t *, QWidget * ); - virtual ~IntConfigControl(); + BoolConfigControl( vlc_object_t *, module_config_t *, QWidget *, + QGridLayout *, int& ); + BoolConfigControl( vlc_object_t *, module_config_t *, + QLabel *, QCheckBox*, bool ); + virtual ~BoolConfigControl() {}; virtual int getValue(); + virtual void show() { checkbox->show(); } + virtual void hide() { checkbox->hide(); } private: - wxCheckBox *checkbox; + QCheckBox *checkbox; + void finish(); }; -#endif /******************************************************* * Float-based controls *******************************************************/ class VFloatConfigControl : public ConfigControl { + Q_OBJECT public: VFloatConfigControl( vlc_object_t *a, module_config_t *b, QWidget *c ) : ConfigControl(a,b,c) {}; + VFloatConfigControl( vlc_object_t *a, module_config_t *b ) : + ConfigControl(a,b) {}; virtual ~VFloatConfigControl() {}; virtual float getValue() = 0; + virtual int getType() { return 2; } }; -#if 0 class FloatConfigControl : public VFloatConfigControl { + Q_OBJECT public: - FloatConfigControl( vlc_object_t *a, module_config_t *b, QWidget *c ) : - ConfigControl(a,b,c) {}; + FloatConfigControl( vlc_object_t *, module_config_t *, QWidget *, + QGridLayout *, int& ); + FloatConfigControl( vlc_object_t *, module_config_t *, + QLabel*, QDoubleSpinBox* ); virtual ~FloatConfigControl() {}; virtual float getValue(); -private: + virtual void show() { spin->show(); if( label ) label->show(); } + virtual void hide() { spin->hide(); if( label ) label->hide(); } + +protected: QDoubleSpinBox *spin; + +private: + QLabel *label; + void finish(); +}; + +class FloatRangeConfigControl : public FloatConfigControl +{ + Q_OBJECT +public: + FloatRangeConfigControl( vlc_object_t *, module_config_t *, QWidget *, + QGridLayout *, int& ); + FloatRangeConfigControl( vlc_object_t *, module_config_t *, + QLabel*, QDoubleSpinBox* ); +private: + void finish(); }; -#endif /******************************************************* * String-based controls *******************************************************/ class VStringConfigControl : public ConfigControl { + Q_OBJECT public: VStringConfigControl( vlc_object_t *a, module_config_t *b, QWidget *c ) : ConfigControl(a,b,c) {}; @@ -137,35 +251,141 @@ public: ConfigControl(a,b) {}; virtual ~VStringConfigControl() {}; virtual QString getValue() = 0; + virtual int getType() { return 3; } }; class StringConfigControl : public VStringConfigControl { + Q_OBJECT public: StringConfigControl( vlc_object_t *, module_config_t *, QWidget *, - bool pwd ); + QGridLayout *, int&, bool pwd ); StringConfigControl( vlc_object_t *, module_config_t *, QLabel *, QLineEdit*, bool pwd ); virtual ~StringConfigControl() {}; virtual QString getValue() { return text->text(); }; + virtual void show() { text->show(); if( label ) label->show(); } + virtual void hide() { text->hide(); if( label ) label->hide(); } private: - void finish( QLabel * ); + 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(); +}; + +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(); }; class ModuleConfigControl : public VStringConfigControl { public: - ModuleConfigControl( vlc_object_t *, module_config_t *, QWidget *, bool - bycat ); + ModuleConfigControl( vlc_object_t *, module_config_t *, QWidget *, bool, + QGridLayout*, int& ); ModuleConfigControl( vlc_object_t *, module_config_t *, QLabel *, QComboBox*, bool ); - virtual ~ModuleConfigControl(); + virtual ~ModuleConfigControl() {}; virtual QString getValue(); + virtual void hide() { combo->hide(); if( label ) label->hide(); } + virtual void show() { combo->show(); if( label ) label->show(); } private: - void finish( QLabel *, bool ); + void finish( bool ); + QLabel *label; QComboBox *combo; }; + +struct checkBoxListItem { + QCheckBox *checkBox; + char *psz_module; +}; + +class ModuleListConfigControl : public VStringConfigControl +{ + Q_OBJECT; +public: + ModuleListConfigControl( vlc_object_t *, module_config_t *, QWidget *, + bool, QGridLayout*, int& ); +// ModuleListConfigControl( vlc_object_t *, module_config_t *, QLabel *, +// QComboBox*, bool ); + virtual ~ModuleListConfigControl(); + virtual QString getValue(); + virtual void hide(); + virtual void show(); +public slots: + void onUpdate( int value ); +private: + void finish( bool ); + QVector modules; + QGroupBox *groupBox; + QLineEdit *text; +}; + +class StringListConfigControl : public VStringConfigControl +{ + Q_OBJECT; +public: + StringListConfigControl( vlc_object_t *, module_config_t *, QWidget *, + bool, QGridLayout*, int& ); + StringListConfigControl( vlc_object_t *, module_config_t *, QLabel *, + QComboBox*, bool ); + virtual ~StringListConfigControl() {}; + virtual QString getValue(); + 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; +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; @@ -187,4 +407,56 @@ private slot: }; #endif +/********************************************************************** + * Key selector widget + **********************************************************************/ +class KeyInputDialog : public QDialog +{ +public: + KeyInputDialog( QList &, const char *, QWidget * ); + int keyValue; + bool conflicts; +private: + void checkForConflicts( int i_vlckey ); + void keyPressEvent( QKeyEvent *); + void wheelEvent( QWheelEvent *); + QLabel *selected; + QLabel *warning; + const char * keyToChange; + QList values; + QDialogButtonBox *buttonBox; +}; + +class KeyShortcutEdit: public QLineEdit +{ + Q_OBJECT +private: + 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 ~KeySelectorControl() {}; + 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 values; +private slots: + void setTheKey(); + void selectKey( QTreeWidgetItem * = NULL ); + void select1Key( QTreeWidgetItem *); +}; + #endif