]> git.sesse.net Git - vlc/commitdiff
Temporary dialog for the equalizer
authorClément Stenac <zorglub@videolan.org>
Mon, 18 Sep 2006 20:02:13 +0000 (20:02 +0000)
committerClément Stenac <zorglub@videolan.org>
Mon, 18 Sep 2006 20:02:13 +0000 (20:02 +0000)
modules/gui/qt4/Modules.am
modules/gui/qt4/components/equalizer.cpp
modules/gui/qt4/components/equalizer.hpp
modules/gui/qt4/dialogs/extended.cpp [new file with mode: 0644]
modules/gui/qt4/dialogs/extended.hpp [new file with mode: 0644]
modules/gui/qt4/dialogs_provider.cpp
modules/gui/qt4/dialogs_provider.hpp
modules/gui/qt4/input_manager.cpp
modules/gui/qt4/menus.cpp
modules/gui/qt4/ui/equalizer.ui

index 50d1f43bde5c0bad68bfebd3470cdbbbac82df9f..fd23fc648d3f9315b449bc9c0f2826ca749888ef 100644 (file)
@@ -28,6 +28,7 @@ TOMOC = main_interface \
        dialogs/messages \
        dialogs/errors \
        dialogs/streaminfo \
+       dialogs/extended \
        dialogs/interaction \
        components/equalizer \
        components/infopanels \
@@ -50,6 +51,7 @@ nodist_SOURCES_qt4 = \
                playlist_model.moc.cpp \
                dialogs/playlist.moc.cpp \
                dialogs/streaminfo.moc.cpp \
+               dialogs/extended.moc.cpp \
                dialogs/messages.moc.cpp \
                dialogs/errors.moc.cpp \
                dialogs/prefs_dialog.moc.cpp \
@@ -96,6 +98,7 @@ SOURCES_qt4 =         qt4.cpp \
                dialogs/playlist.cpp \
                dialogs/prefs_dialog.cpp \
                dialogs/streaminfo.cpp \
+               dialogs/extended.cpp \
                dialogs/messages.cpp \
                dialogs/errors.cpp \
                dialogs/interaction.cpp \
@@ -122,6 +125,7 @@ EXTRA_DIST += \
        res.qrc \
        dialogs/playlist.hpp \
        dialogs/streaminfo.hpp \
+       dialogs/extended.hpp \
        dialogs/messages.hpp \
        dialogs/errors.hpp \
        dialogs/prefs_dialog.hpp \
index e071d98e9b7912d45e6d8d180c081c06db8dcc6b..17ca63aadf92fb174f6d10a7f3e609f37bd52fbd 100644 (file)
 
 static const QString band_frequencies[] =
 {
-    " 60Hz", "170 Hz", "310 Hz", "600 Hz", "  1 kHz",
-    " 3 kHz", " 6 kHz", "12 kHz", "14 kHz", "16 kHz"
+    "   60Hz  ", " 170 Hz " , " 310 Hz ", " 600 Hz ", "  1 kHz  ",
+    "  3 kHz  " , "  6 kHz ", " 12 kHz ", " 14 kHz ", " 16 kHz "
 };
 
 Equalizer::Equalizer( intf_thread_t *_p_intf, QWidget *_parent ) :
                             QWidget( _parent ) , p_intf( _p_intf )
 {
+    QFont smallFont = QApplication::font(0);
+    smallFont.setPointSize( smallFont.pointSize() - 3 );
+
     ui.setupUi( this );
 
+    ui.preampLabel->setFont( smallFont );
+    ui.preampSlider->setMaximum( 400 );
     for( int i = 0 ; i < NB_PRESETS ; i ++ )
     {
         ui.presetsCombo->addItem( qfu( preset_list_text[i] ),
@@ -54,17 +59,52 @@ Equalizer::Equalizer( intf_thread_t *_p_intf, QWidget *_parent ) :
     }
     CONNECT( ui.presetsCombo, activated( int ), this, setPreset( int ) );
 
+    BUTTONACT( ui.enableCheck, enable() );
+    BUTTONACT( ui.eq2PassCheck, set2Pass() );
+
+    CONNECT( ui.preampSlider, valueChanged(int), this, setPreamp() );
+
+    QGridLayout *grid = new QGridLayout( ui.frame );
+    grid->setMargin( 0 );
     for( int i = 0 ; i < BANDS ; i++ )
     {
-        QGridLayout *grid = new QGridLayout( this );
-        bands[i] = new QSlider( Qt::Horizontal, this );
+        bands[i] = new QSlider( Qt::Vertical );
         bands[i]->setMaximum( 400 );
-
+        CONNECT( bands[i], valueChanged(int), this, setBand() );
         band_texts[i] = new QLabel( band_frequencies[i] + "\n0.0dB" );
-
+        band_texts[i]->setFont( smallFont );
         grid->addWidget( bands[i], 0, i );
         grid->addWidget( band_texts[i], 1, i );
     }
+
+    /* Write down initial values */
+    aout_instance_t *p_aout = (aout_instance_t *)vlc_object_find(p_intf,
+                                    VLC_OBJECT_AOUT, FIND_ANYWHERE);
+    char *psz_af = NULL;
+    char *psz_bands;
+    float f_preamp;
+    if( p_aout )
+    {
+        psz_af = var_GetString( p_aout, "audio-filter" );
+        if( var_GetBool( p_aout, "equalizer-2pass" ) )
+            ui.eq2PassCheck->setChecked( true );
+        psz_bands = var_GetString( p_aout, "equalizer-bands" );
+        f_preamp = var_GetFloat( p_aout, "equalizer-preamp" );
+        vlc_object_release( p_aout );
+    }
+    else
+    {
+        psz_af = config_GetPsz( p_intf, "audio-filter" );
+        if( config_GetInt( p_intf, "equalizer-2pass" ) )
+            ui.eq2PassCheck->setChecked( true );
+        psz_bands = config_GetPsz( p_intf, "equalizer-bands" );
+        f_preamp = config_GetFloat( p_intf, "equalizer-preamp" );
+    }
+    if( psz_af && strstr( psz_af, "equalizer" ) != NULL )
+        ui.enableCheck->setChecked( true );
+    enable( ui.enableCheck->isChecked() );
+
+    setValues( psz_bands, f_preamp );
 }
 
 Equalizer::~Equalizer()
@@ -76,8 +116,13 @@ void Equalizer::enable()
     bool en = ui.enableCheck->isChecked();
     aout_EnableFilter( VLC_OBJECT( p_intf ), "equalizer",
                        en ? VLC_TRUE : VLC_FALSE );
+    enable( en );
+}
 
