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

📄 interface_widgets.hpp

📁 VLC Player Source Code
💻 HPP
字号:
/***************************************************************************** * interface_widgets.hpp : Custom widgets for the main interface **************************************************************************** * Copyright (C) 2006 the VideoLAN team * $Id: 535ca32d020635cdeba89947d78a6bb32558a5ca $ * * Authors: Clément Stenac <zorglub@videolan.org> *          Jean-Baptiste Kempf <jb@videolan.org> *          Rafaël Carré <funman@videolanorg> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/#ifndef _INTFWIDGETS_H_#define _INTFWIDGETS_H_#ifdef HAVE_CONFIG_H# include "config.h"#endif#include <vlc_common.h>#include <vlc_interface.h>#include <vlc_aout.h>#include "qt4.hpp"#include "main_interface.hpp"#include "input_manager.hpp"#include <QWidget>#include <QFrame>class ResizeEvent;class QPalette;class QPixmap;class QLabel;class QHBoxLayout;/******************** Video Widget ****************/class VideoWidget : public QFrame{    Q_OBJECTfriend class MainInterface;public:    VideoWidget( intf_thread_t * );    virtual ~VideoWidget();    void *request( vout_thread_t *, int *, int *,                   unsigned int *, unsigned int * );    void  release( void * );    int   control( void *, int, va_list );    virtual QSize sizeHint() const;private:    intf_thread_t *p_intf;    int i_vout;    QSize videoSize;signals:    void askVideoWidgetToShow( unsigned int, unsigned int );public slots:    void SetSizing( unsigned int, unsigned int );protected:    virtual QPaintEngine *paintEngine() const    {        return NULL;    }    virtual void paintEvent(QPaintEvent *);};/******************** Background Widget ****************/class BackgroundWidget : public QWidget{    Q_OBJECTpublic:    BackgroundWidget( intf_thread_t * );    virtual ~BackgroundWidget();private:    QPalette plt;    QLabel *label;    virtual void contextMenuEvent( QContextMenuEvent *event );    intf_thread_t *p_intf;    virtual void resizeEvent( QResizeEvent * event );public slots:    void toggle(){ TOGGLEV( this ); }    void updateArt( input_item_t* );};#if 0class VisualSelector : public QFrame{    Q_OBJECTpublic:    VisualSelector( intf_thread_t *);    virtual ~VisualSelector();private:    intf_thread_t *p_intf;    QLabel *current;private slots:    void prev();    void next();};#endif/* Advanced Button Bar */class QPushButton;class AdvControlsWidget : public QFrame{    Q_OBJECTpublic:    AdvControlsWidget( intf_thread_t *, bool );    virtual ~AdvControlsWidget();    void enableInput( bool );    void enableVideo( bool );private:    intf_thread_t *p_intf;    QPushButton *recordButton, *ABButton;    QPushButton *snapshotButton, *frameButton;    static mtime_t timeA, timeB;    int i_last_input_id;private slots:    void snapshot();#if 0    void frame();#endif    void fromAtoB();    void record();    void AtoBLoop( float, int, int );    void setIcon();signals:    void timeChanged();};/* Button Bar */class InputSlider;class QSlider;class QGridLayout;class VolumeClickHandler;class SoundSlider;class QAbstractSlider;class QToolButton;class ControlsWidget : public QFrame{    Q_OBJECTpublic:    /* p_intf, advanced control visible or not, blingbling or not */    ControlsWidget( intf_thread_t *_p_i, MainInterface *_p_mi,        bool b_advControls, bool b_shiny, bool b_fsCreation = false);    virtual ~ControlsWidget();    QPushButton *playlistButton;    void setStatus( int );    void enableInput( bool );public slots:    void setNavigation( int );protected:    friend class MainInterface;    friend class VolumeClickHandler;protected:    intf_thread_t       *p_intf;    QWidget             *discFrame;    QWidget             *telexFrame;    QGridLayout         *controlLayout;    InputSlider         *slider;    QPushButton         *prevSectionButton, *nextSectionButton, *menuButton;    QPushButton         *playButton, *fullscreenButton, *extSettingsButton;    QPushButton         *telexTransparent, *telexOn;    QSpinBox            *telexPage;    QToolButton         *slowerButton, *fasterButton;    QHBoxLayout         *controlButLayout;    AdvControlsWidget   *advControls;    QLabel              *volMuteLabel;    QAbstractSlider     *volumeSlider;    VolumeClickHandler  *hVolLabel;    bool                 b_advancedVisible;    bool                 b_telexTransparent;    bool                 b_telexEnabled;protected slots:    void play();    void stop();    void prev();    void next();    void updateVolume( int );    void updateVolume( void );    void updateInput();    void fullscreen();    void extSettings();    void faster();    void slower();    void toggleAdvanced();    void toggleTeletext();    void toggleTeletextTransparency();    void enableTeletext( bool );    void enableVideo( bool );signals:    void advancedControlsToggled( bool );};/* on WIN32 hide() for fullscreen controller doesnt work, so it have to be   done by trick with setting the opacity of window */#ifdef WIN32    #define WIN32TRICK#endif/* to trying transparency with fullscreen controller on windows enable that *//* it can be enabled on-non windows systems,   but it will be transparent only with composite manager */#ifndef WIN32    #define HAVE_TRANSPARENCY 1#else    #define HAVE_TRANSPARENCY 0#endif/* Default value of opacity for FS controller */#define DEFAULT_OPACITY 0.75/*********************************** * Fullscreen controller ***********************************/class FullscreenControllerWidget : public ControlsWidget{    Q_OBJECTpublic:    FullscreenControllerWidget( intf_thread_t *, MainInterface*, bool, bool );    virtual ~FullscreenControllerWidget();    /* */    void attachVout( vout_thread_t *p_vout );    void detachVout();    void fullscreenChanged( vout_thread_t *, bool b_fs, int i_timeout );protected:    friend class MainInterface;    friend class VolumeClickHandler;    virtual void mouseMoveEvent( QMouseEvent *event );    virtual void mousePressEvent( QMouseEvent *event );    virtual void enterEvent( QEvent *event );    virtual void leaveEvent( QEvent *event );    virtual void keyPressEvent( QKeyEvent *event );private slots:    void showFSC();    void planHideFSC();    void hideFSC();    void slowHideFSC();private:    QTimer *p_hideTimer;#if HAVE_TRANSPARENCY    QTimer *p_slowHideTimer;#endif    int i_mouse_last_x;    int i_mouse_last_y;    bool b_mouse_over;    bool b_slow_hide_begin;    int  i_slow_hide_timeout;#ifdef WIN32TRICK    bool b_fscHidden;#endif    virtual void customEvent( QEvent *event );    vout_thread_t *p_vout;    /* Shared variable between FSC and VLC (protected by a lock) */    vlc_mutex_t lock;    bool        b_fullscreen;    int         i_hide_timeout;  /* FSC hiding timeout, same as mouse hiding timeout */};#define VOLUME_MAX 200class VolumeClickHandler : public QObject{public:    VolumeClickHandler( intf_thread_t *_p_intf, ControlsWidget *_m ) :QObject(_m)    {m = _m; p_intf = _p_intf; }    virtual ~VolumeClickHandler() {};    bool eventFilter( QObject *obj, QEvent *e )    {        if (e->type() == QEvent::MouseButtonPress  )        {            aout_VolumeMute( p_intf, NULL );            audio_volume_t i_volume;            aout_VolumeGet( p_intf, &i_volume );            m->updateVolume( i_volume *  VOLUME_MAX / (AOUT_VOLUME_MAX/2) );            return true;        }        return false;    }private:    ControlsWidget *m;    intf_thread_t *p_intf;};#include <QLabel>#include <QMouseEvent>class TimeLabel : public QLabel{    Q_OBJECT    void mousePressEvent( QMouseEvent *event )    {        emit timeLabelClicked();    }    void mouseDoubleClickEvent( QMouseEvent *event )    {        emit timeLabelDoubleClicked();    }signals:    void timeLabelClicked();    void timeLabelDoubleClicked();};class SpeedLabel : public QLabel{    Q_OBJECTpublic:    SpeedLabel( intf_thread_t *_p_intf, const QString text ): QLabel( text)    { p_intf = _p_intf; }protected:    virtual void mouseDoubleClickEvent ( QMouseEvent * event )    {        THEMIM->getIM()->setRate( INPUT_RATE_DEFAULT );    }private:    intf_thread_t *p_intf;};/******************** Speed Control Widgets ****************/class SpeedControlWidget : public QFrame{    Q_OBJECTpublic:    SpeedControlWidget( intf_thread_t *);    virtual ~SpeedControlWidget();    void updateControls( int );private:    intf_thread_t *p_intf;    QSlider *speedSlider;public slots:    void setEnable( bool );private slots:    void updateRate( int );    void resetRate();};class CoverArtLabel : public QLabel{    Q_OBJECTpublic:    CoverArtLabel( vlc_object_t *p_this, input_item_t *p_input = NULL );    virtual ~CoverArtLabel() {};private:    input_item_t *p_input;    vlc_object_t *p_this;    QString prevArt;public slots:    void requestUpdate() { emit updateRequested(); };    void update( input_item_t* p_item )            { p_input = p_item; requestUpdate(); }private slots:    void doUpdate();    void downloadCover();signals:    void updateRequested();};#endif

⌨️ 快捷键说明

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