+
+ switch( number )
+ {
+ case SPrefsInputAndCodecs:
+ {
+ /* Device default selection */
+ char *psz_devicepath =
+ qtu( qobject_cast<QLineEdit *>(optionWidgets[inputLE] )->text() );
+ if( !EMPTY_STR( psz_devicepath ) )
+ {
+ config_PutPsz( p_intf, "dvd", psz_devicepath );
+ config_PutPsz( p_intf, "vcd", psz_devicepath );
+ config_PutPsz( p_intf, "cd-audio", psz_devicepath );
+ }
+
+ /* Access filters */
+#define saveBox( name, box ) {\
+ if( box->isChecked() ) { \
+ if( b_first ) { \
+ qs_filter.append( name ); \
+ b_first = false; \
+ } \
+ else qs_filter.append( ":" ).append( name ); \
+ } }
+
+ bool b_first = true;
+ qs_filter.clear();
+ saveBox( "record", qobject_cast<QCheckBox *>(optionWidgets[recordChB]) );
+ saveBox( "dump", qobject_cast<QCheckBox *>(optionWidgets[dumpChB]) );
+ saveBox( "timeshift", qobject_cast<QCheckBox *>(optionWidgets[timeshiftChB]) );
+ saveBox( "bandwidth", qobject_cast<QCheckBox *>(optionWidgets[bandwidthChB] ) );
+ config_PutPsz( p_intf, "access-filter", qtu( qs_filter ) );
+
+#define CaCi( name, int ) config_PutInt( p_intf, name, int * i_comboValue );
+#define CaC( name ) CaCi( name, 1 );
+ /* Caching */
+ QComboBox *cachingCombo = qobject_cast<QComboBox *>(optionWidgets[cachingCoB]);
+ 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" ); CaC( "dvdread-caching" );
+ CaC( "dvdnav-caching" ); CaC( "tcp-caching" ); CaC( "vcd-caching" );
+ CaC( "fake-caching" ); CaC( "cdda-caching" ); CaC( "file-caching" );
+ CaC( "screen-caching" );
+ CaCi( "rtsp-caching", 4 ); CaCi( "ftp-caching", 2 );
+ CaCi( "http-caching", 4 ); CaCi( "realrtsp-caching", 10 );
+ CaCi( "mms-caching", 19 );
+ #ifdef WIN32
+ CaC( "dshow-caching" );
+ #else
+ CaC( "v4l-caching" ); CaC( "jack-input-caching" );
+ CaC( "v4l2-caching" ); CaC( "pvr-caching" );
+ #endif
+ //CaCi( "dv-caching" ) too short...
+ }
+ break;
+ }
+
+ /* Interfaces */
+ case SPrefsInterface:
+ {
+ if( qobject_cast<QRadioButton *>(optionWidgets[skinRB])->isChecked() )
+ config_PutPsz( p_intf, "intf", "skins2" );
+ if( qobject_cast<QRadioButton *>(optionWidgets[qtRB])->isChecked() )
+ config_PutPsz( p_intf, "intf", "qt4" );
+ break;
+ }
+
+ case SPrefsAudio:
+ {
+ bool b_normChecked =
+ 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 ) );
+ break;
+ }
+ }