X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fmain_interface.hpp;h=689da2b457f1ba30dd0ec09827569f7941d913b9;hb=965c64221f5d91443e9ee2993b758beb132d00d5;hp=748d33ca20c3cc9dd1919f2ea3f224005850ca0f;hpb=c7fb55ac5ee1dac3335dc58d237a7acd8cedb00a;p=vlc diff --git a/modules/gui/qt4/main_interface.hpp b/modules/gui/qt4/main_interface.hpp index 748d33ca20..689da2b457 100644 --- a/modules/gui/qt4/main_interface.hpp +++ b/modules/gui/qt4/main_interface.hpp @@ -1,7 +1,7 @@ /***************************************************************************** * main_interface.hpp : Main Interface **************************************************************************** - * Copyright (C) 2006-2008 the VideoLAN team + * Copyright (C) 2006-2010 VideoLAN and AUTHORS * $Id$ * * Authors: Clément Stenac @@ -22,15 +22,19 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -#ifndef _MAIN_INTERFACE_H_ -#define _MAIN_INTERFACE_H_ +#ifndef QVLC_MAIN_INTERFACE_H_ +#define QVLC_MAIN_INTERFACE_H_ #include "qt4.hpp" #include "util/qvlcframe.hpp" -#include "components/preferences_widgets.hpp" /* First Start */ + +#ifdef WIN32 + #include +#endif #include +#include class QSettings; class QCloseEvent; @@ -47,135 +51,177 @@ class ControlsWidget; class InputControlsWidget; class FullscreenControllerWidget; class SpeedControlWidget; +class QVBoxLayout; class QMenu; class QSize; enum { - CONTROLS_HIDDEN = 0x0, - CONTROLS_VISIBLE = 0x1, - CONTROLS_ADVANCED = 0x2 + CONTROLS_VISIBLE = 0x1, + CONTROLS_HIDDEN = 0x2, + CONTROLS_ADVANCED = 0x4, }; -typedef enum pl_dock_e { - PL_UNDOCKED, - PL_BOTTOM, - PL_RIGHT, - PL_LEFT -} pl_dock_e; class MainInterface : public QVLCMW { - Q_OBJECT; + Q_OBJECT - friend class InteractionDialog; friend class PlaylistWidget; public: + /* tors */ 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 ); - int controlVideo( void *p_window, int i_query, va_list args ); + WId getVideo( int *pi_x, int *pi_y, + unsigned int *pi_width, unsigned int *pi_height ); + void releaseVideo( void ); + int controlVideo( int i_query, va_list args ); /* Getters */ - QSystemTrayIcon *getSysTray() { return sysTray; }; - QMenu *getSysTrayMenu() { return systrayMenu; }; +#ifndef HAVE_MAEMO + QSystemTrayIcon *getSysTray() { return sysTray; } + QMenu *getSysTrayMenu() { return systrayMenu; } +#endif int getControlsVisibilityStatus(); - - /* Sizehint() */ - virtual QSize sizeHint() const; + bool isPlDocked() { return ( b_plDocked != false ); } protected: -// void resizeEvent( QResizeEvent * ); - void dropEvent( QDropEvent *); void dropEventPlay( QDropEvent *, bool); - void dragEnterEvent( QDragEnterEvent * ); - void dragMoveEvent( QDragMoveEvent * ); - void dragLeaveEvent( QDragLeaveEvent * ); - void closeEvent( QCloseEvent *); +#ifdef WIN32 + virtual bool winEvent( MSG *, long * ); +#endif + virtual void dropEvent( QDropEvent *); + virtual void dragEnterEvent( QDragEnterEvent * ); + virtual void dragMoveEvent( QDragMoveEvent * ); + virtual void dragLeaveEvent( QDragLeaveEvent * ); + virtual void closeEvent( QCloseEvent *); + virtual void customEvent( QEvent *); + virtual void keyPressEvent( QKeyEvent *); + virtual void wheelEvent( QWheelEvent * ); private: + /* Main Widgets Creation */ + void createMainWidget( QSettings* ); + void createStatusBar(); + void createPlaylist(); + + /* Systray */ + void createSystray(); + void initSystray(); + void handleSystray(); + + /* Central StackWidget Management */ + void showTab( QWidget *); + void showVideo(); + void restoreStackOldWidget(); + + /* */ QSettings *settings; +#ifndef HAVE_MAEMO QSystemTrayIcon *sysTray; QMenu *systrayMenu; +#endif + QString input_name; QVBoxLayout *mainLayout; ControlsWidget *controls; InputControlsWidget *inputC; FullscreenControllerWidget *fullscreenControls; - void handleMainUi( QSettings* ); - void askForPrivacy(); - int privacyDialog( QList *controls ); - - /* Systray */ - void handleSystray(); - void createSystray(); - void initSystray(); - - void createStatusBar(); + /* Widgets */ + QStackedWidget *stackCentralW; - /* Video */ VideoWidget *videoWidget; - BackgroundWidget *bgWidget; - VisualSelector *visualSelector; PlaylistWidget *playlistWidget; - - 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 bgWasVisible; - int i_visualmode; ///< Visual Mode - pl_dock_e i_pl_dock; - bool isDocked() { return ( i_pl_dock != PL_UNDOCKED ); } - - input_thread_t *p_input; ///< Main input associated to the playlist + //VisualSelector *visualSelector; /* Status Bar */ QLabel *nameLabel; + QLabel *cryptedLabel; + + /* Status and flags */ + QWidget *stackCentralOldWidget; + + QMap stackWidgetsSizes; + + /* Flags */ + bool b_notificationEnabled; /// Systray Notifications + bool b_autoresize; ///< persistent resizeable window + bool b_videoEmbedded; ///< Want an external Video Window + bool b_hideAfterCreation; + int i_visualmode; ///< Visual Mode + + /* States */ + bool playlistVisible; ///< Is the playlist visible ? +// bool videoIsActive; ///< Having a video now / THEMIM->hasV +// bool b_visualSelectorEnabled; + bool b_plDocked; ///< Is the playlist docked ? - virtual void customEvent( QEvent *); - virtual void keyPressEvent( QKeyEvent *); - virtual void wheelEvent( QWheelEvent * ); + +#ifdef WIN32 + HIMAGELIST himl; + LPTASKBARLIST3 p_taskbl; + UINT taskbar_wmsg; + void createTaskBarButtons(); +#endif public slots: - void undockPlaylist(); - void dockPlaylist( pl_dock_e i_pos = PL_BOTTOM ); - void toggleMinimalView(); + void dockPlaylist( bool b_docked = true ); + void toggleMinimalView( bool ); void togglePlaylist(); +#ifndef HAVE_MAEMO void toggleUpdateSystrayMenu(); - void toggleAdvanced(); +#endif + void toggleAdvancedButtons(); void toggleFullScreen(); void toggleFSC(); + void popupMenu( const QPoint& ); + void changeThumbbarButtons( int ); + /* Manage the Video Functions from the vout threads */ + void getVideoSlot( WId *p_id, int *pi_x, int *pi_y, + unsigned *pi_width, unsigned *pi_height ); void releaseVideoSlot( void ); private slots: void debug(); - void doComponentsUpdate(); - void setName( QString ); - void setVLCWindowsTitle( QString title = "" ); + void destroyPopupMenu(); + void recreateToolbars(); + void setName( const QString& ); + void setVLCWindowsTitle( const QString& title = "" ); #if 0 void visual(); #endif +#ifndef HAVE_MAEMO void handleSystrayClick( QSystemTrayIcon::ActivationReason ); - void updateSystrayTooltipName( QString ); + void updateSystrayTooltipName( const QString& ); void updateSystrayTooltipStatus( int ); - void updateRecentsMenu(); +#endif + void showCryptedLabel( bool ); + + void handleKeyPress( QKeyEvent * ); + + void showBuffering( float ); + + void resizeStack( int w, int h ) { + if( !isFullScreen() && !isMaximized() ) + resize( size() - stackCentralW->size() + QSize( w, h ) ); + debug(); } + + signals: + void askGetVideo( WId *p_id, int *pi_x, int *pi_y, + unsigned *pi_width, unsigned *pi_height ); void askReleaseVideo( ); void askVideoToResize( unsigned int, unsigned int ); - void askVideoToToggle(); - void askBgWidgetToToggle(); - void askUpdate(); + void askVideoSetFullScreen( bool ); + void minimalViewToggled( bool ); + void fullscreenInterfaceToggled( bool ); + }; #endif