⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simple_preferences.cpp

📁 VLC Player Source Code
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    {        /* 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 + -