interface_widgets.hpp
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:5k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * interface_widgets.hpp : Custom widgets for the main interface
  3.  ****************************************************************************
  4.  * Copyright (C) 2006-2008 the VideoLAN team
  5.  * $Id: bec4d4badb20700e7a73091c3976be5de3d34922 $
  6.  *
  7.  * Authors: Clément Stenac <zorglub@videolan.org>
  8.  *          Jean-Baptiste Kempf <jb@videolan.org>
  9.  *          Rafaël Carré <funman@videolanorg>
  10.  *
  11.  * This program is free software; you can redistribute it and/or modify
  12.  * it under the terms of the GNU General Public License as published by
  13.  * the Free Software Foundation; either version 2 of the License, or
  14.  * (at your option) any later version.
  15.  *
  16.  * This program is distributed in the hope that it will be useful,
  17.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  * GNU General Public License for more details.
  20.  *
  21.  * You should have received a copy of the GNU General Public License
  22.  * along with this program; if not, write to the Free Software
  23.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  24.  *****************************************************************************/
  25. #ifndef _INTFWIDGETS_H_
  26. #define _INTFWIDGETS_H_
  27. #ifdef HAVE_CONFIG_H
  28. # include "config.h"
  29. #endif
  30. #include "main_interface.hpp" /* Interface integration */
  31. #include "input_manager.hpp"  /* Speed control */
  32. #include "components/controller.hpp"
  33. #include "components/controller_widget.hpp"
  34. //#include <vlc_aout.h> Visualizer
  35. #include <QWidget>
  36. #include <QFrame>
  37. #include <QLabel>
  38. #include <QMouseEvent>
  39. class ResizeEvent;
  40. class QPalette;
  41. class QPixmap;
  42. class QHBoxLayout;
  43. class QMenu;
  44. /******************** Video Widget ****************/
  45. class VideoWidget : public QFrame
  46. {
  47.     Q_OBJECT
  48. friend class MainInterface;
  49. public:
  50.     VideoWidget( intf_thread_t * );
  51.     virtual ~VideoWidget();
  52.     WId request( vout_thread_t *, int *, int *,
  53.                  unsigned int *, unsigned int *, bool );
  54.     void  release( void );
  55.     int   control( void *, int, va_list );
  56.     virtual QSize sizeHint() const;
  57. protected:
  58.     virtual QPaintEngine *paintEngine() const
  59.     {
  60.         return NULL;
  61.     }
  62.     virtual void paintEvent(QPaintEvent *);
  63. private:
  64.     intf_thread_t *p_intf;
  65.     vout_thread_t *p_vout;
  66.     QSize videoSize;
  67. public slots:
  68.     void SetSizing( unsigned int, unsigned int );
  69. };
  70. /******************** Background Widget ****************/
  71. class BackgroundWidget : public QWidget
  72. {
  73.     Q_OBJECT
  74. public:
  75.     BackgroundWidget( intf_thread_t * );
  76.     virtual ~BackgroundWidget();
  77. private:
  78.     QPalette plt;
  79.     QLabel *label;
  80.     virtual void contextMenuEvent( QContextMenuEvent *event );
  81.     intf_thread_t *p_intf;
  82.     virtual void resizeEvent( QResizeEvent * event );
  83. public slots:
  84.     void toggle(){ TOGGLEV( this ); }
  85.     void updateArt( const QString& );
  86. };
  87. #if 0
  88. class VisualSelector : public QFrame
  89. {
  90.     Q_OBJECT
  91. public:
  92.     VisualSelector( intf_thread_t *);
  93.     virtual ~VisualSelector();
  94. private:
  95.     intf_thread_t *p_intf;
  96.     QLabel *current;
  97. private slots:
  98.     void prev();
  99.     void next();
  100. };
  101. #endif
  102. class TimeLabel : public QLabel
  103. {
  104.     Q_OBJECT
  105. public:
  106.     TimeLabel( intf_thread_t *_p_intf );
  107. protected:
  108.     virtual void mousePressEvent( QMouseEvent *event )
  109.     {
  110.         toggleTimeDisplay();
  111.         event->accept();
  112.     }
  113.     virtual void mouseDoubleClickEvent( QMouseEvent *event )
  114.     {
  115.         event->accept();
  116.         toggleTimeDisplay();
  117.         emit timeLabelDoubleClicked();
  118.     }
  119. private:
  120.     intf_thread_t *p_intf;
  121.     bool b_remainingTime;
  122.     void toggleTimeDisplay();
  123. signals:
  124.     void timeLabelDoubleClicked();
  125. private slots:
  126.     void setDisplayPosition( float pos, int time, int length );
  127.     void setCaching( float );
  128. };
  129. class SpeedLabel : public QLabel
  130. {
  131.     Q_OBJECT
  132. public:
  133.     SpeedLabel( intf_thread_t *, const QString&, QWidget * );
  134.     virtual ~SpeedLabel();
  135. protected:
  136.     virtual void mousePressEvent ( QMouseEvent * event )
  137.     {
  138.         showSpeedMenu( event->pos() );
  139.     }
  140. private slots:
  141.     void showSpeedMenu( QPoint );
  142.     void setRate( int );
  143. private:
  144.     intf_thread_t *p_intf;
  145.     QMenu *speedControlMenu;
  146.     SpeedControlWidget *speedControl;
  147. };
  148. /******************** Speed Control Widgets ****************/
  149. class SpeedControlWidget : public QFrame
  150. {
  151.     Q_OBJECT
  152. public:
  153.     SpeedControlWidget( intf_thread_t *, QWidget * );
  154.     void updateControls( int );
  155. private:
  156.     intf_thread_t *p_intf;
  157.     QSlider *speedSlider;
  158. public slots:
  159.     void activateOnState();
  160. private slots:
  161.     void updateRate( int );
  162.     void resetRate();
  163. };
  164. class CoverArtLabel : public QLabel
  165. {
  166.     Q_OBJECT
  167. public:
  168.     CoverArtLabel( QWidget *parent, intf_thread_t * );
  169.     virtual ~CoverArtLabel();
  170. private:
  171.     intf_thread_t *p_intf;
  172. public slots:
  173.     void requestUpdate() { emit updateRequested(); };
  174.     void update( )
  175.     {
  176.         requestUpdate();
  177.     }
  178. private slots:
  179.     void doUpdate();
  180.     void doUpdate( const QString& );
  181. signals:
  182.     void updateRequested();
  183. };
  184. #endif