]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/components/preferences_widgets.hpp
Qt: Remove leading line break on modules prefs help text
[vlc] / modules / gui / qt4 / components / preferences_widgets.hpp
index 4e42cd2e07774502305a156c52bd6564c0f79cfb..99a7957a311fc239e26ed369820a00135a232ae5 100644 (file)
@@ -30,8 +30,6 @@
 # include "config.h"
 #endif
 
-#include <vlc_common.h>
-
 #include "qt4.hpp"
 #include <assert.h>
 
 #include <QLabel>
 #include <QDoubleSpinBox>
 #include <QPushButton>
-#include <QVector>
 #include <QDialog>
+#include <QFontComboBox>
 
-
-class QFile;
 class QTreeWidget;
 class QTreeWidgetItem;
 class QGroupBox;
@@ -57,7 +53,29 @@ class QGridLayout;
 class QDialogButtonBox;
 class QVBoxLayout;
 
-class ConfigControl : public QObject
+/*******************************************************
+ * Simple widgets
+ *******************************************************/
+
+class InterfacePreviewWidget : public QLabel
+{
+    Q_OBJECT
+public:
+    InterfacePreviewWidget( QWidget * );
+    enum enum_style {
+                 COMPLETE, // aka MPC
+                 MINIMAL,  // aka WMP12 minimal
+                 SKINS };
+public slots:
+    void setPreview( enum_style );
+    void setNormalPreview( bool b_minimal );
+};
+
+/*******************************************************
+ * Variable controls
+ *******************************************************/
+
+class   ConfigControl : public QObject
 {
     Q_OBJECT
 public:
@@ -71,26 +89,22 @@ public:
     {
         widget = NULL;
     }
-    virtual ~ConfigControl() {};
-    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 int getType() const = 0;
+    const char * getName() const { return  p_item->psz_name; }
+    QWidget *getWidget() const { assert( widget ); return widget; }
+    bool isAdvanced() const { 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 *);
+                                          QGridLayout *, int line = 0 );
+    virtual void doApply() = 0;
 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:
@@ -109,9 +123,9 @@ public:
             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 CONFIG_ITEM_INTEGER; }
+    virtual int getValue() const = 0;
+    virtual int getType() const { return CONFIG_ITEM_INTEGER; }
+    virtual void doApply();
 };
 
 class IntegerConfigControl : public VIntConfigControl
@@ -119,15 +133,14 @@ class IntegerConfigControl : public VIntConfigControl
 Q_OBJECT
 public:
     IntegerConfigControl( vlc_object_t *, module_config_t *, QWidget *,
-                          QGridLayout *, int& );
+                          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(); if( label ) label->show(); }
-    virtual void hide() { spin->hide(); if( label ) label->hide(); }
+    virtual int getValue() const;
+    virtual void show() const { spin->show(); if( label ) label->show(); }
+    virtual void hide() const { spin->hide(); if( label ) label->hide(); }
 
 protected:
     QSpinBox *spin;
@@ -140,7 +153,7 @@ class IntegerRangeConfigControl : public IntegerConfigControl
 {
 public:
     IntegerRangeConfigControl( vlc_object_t *, module_config_t *, QWidget *,
-                               QGridLayout *, int& );
+                               QGridLayout *, int );
     IntegerRangeConfigControl( vlc_object_t *, module_config_t *,
                                QLabel*, QSpinBox* );
 private:
@@ -152,8 +165,7 @@ class IntegerRangeSliderConfigControl : public VIntConfigControl
 public:
     IntegerRangeSliderConfigControl( vlc_object_t *, module_config_t *,
                                 QLabel *, QSlider * );
-    virtual ~IntegerRangeSliderConfigControl() {};
-    virtual int getValue();
+    virtual int getValue() const;
 protected:
          QSlider *slider;
 private:
@@ -166,15 +178,14 @@ class IntegerListConfigControl : public VIntConfigControl
 Q_OBJECT
 public:
     IntegerListConfigControl( vlc_object_t *, module_config_t *, QWidget *,
-                              bool, QGridLayout*, int& );
+                              bool, QGridLayout*, int );
     IntegerListConfigControl( vlc_object_t *, module_config_t *, QLabel *,
                               QComboBox*, bool );
-    virtual ~IntegerListConfigControl() {};
-    virtual int getValue();
+    virtual int getValue() const;
     virtual void hide() { combo->hide(); if( label ) label->hide(); }
     virtual void show() { combo->show(); if( label ) label->show(); }
 private:
-    void finish(module_config_t *, bool );
+    void finish(module_config_t * );
     QLabel *label;
     QComboBox *combo;
 private slots:
@@ -186,16 +197,15 @@ class BoolConfigControl : public VIntConfigControl
 {
 public:
     BoolConfigControl( vlc_object_t *, module_config_t *, QWidget *,
-                       QGridLayout *, int& );
+                       QGridLayout *, int );
     BoolConfigControl( vlc_object_t *, module_config_t *,
-                       QLabel *, QCheckBox*, bool );
-    virtual ~BoolConfigControl() {};
-    virtual int getValue();
+                       QLabel *, QAbstractButton* );
+    virtual int getValue() const;
     virtual void show() { checkbox->show(); }
     virtual void hide() { checkbox->hide(); }
-    virtual int getType() { return CONFIG_ITEM_BOOL; }
+    virtual int getType() const { return CONFIG_ITEM_BOOL; }
 private:
-    QCheckBox *checkbox;
+    QAbstractButton *checkbox;
     void finish();
 };
 
@@ -210,9 +220,9 @@ public:
                 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 CONFIG_ITEM_FLOAT; }
+    virtual float getValue() const = 0;
+    virtual int getType() const { return CONFIG_ITEM_FLOAT; }
+    virtual void doApply();
 };
 
 class FloatConfigControl : public VFloatConfigControl
@@ -220,11 +230,10 @@ class FloatConfigControl : public VFloatConfigControl
     Q_OBJECT
 public:
     FloatConfigControl( vlc_object_t *, module_config_t *, QWidget *,
-                        QGridLayout *, int& );
+                        QGridLayout *, int );
     FloatConfigControl( vlc_object_t *, module_config_t *,
                         QLabel*, QDoubleSpinBox* );
-    virtual ~FloatConfigControl() {};
-    virtual float getValue();
+    virtual float getValue() const;
     virtual void show() { spin->show(); if( label ) label->show(); }
     virtual void hide() { spin->hide(); if( label ) label->hide(); }
 
@@ -241,7 +250,7 @@ class FloatRangeConfigControl : public FloatConfigControl
     Q_OBJECT
 public:
     FloatRangeConfigControl( vlc_object_t *, module_config_t *, QWidget *,
-                             QGridLayout *, int& );
+                             QGridLayout *, int );
     FloatRangeConfigControl( vlc_object_t *, module_config_t *,
                              QLabel*, QDoubleSpinBox* );
 private:
@@ -259,9 +268,9 @@ public:
                 ConfigControl(a,b,c) {};
     VStringConfigControl( vlc_object_t *a, module_config_t *b ) :
                 ConfigControl(a,b) {};
-    virtual ~VStringConfigControl() {};
-    virtual QString getValue() = 0;
-    virtual int getType() { return CONFIG_ITEM_STRING; }
+    virtual QString getValue() const = 0;
+    virtual int getType() const { return CONFIG_ITEM_STRING; }
+    virtual void doApply();
 };
 
 class StringConfigControl : public VStringConfigControl
