X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fmain_interface.hpp;h=274d4a96f034a21edef96a32d37a60b2089340b5;hb=b15fc71ae49839e24fb90e92e86dc87fcc48b9a4;hp=9ef47af394d724c505d4b973d043f29bc68a8484;hpb=2b60288a8db042caf7d6499aff78f1ffbdf2876c;p=vlc diff --git a/modules/gui/qt4/main_interface.hpp b/modules/gui/qt4/main_interface.hpp index 9ef47af394..274d4a96f0 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-2007 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,20 +19,18 @@ * * 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_ +#ifndef QVLC_MAIN_INTERFACE_H_ +#define QVLC_MAIN_INTERFACE_H_ #include "qt4.hpp" -#include -#include "ui/main_interface.h" + #include "util/qvlcframe.hpp" +#include "components/preferences_widgets.hpp" /* First Start */ -#include #include -#include class QSettings; class QCloseEvent; @@ -39,119 +38,158 @@ 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 InputControlsWidget; +class FullscreenControllerWidget; +class SpeedControlWidget; 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 MainInterface : public QVLCMW { Q_OBJECT; + + friend class PlaylistWidget; + public: MainInterface( intf_thread_t *); virtual ~MainInterface(); - 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 ); - void setVLCWindowsTitle( QString title = "" ); + /* Video requests from core */ + 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; }; + int getControlsVisibilityStatus(); + + /* Sizehint() */ + virtual QSize sizeHint() const; + protected: - void resizeEvent( QResizeEvent * ); - void dropEvent( QDropEvent *); - void dragEnterEvent( QDragEnterEvent * ); - void dragMoveEvent( QDragMoveEvent * ); - void dragLeaveEvent( QDragLeaveEvent * ); - void closeEvent( QCloseEvent *); - Ui::MainInterfaceUI ui; - friend class VolumeClickHandler; + void dropEventPlay( QDropEvent *, bool); + 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: - QSettings *settings; - QSize mainSize, addSize; - QSystemTrayIcon *sysTray; - QMenu *systrayMenu; - - bool need_components_update; - void calculateInterfaceSize(); - void handleMainUi( QSettings* ); + QSettings *settings; + QSystemTrayIcon *sysTray; + QMenu *systrayMenu; + QString input_name; + QGridLayout *mainLayout; + ControlsWidget *controls; + InputControlsWidget *inputC; + FullscreenControllerWidget *fullscreenControls; + + void createMainWidget( QSettings* ); + void createStatusBar(); + + void askForPrivacy(); + int privacyDialog( QList *controls ); + + /* Systray */ void handleSystray(); - void doComponentsUpdate(); - void createSystrayMenu(); + void createSystray(); + void initSystray(); + /* Video */ VideoWidget *videoWidget; - virtual void keyPressEvent( QKeyEvent *); - virtual void wheelEvent( QWheelEvent * ); - - bool embeddedPlaylistWasActive; - bool videoIsActive; - QSize savedVideoSize; - BackgroundWidget *bgWidget; VisualSelector *visualSelector; - ControlsWidget *advControls; PlaylistWidget *playlistWidget; - 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; - - InputManager *main_input_manager; - InputSlider *slider; - input_thread_t *p_input; ///< Main input associated to the playlist - - QLabel *timeLabel; + 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 ); } + int i_bg_height; ///< Save height of bgWidget + bool b_shouldHide; + + /* Status Bar */ QLabel *nameLabel; + QLabel *cryptedLabel; - void customEvent( QEvent *); public slots: void undockPlaylist(); - void playlist(); + void dockPlaylist( pl_dock_e i_pos = PL_BOTTOM ); + void toggleMinimalView( bool ); + void togglePlaylist(); + void toggleUpdateSystrayMenu(); + void toggleAdvanced(); + void toggleFullScreen(); + void toggleFSC(); + void popupMenu( const QPoint& ); + + /* 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 setNavigation( int ); - void setStatus( int ); - void setName( QString ); - void setDisplay( float, int, int ); - void updateOnTimer(); - void play(); - void stop(); - void prev(); - void next(); + void debug(); + void destroyPopupMenu(); + void recreateToolbars(); + void doComponentsUpdate(); + void setName( const QString& ); + void setVLCWindowsTitle( const QString& title = "" ); +#if 0 void visual(); - void advanced(); - void updateVolume( int sliderVolume ); - void updateSystrayMenu( int ); -}; - - -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; +#endif + void handleSystrayClick( QSystemTrayIcon::ActivationReason ); + void updateSystrayTooltipName( const QString& ); + void updateSystrayTooltipStatus( int ); + + void showCryptedLabel( bool ); + + void handleKeyPress( QKeyEvent * ); + +signals: + void askGetVideo( WId *p_id, int *pi_x, int *pi_y, + unsigned int *pi_width, unsigned int *pi_height ); + void askReleaseVideo( ); + void askVideoToResize( unsigned int, unsigned int ); + void askVideoSetFullScreen( bool ); + void askUpdate(); + void minimalViewToggled( bool ); + void fullscreenInterfaceToggled( bool ); }; #endif