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

📄 interface_widgets.cpp

📁 VLC Player Source Code
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    ABButton->setEnabled( enable );    recordButton->setEnabled( enable );    if( enable && ( i_last_input_id != i_input_id ) )    {        timeA = timeB = 0;        i_last_input_id = i_input_id;        emit timeChanged();    }}void AdvControlsWidget::enableVideo( bool enable ){    snapshotButton->setEnabled( enable );#if 0    frameButton->setEnabled( enable );#endif}void AdvControlsWidget::snapshot(){    vout_thread_t *p_vout =        (vout_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_VOUT, FIND_ANYWHERE );    if( p_vout )    {        vout_Control( p_vout, VOUT_SNAPSHOT );        vlc_object_release( p_vout );    }}/* Function called when the button is clicked() */void AdvControlsWidget::fromAtoB(){    if( !timeA )    {        timeA = var_GetTime( THEMIM->getInput(), "time"  );        emit timeChanged();        return;    }    if( !timeB )    {        timeB = var_GetTime( THEMIM->getInput(), "time"  );        var_SetTime( THEMIM->getInput(), "time" , timeA );        emit timeChanged();        return;    }    timeA = 0;    timeB = 0;    emit timeChanged();}/* setting/synchro icons after click on main or fs controller */void AdvControlsWidget::setIcon(){    if( !timeA && !timeB)    {        ABButton->setIcon( QIcon( ":/atob_nob" ) );        ABButton->setToolTip( qtr( "Loop from point A to point B continuously\nClick to set point A" ) );    }    else if( timeA && !timeB )    {        ABButton->setIcon( QIcon( ":/atob_noa" ) );        ABButton->setToolTip( qtr( "Click to set point B" ) );    }    else if( timeA && timeB )    {        ABButton->setIcon( QIcon( ":/atob" ) );        ABButton->setToolTip( qtr( "Stop the A to B loop" ) );    }}/* Function called regularly when in an AtoB loop */void AdvControlsWidget::AtoBLoop( float f_pos, int i_time, int i_length ){    if( timeB )    {        if( ( i_time >= (int)( timeB/1000000 ) )            || ( i_time < (int)( timeA/1000000 ) ) )            var_SetTime( THEMIM->getInput(), "time" , timeA );    }}void AdvControlsWidget::record(){    input_thread_t *p_input = THEMIM->getInput();    if( p_input )    {        /* This method won't work fine if the stream can't be cut anywhere */        if( var_Type( p_input, "record-toggle" ) == VLC_VAR_VOID )            var_TriggerCallback( p_input, "record-toggle" );#if 0        else        {            /* 'record' access-filter is not loaded, we open Save dialog */            input_item_t *p_item = input_GetItem( p_input );            if( !p_item )                return;            char *psz = input_item_GetURI( p_item );            if( psz )                THEDP->streamingDialog( NULL, psz, true );        }#endif    }}#if 0//FIXME Frame by frame functionvoid AdvControlsWidget::frame(){}#endif/***************************** * DA Control Widget ! *****************************/ControlsWidget::ControlsWidget( intf_thread_t *_p_i,                                MainInterface *_p_mi,                                bool b_advControls,                                bool b_shiny,                                bool b_fsCreation) :                                QFrame( _p_mi ), p_intf( _p_i ){    setSizePolicy( QSizePolicy::Preferred , QSizePolicy::Maximum );    /** The main Slider **/    slider = new InputSlider( Qt::Horizontal, NULL );    /* Update the position when the IM has changed */    CONNECT( THEMIM->getIM(), positionUpdated( float, int, int ),             slider, setPosition( float, int, int ) );    /* And update the IM, when the position has changed */    CONNECT( slider, sliderDragged( float ),             THEMIM->getIM(), sliderUpdate( float ) );    /** Slower and faster Buttons **/    slowerButton = new QToolButton;    slowerButton->setAutoRaise( true );    slowerButton->setMaximumSize( QSize( 26, 20 ) );    BUTTON_SET_ACT( slowerButton, "-", qtr( "Slower" ), slower() );    fasterButton = new QToolButton;    fasterButton->setAutoRaise( true );    fasterButton->setMaximumSize( QSize( 26, 20 ) );    BUTTON_SET_ACT( fasterButton, "+", qtr( "Faster" ), faster() );    /* advanced Controls handling */    b_advancedVisible = b_advControls;    advControls = new AdvControlsWidget( p_intf, b_fsCreation );    if( !b_advancedVisible ) advControls->hide();    /** Disc and Menus handling */    discFrame = new QWidget( this );    QHBoxLayout *discLayout = new QHBoxLayout( discFrame );    discLayout->setSpacing( 0 );    discLayout->setMargin( 0 );    prevSectionButton = new QPushButton( discFrame );    setupSmallButton( prevSectionButton );    discLayout->addWidget( prevSectionButton );    menuButton = new QPushButton( discFrame );    setupSmallButton( menuButton );    discLayout->addWidget( menuButton );    nextSectionButton = new QPushButton( discFrame );    setupSmallButton( nextSectionButton );    discLayout->addWidget( nextSectionButton );    BUTTON_SET_IMG( prevSectionButton, "", dvd_prev, "" );    BUTTON_SET_IMG( nextSectionButton, "", dvd_next, "" );    BUTTON_SET_IMG( menuButton, "", dvd_menu, qtr( "Menu" ) );    discFrame->hide();    /* Change the navigation button display when the IM navigation changes */    CONNECT( THEMIM->getIM(), navigationChanged( int ),             this, setNavigation( int ) );    /* Changes the IM navigation when triggered on the nav buttons */    CONNECT( prevSectionButton, clicked(), THEMIM->getIM(),             sectionPrev() );    CONNECT( nextSectionButton, clicked(), THEMIM->getIM(),             sectionNext() );    CONNECT( menuButton, clicked(), THEMIM->getIM(),             sectionMenu() );    /**     * Telextext QFrame     * TODO: Merge with upper menu in a StackLayout     **/    telexFrame = new QWidget( this );    QHBoxLayout *telexLayout = new QHBoxLayout( telexFrame );    telexLayout->setSpacing( 0 );    telexLayout->setMargin( 0 );    telexOn = new QPushButton;    setupSmallButton( telexOn );    telexLayout->addWidget( telexOn );    telexTransparent = new QPushButton;    setupSmallButton( telexTransparent );    telexLayout->addWidget( telexTransparent );    b_telexTransparent = false;    telexPage = new QSpinBox;    telexPage->setRange( 0, 999 );    telexPage->setValue( 100 );    telexPage->setAccelerated( true );    telexPage->setWrapping( true );    telexPage->setAlignment( Qt::AlignRight );    telexPage->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Minimum );    telexLayout->addWidget( telexPage );    telexFrame->hide(); /* default hidden */    CONNECT( telexPage, valueChanged( int ), THEMIM->getIM(),             telexGotoPage( int ) );    CONNECT( THEMIM->getIM(), setNewTelexPage( int ),              telexPage, setValue( int ) );    BUTTON_SET_IMG( telexOn, "", tv, qtr( "Teletext on" ) );    CONNECT( telexOn, clicked(), THEMIM->getIM(),             telexToggleButtons() );    CONNECT( telexOn, clicked( bool ), THEMIM->getIM(),             telexToggle( bool ) );    CONNECT( THEMIM->getIM(), toggleTelexButtons(),              this, toggleTeletext() );    b_telexEnabled = false;    telexTransparent->setEnabled( false );    telexPage->setEnabled( false );    BUTTON_SET_IMG( telexTransparent, "", tvtelx, qtr( "Teletext" ) );    CONNECT( telexTransparent, clicked( bool ),             THEMIM->getIM(), telexSetTransparency() );    CONNECT( THEMIM->getIM(), toggleTelexTransparency(),              this, toggleTeletextTransparency() );    CONNECT( THEMIM->getIM(), teletextEnabled( bool ),             this, enableTeletext( bool ) );    /** Play Buttons **/    QSizePolicy sizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );    sizePolicy.setHorizontalStretch( 0 );    sizePolicy.setVerticalStretch( 0 );    /* Play */    playButton = new QPushButton;    playButton->setSizePolicy( sizePolicy );    playButton->setMaximumSize( QSize( 36, 36 ) );    playButton->setMinimumSize( QSize( 36, 36 ) );    playButton->setIconSize( QSize( 30, 30 ) );    /** Prev + Stop + Next Block **/    controlButLayout = new QHBoxLayout;    controlButLayout->setSpacing( 0 ); /* Don't remove that, will be useful */    /* Prev */    QPushButton *prevButton = new QPushButton;    prevButton->setSizePolicy( sizePolicy );    setupSmallButton( prevButton );    controlButLayout->addWidget( prevButton );    /* Stop */    QPushButton *stopButton = new QPushButton;    stopButton->setSizePolicy( sizePolicy );    setupSmallButton( stopButton );    controlButLayout->addWidget( stopButton );    /* next */    QPushButton *nextButton = new QPushButton;    nextButton->setSizePolicy( sizePolicy );    setupSmallButton( nextButton );    controlButLayout->addWidget( nextButton );    /* Add this block to the main layout */    BUTTON_SET_ACT_I( playButton, "", play_b, qtr( I_PLAY_TOOLTIP ), play() );    BUTTON_SET_ACT_I( prevButton, "" , previous_b,                      qtr( "Previous media in the playlist" ), prev() );    BUTTON_SET_ACT_I( nextButton, "", next_b,                      qtr( "Next media in the playlist" ), next() );    BUTTON_SET_ACT_I( stopButton, "", stop_b, qtr( "Stop playback" ), stop() );    /*     * Other first Line buttons     */    /* */    CONNECT( THEMIM->getIM(), voutChanged(bool), this, enableVideo(bool) );    /** Fullscreen/Visualisation **/    fullscreenButton = new QPushButton;    BUTTON_SET_ACT_I( fullscreenButton, "", fullscreen,            qtr( "Toggle the video in fullscreen" ), fullscreen() );    setupSmallButton( fullscreenButton );    if( !b_fsCreation )    {        /** Playlist Button **/        playlistButton = new QPushButton;        setupSmallButton( playlistButton );        BUTTON_SET_IMG( playlistButton, "" , playlist, qtr( "Show playlist" ) );        CONNECT( playlistButton, clicked(), _p_mi, togglePlaylist() );        /** extended Settings **/        extSettingsButton = new QPushButton;        BUTTON_SET_ACT_I( extSettingsButton, "", extended,                qtr( "Show extended settings" ), extSettings() );        setupSmallButton( extSettingsButton );    }    /* Volume */    hVolLabel = new VolumeClickHandler( p_intf, this );    volMuteLabel = new QLabel;    volMuteLabel->setPixmap( QPixmap( ":/volume-medium" ) );    volMuteLabel->installEventFilter( hVolLabel );    if( b_shiny )    {        volumeSlider = new SoundSlider( this,            config_GetInt( p_intf, "volume-step" ),            config_GetInt( p_intf, "qt-volume-complete" ),            config_GetPsz( p_intf, "qt-slider-colours" ) );    }    else    {        volumeSlider = new QSlider( this );        volumeSlider->setOrientation( Qt::Horizontal );    }    volumeSlider->setMaximumSize( QSize( 200, 40 ) );    volumeSlider->setMinimumSize( QSize( 85, 30 ) );    volumeSlider->setFocusPolicy( Qt::NoFocus );    /* Set the volume from the config */    volumeSlider->setValue( ( config_GetInt( p_intf, "volume" ) ) *                              VOLUME_MAX / (AOUT_VOLUME_MAX/2) );    /* Force the update at build time in order to have a muted icon if needed */    updateVolume( volumeSlider->value() );    /* Volume control connection */    CONNECT( volumeSlider, valueChanged( int ), this, updateVolume( int ) );    CONNECT( THEMIM, volumeChanged( void ), this, updateVolume( void ) );    if( !b_fsCreation )    {        controlLayout = new QGridLayout( this );        controlLayout->setSpacing( 0 );        controlLayout->setLayoutMargins( 7, 5, 7, 3, 6 );        controlLayout->addWidget( slider, 0, 1, 1, 18 );        controlLayout->addWidget( slowerButton, 0, 0 );        controlLayout->addWidget( fasterButton, 0, 19 );        controlLayout->addWidget( discFrame, 1, 8, 2, 3, Qt::AlignBottom );        controlLayout->addWidget( telexFrame, 1, 8, 2, 5, Qt::AlignBottom );        controlLayout->addWidget( playButton, 2, 0, 2, 2, Qt::AlignBottom );        controlLayout->setColumnMinimumWidth( 2, 10 );        controlLayout->setColumnStretch( 2, 0 );        controlLayout->addLayout( controlButLayout, 3, 3, 1, 3, Qt::AlignBottom );        /* Column 6 is unused */        controlLayout->setColumnStretch( 6, 0 );        controlLayout->setColumnStretch( 7, 0 );        controlLayout->setColumnMinimumWidth( 7, 10 );        controlLayout->addWidget( fullscreenButton, 3, 8, Qt::AlignBottom );        controlLayout->addWidget( playlistButton, 3, 9, Qt::AlignBottom );        controlLayout->addWidget( extSettingsButton, 3, 10, Qt::AlignBottom );        controlLayout->setColumnStretch( 11, 0 ); /* telex alignment */        controlLayout->setColumnStretch( 12, 0 );        controlLayout->setColumnMinimumWidth( 12, 10 );        controlLayout->addWidget( advControls, 3, 13, 1, 3, Qt::AlignBottom );        controlLayout->setColumnStretch( 16, 10 );        controlLayout->setColumnMinimumWidth( 16, 10 );        controlLayout->addWidget( volMuteLabel, 3, 17, Qt::AlignBottom );        controlLayout->addWidget( volumeSlider, 3, 18, 1 , 2, Qt::AlignBottom );    }    updateInput();

⌨️ 快捷键说明

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