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

📄 preferences_widgets.cpp

📁 VLC Player Source Code
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    combo = _combo;    label = _label;    module_config_t *p_module_config = config_FindConfig( p_this, getName() );    finish( p_module_config, bycat );}void StringListConfigControl::finish(module_config_t *p_module_config, bool bycat ){    combo->setEditable( false );    if(!p_module_config) return;    for( int i_index = 0; i_index < p_module_config->i_list; i_index++ )    {        combo->addItem( qfu((p_module_config->ppsz_list_text &&                            p_module_config->ppsz_list_text[i_index])?                            p_module_config->ppsz_list_text[i_index] :                            p_module_config->ppsz_list[i_index] ),                   QVariant( qfu(p_module_config->ppsz_list[i_index] )) );        if( p_item->value.psz && !strcmp( p_module_config->value.psz,                                          p_module_config->ppsz_list[i_index] ) )            combo->setCurrentIndex( combo->count() - 1 );    }    combo->setToolTip( formatTooltip(qtr(p_module_config->psz_longtext)) );    if( label )        label->setToolTip( formatTooltip(qtr(p_module_config->psz_longtext)) );}QString StringListConfigControl::getValue(){    return combo->itemData( combo->currentIndex() ).toString();}void setfillVLCConfigCombo( const char *configname, intf_thread_t *p_intf,                        QComboBox *combo, QWidget *parent ){    module_config_t *p_config =                      config_FindConfig( VLC_OBJECT(p_intf), configname );    if( p_config )    {       if(p_config->pf_update_list)        {            vlc_value_t val;            val.i_int = p_config->value.i;            p_config->pf_update_list(VLC_OBJECT(p_intf), configname, val, val, NULL);            // assume in any case that dirty was set to true            // because lazy programmes will use the same callback for            // this, like the one behind the refresh push button?            p_config->b_dirty = false;        }        for ( int i_index = 0; i_index < p_config->i_list; i_index++ )        {            combo->addItem( qfu( p_config->ppsz_list_text[i_index] ),                    QVariant( p_config->pi_list[i_index] ) );            if( p_config->value.i == p_config->pi_list[i_index] )            {                combo->setCurrentIndex( i_index );            }        }        combo->setToolTip( qfu( p_config->psz_longtext ) );    }}/********* Module **********/ModuleConfigControl::ModuleConfigControl( vlc_object_t *_p_this,               module_config_t *_p_item, QWidget *_parent, bool bycat,               QGridLayout *l, int &line) :               VStringConfigControl( _p_this, _p_item, _parent ){    label = new QLabel( qtr(p_item->psz_text) );    combo = new QComboBox();    combo->setMinimumWidth( MINWIDTH_BOX );    finish( bycat );    if( !l )    {        QHBoxLayout *layout = new QHBoxLayout();        layout->addWidget( label ); layout->addWidget( combo, LAST_COLUMN );        widget->setLayout( layout );    }    else    {        l->addWidget( label, line, 0 );        l->addWidget( combo, line, LAST_COLUMN, Qt::AlignRight );    }}ModuleConfigControl::ModuleConfigControl( vlc_object_t *_p_this,                module_config_t *_p_item, QLabel *_label, QComboBox *_combo,                bool bycat ) : VStringConfigControl( _p_this, _p_item ){    combo = _combo;    label = _label;    finish( bycat );}void ModuleConfigControl::finish( bool bycat ){    vlc_list_t *p_list;    module_t *p_parser;    combo->setEditable( false );    /* build a list of available modules */    p_list = vlc_list_find( p_this, VLC_OBJECT_MODULE, FIND_ANYWHERE );    combo->addItem( qtr("Default") );    for( int i_index = 0; i_index < p_list->i_count; i_index++ )    {        p_parser = (module_t *)p_list->p_values[i_index].p_object ;        if( bycat )        {            if( !strcmp( module_GetObjName( p_parser ), "main" ) ) continue;            unsigned confsize;            module_config_t *p_config;            p_config = module_GetConfig (p_parser, &confsize);             for (size_t i = 0; i < confsize; i++)            {                /* Hack: required subcategory is stored in i_min */                const module_config_t *p_cfg = p_config + i;                if( p_cfg->i_type == CONFIG_SUBCATEGORY &&                    p_cfg->value.i == p_item->min.i )                    combo->addItem( qtr( module_GetLongName( p_parser )),                                    QVariant( module_GetObjName( p_parser ) ) );                if( p_item->value.psz && !strcmp( p_item->value.psz,                                                  module_GetObjName( p_parser ) ) )                    combo->setCurrentIndex( combo->count() - 1 );            }            module_PutConfig (p_config);        }        else if( module_IsCapable( p_parser, p_item->psz_type ) )        {            combo->addItem( qtr(module_GetLongName( p_parser ) ),                            QVariant( module_GetObjName( p_parser ) ) );            if( p_item->value.psz && !strcmp( p_item->value.psz,                                              module_GetObjName( p_parser ) ) )                combo->setCurrentIndex( combo->count() - 1 );        }    }    vlc_list_release( p_list );    combo->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) );    if( label )        label->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) );}QString ModuleConfigControl::getValue(){    return combo->itemData( combo->currentIndex() ).toString();}/********* Module list **********/ModuleListConfigControl::ModuleListConfigControl( vlc_object_t *_p_this,        module_config_t *_p_item, QWidget *_parent, bool bycat,        QGridLayout *l, int &line) :    VStringConfigControl( _p_this, _p_item, _parent ){    groupBox = NULL;    /* Special Hack */    if( !p_item->psz_text ) return;    groupBox = new QGroupBox ( qtr(p_item->psz_text) );    text = new QLineEdit;    QGridLayout *layoutGroupBox = new QGridLayout( groupBox );    finish( bycat );    int boxline = 0;    for( QVector<checkBoxListItem*>::iterator it = modules.begin();            it != modules.end(); it++ )    {        layoutGroupBox->addWidget( (*it)->checkBox, boxline++, 0 );    }    layoutGroupBox->addWidget( text, boxline, 0 );    if( !l )    {        QVBoxLayout *layout = new QVBoxLayout();        layout->addWidget( groupBox, line, 0 );        widget->setLayout( layout );    }    else    {        l->addWidget( groupBox, line, 0, 1, -1 );    }    text->setToolTip( formatTooltip( qtr( p_item->psz_longtext) ) );}ModuleListConfigControl::~ModuleListConfigControl(){    for( QVector<checkBoxListItem*>::iterator it = modules.begin();            it != modules.end(); it++ )    {        delete *it;    }    delete groupBox;}#define CHECKBOX_LISTS \{ \       QCheckBox *cb = new QCheckBox( qtr( module_GetLongName( p_parser ) ) );\       checkBoxListItem *cbl = new checkBoxListItem; \\       CONNECT( cb, stateChanged( int ), this, onUpdate( int ) );\       cb->setToolTip( formatTooltip( qtr( module_GetHelp( p_parser ))));\       cbl->checkBox = cb; \\       cbl->psz_module = strdup( module_GetObjName( p_parser ) ); \       modules.push_back( cbl ); \\       if( p_item->value.psz && strstr( p_item->value.psz, cbl->psz_module ) ) \            cbl->checkBox->setChecked( true ); \}void ModuleListConfigControl::finish( bool bycat ){    vlc_list_t *p_list;    module_t *p_parser;    /* build a list of available modules */    p_list = vlc_list_find( p_this, VLC_OBJECT_MODULE, FIND_ANYWHERE );    for( int i_index = 0; i_index < p_list->i_count; i_index++ )    {        p_parser = (module_t *)p_list->p_values[i_index].p_object ;        if( bycat )        {            if( !strcmp( module_GetObjName( p_parser ), "main" ) ) continue;            unsigned confsize;            module_config_t *p_config = module_GetConfig (p_parser, &confsize);            for (size_t i = 0; i < confsize; i++)            {                module_config_t *p_cfg = p_config + i;                /* Hack: required subcategory is stored in i_min */                if( p_cfg->i_type == CONFIG_SUBCATEGORY &&                        p_cfg->value.i == p_item->min.i )                {                    CHECKBOX_LISTS;                }            }            module_PutConfig (p_config);        }        else if( module_IsCapable( p_parser, p_item->psz_type ) )        {            CHECKBOX_LISTS;        }    }    vlc_list_release( p_list );    text->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) );    assert( groupBox );    groupBox->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) );}#undef CHECKBOX_LISTSQString ModuleListConfigControl::getValue(){    assert( text );    return text->text();}void ModuleListConfigControl::hide(){    for( QVector<checkBoxListItem*>::iterator it = modules.begin();         it != modules.end(); it++ )    {        (*it)->checkBox->hide();    }    groupBox->hide();}void ModuleListConfigControl::show(){    for( QVector<checkBoxListItem*>::iterator it = modules.begin();         it != modules.end(); it++ )    {        (*it)->checkBox->show();    }    groupBox->show();}void ModuleListConfigControl::onUpdate( int value ){    text->clear();    bool first = true;    for( QVector<checkBoxListItem*>::iterator it = modules.begin();         it != modules.end(); it++ )    {        if( (*it)->checkBox->isChecked() )        {            if( first )            {                text->setText( text->text() + (*it)->psz_module );                first = false;            }            else            {                text->setText( text->text() + ":" + (*it)->psz_module );            }        }    }}/************************************************************************** * Integer-based controls *************************************************************************//*********** Integer **************/IntegerConfigControl::IntegerConfigControl( vlc_object_t *_p_this,                                            module_config_t *_p_item,                                            QWidget *_parent, QGridLayout *l,                                            int &line ) :                           VIntConfigControl( _p_this, _p_item, _parent ){    label = new QLabel( qtr(p_item->psz_text) );    spin = new QSpinBox; spin->setMinimumWidth( MINWIDTH_BOX );    spin->setAlignment( Qt::AlignRight );    spin->setMaximumWidth( MINWIDTH_BOX );    finish();    if( !l )    {        QHBoxLayout *layout = new QHBoxLayout();        layout->addWidget( label, 0 ); layout->addWidget( spin, LAST_COLUMN );        widget->setLayout( layout );    }    else    {        l->addWidget( label, line, 0 );        l->addWidget( spin, line, LAST_COLUMN, Qt::AlignRight );    }}IntegerConfigControl::IntegerConfigControl( vlc_object_t *_p_this,                                            module_config_t *_p_item,                                            QLabel *_label, QSpinBox *_spin ) :                                      VIntConfigControl( _p_this, _p_item ){    spin = _spin;    label = _label;    finish();}void IntegerConfigControl::finish(){    spin->setMaximum( 2000000000 );    spin->setMinimum( -2000000000 );    spin->setValue( p_item->value.i );    spin->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) );    if( label )        label->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) );}int IntegerConfigControl::getValue(){    return spin->value();}/********* Integer range **********/IntegerRangeConfigControl::IntegerRangeConfigControl( vlc_object_t *_p_this,                                            module_config_t *_p_item,                                            QWidget *_parent, QGridLayout *l,                                            int &line ) :            IntegerConfigControl( _p_this, _p_item, _parent, l, line ){    finish();}IntegerRangeConfigControl::IntegerRangeConfigControl( vlc_object_t *_p_this,                                            module_config_t *_p_item,                                            QLabel *_label, QSpinBox *_spin ) :            IntegerConfigControl( _p_this, _p_item, _label, _spin ){    finish();}void IntegerRangeConfigControl::finish(){    spin->setMaximum( p_item->max.i );    spin->setMinimum( p_item->min.i );}IntegerRangeSliderConfigControl::IntegerRangeSliderConfigControl(                                            vlc_object_t *_p_this,                                            module_config_t *_p_item,                                            QLabel *_label, QSlider *_slider ):                    VIntConfigControl( _p_this, _p_item ){    slider = _slider;    label = _label;    slider->setMaximum( p_item->max.i );    slider->setMinimum( p_item->min.i );    slider->setValue( p_item->value.i );    slider->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) );    if( label )        label->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) );}int IntegerRangeSliderConfigControl::getValue(){        return slider->value();}/********* Integer / choice list **********/IntegerListConfigControl::IntegerListConfigControl( vlc_object_t *_p_this,               module_config_t *_p_item, QWidget *_parent, bool bycat,               QGridLayout *l, int &line) :               VIntConfigControl( _p_this, _p_item, _parent ){    label = new QLabel( qtr(p_item->psz_text) );    combo = new QComboBox();    combo->setMinimumWidth( MINWIDTH_BOX );    module_config_t *p_module_config = config_FindConfig( p_this, p_item->psz_name );    if(p_module_config && p_module_config->pf_update_list)    {       vlc_value_t val;       val.i_int = p_module_config->value.i;       p_module_config->pf_update_list(p_this, p_item->psz_name, val, val, NULL);       // assume in any case that dirty was set to true       // because lazy programmes will use the same callback for       // this, like the one behind the refresh push button?       p_module_config->b_dirty = false;    }    finish( p_module_config, bycat );    if( !l )    {        QHBoxLayout *layout = new QHBoxLayout();        layout->addWidget( label ); layout->addWidget( combo, LAST_COLUMN );        widget->setLayout( layout );    }    else    {        l->addWidget( label, line, 0 );        l->addWidget( combo, line, LAST_COLUMN, Qt::AlignRight );    }    if( p_item->i_action )    {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -