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

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * main_interface.hpp : Main Interface
  3.  ****************************************************************************
  4.  * Copyright (C) 2006-2008 the VideoLAN team
  5.  * $Id: c9af6ef56832ebeb05f3bd74ba9361b43afda70f $
  6.  *
  7.  * Authors: Clément Stenac <zorglub@videolan.org>
  8.  *          Jean-Baptiste Kempf <jb@videolan.org>
  9.  *
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License as published by
  12.  * the Free Software Foundation; either version 2 of the License, or
  13.  * (at your option) any later version.
  14.  *
  15.  * This program is distributed in the hope that it will be useful,
  16.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  * GNU General Public License for more details.
  19.  *
  20.  * You should have received a copy of the GNU General Public License
  21.  * along with this program; if not, write to the Free Software
  22.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  23.  *****************************************************************************/
  24. #ifndef QVLC_MAIN_INTERFACE_H_
  25. #define QVLC_MAIN_INTERFACE_H_
  26. #include "qt4.hpp"
  27. #include "util/qvlcframe.hpp"
  28. #include "components/preferences_widgets.hpp" /* First Start */
  29. #include <QSystemTrayIcon>
  30. class QSettings;
  31. class QCloseEvent;
  32. class QKeyEvent;
  33. class QLabel;
  34. class QEvent;
  35. class InputManager;
  36. class VideoWidget;
  37. class BackgroundWidget;
  38. class PlaylistWidget;
  39. class VisualSelector;
  40. class AdvControlsWidget;
  41. class ControlsWidget;
  42. class InputControlsWidget;
  43. class FullscreenControllerWidget;
  44. class SpeedControlWidget;
  45. class QMenu;
  46. class QSize;
  47. enum {
  48.     CONTROLS_VISIBLE = 0x1,
  49.     CONTROLS_HIDDEN = 0x2,
  50.     CONTROLS_ADVANCED = 0x4,
  51. };
  52. typedef enum pl_dock_e {
  53.     PL_UNDOCKED,
  54.     PL_BOTTOM,
  55.     PL_RIGHT,
  56.     PL_LEFT
  57. } pl_dock_e;
  58. class MainInterface : public QVLCMW
  59. {
  60.     Q_OBJECT;
  61.     friend class PlaylistWidget;
  62. public:
  63.     MainInterface( intf_thread_t *);
  64.     virtual ~MainInterface();
  65.     /* Video requests from core */
  66.     WId getVideo( vout_thread_t *p_nvout, int *pi_x, int *pi_y,
  67.                   unsigned int *pi_width, unsigned int *pi_height );
  68.     void releaseVideo( void  );
  69.     int controlVideo( int i_query, va_list args );
  70.     /* Getters */
  71.     QSystemTrayIcon *getSysTray() { return sysTray; };
  72.     QMenu *getSysTrayMenu() { return systrayMenu; };
  73.     int getControlsVisibilityStatus();
  74.     /* Sizehint() */
  75.     virtual QSize sizeHint() const;
  76. protected:
  77.     void dropEventPlay( QDropEvent *, bool);
  78.     virtual void dropEvent( QDropEvent *);
  79.     virtual void dragEnterEvent( QDragEnterEvent * );
  80.     virtual void dragMoveEvent( QDragMoveEvent * );
  81.     virtual void dragLeaveEvent( QDragLeaveEvent * );
  82.     virtual void closeEvent( QCloseEvent *);
  83.     virtual void customEvent( QEvent *);
  84.     virtual void keyPressEvent( QKeyEvent *);
  85.     virtual void wheelEvent( QWheelEvent * );
  86.     virtual void resizeEvent( QResizeEvent * event );
  87. private:
  88.     QSettings           *settings;
  89.     QSystemTrayIcon     *sysTray;
  90.     QMenu               *systrayMenu;
  91.     QString              input_name;
  92.     QVBoxLayout         *mainLayout;
  93.     ControlsWidget      *controls;
  94.     InputControlsWidget *inputC;
  95.     FullscreenControllerWidget *fullscreenControls;
  96.     void createMainWidget( QSettings* );
  97.     void createStatusBar();
  98.     void askForPrivacy();
  99.     int  privacyDialog( QList<ConfigControl *> *controls );
  100.     /* Systray */
  101.     void handleSystray();
  102.     void createSystray();
  103.     void initSystray();
  104.     /* Video */
  105.     VideoWidget         *videoWidget;
  106.     BackgroundWidget    *bgWidget;
  107.     VisualSelector      *visualSelector;
  108.     PlaylistWidget      *playlistWidget;
  109.     bool                 videoIsActive;       ///< Having a video now / THEMIM->hasV
  110.     bool                 videoEmbeddedFlag;   ///< Want an external Video Window
  111.     bool                 playlistVisible;     ///< Is the playlist visible ?
  112.     bool                 visualSelectorEnabled;
  113.     bool                 notificationEnabled; /// Systray Notifications
  114.     bool                 bgWasVisible;
  115.     bool                 b_keep_size;         ///< persistent resizeable window
  116.     QSize                mainBasedSize;       ///< based Wnd (normal mode only)
  117.     QSize                mainVideoSize;       ///< Wnd with video (all modes)
  118.     int                  i_visualmode;        ///< Visual Mode
  119.     pl_dock_e            i_pl_dock;
  120.     bool                 isDocked() { return ( i_pl_dock != PL_UNDOCKED ); }
  121.     int                  i_bg_height;         ///< Save height of bgWidget
  122.     bool                 b_shouldHide;
  123.     /* Status Bar */
  124.     QLabel              *nameLabel;
  125.     QLabel              *cryptedLabel;
  126. public slots:
  127.     void undockPlaylist();
  128.     void dockPlaylist( pl_dock_e i_pos = PL_BOTTOM );
  129.     void toggleMinimalView( bool );
  130.     void togglePlaylist();
  131.     void toggleUpdateSystrayMenu();
  132.     void toggleAdvanced();
  133.     void toggleFullScreen();
  134.     void toggleFSC();
  135.     void popupMenu( const QPoint& );
  136.     /* Manage the Video Functions from the vout threads */
  137.     void getVideoSlot( WId *p_id, vout_thread_t *, int *pi_x, int *pi_y,
  138.                        unsigned *pi_width, unsigned *pi_height );
  139.     void releaseVideoSlot( void );
  140. private slots:
  141.     void debug();
  142.     void destroyPopupMenu();
  143.     void recreateToolbars();
  144.     void doComponentsUpdate();
  145.     void setName( QString );
  146.     void setVLCWindowsTitle( QString title = "" );
  147. #if 0
  148.     void visual();
  149. #endif
  150.     void handleSystrayClick( QSystemTrayIcon::ActivationReason );
  151.     void updateSystrayTooltipName( QString );
  152.     void updateSystrayTooltipStatus( int );
  153.     void showCryptedLabel( bool );
  154. signals:
  155.     void askGetVideo( WId *p_id, vout_thread_t *, int *pi_x, int *pi_y,
  156.                       unsigned *pi_width, unsigned *pi_height );
  157.     void askReleaseVideo( );
  158.     void askVideoToResize( unsigned int, unsigned int );
  159.     void askUpdate();
  160.     void minimalViewToggled( bool );
  161.     void fullscreenInterfaceToggled( bool );
  162. };
  163. #endif