+void Equalizer::enable( bool en )
+{
     ui.eq2PassCheck->setEnabled( en );
+    ui.preampLabel->setEnabled( en );
     ui.preampSlider->setEnabled( en  );
     for( int i = 0 ; i< BANDS; i++ )
     {
@@ -107,7 +152,7 @@ void Equalizer::set2Pass()
 
 void Equalizer::setPreamp()
 {
-    float f= (float)( 400 - ui.preampSlider->value() ) /10 - 20;
+    float f= (float)(  ui.preampSlider->value() ) /10 - 20;
     char psz_val[5];
     aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf,
                                        VLC_OBJECT_AOUT, FIND_ANYWHERE);
@@ -133,9 +178,9 @@ void Equalizer::setBand()
     for( int i = 0 ; i< BANDS ; i++ )
     {
         char psz_val[5];
-        float f_val = (float)( 400 - bands[i]->value() ) / 10 - 20 ;
+        float f_val = (float)(  bands[i]->value() ) / 10 - 20 ;
         sprintf( psz_values, "%s %f", psz_values, f_val );
-        sprintf( psz_val, "%.1f", f_val );
+        sprintf( psz_val, "% 5.1f", f_val );
         band_texts[i]->setText( band_frequencies[i] + "\n" + psz_val + "dB" );
     }
     aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf,
@@ -157,9 +202,9 @@ void Equalizer::setValues( char *psz_bands, float f_preamp )
 
         float f = strtof( p, &p );
         int  i_val= (int)( ( f + 20 ) * 10 );
-        bands[i]->setValue( 400 - i_val );
+        bands[i]->setValue(  i_val );
 
-        sprintf( psz_val, "%.1f", f );
+        sprintf( psz_val, "% 5.1f", f );
         band_texts[i]->setText( band_frequencies[i] + "\n" + psz_val + "dB" );
 
         if( p == NULL ) break;
@@ -169,7 +214,7 @@ void Equalizer::setValues( char *psz_bands, float f_preamp )
     char psz_val[5];
     int i_val = (int)( ( f_preamp + 20 ) * 10 );
     sprintf( psz_val, "%.1f", f_preamp );
-    ui.preampSlider->setValue( 400 - i_val );
+    ui.preampSlider->setValue( i_val );
     ui.preampLabel->setText( qtr("Preamp\n") + psz_val + qtr("dB") );
 }
 
@@ -210,5 +255,3 @@ void Equalizer::addCallbacks( aout_instance_t *p_aout )
 //    var_AddCallback( p_aout, "equalizer-bands", EqzCallback, this );
 //    var_AddCallback( p_aout, "equalizer-preamp", EqzCallback, this );
 }
-
-
index 7b940d5d61dbd1ae7b55de788bc5f03ba72fda39..99130bc963e1209c7945012a893107d53b5b7852 100644 (file)
@@ -48,6 +48,7 @@ private:
 
     intf_thread_t *p_intf;
 private slots:
+    void enable(bool);
     void enable();
     void set2Pass();
     void setPreamp();
