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

📄 extended_panels.cpp

📁 VLC Player Source Code
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    QString module = ModuleFromWidgetName( sender() );    QCheckBox *checkbox = qobject_cast<QCheckBox*>( sender() );    QGroupBox *groupbox = qobject_cast<QGroupBox*>( sender() );    ChangeVFiltersString( qtu( module ),                          checkbox ? checkbox->isChecked()                                   : groupbox->isChecked() );}void ExtVideo::initComboBoxItems( QObject *widget ){    QComboBox *combobox = qobject_cast<QComboBox*>( widget );    if( !combobox ) return;    QString option = OptionFromWidgetName( widget );    module_config_t *p_item = config_FindConfig( VLC_OBJECT( p_intf ),                                                 qtu( option ) );    if( p_item )    {        int i_type = p_item->i_type & CONFIG_ITEM;        for( int i_index = 0; i_index < p_item->i_list; i_index++ )        {            if( i_type == CONFIG_ITEM_INTEGER             || i_type == CONFIG_ITEM_BOOL )                combobox->addItem( qfu( p_item->ppsz_list_text[i_index] ),                                   p_item->pi_list[i_index] );            else if( i_type == CONFIG_ITEM_STRING )                combobox->addItem( qfu( p_item->ppsz_list_text[i_index] ),                                   p_item->ppsz_list[i_index] );        }    }    else    {        msg_Err( p_intf, "Couldn't find option \"%s\".",                 qtu( option ) );    }}void ExtVideo::setWidgetValue( QObject *widget ){    QString module = ModuleFromWidgetName( widget->parent() );    //std::cout << "Module name: " << module.toStdString() << std::endl;    QString option = OptionFromWidgetName( widget );    //std::cout << "Option name: " << option.toStdString() << std::endl;    vlc_object_t *p_obj = ( vlc_object_t * )        vlc_object_find_name( p_intf->p_libvlc,                              qtu( module ),                              FIND_CHILD );    int i_type;    vlc_value_t val;    if( !p_obj )    {#if 0        msg_Dbg( p_intf,                 "Module instance %s not found, looking in config values.",                 qtu( module ) );#endif        i_type = config_GetType( p_intf, qtu( option ) ) & 0xf0;        switch( i_type )        {            case VLC_VAR_INTEGER:            case VLC_VAR_BOOL:                val.i_int = config_GetInt( p_intf, qtu( option ) );                break;            case VLC_VAR_FLOAT:                val.f_float = config_GetFloat( p_intf, qtu( option ) );                break;            case VLC_VAR_STRING:                val.psz_string = config_GetPsz( p_intf, qtu( option ) );                break;        }    }    else    {        i_type = var_Type( p_obj, qtu( option ) ) & 0xf0;        var_Get( p_obj, qtu( option ), &val );        vlc_object_release( p_obj );    }    /* Try to cast to all the widgets we're likely to encounter. Only     * one of the casts is expected to work. */    QSlider        *slider        = qobject_cast<QSlider*>       ( widget );    QCheckBox      *checkbox      = qobject_cast<QCheckBox*>     ( widget );    QSpinBox       *spinbox       = qobject_cast<QSpinBox*>      ( widget );    QDoubleSpinBox *doublespinbox = qobject_cast<QDoubleSpinBox*>( widget );    QDial          *dial          = qobject_cast<QDial*>         ( widget );    QLineEdit      *lineedit      = qobject_cast<QLineEdit*>     ( widget );    QComboBox      *combobox      = qobject_cast<QComboBox*>     ( widget );    if( i_type == VLC_VAR_INTEGER || i_type == VLC_VAR_BOOL )    {        int i_int = 0;        if( slider )        slider->setValue( val.i_int );        else if( checkbox ) checkbox->setCheckState( val.i_int? Qt::Checked                                                              : Qt::Unchecked );        else if( spinbox )  spinbox->setValue( val.i_int );        else if( dial )     dial->setValue( ( 540-val.i_int )%360 );        else if( lineedit )        {            char str[30];            snprintf( str, sizeof(str), "%06X", val.i_int );            lineedit->setText( str );        }        else if( combobox ) combobox->setCurrentIndex(                            combobox->findData( val.i_int ) );        else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ );    }    else if( i_type == VLC_VAR_FLOAT )    {        double f_float = 0;        if( slider ) slider->setValue( ( int )( val.f_float*( double )slider->tickInterval() ) ); /* hack alert! */        else if( doublespinbox ) doublespinbox->setValue( val.f_float );        else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ );    }    else if( i_type == VLC_VAR_STRING )    {        if( lineedit ) lineedit->setText( qfu( val.psz_string ) );        else if( combobox ) combobox->setCurrentIndex(                            combobox->findData( qfu( val.psz_string ) ) );        else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ );        free( val.psz_string );    }    else        msg_Err( p_intf,                 "Module %s's %s variable is of an unsupported type ( %d )",                 qtu( module ),                 qtu( option ),                 i_type );}void ExtVideo::updateFilterOptions(){    QString module = ModuleFromWidgetName( sender()->parent() );    //std::cout << "Module name: " << module.toStdString() << std::endl;    QString option = OptionFromWidgetName( sender() );    //std::cout << "Option name: " << option.toStdString() << std::endl;    vlc_object_t *p_obj = ( vlc_object_t * )        vlc_object_find_name( p_intf->p_libvlc,                              qtu( module ),                              FIND_CHILD );    int i_type;    bool b_is_command;    if( !p_obj )    {        msg_Warn( p_intf, "Module %s not found. You'll need to restart the filter to take the change into account.", qtu( module ) );        i_type = config_GetType( p_intf, qtu( option ) );        b_is_command = false;    }    else    {        i_type = var_Type( p_obj, qtu( option ) );        b_is_command = ( i_type & VLC_VAR_ISCOMMAND );    }    if( !b_is_command )    {        msg_Warn( p_intf, "Module %s's %s variable isn't a command. You'll need to restart the filter to take change into account.",                 qtu( module ),                 qtu( option ) );        /* FIXME: restart automatically somewhere near the end of this function */    }    /* Try to cast to all the widgets we're likely to encounter. Only     * one of the casts is expected to work. */    QSlider        *slider        = qobject_cast<QSlider*>       ( sender() );    QCheckBox      *checkbox      = qobject_cast<QCheckBox*>     ( sender() );    QSpinBox       *spinbox       = qobject_cast<QSpinBox*>      ( sender() );    QDoubleSpinBox *doublespinbox = qobject_cast<QDoubleSpinBox*>( sender() );    QDial          *dial          = qobject_cast<QDial*>         ( sender() );    QLineEdit      *lineedit      = qobject_cast<QLineEdit*>     ( sender() );    QComboBox      *combobox      = qobject_cast<QComboBox*>     ( sender() );    i_type &= 0xf0;    if( i_type == VLC_VAR_INTEGER || i_type == VLC_VAR_BOOL )    {        int i_int = 0;        if( slider )        i_int = slider->value();        else if( checkbox ) i_int = checkbox->checkState() == Qt::Checked;        else if( spinbox )  i_int = spinbox->value();        else if( dial )     i_int = ( 540-dial->value() )%360;        else if( lineedit ) i_int = lineedit->text().toInt( NULL,16 );        else if( combobox ) i_int = combobox->itemData( combobox->currentIndex() ).toInt();        else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ );        config_PutInt( p_intf, qtu( option ), i_int );        if( b_is_command )        {            if( i_type == VLC_VAR_INTEGER )                var_SetInteger( p_obj, qtu( option ), i_int );            else                var_SetBool( p_obj, qtu( option ), i_int );        }    }    else if( i_type == VLC_VAR_FLOAT )    {        double f_float = 0;        if( slider )             f_float = ( double )slider->value()                                         / ( double )slider->tickInterval(); /* hack alert! */        else if( doublespinbox ) f_float = doublespinbox->value();        else if( lineedit ) f_float = lineedit->text().toDouble();        else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ );        config_PutFloat( p_intf, qtu( option ), f_float );        if( b_is_command )            var_SetFloat( p_obj, qtu( option ), f_float );    }    else if( i_type == VLC_VAR_STRING )    {        char *psz_string = NULL;        if( lineedit ) psz_string = strdup( qtu( lineedit->text() ) );        else if( combobox ) psz_string = strdup( qtu( combobox->itemData(                                       combobox->currentIndex() ).toString() ) );        else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ );        config_PutPsz( p_intf, qtu( option ), psz_string );        if( b_is_command )            var_SetString( p_obj, qtu( option ), psz_string );        free( psz_string );    }    else        msg_Err( p_intf,                 "Module %s's %s variable is of an unsupported type ( %d )",                 qtu( module ),                 qtu( option ),                 i_type );    if( p_obj ) vlc_object_release( p_obj );}#if 0void ExtVideo::gotoConf( QObject* src ){#define SHOWCONF( module ) \    if( src->objectName().contains( module ) ) \    { \        PrefsDialog::getInstance( p_intf )->showModulePrefs( module ); \        return; \    }    SHOWCONF( "clone" );    SHOWCONF( "magnify" );    SHOWCONF( "wave" );    SHOWCONF( "ripple" );    SHOWCONF( "invert" );    SHOWCONF( "puzzle" );    SHOWCONF( "wall" );    SHOWCONF( "gradient" );    SHOWCONF( "colorthres" )}#endif/********************************************************************** * v4l2 controls **********************************************************************/ExtV4l2::ExtV4l2( intf_thread_t *_p_intf, QWidget *_parent )    : QWidget( _parent ), p_intf( _p_intf ){    ui.setupUi( this );    BUTTONACT( ui.refresh, Refresh() );    box = NULL;}ExtV4l2::~ExtV4l2(){    if( box )        delete box;}void ExtV4l2::showEvent( QShowEvent *event ){    QWidget::showEvent( event );    Refresh();}void ExtV4l2::Refresh( void ){    vlc_object_t *p_obj = (vlc_object_t*)vlc_object_find_name( p_intf, "v4l2", FIND_ANYWHERE );    ui.help->hide();    if( box )    {        ui.vboxLayout->removeWidget( box );        delete box;        box = NULL;    }    if( p_obj )    {        vlc_value_t val, text, name;        int i_ret = var_Change( p_obj, "controls", VLC_VAR_GETCHOICES,                                &val, &text );        if( i_ret < 0 )        {            msg_Err( p_intf, "Oops, v4l2 object doesn't have a 'controls' variable." );            ui.help->show();            vlc_object_release( p_obj );            return;        }        box = new QGroupBox( this );        ui.vboxLayout->addWidget( box );        QVBoxLayout *layout = new QVBoxLayout( box );        box->setLayout( layout );        for( int i = 0; i < val.p_list->i_count; i++ )        {            const char *psz_var = text.p_list->p_values[i].psz_string;            var_Change( p_obj, psz_var, VLC_VAR_GETTEXT, &name, NULL );            const char *psz_label = name.psz_string;            msg_Dbg( p_intf, "v4l2 control \"%x\": %s (%s)",                     val.p_list->p_values[i].i_int, psz_var, name.psz_string );            int i_type = var_Type( p_obj, psz_var );            switch( i_type & VLC_VAR_TYPE )            {                case VLC_VAR_INTEGER:                {                    QLabel *label = new QLabel( psz_label, box );                    QHBoxLayout *hlayout = new QHBoxLayout();                    hlayout->addWidget( label );                    int i_val = var_GetInteger( p_obj, psz_var );                    if( i_type & VLC_VAR_HASCHOICE )                    {                        QComboBox *combobox = new QComboBox( box );                        combobox->setObjectName( psz_var );                        vlc_value_t val2, text2;                        var_Change( p_obj, psz_var, VLC_VAR_GETCHOICES,                                    &val2, &text2 );                        for( int j = 0; j < val2.p_list->i_count; j++ )                        {                            combobox->addItem(                                       text2.p_list->p_values[j].psz_string,                                       val2.p_list->p_values[j].i_int );                            if( i_val == val2.p_list->p_values[j].i_int )                                combobox->setCurrentIndex( j );                        }                        var_Change( p_obj, psz_var, VLC_VAR_FREELIST,                                    &val2, &text2 );                        CONNECT( combobox, currentIndexChanged( int ), this,                                 ValueChange( int ) );                        hlayout->addWidget( combobox );                    }                    else                    {                        QSlider *slider = new QSlider( box );                        slider->setObjectName( psz_var );                        slider->setOrientation( Qt::Horizontal );                        vlc_value_t val2;                        var_Change( p_obj, psz_var, VLC_VAR_GETMIN,                                    &val2, NULL );                        slider->setMinimum( val2.i_int );                        var_Change( p_obj, psz_var, VLC_VAR_GETMAX,                                    &val2, NULL );                        slider->setMaximum( val2.i_int );                        var_Change( p_obj, psz_var, VLC_VAR_GETSTEP,                                    &val2, NULL );                        slider->setSingleStep( val2.i_int );                        slider->setValue( i_val );

⌨️ 快捷键说明

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