Qt4 - Simple Preferences, audio: you expect to deal with % for the volume not abstrac...
authorJean-Baptiste Kempf <jb@videolan.org>
Thu, 31 Jan 2008 02:00:43 +0000 (02:00 +0000)
committerJean-Baptiste Kempf <jb@videolan.org>
Thu, 31 Jan 2008 02:00:43 +0000 (02:00 +0000)
modules/gui/qt4/components/simple_preferences.cpp
modules/gui/qt4/components/simple_preferences.hpp
modules/gui/qt4/ui/sprefs_audio.ui

index ad8b500..5b25310 100644 (file)
@@ -214,6 +214,9 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent,
             /* General Audio Options */
             CONFIG_GENERIC_NO_BOOL( "volume" , IntegerRangeSlider, NULL,
                                      defaultVolume );
+            CONNECT( ui.defaultVolume, valueChanged( int ),
+                    this, updateAudioVolume( int ) );
+
             CONFIG_GENERIC( "audio-language" , String , NULL,
                             preferredAudioLanguage );
 
@@ -258,6 +261,7 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent,
             optionWidgets.append( ui.fileControl );
             optionWidgets.append( ui.outputModule );
             optionWidgets.append( ui.volNormBox );
+            optionWidgets.append( ui.volumeValue );
             updateAudioOptions( ui.outputModule->currentIndex() );
 
             /* LastFM */
@@ -289,6 +293,9 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent,
                 ui.volNormSpin->setEnabled( b_normalizer );
             }
 
+            /* Volume Label */
+            updateAudioVolume( ui.defaultVolume->value() ); // First time init
+
         END_SPREFS_CAT;
 
         /* Input and Codecs Panel Implementation */
@@ -501,6 +508,13 @@ void SPrefsPanel::updateAudioOptions( int number)
     optionWidgets[fileW]->setVisible( ( value == "aout_file" ) );
 }
 