@@ -269,11 +278,10 @@ class StringConfigControl : public VStringConfigControl
     Q_OBJECT
 public:
     StringConfigControl( vlc_object_t *, module_config_t *, QWidget *,
-                         QGridLayout *, int&,  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 QString getValue() const { return text->text(); };
     virtual void show() { text->show(); if( label ) label->show(); }
     virtual void hide() { text->hide(); if( label ) label->hide(); }
 private:
@@ -284,14 +292,13 @@ private:
 
 class FileConfigControl : public VStringConfigControl
 {
-    Q_OBJECT;
+    Q_OBJECT
 public:
     FileConfigControl( vlc_object_t *, module_config_t *, QWidget *,
-                       QGridLayout *, int&, bool pwd );
+                       QGridLayout *, int );
     FileConfigControl( vlc_object_t *, module_config_t *, QLabel *,
-                       QLineEdit *, QPushButton *, bool pwd );
-    virtual ~FileConfigControl() {};
-    virtual QString getValue() { return text->text(); };
+                       QLineEdit *, QPushButton * );
+    virtual QString getValue() const { 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:
@@ -305,41 +312,38 @@ protected:
 
 class DirectoryConfigControl : public FileConfigControl
 {
-    Q_OBJECT;
+    Q_OBJECT
 public:
     DirectoryConfigControl( vlc_object_t *, module_config_t *, QWidget *,
-                            QGridLayout *, int&, bool pwd );
+                            QGridLayout *, int );
     DirectoryConfigControl( vlc_object_t *, module_config_t *, QLabel *,
-                            QLineEdit *, QPushButton *, bool pwd );
-    virtual ~DirectoryConfigControl() {};
+                            QLineEdit *, QPushButton * );
 public slots:
     virtual void updateField();
 };
 
-#if 0
-class FontConfigControl : public FileConfigControl
+class FontConfigControl : public VStringConfigControl
 {
-    Q_OBJECT;
+    Q_OBJECT
 public:
     FontConfigControl( vlc_object_t *, module_config_t *, QWidget *,
-                       QGridLayout *, int&, bool pwd );
+                       QGridLayout *, int);
     FontConfigControl( vlc_object_t *, module_config_t *, QLabel *,
-                       QLineEdit *, QPushButton *, bool pwd );
-    virtual ~FontConfigControl() {};
-public slots:
-    virtual void updateField();
+                       QFontComboBox *);
+    virtual QString getValue() const { return font->currentFont().family(); }
+protected:
+    QLabel *label;
+    QFontComboBox *font;
 };
-#endif
 
 class ModuleConfigControl : public VStringConfigControl
 {
 public:
     ModuleConfigControl( vlc_object_t *, module_config_t *, QWidget *, bool,
-                         QGridLayout*, int& );
+                         QGridLayout*, int );
     ModuleConfigControl( vlc_object_t *, module_config_t *, QLabel *,
                          QComboBox*, bool );
-    virtual ~ModuleConfigControl() {};
-    virtual QString getValue();
+    virtual QString getValue() const;
     virtual void hide() { combo->hide(); if( label ) label->hide(); }
     virtual void show() { combo->show(); if( label ) label->show(); }
 private:
@@ -355,40 +359,40 @@ struct checkBoxListItem {
 
 class ModuleListConfigControl : public VStringConfigControl
 {
-    Q_OBJECT;
+    Q_OBJECT
+    friend class ConfigControl;
 public:
     ModuleListConfigControl( vlc_object_t *, module_config_t *, QWidget *,
-                             bool, QGridLayout*, int& );
+                             bool, QGridLayout*, int );
 //    ModuleListConfigControl( vlc_object_t *, module_config_t *, QLabel *,
 //                         QComboBox*, bool );
     virtual ~ModuleListConfigControl();
-    virtual QString getValue();
+    virtual QString getValue() const;
     virtual void hide();
     virtual void show();
 public slots:
-    void onUpdate( int value );
+    void onUpdate();
 private:
     void finish( bool );
-    QVector<checkBoxListItem*> modules;
+    QList<checkBoxListItem*> modules;
     QGroupBox *groupBox;
     QLineEdit *text;
 };
 
 class StringListConfigControl : public VStringConfigControl
 {
-    Q_OBJECT;
+    Q_OBJECT
 public:
     StringListConfigControl( vlc_object_t *, module_config_t *, QWidget *,
-                             bool, QGridLayout*, int& );
+                             QGridLayout*, int );
     StringListConfigControl( vlc_object_t *, module_config_t *, QLabel *,
                              QComboBox*, bool );
