X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fcomponents%2Fsimple_preferences.cpp;h=28ac5fa33519ddb17b510b5ed83a8b1a8c7fded6;hb=4e9597b800d1140dfab1cf33c3df8c608d58878f;hp=bf3cb54c00d10d084bda8c9541bc2e48171ef4ae;hpb=e5d0cd4f13d7f0c835c8ef425f59ddc416f2bb68;p=vlc diff --git a/modules/gui/qt4/components/simple_preferences.cpp b/modules/gui/qt4/components/simple_preferences.cpp index bf3cb54c00..28ac5fa335 100644 --- a/modules/gui/qt4/components/simple_preferences.cpp +++ b/modules/gui/qt4/components/simple_preferences.cpp @@ -1,8 +1,8 @@ /***************************************************************************** * simple_preferences.cpp : "Simple preferences" **************************************************************************** - * Copyright (C) 2006-2007 the VideoLAN team - * $Id: preferences.cpp 16348 2006-08-25 21:10:10Z zorglub $ + * Copyright (C) 2006-2008 the VideoLAN team + * $Id$ * * Authors: Clément Stenac * Antoine Cellerier @@ -22,6 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ + #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -59,7 +60,7 @@ SPrefsCatList::SPrefsCatList( intf_thread_t *_p_intf, QWidget *_parent ) : #define ADD_CATEGORY( button, label, icon, numb ) \ QToolButton * button = new QToolButton( this ); \ - button->setIcon( QIcon( ":/pixmaps/" #icon ) ); \ + button->setIcon( QIcon( ":/pixmaps/prefs/" #icon ) ); \ button->setIconSize( QSize( ICON_HEIGHT , ICON_HEIGHT ) ); \ button->setText( label ); \ button->setToolButtonStyle( Qt::ToolButtonTextUnderIcon ); \ @@ -74,9 +75,9 @@ 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 & OSD"), + ADD_CATEGORY( SPrefsSubtitles, qtr("Subtitles && OSD"), spref_cone_Subtitles_64.png, 3 ); - ADD_CATEGORY( SPrefsInputAndCodecs, qtr("Input and Codecs"), + ADD_CATEGORY( SPrefsInputAndCodecs, qtr("Input && Codecs"), spref_cone_Input_64.png, 4 ); ADD_CATEGORY( SPrefsHotkeys, qtr("Hotkeys"), spref_cone_Hotkeys_64.png, 5 ); @@ -100,6 +101,7 @@ void SPrefsCatList::switchPanel( int i ) SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, int _number ) : QWidget( _parent ), p_intf( _p_intf ) { +printf( "SPrefsPanel::SPrefsPanel\n" ); module_config_t *p_config; ConfigControl *control; number = _number; @@ -113,6 +115,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 ) \ @@ -127,7 +139,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 ); \ } @@ -167,7 +179,7 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, /****************************** * VIDEO Panel Implementation * ******************************/ - START_SPREFS_CAT( Video , qtr("General video settings") ); + START_SPREFS_CAT( Video , qtr("General Video Settings") ); CONFIG_GENERIC( "video", Bool, NULL, enableVideo ); CONFIG_GENERIC( "fullscreen", Bool, NULL, fullscreen ); @@ -186,7 +198,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 ); @@ -197,22 +209,70 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, /****************************** * AUDIO Panel Implementation * ******************************/ - START_SPREFS_CAT( Audio, qtr("General audio settings") ); + START_SPREFS_CAT( Audio, qtr("General Audio Settings") ); 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 ); @@ -239,28 +299,10 @@ 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 output exists on all platforms */ 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 ); @@ -293,7 +335,9 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, CONNECT( ui.volNormBox, toggled( bool ), ui.volNormSpin, setEnabled( bool ) ); - qs_filter = qfu( config_GetPsz( p_intf, "audio-filter" ) ); + char* psz = config_GetPsz( p_intf, "audio-filter" ); + qs_filter = qfu( psz ); + free( psz ); bool b_normalizer = ( qs_filter.contains( "volnorm" ) ); { ui.volNormBox->setChecked( b_normalizer ); @@ -306,16 +350,15 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, END_SPREFS_CAT; /* Input and Codecs Panel Implementation */ - START_SPREFS_CAT( InputAndCodecs, qtr("Input & Codecs settings") ); + START_SPREFS_CAT( InputAndCodecs, qtr("Input & Codecs Settings") ); /* Disk Devices */ { ui.DVDDevice->setToolTip( - //TODO: make this sentence understandable - qtr( "If this property is blank, then you have\n" - "values for DVD, VCD, and CDDA.\n" - "You can define a unique one or set that in" - "the advanced preferences" ) ); + qtr( "If this property is blank, different values\n" + "for DVD, VCD, and CDDA are set.\n" + "You can define a unique one or configure them \n" + "individually in the advanced preferences." ) ); char *psz_dvddiscpath = config_GetPsz( p_intf, "dvd" ); char *psz_vcddiscpath = config_GetPsz( p_intf, "vcd" ); char *psz_cddadiscpath = config_GetPsz( p_intf, "cd-audio" ); @@ -325,8 +368,9 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, { ui.DVDDevice->setText( qfu( psz_dvddiscpath ) ); } - delete psz_cddadiscpath; delete psz_dvddiscpath; - delete psz_vcddiscpath; + free( psz_cddadiscpath ); + free( psz_dvddiscpath ); + free( psz_vcddiscpath ); } CONFIG_GENERIC_NO_BOOL( "server-port", Integer, NULL, UDPPort ); @@ -340,7 +384,9 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, ui.systemCodecBox->hide(); #endif /* Access Filters */ - qs_filter = qfu( config_GetPsz( p_intf, "access-filter" ) ); + char* psz = config_GetPsz( p_intf, "access-filter" ); + qs_filter = qfu( psz ); + free( psz ); ui.timeshiftBox->setChecked( qs_filter.contains( "timeshift" ) ); ui.dumpBox->setChecked( qs_filter.contains( "dump" ) ); ui.recordBox->setChecked( qs_filter.contains( "record" ) ); @@ -407,11 +453,11 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, /******************* * Interface Panel * *******************/ - START_SPREFS_CAT( Interface, qtr("Interface settings") ); + START_SPREFS_CAT( Interface, qtr("Interface Settings") ); 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 @@ -425,13 +471,12 @@ 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" ) ) ui.qt4->setChecked( true ); } - delete psz_intf; + free( psz_intf ); optionWidgets.append( ui.skins ); optionWidgets.append( ui.qt4 ); @@ -439,14 +484,12 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, CONFIG_GENERIC( "qt-display-mode", IntegerList, NULL, displayModeBox ); CONFIG_GENERIC( "embedded-video", Bool, NULL, embedVideo ); - CONFIG_GENERIC_FILE( "skins2-last", File, NULL, fileSkin, - skinBrowse ); + CONFIG_GENERIC( "qt-fs-controller", Bool, NULL, fsController ); + 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 ); - CONFIG_GENERIC( "security-policy", IntegerList, - ui.netPolicyLabel, netPolicyBox ); /* UPDATE options */ #ifdef UPDATE_CHECK @@ -460,7 +503,7 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, ui.updatesDays->hide(); #endif /* ONE INSTANCE options */ -#if defined( WIN32 ) || defined( HAVE_DBUS_3 ) || defined(__APPLE__) +#if defined( WIN32 ) || defined( HAVE_DBUS ) || defined(__APPLE__) CONFIG_GENERIC( "one-instance", Bool, NULL, OneInterfaceMode ); CONFIG_GENERIC( "playlist-enqueue", Bool, NULL, EnqueueOneInterfaceMode ); @@ -469,13 +512,13 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, #endif END_SPREFS_CAT; - START_SPREFS_CAT( Subtitles, qtr("Subtitles & OSD settings") ); + START_SPREFS_CAT( Subtitles, qtr("Subtitles & On Screen Display Settings") ); CONFIG_GENERIC( "osd", Bool, NULL, OSDBox); 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 ); @@ -513,12 +556,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" ) ); } @@ -533,8 +579,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++ ) @@ -582,7 +626,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" );