X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fmain_interface.hpp;h=e2a59852f1bed0494d9d12aa2d2a5955c2e580e2;hb=f8d5652706916e4b7471a6d40f0d1c23854a79a4;hp=0770e898d18c8c40918c38c87f8fd5763e93231c;hpb=3777d840899af412c6bca32cb0cec93fcf37624e;p=vlc diff --git a/modules/gui/qt4/main_interface.hpp b/modules/gui/qt4/main_interface.hpp index 0770e898d1..e2a59852f1 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 @@ -28,12 +28,13 @@ #include "qt4.hpp" #include "util/qvlcframe.hpp" -#include "components/preferences_widgets.hpp" /* First Start */ + #ifdef WIN32 #include #endif #include +#include class QSettings; class QCloseEvent; @@ -60,28 +61,23 @@ enum { 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 PlaylistWidget; public: + /* tors */ MainInterface( intf_thread_t *); virtual ~MainInterface(); /* Video requests from core */ - WId getVideo( int *pi_x, int *pi_y, + 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 ); + void releaseVideo( void ); + int controlVideo( int i_query, va_list args ); /* Getters */ #ifndef HAVE_MAEMO @@ -89,89 +85,107 @@ public: QMenu *getSysTrayMenu() { return systrayMenu; } #endif int getControlsVisibilityStatus(); - - /* Sizehint() */ - virtual QSize sizeHint() const; + bool isPlDocked() { return ( b_plDocked != false ); } + bool isInterfaceFullScreen() { return b_interfaceFullScreen; } protected: void dropEventPlay( QDropEvent *, bool); +#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 * ); - virtual void resizeEvent( QResizeEvent * event ); private: + /* Main Widgets Creation */ void createMainWidget( QSettings* ); void createStatusBar(); - - void askForPrivacy(); - int privacyDialog( QList *controls ); + void createPlaylist(); /* Systray */ - void handleSystray(); void createSystray(); void initSystray(); - bool isDocked() { return ( i_pl_dock != PL_UNDOCKED ); } + void handleSystray(); + + /* Central StackWidget Management */ + void showTab( QWidget *); + void showVideo(); + void restoreStackOldWidget(); + + /* */ + void setMinimalView( bool ); + void setInterfaceFullScreen( bool ); + /* */ QSettings *settings; #ifndef HAVE_MAEMO QSystemTrayIcon *sysTray; QMenu *systrayMenu; #endif + QString input_name; QVBoxLayout *mainLayout; ControlsWidget *controls; InputControlsWidget *inputC; FullscreenControllerWidget *fullscreenControls; - /* Video */ - VideoWidget *videoWidget; + /* Widgets */ + QStackedWidget *stackCentralW; + VideoWidget *videoWidget; BackgroundWidget *bgWidget; - VisualSelector *visualSelector; PlaylistWidget *playlistWidget; + //VisualSelector *visualSelector; /* Status Bar */ QLabel *nameLabel; QLabel *cryptedLabel; /* Status and flags */ - 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; - bool b_keep_size; ///< persistent resizeable window - QSize mainBasedSize; ///< based Wnd (normal mode only) - QSize mainVideoSize; ///< Wnd with video (all modes) - int i_visualmode; ///< Visual Mode - pl_dock_e i_pl_dock; - int i_bg_height; ///< Save height of bgWidget - bool b_shouldHide; + 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_videoFullScreen; ///< --fullscreen + bool b_videoOnTop; ///< --video-on-top + bool b_hideAfterCreation; + bool b_minimalView; ///< Minimal video + bool b_interfaceFullScreen; + + /* 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 ? + #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 dockPlaylist( bool b_docked = true ); void toggleMinimalView( bool ); void togglePlaylist(); #ifndef HAVE_MAEMO void toggleUpdateSystrayMenu(); #endif - void toggleAdvanced(); - void toggleFullScreen(); + void toggleAdvancedButtons(); + void toggleInterfaceFullScreen(); void toggleFSC(); + void popupMenu( const QPoint& ); void changeThumbbarButtons( int ); @@ -184,7 +198,6 @@ private slots: void debug(); void destroyPopupMenu(); void recreateToolbars(); - void doComponentsUpdate(); void setName( const QString& ); void setVLCWindowsTitle( const QString& title = "" ); #if 0 @@ -199,15 +212,30 @@ private slots: void handleKeyPress( QKeyEvent * ); + void showBuffering( float ); + + void resizeStack( int w, int h ) { + if( !isFullScreen() && !isMaximized() ) + if( b_minimalView ) resize( w, h ); /* Oh yes, it shouldn't + be possible that size() - stackCentralW->size() < 0 + since stackCentralW is contained in the QMW... */ + else resize( size() - stackCentralW->size() + QSize( w, h ) ); + debug(); } + + void setVideoSize( unsigned int, unsigned int ); + void setVideoFullScreen( bool ); + void setVideoOnTop( bool ); + 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 askVideoSetFullScreen( bool ); - void askUpdate(); + void askVideoOnTop( bool ); void minimalViewToggled( bool ); void fullscreenInterfaceToggled( bool ); + }; #endif