+void SPrefsPanel::updateAudioVolume( int volume )
+{
+    qobject_cast<QSpinBox *>(optionWidgets[volLW])
+        ->setValue( volume * 100 / 256 );
+}
+
+
 /* Function called from the main Preferences dialog on each SPrefs Panel */
 void SPrefsPanel::apply()
 {
@@ -697,7 +711,7 @@ void SPrefsPanel::assoDialog()
     aTa( ".m4a" ); aTa( ".m4p" ); aTa( ".mka" ); aTa( ".mod" ); aTa( ".mp1" );
     aTa( ".mp2" ); aTa( ".mp3" ); aTa( ".ogg" ); aTa( ".spx" ); aTa( ".wav" );
     aTa( ".wma" ); aTa( ".xm" );
-    audioType->setCheckState( 0, ( i_temp > 0 ) ? 
+    audioType->setCheckState( 0, ( i_temp > 0 ) ?
                               ( ( i_temp == audioType->childCount() ) ?
                                Qt::Checked : Qt::PartiallyChecked )
                             : Qt::Unchecked );
@@ -709,7 +723,7 @@ void SPrefsPanel::assoDialog()
     aTv( ".mpeg1" ); aTv( ".mpeg2" ); aTv( ".mpeg4" ); aTv( ".mpg" );
     aTv( ".mxf" ); aTv( ".ogm" ); aTv( ".ps" ); aTv( ".ts" );
     aTv( ".vob" ); aTv( ".wmv" );
-    videoType->setCheckState( 0, ( i_temp > 0 ) ? 
+    videoType->setCheckState( 0, ( i_temp > 0 ) ?
                               ( ( i_temp == audioType->childCount() ) ?
                                Qt::Checked : Qt::PartiallyChecked )
                             : Qt::Unchecked );
@@ -717,7 +731,7 @@ void SPrefsPanel::assoDialog()
     i_temp = 0;
     aTo( ".asx" ); aTo( ".b4s" ); aTo( ".m3u" ); aTo( ".pls" ); aTo( ".vlc" );
     aTo( ".xspf" );
-    otherType->setCheckState( 0, ( i_temp > 0 ) ? 
+    otherType->setCheckState( 0, ( i_temp > 0 ) ?
                               ( ( i_temp == audioType->childCount() ) ?
                                Qt::Checked : Qt::PartiallyChecked )
                             : Qt::Unchecked );
@@ -746,14 +760,14 @@ void addAsso( QVLCRegistry *qvReg, char *psz_ext )
 
     /* Save a backup if already assigned */
     char *psz_value = qvReg->ReadRegistryString( psz_ext, "", ""  );
-    
+
     if( psz_value && strlen( psz_value ) > 0 )
         qvReg->WriteRegistryString( psz_ext, "VLC.backup", psz_value );
     delete psz_value;
-        
+
     /* Put a "link" to VLC.EXT as default */
     qvReg->WriteRegistryString( psz_ext, "", s_path.c_str() );
-    
+
     /* Create the needed Key if they weren't done in the installer */
     if( !qvReg->RegistryKeyExists( s_path.c_str() ) )
     {
@@ -763,15 +777,15 @@ void addAsso( QVLCRegistry *qvReg, char *psz_ext )
 
         /* Get the installer path */
         QVLCRegistry *qvReg2 = new QVLCRegistry( HKEY_LOCAL_MACHINE );
-        std::string str_temp; str_temp.assign( 
+        std::string str_temp; str_temp.assign(
             qvReg2->ReadRegistryString( "Software\\VideoLAN\\VLC", "", "" ) );
-        
+
         if( str_temp.size() )
         {
             qvReg->WriteRegistryString( s_path.append( "\\Play\\command" ).c_str(),
                 "", str_temp.append(" --started-from-file \"%1\"" ).c_str() );
 
-            qvReg->WriteRegistryString( s_path2.append( "\\DefaultIcon" ).c_str(), 
+            qvReg->WriteRegistryString( s_path2.append( "\\DefaultIcon" ).c_str(),
                         "", str_temp.append(",0").c_str() );
         }
         delete qvReg2;
index 68c0ac2..f7e4e62 100644 (file)
@@ -61,7 +61,7 @@ enum {
     CachingHigher = 500
 };
 
-enum { alsaW = 0, ossW, directxW, fileW, audioOutCoB, normalizerChB };
+enum { alsaW = 0, ossW, directxW, fileW, audioOutCoB, normalizerChB, volLW };
 enum { recordChB, dumpChB, bandwidthChB, timeshiftChB, inputLE, cachingCoB };
 enum { skinRB, qtRB };
 
@@ -115,7 +115,8 @@ private:
 /* Display only the options for the selected audio output */
 private slots:
     void lastfm_Changed( int );
-    void updateAudioOptions( int ); 
+    void updateAudioOptions( int );
+    void updateAudioVolume( int );
 #ifdef SYS_MINGW32
     void assoDialog();
     void saveAsso();
index c2d9d97..fa36853 100644 (file)
         <property name="layoutDirection" >
          <enum>Qt::LeftToRight</enum>
         </property>
+        <property name="maximum" >
+         <number>400</number>
+        </property>
         <property name="orientation" >
          <enum>Qt::Horizontal</enum>
         </property>
        </widget>
       </item>
-      <item row="1" column="0" colspan="3" >
+      <item row="0" column="3" >
+       <widget class="QSpinBox" name="volumeValue" >
+        <property name="toolTip" >
+         <string>_("256 corresponds to 100%, 1024 to 400%)</string>
+        </property>
+        <property name="alignment" >
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+        <property name="readOnly" >
+         <bool>true</bool>
+        </property>
+        <property name="buttonSymbols" >
+         <enum>QAbstractSpinBox::NoButtons</enum>
+        </property>
+        <property name="suffix" >
+         <string> %</string>
+        </property>
+        <property name="maximum" >
+         <number>400</number>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" colspan="4" >
        <widget class="QCheckBox" name="spdifBox" >
         <property name="text" >
          <string>_("Use S/PDIF when available")</string>
         </property>
        </widget>
       </item>
-      <item row="2" column="1" colspan="2" >
+      <item row="2" column="1" colspan="3" >
        <widget class="QComboBox" name="detectionDolby" >
         <property name="sizePolicy" >
          <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
         </property>
        </widget>
       </item>
-      <item row="3" column="1" colspan="2" >
+      <item row="3" column="1" colspan="3" >
        <widget class="QLineEdit" name="preferredAudioLanguage" />
       </item>
      </layout>