diff --git a/modules/gui/qt4/dialogs/extended.cpp b/modules/gui/qt4/dialogs/extended.cpp
new file mode 100644 (file)
index 0000000..a1b88c3
--- /dev/null
@@ -0,0 +1,48 @@
+/*****************************************************************************
+ * extended.cpp : Extended controls - Undocked
+ ****************************************************************************
+ * Copyright (C) 2006 the VideoLAN team
+ * $Id: streaminfo.cpp 16687 2006-09-17 12:15:42Z jb $
+ *
+ * Authors: Clément Stenac <zorglub@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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/
+
+#include <QTabWidget>
+#include <QBoxLayout>
+
+#include "dialogs/extended.hpp"
+#include "dialogs_provider.hpp"
+#include "util/qvlcframe.hpp"
+#include "components/equalizer.hpp"
+#include "qt4.hpp"
+
+ExtendedDialog *ExtendedDialog::instance = NULL;
+
+ExtendedDialog::ExtendedDialog( intf_thread_t *_p_intf ): QVLCFrame( _p_intf )
+{
+    setWindowTitle( _("Extended controls" ) );
+    QHBoxLayout *layout = new QHBoxLayout( this );
+
+    Equalizer *foo = new Equalizer( p_intf, this );
+    layout->addWidget( foo );
+
+    setLayout( layout );
+}
+
+ExtendedDialog::~ExtendedDialog()
+{
+}
+
diff --git a/modules/gui/qt4/dialogs/extended.hpp b/modules/gui/qt4/dialogs/extended.hpp
new file mode 100644 (file)
index 0000000..042bb70
--- /dev/null
@@ -0,0 +1,46 @@
+/*****************************************************************************
+ * extended.hpp : Extended controls - Undocked
+ ****************************************************************************
+ * Copyright (C) 2006 the VideoLAN team
+ * $Id: streaminfo.hpp 16687 2006-09-17 12:15:42Z jb $
+ *
+ * Authors: Clément Stenac <zorglub@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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/
+
+#ifndef _EXTENDED_DIALOG_H_
+#define _EXTENDED_DIALOG_H_
+
+#include "util/qvlcframe.hpp"
+#include <QHBoxLayout>
+
+class ExtendedDialog : public QVLCFrame
+{
+    Q_OBJECT;
+public:
+    static ExtendedDialog * getInstance( intf_thread_t *p_intf )
+    {
+        if( !instance)
+            instance = new ExtendedDialog( p_intf );
+        return instance;
+    }
+    virtual ~ExtendedDialog();
+private:
+    ExtendedDialog( intf_thread_t * );
+    static ExtendedDialog *instance;
+public slots:
+};
+
+#endif
index c917a3f9dc3d7be9ebc566bf32ac07c65586a3a5..a767faa56d24c0177a1e53663543d612292e25f3 100644 (file)
@@ -35,6 +35,7 @@
 #include "dialogs/prefs_dialog.hpp"
 #include "dialogs/streaminfo.hpp"
 #include "dialogs/messages.hpp"
+#include "dialogs/extended.hpp"
 
 DialogsProvider* DialogsProvider::instance = NULL;
 
@@ -164,6 +165,10 @@ void DialogsProvider::prefsDialog()
 {
     PrefsDialog::getInstance( p_intf )->toggleVisible();
 }
+void DialogsProvider::extendedDialog()
+{
+    ExtendedDialog::getInstance( p_intf )->toggleVisible();
+}
 
 void DialogsProvider::messagesDialog()
 {
index da54ebe2b9e868c37ad508eb6ae65eca39fdf1bb..1da6baef43a3cebfa260a9650ff2ddce2b7741bf 100644 (file)
@@ -71,6 +71,7 @@ public slots:
     void bookmarksDialog();
     void streaminfoDialog();
     void prefsDialog();
+    void extendedDialog();
     void messagesDialog();
     void simplePLAppendDialog();
     void simpleMLAppendDialog();
index 042cc4881546eceb3b14bd9536c833b207f00a33..6b2ed82de071f0bc55c53ebd796ee4b11bc01822 100644 (file)
@@ -224,6 +224,7 @@ static int ChangeAudio( vlc_object_t *p_this, const char *var, vlc_value_t o,
 {
     InputManager *im = (InputManager*)param;
     im->b_has_audio = true;
+    return 0;
 }
 
 static int ChangeVideo( vlc_object_t *p_this, const char *var, vlc_value_t o,
@@ -231,4 +232,5 @@ static int ChangeVideo( vlc_object_t *p_this, const char *var, vlc_value_t o,
 {
     InputManager *im = (InputManager*)param;
     im->b_has_video = true;
+    return 0;
 }
index be3f2ecc8d3e0bb88da611b68652efa9967ce42b..f6424d75db8ebbc4f96a414e96b835cc1c8e3777 100644 (file)
@@ -155,6 +155,7 @@ QMenu *QVLCMenu::ToolsMenu( intf_thread_t *p_intf, bool with_intf )
     DP_SADD( qtr("Bookmarks"), "", "", bookmarksDialog() );
     menu->addSeparator();
     DP_SADD( qtr("Preferences"), "", "", prefsDialog() );
+    DP_SADD( qtr("Extended"), "","",extendedDialog() );
     return menu;
 }
 
index 06827013c2bb01facc860230085fcc408573e53d..99f4f8a1c1c2ba15fe46d133d43a27da8a8e7769 100644 (file)
@@ -95,7 +95,7 @@
       <widget class="QSlider" name="preampSlider" >
        <property name="orientation" >
         <enum>Qt::Vertical</enum>
-       </property>
+       </property>
       </widget>
      </item>
      <item rowspan="2" row="0" column="1" >