📄 simple_preferences.cpp
字号:
{ /* 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 ) { CaC( "udp-caching" ); if (module_Exists (p_intf, "dvdread" )) CaC( "dvdread-caching" ); if (module_Exists (p_intf, "dvdnav" )) 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 ); if (module_Exists (p_intf, "access_realrtsp" )) CaCi( "realrtsp-caching", 10 ); CaCi( "mms-caching", 19 ); #ifdef WIN32 CaC( "dshow-caching" ); #else if (module_Exists (p_intf, "v4l" )) CaC( "v4l-caching" ); if (module_Exists (p_intf, "access_jack" )) CaC( "jack-input-caching" ); if (module_Exists (p_intf, "v4l2" )) CaC( "v4l2-caching" ); if (module_Exists (p_intf, "pvr" )) 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; } }}void SPrefsPanel::clean(){}void SPrefsPanel::lastfm_Changed( int i_state ){ if( i_state == Qt::Checked ) config_AddIntf( VLC_OBJECT( p_intf ), "audioscrobbler" ); else if( i_state == Qt::Unchecked ) config_RemoveIntf( VLC_OBJECT( p_intf ), "audioscrobbler" );}#ifdef WIN32#include <QDialogButtonBox>#include <QHeaderView>#include "util/registry.hpp"bool SPrefsPanel::addType( const char * psz_ext, QTreeWidgetItem* current, QTreeWidgetItem* parent, QVLCRegistry *qvReg ){ bool b_temp; const char* psz_VLC = "VLC"; current = new QTreeWidgetItem( parent, QStringList( psz_ext ) ); if( strstr( qvReg->ReadRegistryString( psz_ext, "", "" ), psz_VLC ) ) { current->setCheckState( 0, Qt::Checked ); b_temp = false; } else { current->setCheckState( 0, Qt::Unchecked ); b_temp = true; } listAsso.append( current ); return b_temp;}void SPrefsPanel::assoDialog(){ QDialog *d = new QDialog( this ); QGridLayout *assoLayout = new QGridLayout( d ); QTreeWidget *filetypeList = new QTreeWidget; assoLayout->addWidget( filetypeList, 0, 0, 1, 4 ); filetypeList->header()->hide(); QVLCRegistry * qvReg = new QVLCRegistry( HKEY_CLASSES_ROOT ); QTreeWidgetItem *audioType = new QTreeWidgetItem( QStringList( qtr( "Audio Files" ) ) ); QTreeWidgetItem *videoType = new QTreeWidgetItem( QStringList( qtr( "Video Files" ) ) ); QTreeWidgetItem *otherType = new QTreeWidgetItem( QStringList( qtr( "Playlist Files" ) ) ); filetypeList->addTopLevelItem( audioType ); filetypeList->addTopLevelItem( videoType ); filetypeList->addTopLevelItem( otherType ); audioType->setExpanded( true ); audioType->setCheckState( 0, Qt::Unchecked ); videoType->setExpanded( true ); videoType->setCheckState( 0, Qt::Unchecked ); otherType->setExpanded( true ); otherType->setCheckState( 0, Qt::Unchecked ); QTreeWidgetItem *currentItem; int i_temp = 0;#define aTa( name ) i_temp += addType( name, currentItem, audioType, qvReg )#define aTv( name ) i_temp += addType( name, currentItem, videoType, qvReg )#define aTo( name ) i_temp += addType( name, currentItem, otherType, qvReg ) aTa( ".a52" ); aTa( ".aac" ); aTa( ".ac3" ); aTa( ".dts" ); aTa( ".flac" ); aTa( ".m4a" ); aTa( ".m4p" ); aTa( ".mka" ); aTa( ".mod" ); aTa( ".mp1" ); aTa( ".mp2" ); aTa( ".mp3" ); aTa( ".oma" ); aTa( ".ogg" ); aTa( ".spx" ); aTa( ".wav" ); aTa( ".wma" ); aTa( ".xm" ); audioType->setCheckState( 0, ( i_temp > 0 ) ? ( ( i_temp == audioType->childCount() ) ? Qt::Checked : Qt::PartiallyChecked ) : Qt::Unchecked ); i_temp = 0; aTv( ".asf" ); aTv( ".avi" ); aTv( ".divx" ); aTv( ".dv" ); aTv( ".flv" ); aTv( ".gxf" ); aTv( ".m1v" ); aTv( ".m2v" ); aTv( ".m2ts" ); aTv( ".m4v" ); aTv( ".mkv" ); aTv( ".mov" ); aTv( ".mp2" ); aTv( ".mp4" ); aTv( ".mpeg" ); aTv( ".mpeg1" ); aTv( ".mpeg2" ); aTv( ".mpeg4" ); aTv( ".mpg" ); aTv( ".mts" ); aTv( ".mxf" ); aTv( ".ogm" ); aTv( ".ts" ); aTv( ".vob" ); aTv( ".wmv" ); videoType->setCheckState( 0, ( i_temp > 0 ) ? ( ( i_temp == audioType->childCount() ) ? Qt::Checked : Qt::PartiallyChecked ) : Qt::Unchecked ); i_temp = 0; aTo( ".asx" ); aTo( ".b4s" ); aTo( ".m3u" ); aTo( ".pls" ); aTo( ".vlc" ); aTo( ".xspf" ); otherType->setCheckState( 0, ( i_temp > 0 ) ? ( ( i_temp == audioType->childCount() ) ? Qt::Checked : Qt::PartiallyChecked ) : Qt::Unchecked ); QDialogButtonBox *buttonBox = new QDialogButtonBox( d ); QPushButton *closeButton = new QPushButton( qtr( "&Apply" ) ); QPushButton *clearButton = new QPushButton( qtr( "&Cancel" ) ); buttonBox->addButton( closeButton, QDialogButtonBox::AcceptRole ); buttonBox->addButton( clearButton, QDialogButtonBox::ActionRole ); assoLayout->addWidget( buttonBox, 1, 2, 1, 2 ); CONNECT( closeButton, clicked(), this, saveAsso() ); CONNECT( clearButton, clicked(), d, reject() ); d->resize( 300, 400 ); d->exec(); delete d; delete qvReg; listAsso.clear();}void addAsso( QVLCRegistry *qvReg, char *psz_ext ){ std::string s_path( "VLC" ); s_path += psz_ext; std::string s_path2 = s_path; /* 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() ) ) { qvReg->WriteRegistryString( psz_ext, "", s_path.c_str() ); qvReg->WriteRegistryString( s_path.c_str(), "", "Media file" ); qvReg->WriteRegistryString( s_path.append( "\\shell" ).c_str() , "", "Play" ); /* Get the installer path */ QVLCRegistry *qvReg2 = new QVLCRegistry( HKEY_LOCAL_MACHINE ); 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(), "", str_temp.append(",0").c_str() ); } delete qvReg2; }}void delAsso( QVLCRegistry *qvReg, char *psz_ext ){ char psz_VLC[] = "VLC"; char *psz_value = qvReg->ReadRegistryString( psz_ext, "", "" ); if( psz_value && !strcmp( strcat( psz_VLC, psz_ext ), psz_value ) ) { free( psz_value ); psz_value = qvReg->ReadRegistryString( psz_ext, "VLC.backup", "" ); if( psz_value ) qvReg->WriteRegistryString( psz_ext, "", psz_value ); qvReg->DeleteKey( psz_ext, "VLC.backup" ); } delete( psz_value );}void SPrefsPanel::saveAsso(){ QVLCRegistry * qvReg; for( int i = 0; i < listAsso.size(); i ++ ) { qvReg = new QVLCRegistry( HKEY_CLASSES_ROOT ); if( listAsso[i]->checkState( 0 ) > 0 ) { addAsso( qvReg, qtu( listAsso[i]->text( 0 ) ) ); } else { delAsso( qvReg, qtu( listAsso[i]->text( 0 ) ) ); } } /* Gruik ? Naaah */ qobject_cast<QDialog *>(listAsso[0]->treeWidget()->parent())->accept(); delete qvReg;}#endif /* WIN32 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -