X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fcomponents%2Fsimple_preferences.cpp;h=25536b41c75f00315d764c094fdc141526bc3614;hb=c75dafab5775afe24fc5f2bd944199bb361d6269;hp=d3aff09c2ee9733849249df5db348015357ec8ad;hpb=28825619153e9637a9d80146ee7d525b1ec920a5;p=vlc diff --git a/modules/gui/qt4/components/simple_preferences.cpp b/modules/gui/qt4/components/simple_preferences.cpp index d3aff09c2e..25536b41c7 100644 --- a/modules/gui/qt4/components/simple_preferences.cpp +++ b/modules/gui/qt4/components/simple_preferences.cpp @@ -2,7 +2,7 @@ * simple_preferences.cpp : "Simple preferences" **************************************************************************** * Copyright (C) 2006-2007 the VideoLAN team - * $Id: preferences.cpp 16348 2006-08-25 21:10:10Z zorglub $ + * $Id$ * * Authors: Clément Stenac * Antoine Cellerier @@ -39,6 +39,8 @@ #include #include +#include + #define ICON_HEIGHT 64 #define BUTTON_HEIGHT 74 @@ -72,7 +74,7 @@ SPrefsCatList::SPrefsCatList( intf_thread_t *_p_intf, QWidget *_parent ) : spref_cone_Interface_64.png, 0 ); ADD_CATEGORY( SPrefsAudio, qtr("Audio"), spref_cone_Audio_64.png, 1 ); ADD_CATEGORY( SPrefsVideo, qtr("Video"), spref_cone_Video_64.png, 2 ); - ADD_CATEGORY( SPrefsSubtitles, qtr("Subtitles"), + ADD_CATEGORY( SPrefsSubtitles, qtr("Subtitles & OSD"), spref_cone_Subtitles_64.png, 3 ); ADD_CATEGORY( SPrefsInputAndCodecs, qtr("Input and Codecs"), spref_cone_Input_64.png, 4 ); @@ -82,7 +84,7 @@ SPrefsCatList::SPrefsCatList( intf_thread_t *_p_intf, QWidget *_parent ) : layout->setMargin( 0 ); layout->setSpacing( 1 ); - this->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); + setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); setLayout( layout ); } @@ -111,6 +113,16 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, controls.append( control ); \ } +#define CONFIG_GENERIC2( option, type, label, qcontrol ) \ + p_config = config_FindConfig( VLC_OBJECT(p_intf), option ); \ + if( p_config ) \ + { \ + control = new type ## ConfigControl( VLC_OBJECT(p_intf), \ + p_config, label, qcontrol, false ); \ + controls.append( control ); \ + } + + #define CONFIG_GENERIC_NO_BOOL( option, type, label, qcontrol ) \ p_config = config_FindConfig( VLC_OBJECT(p_intf), option ); \ if( p_config ) \ @@ -125,7 +137,7 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, if( p_config ) \ { \ control = new type ## ConfigControl( VLC_OBJECT(p_intf), \ - p_config, label, ui.qcontrol, ui.qbutton, \ + p_config, label, qcontrol, qbutton, \ false ); \ controls.append( control ); \ } @@ -184,7 +196,7 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, #endif CONFIG_GENERIC_FILE( "snapshot-path", Directory, NULL, - snapshotsDirectory, snapshotsDirectoryBrowse ); + ui.snapshotsDirectory, ui.snapshotsDirectoryBrowse ); CONFIG_GENERIC( "snapshot-prefix", String, NULL, snapshotsPrefix ); CONFIG_GENERIC( "snapshot-sequential", Bool, NULL, snapshotsSequentialNumbering ); @@ -199,18 +211,66 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, CONFIG_GENERIC( "audio", Bool, NULL, enableAudio ); +#define audioCommon( name ) \ + QWidget * name ## Control = new QWidget( ui.outputAudioBox ); \ + QHBoxLayout * name ## Layout = new QHBoxLayout( name ## Control); \ + name ## Layout->setMargin( 0 ); \ + name ## Layout->setSpacing( 0 ); \ + QLabel * name ## Label = new QLabel( qtr( "Device:" ), name ## Control ); \ + name ## Label->setMinimumSize(QSize(100, 0)); \ + name ## Layout->addWidget( name ## Label ); \ + +#define audioControl( name) \ + audioCommon( name ) \ + QComboBox * name ## Device = new QComboBox( name ## Control ); \ + name ## Layout->addWidget( name ## Device ); \ + name ## Label->setBuddy( name ## Device ); \ + outputAudioLayout->addWidget( name ## Control, outputAudioLayout->rowCount(), 0, 1, -1 ); + +#define audioControl2( name) \ + audioCommon( name ) \ + QLineEdit * name ## Device = new QLineEdit( name ## Control ); \ + name ## Layout->addWidget( name ## Device ); \ + name ## Label->setBuddy( name ## Device ); \ + QPushButton * name ## Browse = new QPushButton( qtr( "Browse..." ), name ## Control); \ + name ## Layout->addWidget( name ## Browse ); \ + outputAudioLayout->addWidget( name ## Control, outputAudioLayout->rowCount(), 0, 1, -1 ); + /* hide if necessary */ -#ifdef WIN32 - ui.OSSControl->hide(); - ui.alsaControl->hide(); -#else - ui.DirectXControl->hide(); -#endif ui.lastfm_user_edit->hide(); ui.lastfm_user_label->hide(); ui.lastfm_pass_edit->hide(); ui.lastfm_pass_label->hide(); + /* Build if necessary */ + QGridLayout * outputAudioLayout = qobject_cast(ui.outputAudioBox->layout()); +#ifdef WIN32 + audioControl( DirectX ); + optionWidgets.append( DirectXControl ); + CONFIG_GENERIC2( "directx-audio-device", IntegerList, + DirectXLabel, DirectXDevice ); +#else + if( module_Exists( p_intf, "alsa" ) ) + { + audioControl( alsa ); + optionWidgets.append( alsaControl ); + + CONFIG_GENERIC2( "alsadev" , StringList , alsaLabel, + alsaDevice ); + } + else + optionWidgets.append( NULL ); + if( module_Exists( p_intf, "oss" ) ) + { + audioControl2( OSS ); + optionWidgets.append( OSSControl ); + CONFIG_GENERIC_FILE( "dspdev" , File , OSSLabel, OSSDevice, + OSSBrowse ); + } + else + optionWidgets.append( NULL ); +#endif + /* General Audio Options */ CONFIG_GENERIC_NO_BOOL( "volume" , IntegerRangeSlider, NULL, defaultVolume ); @@ -221,6 +281,7 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, preferredAudioLanguage ); CONFIG_GENERIC( "spdif", Bool, NULL, spdifBox ); + CONFIG_GENERIC( "qt-autosave-volume", Bool, NULL, saveVolBox ); CONFIG_GENERIC( "force-dolby-surround" , IntegerList , NULL, detectionDolby ); @@ -236,31 +297,17 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, CONNECT( ui.outputModule, currentIndexChanged( int ), this, updateAudioOptions( int ) ); -#ifdef WIN32 - CONFIG_GENERIC( "directx-audio-device", IntegerList, - ui.DirectXLabel, DirectXDevice ); -#else - if( module_Exists( p_intf, "alsa" ) ) - { - CONFIG_GENERIC( "alsadev" , StringList , ui.alsaLabel, - alsaDevice ); - } - if( module_Exists( p_intf, "oss" ) ) - { - CONFIG_GENERIC_FILE( "dspdev" , File , ui.OSSLabel, OSSDevice, - OSSBrowse ); - } -#endif - // File exists everywhere + // File exists everywhere CONFIG_GENERIC_FILE( "audiofile-file" , File , ui.fileLabel, - fileName, fileBrowseButton ); + ui.fileName, ui.fileBrowseButton ); - optionWidgets.append( ui.alsaControl ); - optionWidgets.append( ui.OSSControl ); - optionWidgets.append( ui.DirectXControl ); optionWidgets.append( ui.fileControl ); optionWidgets.append( ui.outputModule ); optionWidgets.append( ui.volNormBox ); + /*Little mofification of ui.volumeValue to compile with Qt < 4.3 */ +#if HAS_QT43 + ui.volumeValue->setButtonSymbols(QAbstractSpinBox::NoButtons); +#endif optionWidgets.append( ui.volumeValue ); updateAudioOptions( ui.outputModule->currentIndex() ); @@ -404,7 +451,7 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, ui.defaultLabel->setFont( italicFont ); ui.skinsLabel->setFont( italicFont ); -#if defined( WIN32 ) || defined (__APPLE__) +#if defined( WIN32 ) CONFIG_GENERIC( "language", StringList, NULL, language ); BUTTONACT( ui.assoButton, assoDialog() ); #else @@ -418,7 +465,6 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, char *psz_intf = config_GetPsz( p_intf, "intf" ); if( psz_intf ) { - msg_Dbg( p_intf, "Interface in config file: %s", psz_intf ); if( strstr( psz_intf, "skin" ) ) ui.skins->setChecked( true ); else if( strstr( psz_intf, "qt" ) ) @@ -429,8 +475,17 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, optionWidgets.append( ui.skins ); optionWidgets.append( ui.qt4 ); - CONFIG_GENERIC( "album-art", IntegerList, ui.artFetchLabel, artFetcher ); + CONFIG_GENERIC( "qt-display-mode", IntegerList, NULL, + displayModeBox ); + CONFIG_GENERIC( "embedded-video", Bool, NULL, embedVideo ); + CONFIG_GENERIC_FILE( "skins2-last", File, NULL, ui.fileSkin, + ui.skinBrowse ); + + CONFIG_GENERIC( "album-art", IntegerList, ui.artFetchLabel, + artFetcher ); CONFIG_GENERIC( "fetch-meta", Bool, NULL, metaFetcher ); + + /* UPDATE options */ #ifdef UPDATE_CHECK CONFIG_GENERIC( "qt-updates-notif", Bool, NULL, updatesBox ); CONFIG_GENERIC_NO_BOOL( "qt-updates-days", Integer, NULL, @@ -441,11 +496,8 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, ui.updatesBox->hide(); ui.updatesDays->hide(); #endif - CONFIG_GENERIC( "qt-always-video", Bool, NULL, qtAlwaysVideo ); - CONFIG_GENERIC( "embeded-video", Bool, NULL, embedVideo ); - CONFIG_GENERIC_FILE( "skins2-last", File, NULL, fileSkin, - skinBrowse ); -#if defined( WIN32 ) || defined( HAVE_DBUS_3 ) || defined(__APPLE__) + /* ONE INSTANCE options */ +#if defined( WIN32 ) || defined( HAVE_DBUS ) || defined(__APPLE__) CONFIG_GENERIC( "one-instance", Bool, NULL, OneInterfaceMode ); CONFIG_GENERIC( "playlist-enqueue", Bool, NULL, EnqueueOneInterfaceMode ); @@ -459,8 +511,8 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, CONFIG_GENERIC( "subsdec-encoding", StringList, NULL, encoding ); CONFIG_GENERIC( "sub-language", String, NULL, preferredLanguage ); - CONFIG_GENERIC_FILE( "freetype-font", File, NULL, font, - fontBrowse ); + CONFIG_GENERIC_FILE( "freetype-font", File, NULL, ui.font, + ui.fontBrowse ); CONFIG_GENERIC( "freetype-color", IntegerList, NULL, fontColor ); CONFIG_GENERIC( "freetype-rel-fontsize", IntegerList, NULL, fontSize ); @@ -498,12 +550,15 @@ void SPrefsPanel::updateAudioOptions( int number) { QString value = qobject_cast(optionWidgets[audioOutCoB]) ->itemData( number ).toString(); - #ifdef WIN32 optionWidgets[directxW]->setVisible( ( value == "directx" ) ); #else - optionWidgets[ossW]->setVisible( ( value == "oss" ) ); - optionWidgets[alsaW]->setVisible( ( value == "alsa" ) ); + /* optionWidgets[ossW] can be NULL */ + if( optionWidgets[ossW] ) + optionWidgets[ossW]->setVisible( ( value == "oss" ) ); + /* optionWidgets[alsaW] can be NULL */ + if( optionWidgets[alsaW] ) + optionWidgets[alsaW]->setVisible( ( value == "alsa" ) ); #endif optionWidgets[fileW]->setVisible( ( value == "aout_file" ) ); } @@ -518,8 +573,6 @@ void SPrefsPanel::updateAudioVolume( int volume ) /* Function called from the main Preferences dialog on each SPrefs Panel */ void SPrefsPanel::apply() { - msg_Dbg( p_intf, "Trying to save the %i simple panel", number ); - /* Generic save for ever panel */ QList::Iterator i; for( i = controls.begin() ; i != controls.end() ; i++ ) @@ -567,7 +620,6 @@ void SPrefsPanel::apply() int i_comboValue = cachingCombo->itemData( cachingCombo->currentIndex() ).toInt(); if( i_comboValue ) { - msg_Dbg( p_intf, "Adjusting all cache values at: %i", i_comboValue ); CaC( "udp-caching" ); if (module_Exists (p_intf, "dvdread" )) CaC( "dvdread-caching" );