#include <QTabWidget>
#define BANDS 10
-#define NUM_CP_CTRL 7
-#define NUM_SP_CTRL 5
class QSignalMapper;
void ValueChange( bool value );
};
-class Equalizer: public QWidget
+class FilterSliderData : public QObject
{
Q_OBJECT
- friend class ExtendedDialog;
+
public:
- Equalizer( intf_thread_t *, QWidget * );
- QComboBox *presetsComboBox;
+ 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:
+ FilterSliderData( QObject *parent, QSlider *slider );
+ virtual float initialValue();
+ QSlider *slider;
+ QLabel *valueLabel;
+ QLabel *nameLabel;
+ const slider_data_t *p_data;
+ intf_thread_t *p_intf;
- char * createValuesFromPreset( int i_preset );
- void updateUIFromCore();
- void changeFreqLabels( bool );
-private:
- Ui::EqualizerWidget ui;
- QSlider *bands[BANDS];
- QLabel *band_texts[BANDS];
- bool b_vlcBands;
+public slots:
+ virtual void onValueChanged( int i ) const;
+ virtual void updateText( int i );
+ virtual void writeToConfig() const;
+};
- void delCallbacks( vlc_object_t * );
- void addCallbacks( vlc_object_t * );
+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;
- void clean() { enable(); }
-private slots:
- void enable(bool);
- void enable();
- void set2Pass();
- void setPreamp();
- void setCoreBands();
- void setCorePreset(int);
+ QString name; // filter's module name
+ int i_smallfont;
+
+protected slots:
+ void enable( bool ) const;
};
-class Compressor: public QWidget
+class EqualizerSliderData : public FilterSliderData
{
Q_OBJECT
public:
- Compressor( intf_thread_t *, QWidget * );
+ EqualizerSliderData( QObject *parent, intf_thread_t *p_intf,
+ QSlider *slider,
+ QLabel *valueLabel, QLabel *nameLabel,
+ const slider_data_t *p_data, int index );
-private:
- typedef struct
- {
- const char *psz_name;
- const char *psz_descs;
- const char *psz_units;
- const float f_min; // min
- const float f_max; // max
- const float f_value; // value
- const float f_resolution; // resolution
- } comp_controls_t;
- static const comp_controls_t comp_controls[NUM_CP_CTRL];
- QSlider *compCtrl[NUM_CP_CTRL];
- QLabel *ctrl_texts[NUM_CP_CTRL];
- QLabel *ctrl_readout[NUM_CP_CTRL];
- float controlVars[NUM_CP_CTRL];
- float oldControlVars[NUM_CP_CTRL];
-
- QGroupBox *compressorBox;
+protected:
+ virtual float initialValue();
+ int index;
+ QStringList getBandsFromAout() const;
- intf_thread_t *p_intf;
+public slots:
+ virtual void onValueChanged( int i ) const;
+ virtual void writeToConfig() const;
+};
+
+class Equalizer: public AudioFilterControlWidget
+{
+ Q_OBJECT
- void updateSliders();
+public:
+ Equalizer( intf_thread_t *, QWidget * );
+
+protected:
+ virtual void build();
+
+private:
+ QVector<FilterSliderData *> eqSliders;
+ FilterSliderData *preamp;
+ FilterSliderData::slider_data_t preamp_values;
private slots:
- void enable();
- void setValues();
+ void setCorePreset( int );
+ void enable2Pass( bool ) const;
};
-class Spatializer: public QWidget
+class Compressor: public AudioFilterControlWidget
{
Q_OBJECT
public:
- Spatializer( intf_thread_t *, QWidget * );
+ Compressor( intf_thread_t *, QWidget * );
+};
-private:
- typedef struct
- {
- const char *psz_name;
- const char *psz_desc;
- } spat_controls_t;
- static const spat_controls_t spat_controls[NUM_SP_CTRL];
- QSlider *spatCtrl[NUM_SP_CTRL];
- QLabel *ctrl_texts[NUM_SP_CTRL];
- QLabel *ctrl_readout[NUM_SP_CTRL];
- float controlVars[NUM_SP_CTRL];
- float oldControlVars[NUM_SP_CTRL];
-
- QGroupBox *spatializerBox;
-
- void delCallbacks( vlc_object_t * );
- void addCallbacks( vlc_object_t * );
- intf_thread_t *p_intf;
+class Spatializer: public AudioFilterControlWidget
+{
+ Q_OBJECT
-private slots:
- void enable();
- void setValues();
+public:
+ Spatializer( intf_thread_t *, QWidget * );
};
class SyncWidget : public QWidget