X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fmain_interface.cpp;h=edfa08b2a75d86afac1de297c92eb5d6aba810d9;hb=ee95f804cd45fc13ff3da0b754cd1b546b50e9ca;hp=5c1c047d49491b8eb322a67bfa53b828b93a9492;hpb=61733f0e1da307d34b66e8051f0fc1af59c41a33;p=vlc diff --git a/modules/gui/qt4/main_interface.cpp b/modules/gui/qt4/main_interface.cpp index 5c1c047d49..edfa08b2a7 100644 --- a/modules/gui/qt4/main_interface.cpp +++ b/modules/gui/qt4/main_interface.cpp @@ -39,6 +39,7 @@ #include "components/interface_widgets.hpp" #include "components/controller.hpp" #include "components/playlist/playlist.hpp" +#include "dialogs/external.hpp" #include "menus.hpp" #include "recents.hpp" @@ -67,8 +68,6 @@ static int PopupMenuCB( vlc_object_t *p_this, const char *psz_variable, vlc_value_t old_val, vlc_value_t new_val, void *param ); static int IntfShowCB( vlc_object_t *p_this, const char *psz_variable, vlc_value_t old_val, vlc_value_t new_val, void *param ); -static int InteractCallback( vlc_object_t *, const char *, vlc_value_t, - vlc_value_t, void *); MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) { @@ -82,9 +81,7 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) playlistVisible = false; input_name = ""; fullscreenControls = NULL; -#if 0 cryptedLabel = NULL; -#endif /* Ask for privacy */ askForPrivacy(); @@ -195,14 +192,11 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) /* END CONNECTS ON IM */ + dialogHandler = new DialogHandler (p_intf); /************ * Callbacks ************/ - var_Create( p_intf, "interaction", VLC_VAR_ADDRESS ); - var_AddCallback( p_intf, "interaction", InteractCallback, this ); - interaction_Register( p_intf ); - var_AddCallback( p_intf->p_libvlc, "intf-show", IntfShowCB, p_intf ); /* Register callback for the intf-popupmenu variable */ @@ -249,6 +243,11 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) /* Playlist */ if( b_visible ) togglePlaylist(); + /* Enable the popup menu in the MI */ + setContextMenuPolicy( Qt::CustomContextMenu ); + CONNECT( this, customContextMenuRequested( const QPoint& ), + this, popupMenu( const QPoint& ) ); + /* Final sizing and showing */ setMinimumWidth( __MAX( controls->sizeHint().width(), menuBar()->sizeHint().width() ) ); @@ -274,6 +273,8 @@ MainInterface::~MainInterface() { msg_Dbg( p_intf, "Destroying the main interface" ); + delete dialogHandler; + /* Unsure we hide the videoWidget before destroying it */ if( videoIsActive ) videoWidget->hide(); @@ -290,7 +291,7 @@ MainInterface::~MainInterface() ActionsManager::killInstance(); /* Delete the FSC controller */ - if( fullscreenControls ) delete fullscreenControls; + delete fullscreenControls; /* Save states */ settings->beginGroup( "MainWindow" ); @@ -314,9 +315,6 @@ MainInterface::~MainInterface() var_DelCallback( p_intf->p_libvlc, "intf-show", IntfShowCB, p_intf ); var_DelCallback( p_intf->p_libvlc, "intf-popupmenu", PopupMenuCB, p_intf ); - interaction_Unregister( p_intf ); - var_DelCallback( p_intf, "interaction", InteractCallback, this ); - p_intf->p_sys->p_mi = NULL; } @@ -353,24 +351,23 @@ inline void MainInterface::createStatusBar() - right-clicking and clicking just toggle between remaining and elapsed time.*/ CONNECT( timeLabel, timeLabelDoubleClicked(), THEDP, gotoTimeDialog() ); -#if 0 + CONNECT( THEMIM->getIM(), encryptionChanged( bool ) , this, showCryptedLabel( bool ) ); -#endif } -#if 0 -void MainInterface::showCryptedLabel( bool ) +void MainInterface::showCryptedLabel( bool b_show ) { if( cryptedLabel == NULL ) { cryptedLabel = new QLabel; - cryptedLabel->setPixmap( QPixmap( ":/lock" ) ); + // The lock icon is not the right one for DRM protection/scrambled. + //cryptedLabel->setPixmap( QPixmap( ":/lock" ) ); + cryptedLabel->setText( "DRM" ); statusBar()->addWidget( cryptedLabel ); } - cryptedLabel->show(); + cryptedLabel->setVisible( b_show ); } -#endif inline void MainInterface::initSystray() { @@ -555,7 +552,6 @@ int MainInterface::privacyDialog( QList *controls ) CONFIG_GENERIC( "album-art", IntegerList ); line++; #ifdef UPDATE_CHECK CONFIG_GENERIC_NOBOOL( "qt-updates-notif", Bool ); line++; - CONFIG_GENERIC_NOBOOL( "qt-updates-days", Integer ); line++; #endif QPushButton *ok = new QPushButton( qtr( "OK" ) ); @@ -637,6 +633,15 @@ void MainInterface::toggleFSC() QApplication::postEvent( fullscreenControls, eShow ); } +void MainInterface::popupMenu( const QPoint &p ) +{ + /* Ow, that's ugly: don't show the popup menu if cursor over + * the main menu bar or the status bar */ + if( !childAt( p ) || ( ( childAt( p ) != menuBar() ) + && ( childAt( p )->parentWidget() != statusBar() ) ) ) + QVLCMenu::PopupMenu( p_intf, true ); +} + void MainInterface::debug() { #ifndef NDEBUG @@ -1198,20 +1203,6 @@ void MainInterface::toggleFullScreen( void ) } -/***************************************************************************** - * Callbacks - *****************************************************************************/ -static int InteractCallback( vlc_object_t *p_this, - const char *psz_var, vlc_value_t old_val, - vlc_value_t new_val, void *param ) -{ - intf_dialog_args_t *p_arg = new intf_dialog_args_t; - p_arg->p_dialog = (interaction_dialog_t *)(new_val.p_address); - DialogEvent *event = new DialogEvent( INTF_DIALOG_INTERACTION, 0, p_arg ); - QApplication::postEvent( THEDP, event ); - return VLC_SUCCESS; -} - /***************************************************************************** * PopupMenuCB: callback triggered by the intf-popupmenu playlist variable. * We don't show the menu directly here because we don't want the