-    virtual ~StringListConfigControl() {};
-    virtual QString getValue();
+    virtual QString getValue() const;
     virtual void hide() { combo->hide(); if( label ) label->hide(); }
     virtual void show() { combo->show(); if( label ) label->show(); }
-       QComboBox *combo;
+    QComboBox *combo;
 private:
-    void finish(module_config_t *, bool );
+    void finish(module_config_t * );
     QLabel *label;
 private slots:
     void actionRequested( int );
@@ -396,7 +400,7 @@ private slots:
 };
 
 void setfillVLCConfigCombo(const char *configname, intf_thread_t *p_intf,
-                        QComboBox *combo, QWidget *parent = 0 );
+                        QComboBox *combo );
 
 #if 0
 struct ModuleCheckBox {
@@ -426,44 +430,51 @@ class KeyShortcutEdit: public QLineEdit
 {
     Q_OBJECT
 public:
-    void setValue( int _value ){ value = _value; }
-    int getValue() const { return value; }
+    void setValue( const QString& value ){ this->value = value; }
+    QString getValue() const { return value; }
+
+    void setGlobal( bool _value ) { b_global = _value; }
+    bool getGlobal() const { return b_global; }
 public slots:
-    virtual void clear(void) { value = 0; QLineEdit::clear(); }
+    virtual void clear(void) { value = qfu(""); QLineEdit::clear(); }
 private:
-    int value;
+    QString value;
+    bool b_global;
     virtual void mousePressEvent( QMouseEvent *event );
 signals:
     void pressed();
 };
 
+class SearchLineEdit;
 class KeySelectorControl : public ConfigControl
 {
-    Q_OBJECT;
+    Q_OBJECT
 public:
     KeySelectorControl( vlc_object_t *, module_config_t *, QWidget *,
-                        QGridLayout*, int& );
-    virtual int getType() { return CONFIG_ITEM_KEY; }
-    virtual ~KeySelectorControl() {};
+                        QGridLayout*, int );
+    virtual int getType() const { return CONFIG_ITEM_KEY; }
     virtual void hide() { table->hide(); if( label ) label->hide(); }
     virtual void show() { table->show(); if( label ) label->show(); }
-    void doApply();
+    virtual void doApply();
 private:
     void finish();
     QLabel *label;
     QTreeWidget *table;
     KeyShortcutEdit *shortcutValue;
     QList<module_config_t *> values;
+    SearchLineEdit *actionSearch;
 private slots:
     void setTheKey();
-    void selectKey( QTreeWidgetItem * = NULL );
-    void select1Key( QTreeWidgetItem *);
+    void selectKey( QTreeWidgetItem * = NULL, int column = 1 );
+    void select( QTreeWidgetItem * = NULL, int column = 1 );
+    void select1Key();
+    void filter( const QString & );
 };
 
 class KeyInputDialog : public QDialog
 {
 public:
-    KeyInputDialog( QTreeWidget *, QString, QWidget * );
+    KeyInputDialog( QTreeWidget *, const QString&, QWidget *, bool b_global = false);
     int keyValue;
     bool conflicts;
 private:
@@ -471,8 +482,9 @@ private:
     void checkForConflicts( int i_vlckey );
     void keyPressEvent( QKeyEvent *);
     void wheelEvent( QWheelEvent *);
-    QLabel *selected;
+    QLabel *selected, *warning;
     QVBoxLayout *vLayout;
     QDialogButtonBox *buttonBox;
+    bool b_global;
 };
 #endif