X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fmain_interface.hpp;h=bb413fcb08c559f8f81caf68a1e38bc6e88e379c;hb=e8ede98dac1e3be6aec4ba91124e2535f629e7e2;hp=00483ab54b13209de9f896d3f9ef384859894f27;hpb=8b855118289cf0dd99a26b8763ded6e7bbd4447d;p=vlc diff --git a/modules/gui/qt4/main_interface.hpp b/modules/gui/qt4/main_interface.hpp index 00483ab54b..bb413fcb08 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 + +#ifdef _WIN32 #include #endif #include +#include class QSettings; class QCloseEvent; @@ -50,134 +51,173 @@ class ControlsWidget; class InputControlsWidget; class FullscreenControllerWidget; class SpeedControlWidget; +class QVBoxLayout; class QMenu; class QSize; - -enum { - 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 StandardPLPanel; class MainInterface : public QVLCMW { - Q_OBJECT; + Q_OBJECT friend class PlaylistWidget; public: + /* tors */ MainInterface( intf_thread_t *); virtual ~MainInterface(); + static const QEvent::Type ToolbarsNeedRebuild; + /* 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 */ QSystemTrayIcon *getSysTray() { return sysTray; } QMenu *getSysTrayMenu() { return systrayMenu; } + FullscreenControllerWidget* getFullscreenControllerWidget() { return fullscreenControls; } + enum + { + CONTROLS_VISIBLE = 0x1, + CONTROLS_HIDDEN = 0x2, + CONTROLS_ADVANCED = 0x4, + }; int getControlsVisibilityStatus(); - - /* Sizehint() */ - virtual QSize sizeHint() const; + bool isPlDocked() { return ( b_plDocked != false ); } + bool isInterfaceFullScreen() { return b_interfaceFullScreen; } + StandardPLPanel* getPlaylistView(); protected: - void dropEventPlay( QDropEvent *, bool); + void dropEventPlay( QDropEvent* event, bool b_play ) { dropEventPlay(event, b_play, true); } + void dropEventPlay( QDropEvent *, bool, bool ); +#ifdef _WIN32 + virtual bool winEvent( MSG *, long * ); +#endif + virtual void changeEvent( QEvent * ); 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 ); + virtual bool eventFilter(QObject *, QEvent *); 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 ); + void computeMinimumSize(); + /* */ QSettings *settings; QSystemTrayIcon *sysTray; QMenu *systrayMenu; + QString input_name; - QGridLayout *mainLayout; + 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; - -#ifdef WIN32 + QWidget *stackCentralOldWidget; + + QMap stackWidgetsSizes; + + /* Flags */ + unsigned i_notificationSetting; /// Systray Notifications + bool b_autoresize; ///< persistent resizable window + bool b_videoEmbedded; ///< Want an external Video Window + bool b_videoFullScreen; ///< --fullscreen + bool b_hideAfterCreation; + bool b_minimalView; ///< Minimal video + bool b_interfaceFullScreen; + bool b_pauseOnMinimize; + + /* 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 ? + + bool b_hasPausedWhenMinimized; + bool b_statusbarVisible; + +#ifdef _WIN32 HIMAGELIST himl; - LPTASKBARLIST3 p_taskbl; + ITaskbarList3 *p_taskbl; + UINT taskbar_wmsg; void createTaskBarButtons(); #endif + static const Qt::Key kc[10]; /* easter eggs */ + int i_kc_offset; + public slots: - void undockPlaylist(); - void dockPlaylist( pl_dock_e i_pos = PL_BOTTOM ); + void dockPlaylist( bool b_docked = true ); void toggleMinimalView( bool ); void togglePlaylist(); void toggleUpdateSystrayMenu(); - void toggleAdvanced(); - void toggleFullScreen(); + void showUpdateSystrayMenu(); + void hideUpdateSystrayMenu(); + void toggleAdvancedButtons(); + void toggleInterfaceFullScreen(); void toggleFSC(); + + void setStatusBarVisibility(bool b_visible); + void setPlaylistVisibility(bool b_visible); + void popupMenu( const QPoint& ); +#ifdef _WIN32 void changeThumbbarButtons( int ); +#endif /* 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 ); + void emitBoss(); + void emitRaise(); + + void reloadPrefs(); + void toolBarConfUpdated(); + private slots: void debug(); void destroyPopupMenu(); void recreateToolbars(); - void doComponentsUpdate(); void setName( const QString& ); void setVLCWindowsTitle( const QString& title = "" ); #if 0 @@ -186,20 +226,46 @@ private slots: void handleSystrayClick( QSystemTrayIcon::ActivationReason ); void updateSystrayTooltipName( const QString& ); void updateSystrayTooltipStatus( int ); - void showCryptedLabel( bool ); 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 videoSizeChanged( int, int ); + void setVideoFullScreen( bool ); + void setVideoOnTop( bool ); + void setBoss(); + void setRaise(); + 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 ); + void askToQuit(); + void askBoss(); + void askRaise(); + void kc_pressed(); /* easter eggs */ }; #endif