X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fmain_interface.hpp;h=4ac3acec45c631722613d161231f1937a94327fd;hb=8693ccb6ee8ad45ab3b9f14e689d1a4a75e414d5;hp=d9159ebf25989aac84d46fcc3cb3af7883aa63c5;hpb=df3a146185447ed55adf2a5d59254555bb0f4b48;p=vlc diff --git a/modules/gui/qt4/main_interface.hpp b/modules/gui/qt4/main_interface.hpp index d9159ebf25..4ac3acec45 100644 --- a/modules/gui/qt4/main_interface.hpp +++ b/modules/gui/qt4/main_interface.hpp @@ -1,10 +1,11 @@ /***************************************************************************** * main_interface.hpp : Main Interface **************************************************************************** - * Copyright (C) 2006 the VideoLAN team + * Copyright (C) 2006-2008 the VideoLAN team * $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 @@ -18,47 +19,177 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ #ifndef _MAIN_INTERFACE_H_ #define _MAIN_INTERFACE_H_ -#include -#include "ui/main_interface.h" +#include "qt4.hpp" + #include "util/qvlcframe.hpp" +#include "components/preferences_widgets.hpp" /* First Start */ -class InputManager; +#include + +class QSettings; class QCloseEvent; -class InputSlider; +class QKeyEvent; +class QLabel; +class QEvent; +class InputManager; class VideoWidget; +class BackgroundWidget; +class PlaylistWidget; +class VisualSelector; +class AdvControlsWidget; +class ControlsWidget; +class InputControlsWidget; +class FullscreenControllerWidget; +class SpeedControlWidget; +class QMenu; +class QSize; +class DialogHandler; + +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 MainInterface : public QVLCMW { Q_OBJECT; + + friend class InteractionDialog; + friend class PlaylistWidget; + public: MainInterface( intf_thread_t *); virtual ~MainInterface(); - void resizeEvent( QResizeEvent * ); + /* Video requests from core */ + WId 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( int i_query, va_list args ); + + /* Getters */ + QSystemTrayIcon *getSysTray() { return sysTray; }; + QMenu *getSysTrayMenu() { return systrayMenu; }; + int getControlsVisibilityStatus(); - QSize videoSize, addSize; + /* Sizehint() */ + virtual QSize sizeHint() const; protected: +// void resizeEvent( QResizeEvent * ); + void dropEvent( QDropEvent *); + void dropEventPlay( QDropEvent *, bool); + void dragEnterEvent( QDragEnterEvent * ); + void dragMoveEvent( QDragMoveEvent * ); + void dragLeaveEvent( QDragLeaveEvent * ); void closeEvent( QCloseEvent *); + private: - VideoWidget *videoWidget; - InputManager *main_input_manager; - InputSlider *slider; - /// Main input associated to the playlist - input_thread_t *p_input; - Ui::MainInterfaceUI ui; + QSettings *settings; + QSystemTrayIcon *sysTray; + QMenu *systrayMenu; + QString input_name; + QVBoxLayout *mainLayout; + ControlsWidget *controls; + InputControlsWidget *inputC; + FullscreenControllerWidget *fullscreenControls; + DialogHandler *dialogHandler; + + void handleMainUi( QSettings* ); + void askForPrivacy(); + int privacyDialog( QList *controls ); + + /* Systray */ + void handleSystray(); + void createSystray(); + void initSystray(); + + void createStatusBar(); + + /* 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; + 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; + bool isDocked() { return ( i_pl_dock != PL_UNDOCKED ); } + + /* Status Bar */ + QLabel *nameLabel; +#if 0 + QLabel *cryptedLabel; +#endif + + virtual void customEvent( QEvent *); + virtual void keyPressEvent( QKeyEvent *); + virtual void wheelEvent( QWheelEvent * ); + virtual void resizeEvent( QResizeEvent * event ); + +public slots: + void undockPlaylist(); + void dockPlaylist( pl_dock_e i_pos = PL_BOTTOM ); + void toggleMinimalView( bool ); + void togglePlaylist(); + void toggleUpdateSystrayMenu(); + void toggleAdvanced(); + void toggleFullScreen(); + void toggleFSC(); + void popupMenu(); + + /* Manage the Video Functions from the vout threads */ + void releaseVideoSlot( void ); + private slots: - void setDisplay( float, int, int ); - void updateOnTimer(); - void play(); - void stop(); - void prev(); - void next(); + void debug(); + void doComponentsUpdate(); + void setName( QString ); + void setVLCWindowsTitle( QString title = "" ); +#if 0 + void visual(); +#endif + void handleSystrayClick( QSystemTrayIcon::ActivationReason ); + void updateSystrayTooltipName( QString ); + void updateSystrayTooltipStatus( int ); + +#if 0 + void showCryptedLabel( bool ); +#endif +signals: + void askReleaseVideo( ); + void askVideoToResize( unsigned int, unsigned int ); + void askVideoToShow( unsigned int, unsigned int ); + void askVideoToToggle(); + void askBgWidgetToToggle(); + void askUpdate(); + void minimalViewToggled( bool ); + void fullscreenInterfaceToggled( bool ); }; #endif