X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fmain_interface.hpp;h=b4d25f3ebbeaa92ebc28d1a61d013cd2290dff31;hb=62e75b3f5989547873d9a0bd1daf5b2a2b000e93;hp=77ab8e7102c556f1165844f4413c8770d4054d64;hpb=00eaa2707ccc4d073fca03f728697e308b2f9d4e;p=vlc diff --git a/modules/gui/qt4/main_interface.hpp b/modules/gui/qt4/main_interface.hpp index 77ab8e7102..b4d25f3ebb 100644 --- a/modules/gui/qt4/main_interface.hpp +++ b/modules/gui/qt4/main_interface.hpp @@ -5,6 +5,7 @@ * $Id$ * * Authors: Clément Stenac + * Jean-Baptiste Kempf * * 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 @@ -24,10 +25,9 @@ #ifndef _MAIN_INTERFACE_H_ #define _MAIN_INTERFACE_H_ - #include "qt4.hpp" -#include "ui/main_interface.h" #include "util/qvlcframe.hpp" +#include "components/preferences_widgets.hpp" #include @@ -39,129 +39,147 @@ class QKeyEvent; class QLabel; class QEvent; class InputManager; -class InputSlider; class VideoWidget; class BackgroundWidget; class PlaylistWidget; -class VolumeClickHandler; class VisualSelector; +class AdvControlsWidget; class ControlsWidget; +class FullscreenControllerWidget; +class SpeedControlWidget; class QMenu; class QSize; +//class QDockWidet; +class QProgressBar; + +enum{ + CONTROLS_HIDDEN = 0x0, + CONTROLS_VISIBLE = 0x1, + CONTROLS_ADVANCED = 0x2 +}; class MainInterface : public QVLCMW { Q_OBJECT; + + friend class VolumeClickHandler; + friend class InteractionDialog; + public: MainInterface( intf_thread_t *); virtual ~MainInterface(); + + /* Video requests from core */ void *requestVideo( vout_thread_t *p_nvout, int *pi_x, int *pi_y, unsigned int *pi_width, unsigned int *pi_height ); - void releaseVideo( void *); + void releaseVideo( vout_thread_t *, void * ); int controlVideo( void *p_window, int i_query, va_list args ); + void requestLayoutUpdate(); + + /* Getters */ QSystemTrayIcon *getSysTray() { return sysTray; }; QMenu *getSysTrayMenu() { return systrayMenu; }; + int getControlsVisibilityStatus(); + +#if 0 /* Sizehint() */ + QSize sizeHint() const; +#endif protected: - void resizeEvent( QResizeEvent * ); +// void resizeEvent( QResizeEvent * ); void dropEvent( QDropEvent *); void dragEnterEvent( QDragEnterEvent * ); void dragMoveEvent( QDragMoveEvent * ); void dragLeaveEvent( QDragLeaveEvent * ); void closeEvent( QCloseEvent *); - Ui::MainInterfaceUI ui; - friend class VolumeClickHandler; + private: - QSettings *settings; - QSize mainSize, addSize; - QSystemTrayIcon *sysTray; - QMenu *systrayMenu; - QString input_name; - - bool need_components_update; - void calculateInterfaceSize(); + QSettings *settings; + QSystemTrayIcon *sysTray; + QMenu *systrayMenu; + QString input_name; + QVBoxLayout *mainLayout; + ControlsWidget *controls; + FullscreenControllerWidget *fullscreenControls; + QMenu *speedControlMenu; + SpeedControlWidget *speedControl; + QProgressBar *pgBar; + void handleMainUi( QSettings* ); + void askForPrivacy(); + int privacyDialog( QList controls ); + + /* Systray */ void handleSystray(); - void doComponentsUpdate(); void createSystray(); + void createStatusBar(); + void initSystray(); + /* Video */ VideoWidget *videoWidget; - virtual void keyPressEvent( QKeyEvent *); - virtual void wheelEvent( QWheelEvent * ); - - bool embeddedPlaylistWasActive; - bool videoIsActive; - QSize savedVideoSize; - + // QSize savedVideoSize; BackgroundWidget *bgWidget; VisualSelector *visualSelector; - ControlsWidget *advControls; PlaylistWidget *playlistWidget; +// QDockWidget *dockPL; - bool playlistEmbeddedFlag; - bool videoEmbeddedFlag; - bool alwaysVideoFlag; - bool advControlsEnabled; + bool videoIsActive; ///< Having a video now / THEMIM->hasV + bool videoEmbeddedFlag; ///< Want an external Video Window + bool playlistVisible; ///< Is the playlist visible ? bool visualSelectorEnabled; + bool notificationEnabled; /// Systray Notifications + bool b_remainingTime; /* Show elapsed or remaining time */ + bool bgWasVisible; + int i_visualmode; ///< Visual Mode - InputManager *main_input_manager; - InputSlider *slider; input_thread_t *p_input; ///< Main input associated to the playlist + /* Status Bar */ QLabel *timeLabel; QLabel *speedLabel; QLabel *nameLabel; - void customEvent( QEvent *); + virtual void customEvent( QEvent *); + virtual void keyPressEvent( QKeyEvent *); + virtual void wheelEvent( QWheelEvent * ); + public slots: void undockPlaylist(); - void toggleMenus(); - void playlist(); + void toggleMinimalView(); + void togglePlaylist(); void toggleUpdateSystrayMenu(); + void toggleAdvanced(); + void toggleFullScreen(); + + /* Manage the Video Functions from the vout threads */ + void releaseVideoSlot( void * ); + private slots: - void setNavigation( int ); + void debug(); + void updateOnTimer(); + void doComponentsUpdate(); void setStatus( int ); + void setRate( int ); void setName( QString ); void setVLCWindowsTitle( QString title = "" ); - void setDisplay( float, int, int ); - void updateOnTimer(); - void play(); - void stop(); - void prev(); - void next(); + void setDisplayPosition( float, int, int ); + void toggleTimeDisplay(); +#if 0 void visual(); - void advanced(); - void updateVolume( int sliderVolume ); - void handleSystrayClick( QSystemTrayIcon::ActivationReason ); - void updateSystrayMenu( int ); +#endif + void handleSystrayClick( QSystemTrayIcon::ActivationReason ); void updateSystrayTooltipName( QString ); void updateSystrayTooltipStatus( int ); void showSpeedMenu( QPoint ); - void showTimeMenu( QPoint ); -}; - - -class VolumeClickHandler : public QObject -{ -public: - VolumeClickHandler( intf_thread_t *_p_intf, MainInterface *_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 ); - return true; - } - return false; - } -private: - MainInterface *m; - intf_thread_t *p_intf; +signals: + void askReleaseVideo( void * ); + void askVideoToResize( unsigned int, unsigned int ); + void askVideoToToggle(); + void askBgWidgetToToggle(); + void askUpdate(); }; #endif