]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/components/extended_panels.hpp
Qt: StandardPanel: Add spinner on network SD nodes.
[vlc] / modules / gui / qt4 / components / extended_panels.hpp
index 5568ea71b5f4971b6fe1c07c542934efe920dd96..e44e0d026792a9475058851b141314f542d24b0f 100644 (file)
 #endif
 
 #include <vlc_common.h>
-#include <vlc_aout.h>
 
 #include "ui/equalizer.h"
 #include "ui/video_effects.h"
-#include "ui/v4l2.h"
 
 #include <QTabWidget>
 
 #define BANDS 10
-#define NUM_SP_CTRL 5
 
 class QSignalMapper;
 
@@ -49,21 +46,20 @@ class ExtVideo: public QObject
     friend class ExtendedDialog;
 public:
     ExtVideo( struct intf_thread_t *, QTabWidget * );
-    virtual ~ExtVideo();
     /*void gotoConf( QObject* );*/
 private:
     Ui::ExtVideoWidget ui;
     QSignalMapper* filterMapper;
     intf_thread_t *p_intf;
-    vout_thread_t *p_vout;
     void initComboBoxItems( QObject* );
     void setWidgetValue( QObject* );
-    void ChangeVFiltersString( const char *psz_name, bool b_add );
     void clean();
 private slots:
     void updateFilters();
     void updateFilterOptions();
     void cropChange();
+    void browseLogo();
+    void browseEraseFile();
 };
 
 class ExtV4l2 : public QWidget
@@ -71,14 +67,13 @@ class ExtV4l2 : public QWidget
     Q_OBJECT
 public:
     ExtV4l2( intf_thread_t *, QWidget * );
-    virtual ~ExtV4l2();
 
     virtual void showEvent( QShowEvent *event );
 
 private:
     intf_thread_t *p_intf;
-    Ui::ExtV4l2Widget ui;
     QGroupBox *box;
+    QLabel *help;
 
 private slots:
     void Refresh( void );
@@ -86,27 +81,86 @@ private slots:
     void ValueChange( bool value );
 };
 
+class FilterSliderData : public QObject
+{
+    Q_OBJECT
+
+public:
+    typedef struct
+    {
+        QString name;
+        QString descs;
+        QString units;
+        float f_min;      // min
+        float f_max;      // max
+        float f_value;    // value
+        float f_resolution; // resolution
+        float f_visual_multiplier; // only for display (f_value *)
+    } slider_data_t;
+    FilterSliderData( QObject *parent, intf_thread_t *p_intf,
+                      QSlider *slider,
+                      QLabel *valueLabel, QLabel *nameLabel,
+                      const slider_data_t *p_data );
+    void setValue( float f );
+
+protected:
+    float initialValue();
+
+public slots:
+    void onValueChanged( int i );
+    void updateText( int i );
+    void writeToConfig();
+
+private:
+    intf_thread_t *p_intf;
+    QSlider *slider;
+    QLabel *valueLabel;
+    QLabel *nameLabel;
+    const slider_data_t *p_data;
+};
+
+class AudioFilterControlWidget : public QWidget
+{
+    Q_OBJECT
+
+public:
+    AudioFilterControlWidget( intf_thread_t *, QWidget *, const char *name );
+    virtual ~AudioFilterControlWidget();
+
+protected:
+    virtual void build();
+    QVector<FilterSliderData::slider_data_t> controls;
+    QGroupBox *slidersBox;
+    intf_thread_t *p_intf;
+    QString name; // filter's module name
+    int i_smallfont;
+
+protected slots:
+    void enable();
+};
+
 class Equalizer: public QWidget
 {
     Q_OBJECT
     friend class ExtendedDialog;
 public:
     Equalizer( intf_thread_t *, QWidget * );
-    virtual ~Equalizer();
     QComboBox *presetsComboBox;
 
     char * createValuesFromPreset( int i_preset );
     void updateUIFromCore();
+    void changeFreqLabels( bool );
 private:
     Ui::EqualizerWidget ui;
     QSlider *bands[BANDS];
     QLabel *band_texts[BANDS];
+    bool b_vlcBands;
 
-    void delCallbacks( aout_instance_t * );
-    void addCallbacks( aout_instance_t * );
+    void delCallbacks( vlc_object_t * );
+    void addCallbacks( vlc_object_t * );
 
     intf_thread_t *p_intf;
-    void clean();
+    void clean() { enable(); }
 private slots:
     void enable(bool);
     void enable();
@@ -114,33 +168,37 @@ private slots:
     void setPreamp();
     void setCoreBands();
     void setCorePreset(int);
-    void updateUISliderValues( int );
 };
 
-class Spatializer: public QWidget
+class Compressor: public AudioFilterControlWidget
 {
     Q_OBJECT
+
 public:
-    Spatializer( intf_thread_t *, QWidget * );
-    virtual ~Spatializer();
+    Compressor( intf_thread_t *, QWidget * );
+};
 
-private:
-    QSlider *spatCtrl[NUM_SP_CTRL];
-    QLabel *ctrl_texts[NUM_SP_CTRL];
-    QLabel *ctrl_readout[NUM_SP_CTRL];
-    float controlVars[5];
-    float oldControlVars[5];
+class Spatializer: public AudioFilterControlWidget
+{
+    Q_OBJECT
 
-    QCheckBox *enableCheck;
+public:
+    Spatializer( intf_thread_t *, QWidget * );
+};
 
-    void delCallbacks( aout_instance_t * );
-    void addCallbacks( aout_instance_t * );
-    intf_thread_t *p_intf;
+class SyncWidget : public QWidget
+{
+    Q_OBJECT
+public:
+    SyncWidget( QWidget * );
+    void setValue( double d );
+signals:
+    void valueChanged( double );
 private slots:
-    void enable(bool);
-    void enable();
-    void setValues(float *);
-    void setInitValues();
+    void valueChangedHandler( double d );
+private:
+    QDoubleSpinBox spinBox;
+    QLabel spinLabel;
 };
 
 class SyncControls : public QWidget
@@ -149,22 +207,28 @@ class SyncControls : public QWidget
     friend class ExtendedDialog;
 public:
     SyncControls( intf_thread_t *, QWidget * );
-    virtual ~SyncControls() {};
+    virtual ~SyncControls();
 private:
     intf_thread_t *p_intf;
-    QDoubleSpinBox *AVSpin;
-    QDoubleSpinBox *subsSpin;
+    SyncWidget *AVSpin;
+    SyncWidget *subsSpin;
     QDoubleSpinBox *subSpeedSpin;
+    QDoubleSpinBox *subDurationSpin;
 
     bool b_userAction;
 
     void clean();
+
+    void initSubsDuration();
+    void subsdelayClean();
+    void subsdelaySetFactor( double );
 public slots:
     void update();
 private slots:
     void advanceAudio( double );
     void advanceSubs( double );
     void adjustSubsSpeed( double );
+    void adjustSubsDuration( double );
 };
 
 #endif