#include <QToolButton>
#include <QButtonGroup>
#include <QVBoxLayout>
+#include <QScrollArea>
#include <QtAlgorithms>
#include <string>
#define ICON_HEIGHT 64
-#define BUTTON_HEIGHT 74
/*********************************************************************
* The List of categories
*********************************************************************/
-SPrefsCatList::SPrefsCatList( intf_thread_t *_p_intf, QWidget *_parent ) :
+SPrefsCatList::SPrefsCatList( intf_thread_t *_p_intf, QWidget *_parent, bool small ) :
QWidget( _parent ), p_intf( _p_intf )
{
QVBoxLayout *layout = new QVBoxLayout();
CONNECT( buttonGroup, buttonClicked ( int ),
this, switchPanel( int ) );
+ short icon_height = small ? ICON_HEIGHT /2 : ICON_HEIGHT;
+
#define ADD_CATEGORY( button, label, icon, numb ) \
QToolButton * button = new QToolButton( this ); \
button->setIcon( QIcon( ":/pixmaps/prefs/" #icon ) ); \
- button->setIconSize( QSize( ICON_HEIGHT , ICON_HEIGHT ) ); \
button->setText( label ); \
button->setToolButtonStyle( Qt::ToolButtonTextUnderIcon ); \
- button->resize( BUTTON_HEIGHT , BUTTON_HEIGHT); \
+ button->setIconSize( QSize( icon_height, icon_height ) ); \
+ button->resize( icon_height + 6 , icon_height + 6 ); \
button->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding) ; \
button->setAutoRaise( true ); \
button->setCheckable( true ); \
* The Panels
*********************************************************************/
SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent,
- int _number ) : QWidget( _parent ), p_intf( _p_intf )
+ int _number, bool small ) : QWidget( _parent ), p_intf( _p_intf )
{
module_config_t *p_config;
ConfigControl *control;
if( p_config ) \
{ \
control = new type ## ConfigControl( VLC_OBJECT(p_intf), \
- p_config, label, qcontrol, qbutton, \
- false ); \
+ p_config, label, qcontrol, qbutton ); \
controls.append( control ); \
}
CONFIG_GENERIC( "video-on-top", Bool, NULL, alwaysOnTop );
CONFIG_GENERIC( "video-deco", Bool, NULL, windowDecorations );
CONFIG_GENERIC( "skip-frames" , Bool, NULL, skipFrames );
- CONFIG_GENERIC( "vout", Module, NULL, outputModule );
+ CONFIG_GENERIC( "vout", Module, ui.voutLabel, outputModule );
#ifdef WIN32
CONFIG_GENERIC( "directx-wallpaper" , Bool , NULL, wallpaperMode );
- CONFIG_GENERIC( "directx-device", StringList, NULL,
+ CONFIG_GENERIC( "directx-device", StringList, ui.dxDeviceLabel,
dXdisplayDevice );
CONFIG_GENERIC( "directx-hw-yuv", Bool, NULL, hwYUVBox );
#else
ui.hwYUVBox->setVisible( false );
#endif
- CONFIG_GENERIC_FILE( "snapshot-path", Directory, NULL,
+ CONFIG_GENERIC( "deinterlace-mode", StringList, ui.deinterLabel, deinterlaceBox );
+ CONFIG_GENERIC( "aspect-ratio", String, ui.arLabel, arLine );
+
+ CONFIG_GENERIC_FILE( "snapshot-path", Directory, ui.dirLabel,
ui.snapshotsDirectory, ui.snapshotsDirectoryBrowse );
- CONFIG_GENERIC( "snapshot-prefix", String, NULL, snapshotsPrefix );
+ CONFIG_GENERIC( "snapshot-prefix", String, ui.prefixLabel, snapshotsPrefix );
CONFIG_GENERIC( "snapshot-sequential", Bool, NULL,
snapshotsSequentialNumbering );
- CONFIG_GENERIC( "snapshot-format", StringList, NULL,
+ CONFIG_GENERIC( "snapshot-format", StringList, ui.arLabel,
snapshotsFormat );
END_SPREFS_CAT;
audioControl( DirectX );
optionWidgets.append( DirectXControl );
CONFIG_GENERIC2( "directx-audio-device", IntegerList,
- DirectXLabel, DirectXDevice );
+ NULL, DirectXDevice );
#else
if( module_exists( "alsa" ) )
{
audioControl( alsa );
optionWidgets.append( alsaControl );
- CONFIG_GENERIC2( "alsa-audio-device" , StringList , alsaLabel,
+ CONFIG_GENERIC2( "alsa-audio-device" , StringList, NULL,
alsaDevice );
}
else
{
audioControl2( OSS );
optionWidgets.append( OSSControl );
- CONFIG_GENERIC_FILE( "oss-audio-device" , File , OSSLabel, OSSDevice,
+ CONFIG_GENERIC_FILE( "oss-audio-device" , File, NULL, OSSDevice,
OSSBrowse );
}
else
CONNECT( ui.defaultVolume, valueChanged( int ),
this, updateAudioVolume( int ) );
- CONFIG_GENERIC( "audio-language" , String , NULL,
+ CONFIG_GENERIC( "audio-language" , String , ui.langLabel,
preferredAudioLanguage );
CONFIG_GENERIC( "spdif", Bool, NULL, spdifBox );
CONFIG_GENERIC( "qt-autosave-volume", Bool, NULL, saveVolBox );
- CONFIG_GENERIC( "force-dolby-surround" , IntegerList , NULL,
+ CONFIG_GENERIC( "force-dolby-surround", IntegerList, ui.dolbyLabel,
detectionDolby );
- CONFIG_GENERIC( "headphone-dolby" , Bool , NULL, headphoneEffect );
-
- CONFIG_GENERIC_NO_BOOL( "norm-max-level" , Float , NULL,
+ CONFIG_GENERIC_NO_BOOL( "norm-max-level" , Float, NULL,
volNormSpin );
- CONFIG_GENERIC( "audio-visual" , Module , NULL, visualisation);
+ CONFIG_GENERIC( "audio-visual" , Module , ui.visuLabel,
+ visualisation);
/* Audio Output Specifics */
- CONFIG_GENERIC( "aout", Module, NULL, outputModule );
+ CONFIG_GENERIC( "aout", Module, ui.outputLabel, outputModule );
CONNECT( ui.outputModule, currentIndexChanged( int ),
this, updateAudioOptions( int ) );
/* File output exists on all platforms */
- CONFIG_GENERIC_FILE( "audiofile-file" , File , ui.fileLabel,
+ CONFIG_GENERIC_FILE( "audiofile-file", File, ui.fileLabel,
ui.fileName, ui.fileBrowseButton );
optionWidgets.append( ui.fileControl );
/*Little mofification of ui.volumeValue to compile with Qt < 4.3 */
ui.volumeValue->setButtonSymbols(QAbstractSpinBox::NoButtons);
optionWidgets.append( ui.volumeValue );
+ optionWidgets.append( ui.headphoneEffect );
updateAudioOptions( ui.outputModule->currentIndex() );
/* LastFM */
ui.lastfm->setChecked( true );
else
ui.lastfm->setChecked( false );
- CONNECT( ui.lastfm, stateChanged( int ), this ,
- lastfm_Changed( int ) );
+ CONNECT( ui.lastfm, stateChanged( int ),
+ this, lastfm_Changed( int ) );
}
else
ui.lastfm->hide();
/* Normalizer */
-
CONNECT( ui.volNormBox, toggled( bool ), ui.volNormSpin,
setEnabled( bool ) );
+
char* psz = config_GetPsz( p_intf, "audio-filter" );
- qs_filter = qfu( psz );
+ qs_filter = qfu( psz ).split( ':', QString::SkipEmptyParts );
free( psz );
- bool b_normalizer = ( qs_filter.contains( "volnorm" ) );
- {
- ui.volNormBox->setChecked( b_normalizer );
- ui.volNormSpin->setEnabled( b_normalizer );
- }
+
+ bool b_enabled = ( qs_filter.contains( "volnorm" ) );
+ ui.volNormBox->setChecked( b_enabled );
+ ui.volNormSpin->setEnabled( b_enabled );
+
+ b_enabled = ( qs_filter.contains( "headphone" ) );
+ ui.headphoneEffect->setChecked( b_enabled );
/* Volume Label */
updateAudioVolume( ui.defaultVolume->value() ); // First time init
free( psz_vcddiscpath );
}
- CONFIG_GENERIC_NO_BOOL( "server-port", Integer, NULL, UDPPort );
- CONFIG_GENERIC( "http-proxy", String , NULL, proxy );
- CONFIG_GENERIC_NO_BOOL( "ffmpeg-pp-q", Integer, NULL, PostProcLevel );
- CONFIG_GENERIC( "avi-index", IntegerList, NULL, AviRepair );
+ CONFIG_GENERIC_NO_BOOL( "server-port", Integer, ui.portLabel,
+ UDPPort );
+ CONFIG_GENERIC( "http-proxy", String , ui.httpProxyLabel, proxy );
+ CONFIG_GENERIC_NO_BOOL( "ffmpeg-pp-q", Integer, ui.ppLabel,
+ PostProcLevel );
+ CONFIG_GENERIC( "avi-index", IntegerList, ui.aviLabel, AviRepair );
CONFIG_GENERIC( "rtsp-tcp", Bool, NULL, RTSP_TCPBox );
#ifdef WIN32
CONFIG_GENERIC( "prefer-system-codecs", Bool, NULL, systemCodecBox );
ui.skinsLabel->setFont( italicFont );
#if defined( WIN32 )
- CONFIG_GENERIC( "language", StringList, NULL, language );
+ CONFIG_GENERIC( "language", StringList, ui.languageLabel, language );
BUTTONACT( ui.assoButton, assoDialog() );
#else
ui.language->hide();
optionWidgets.append( ui.skins );
optionWidgets.append( ui.qt4 );
- CONFIG_GENERIC( "qt-display-mode", IntegerList, NULL,
+ CONFIG_GENERIC( "qt-display-mode", IntegerList, ui.displayLabel,
displayModeBox );
CONFIG_GENERIC( "embedded-video", Bool, NULL, embedVideo );
CONFIG_GENERIC( "qt-fs-controller", Bool, NULL, fsController );
CONFIG_GENERIC( "qt-system-tray", Bool, NULL, systrayBox );
- CONFIG_GENERIC_FILE( "skins2-last", File, NULL, ui.fileSkin,
- ui.skinBrowse );
+ CONFIG_GENERIC_FILE( "skins2-last", File, ui.skinFileLabel,
+ ui.fileSkin, ui.skinBrowse );
CONFIG_GENERIC( "album-art", IntegerList, ui.artFetchLabel,
artFetcher );
ui.recentlyPlayedFilters, setEnabled( bool ) );
ui.recentlyPlayedFilters->setEnabled( false );
CONFIG_GENERIC( "qt-recentplay", Bool, NULL, saveRecentlyPlayed );
- CONFIG_GENERIC( "qt-recentplay-filter", String, NULL,
+ CONFIG_GENERIC( "qt-recentplay-filter", String, ui.filterLabel,
recentlyPlayedFilters );
END_SPREFS_CAT;
- START_SPREFS_CAT( Subtitles, qtr("Subtitles & On Screen Display Settings") );
+ START_SPREFS_CAT( Subtitles,
+ qtr("Subtitles & On Screen Display Settings") );
CONFIG_GENERIC( "osd", Bool, NULL, OSDBox);
CONFIG_GENERIC( "video-title-show", Bool, NULL, OSDTitleBox);
- CONFIG_GENERIC( "subsdec-encoding", StringList, NULL, encoding );
- CONFIG_GENERIC( "sub-language", String, NULL, preferredLanguage );
- CONFIG_GENERIC_FILE( "freetype-font", File, NULL, ui.font,
+ CONFIG_GENERIC( "subsdec-encoding", StringList, ui.encodLabel,
+ encoding );
+ CONFIG_GENERIC( "sub-language", String, ui.subLangLabel,
+ preferredLanguage );
+ CONFIG_GENERIC_FILE( "freetype-font", File, ui.fontLabel, ui.font,
ui.fontBrowse );
- CONFIG_GENERIC( "freetype-color", IntegerList, NULL, fontColor );
- CONFIG_GENERIC( "freetype-rel-fontsize", IntegerList, NULL,
- fontSize );
- CONFIG_GENERIC( "freetype-effect", IntegerList, NULL, effect );
- CONFIG_GENERIC_NO_BOOL( "sub-margin", Integer, NULL, subsPosition );
+ CONFIG_GENERIC( "freetype-color", IntegerList, ui.fontColorLabel,
+ fontColor );
+ CONFIG_GENERIC( "freetype-rel-fontsize", IntegerList,
+ ui.fontSizeLabel, fontSize );
+ CONFIG_GENERIC( "freetype-effect", IntegerList, ui.fontEffectLabel,
+ effect );
+ CONFIG_GENERIC_NO_BOOL( "sub-margin", Integer, ui.subsPosLabel, subsPosition );
END_SPREFS_CAT;
panel_layout->addWidget( panel_label );
panel_layout->addWidget( title_line );
- panel_layout->addWidget( panel );
- if( number != SPrefsHotkeys ) panel_layout->addStretch( 2 );
+
+ if( small )
+ {
+ QScrollArea *scroller= new QScrollArea;
+ scroller->setWidget( panel );
+ scroller->setWidgetResizable( true );
+ scroller->setFrameStyle( QFrame::NoFrame );
+ panel_layout->addWidget( scroller );
+ }
+ else
+ {
+ panel_layout->addWidget( panel );
+ if( number != SPrefsHotkeys ) panel_layout->addStretch( 2 );
+ }
setLayout( panel_layout );
}
case SPrefsInputAndCodecs:
{
/* Device default selection */
- char *psz_devicepath =
+ const char *psz_devicepath =
qtu( qobject_cast<QLineEdit *>(optionWidgets[inputLE] )->text() );
if( !EMPTY_STR( psz_devicepath ) )
{
CaC( "dvdnav-caching" );
CaC( "tcp-caching" ); CaC( "vcd-caching" );
CaC( "fake-caching" ); CaC( "cdda-caching" ); CaC( "file-caching" );
- CaC( "screen-caching" );
+ CaC( "screen-caching" ); Cac( "bd-caching" );
CaCi( "rtsp-caching", 2 ); CaCi( "ftp-caching", 2 );
CaCi( "http-caching", 2 );
if (module_exists ("access_realrtsp" ))
case SPrefsAudio:
{
- bool b_normChecked =
+ bool b_checked =
qobject_cast<QCheckBox *>(optionWidgets[normalizerChB])->isChecked();
- if( qs_filter.isEmpty() )
- {
- /* the psz_filter is already empty, so we just append it needed */
- if( b_normChecked ) qs_filter = "volnorm";
- }
- else /* Not Empty */
- {
- if( qs_filter.contains( "volnorm" ) )
- {
- /* The qs_filter not empty and contains "volnorm"
- that we have to remove */
- if( !b_normChecked )
- {
- /* Ugly :D */
- qs_filter.remove( "volnorm:" );
- qs_filter.remove( ":volnorm" );
- qs_filter.remove( "volnorm" );
- }
- }
- else /* qs_filter not empty, but doesn't have volnorm inside */
- if( b_normChecked ) qs_filter.append( ":volnorm" );
- }
- config_PutPsz( p_intf, "audio-filter", qtu( qs_filter ) );
+ if( b_checked && !qs_filter.contains( "volnorm" ) )
+ qs_filter.append( "volnorm" );
+ if( !b_checked && qs_filter.contains( "volnorm" ) )
+ qs_filter.removeAll( "volnorm" );
+
+ b_checked =
+ qobject_cast<QCheckBox *>(optionWidgets[headphoneB])->isChecked();
+
+ if( b_checked && !qs_filter.contains( "headphone" ) )
+ qs_filter.append( "headphone" );
+ if( !b_checked && qs_filter.contains( "headphone" ) )
+ qs_filter.removeAll( "headphone" );
+
+ config_PutPsz( p_intf, "audio-filter", qtu( qs_filter.join( ":" ) ) );
break;
}
}
listAsso.clear();
}
-void addAsso( QVLCRegistry *qvReg, char *psz_ext )
+void addAsso( QVLCRegistry *qvReg, const char *psz_ext )
{
std::string s_path( "VLC" ); s_path += psz_ext;
std::string s_path2 = s_path;
}
}
-void delAsso( QVLCRegistry *qvReg, char *psz_ext )
+void delAsso( QVLCRegistry *qvReg, const char *psz_ext )
{
char psz_VLC[] = "VLC";
char *psz_value = qvReg->ReadRegistryString( psz_ext, "", "" );