X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fmain_interface.cpp;h=10f6bdcbbe088b1fb36f6c0be103302e94af54f8;hb=d197ab14643cb52c0d34fc5791ffe4ca3d7edfcb;hp=a95701a43335a0cb5c61567136697c7c54308521;hpb=62fae3a7cab589b5c87ea6de3e65b5f698a87c9b;p=vlc diff --git a/modules/gui/qt4/main_interface.cpp b/modules/gui/qt4/main_interface.cpp index a95701a433..10f6bdcbbe 100644 --- a/modules/gui/qt4/main_interface.cpp +++ b/modules/gui/qt4/main_interface.cpp @@ -57,7 +57,6 @@ #include #include #include -#include #include #include @@ -81,13 +80,14 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) { /* Variables initialisation */ // need_components_update = false; - bgWidget = NULL; - videoWidget = NULL; - playlistWidget = NULL; - sysTray = NULL; - videoIsActive = false; - playlistVisible = false; - input_name = ""; + bgWidget = NULL; + videoWidget = NULL; + playlistWidget = NULL; + sysTray = NULL; + videoIsActive = false; + playlistVisible = false; + input_name = ""; + fullscreenControls = NULL; /* Ask for privacy */ askForPrivacy(); @@ -109,7 +109,7 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) i_visualmode = config_GetInt( p_intf, "qt-display-mode" ); /* Set the other interface settings */ - settings = new QSettings( "vlc", "vlc-qt-interface" ); + settings = getSettings(); settings->beginGroup( "MainWindow" ); //TODO: I don't like that code @@ -222,18 +222,8 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) CONNECT( this, askUpdate(), this, doComponentsUpdate() ); - CONNECT( controls, advancedControlsToggled( bool ), - this, doComponentsUpdate() ); - - CONNECT( fullscreenControls, advancedControlsToggled( bool ), - this, doComponentsUpdate() ); - - CONNECT( THEMIM->getIM(), inputUnset(), - fullscreenControls, unregFullscreenCallback() ); - - /* Size and placement of interface */ - QVLCTools::restoreWidgetPosition(settings,this,QSize(350,60)); + QVLCTools::restoreWidgetPosition( settings, this, QSize(380, 60) ); /* Playlist */ @@ -259,7 +249,7 @@ MainInterface::~MainInterface() msg_Dbg( p_intf, "Destroying the main interface" ); if( playlistWidget ) - playlistWidget->savingSettings( settings ); + playlistWidget->savingSettings(); settings->beginGroup( "MainWindow" ); @@ -275,7 +265,6 @@ MainInterface::~MainInterface() settings->setValue( "backgroundSize", bgWidget->size() ); settings->endGroup(); - delete settings; var_DelCallback( p_intf->p_libvlc, "intf-show", IntfShowCB, p_intf ); @@ -302,10 +291,13 @@ inline void MainInterface::createStatusBar() timeLabel = new TimeLabel; timeLabel->setText( " --:--/--:-- " ); timeLabel->setAlignment( Qt::AlignRight | Qt::AlignVCenter ); + timeLabel->setToolTip( qtr( "Toggle between elapsed and remaining time" ) ); nameLabel = new QLabel; nameLabel->setTextInteractionFlags( Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard ); speedLabel = new SpeedLabel( p_intf, "1.00x" ); + speedLabel->setToolTip( + qtr( "Current playback speed.\nRight click to adjust" ) ); speedLabel->setContextMenuPolicy ( Qt::CustomContextMenu ); /* Styling those labels */ @@ -313,13 +305,10 @@ inline void MainInterface::createStatusBar() speedLabel->setFrameStyle( QFrame::Sunken | QFrame::Panel ); nameLabel->setFrameStyle( QFrame::Sunken | QFrame::StyledPanel); - pgBar = new QProgressBar; - pgBar->hide(); /* and adding those */ statusBar()->addWidget( nameLabel, 8 ); statusBar()->addPermanentWidget( speedLabel, 0 ); - statusBar()->addPermanentWidget( pgBar, 0 ); statusBar()->addPermanentWidget( timeLabel, 0 ); /* timeLabel behaviour: @@ -387,16 +376,22 @@ void MainInterface::handleMainUi( QSettings *settings ) mainLayout->setMargin( 0 ); /* Create the CONTROLS Widget */ - /* bool b_shiny = config_GetInt( p_intf, "qt-blingbling" ); */ + bool b_shiny = config_GetInt( p_intf, "qt-blingbling" ); controls = new ControlsWidget( p_intf, this, settings->value( "adv-controls", false ).toBool(), - config_GetInt( p_intf, "qt-blingbling" ) ); + b_shiny ); + CONNECT( controls, advancedControlsToggled( bool ), + this, doComponentsUpdate() ); /* Create the FULLSCREEN CONTROLS Widget */ - /* bool b_shiny = config_GetInt( p_intf, "qt-blingbling" ); */ - fullscreenControls = new FullscreenControllerWidget( p_intf, this, - settings->value( "adv-controls", false ).toBool(), - config_GetInt( p_intf, "qt-blingbling" ) ); + if( config_GetInt( p_intf, "qt-fs-controller" ) ) + { + fullscreenControls = new FullscreenControllerWidget( p_intf, this, + settings->value( "adv-controls", false ).toBool(), + b_shiny ); + CONNECT( fullscreenControls, advancedControlsToggled( bool ), + this, doComponentsUpdate() ); + } /* Add the controls Widget to the main Widget */ mainLayout->insertWidget( 0, controls, 0, Qt::AlignBottom ); @@ -417,18 +412,21 @@ void MainInterface::handleMainUi( QSettings *settings ) visualSelector->hide(); #endif - /* And video Outputs */ - if( i_visualmode == QT_ALWAYS_VIDEO_MODE || - i_visualmode == QT_MINIMAL_MODE ) + /* Bg Cone */ + bgWidget = new BackgroundWidget( p_intf ); + bgWidget->resize( + settings->value( "backgroundSize", QSize( 300, 200 ) ).toSize() ); + bgWidget->updateGeometry(); + mainLayout->insertWidget( 0, bgWidget ); + CONNECT( this, askBgWidgetToToggle(), bgWidget, toggle() ); + + if( i_visualmode != QT_ALWAYS_VIDEO_MODE && + i_visualmode != QT_MINIMAL_MODE ) { - bgWidget = new BackgroundWidget( p_intf ); - bgWidget->resize( - settings->value( "backgroundSize", QSize( 300, 150 ) ).toSize() ); - bgWidget->updateGeometry(); - mainLayout->insertWidget( 0, bgWidget ); - CONNECT( this, askBgWidgetToToggle(), bgWidget, toggle() ); + bgWidget->hide(); } + /* And video Outputs */ if( videoEmbeddedFlag ) { videoWidget = new VideoWidget( p_intf ); @@ -447,7 +445,7 @@ inline void MainInterface::askForPrivacy() if( config_GetInt( p_intf, "qt-privacy-ask") ) { QList controls; - if( privacyDialog( controls ) == QDialog::Accepted ) + if( privacyDialog( &controls ) == QDialog::Accepted ) { QList::Iterator i; for( i = controls.begin() ; i != controls.end() ; i++ ) @@ -463,7 +461,7 @@ inline void MainInterface::askForPrivacy() } } -int MainInterface::privacyDialog( QList controls ) +int MainInterface::privacyDialog( QList *controls ) { QDialog *privacy = new QDialog(); @@ -503,7 +501,7 @@ int MainInterface::privacyDialog( QList controls ) { \ control = new type ## ConfigControl( VLC_OBJECT(p_intf), \ p_config, options, false, optionsLayout, line ); \ - controls.append( control ); \ + controls->append( control ); \ } #define CONFIG_GENERIC_NOBOOL( option, type ) \ @@ -512,7 +510,7 @@ int MainInterface::privacyDialog( QList controls ) { \ control = new type ## ConfigControl( VLC_OBJECT(p_intf), \ p_config, options, optionsLayout, line ); \ - controls.append( control ); \ + controls->append( control ); \ } CONFIG_GENERIC( "album-art", IntegerList ); line++; @@ -521,7 +519,7 @@ int MainInterface::privacyDialog( QList controls ) CONFIG_GENERIC_NOBOOL( "qt-updates-days", Integer ); line++; #endif - QPushButton *ok = new QPushButton( qtr( "Ok" ) ); + QPushButton *ok = new QPushButton( qtr( "OK" ) ); gLayout->addWidget( ok, 2, 2 ); @@ -542,7 +540,7 @@ int MainInterface::privacyDialog( QList controls ) ask _parent->isFloating()... If you think this would be better, please FIXME it... */ -#if 0 + QSize MainInterface::sizeHint() const { int nwidth = controls->sizeHint().width(); @@ -561,20 +559,22 @@ QSize MainInterface::sizeHint() const } else if( videoIsActive ) { - nheight += videoWidget->size().height(); - nwidth = videoWidget->size().width(); + nheight += videoWidget->sizeHint().height(); + nwidth = videoWidget->sizeHint().width(); msg_Dbg( p_intf, "2 %i %i", nheight, nwidth ); } -/* if( !dockPL->isFloating() && dockPL->isVisible() && dockPL->widget() ) +#if 0 + if( !dockPL->isFloating() && dockPL->isVisible() && dockPL->widget() ) { nheight += dockPL->size().height(); nwidth = __MAX( nwidth, dockPL->size().width() ); msg_Dbg( p_intf, "3 %i %i", nheight, nwidth ); - }*/ + } +#endif msg_Dbg( p_intf, "4 %i %i", nheight, nwidth ); return QSize( nwidth, nheight ); } -#endif + #if 0 /* FIXME This is dead code and need to be removed AT THE END */ void MainInterface::resizeEvent( QResizeEvent *e ) @@ -596,10 +596,19 @@ void MainInterface::resizeEvent( QResizeEvent *e ) } #endif +void MainInterface::toggleFSC() +{ + if( !fullscreenControls ) return; + + IMEvent *eShow = new IMEvent( FullscreenControlToggle_Type, 0 ); + QApplication::postEvent( fullscreenControls, static_cast(eShow) ); +} +#if 0 void MainInterface::requestLayoutUpdate() { emit askUpdate(); } +#endif //FIXME remove me at the end... void MainInterface::debug() @@ -653,7 +662,7 @@ void *MainInterface::requestVideo( vout_thread_t *p_nvout, int *pi_x, int *pi_y, unsigned int *pi_width, unsigned int *pi_height ) { - bool bgWasVisible = false; + bgWasVisible = false; /* Request the videoWidget */ void *ret = videoWidget->request( p_nvout,pi_x, pi_y, pi_width, pi_height ); @@ -682,13 +691,17 @@ void *MainInterface::requestVideo( vout_thread_t *p_nvout, int *pi_x, // emit askVideoToResize( *pi_width, *pi_height ); emit askUpdate(); + + if( fullscreenControls ) fullscreenControls->attachVout( p_nvout ); } return ret; } void MainInterface::releaseVideo( void *p_win ) { - emit askReleaseVideo( p_win ); + if( fullscreenControls ) fullscreenControls->detachVout(); + if( p_win ) + emit askReleaseVideo( p_win ); } void MainInterface::releaseVideoSlot( void *p_win ) @@ -696,11 +709,14 @@ void MainInterface::releaseVideoSlot( void *p_win ) videoWidget->release( p_win ); videoWidget->hide(); - if( bgWidget )// WRONG + if( bgWasVisible ) + { + bgWasVisible = false; bgWidget->show(); + } - adjustSize(); videoIsActive = false; + if( !isFullScreen() ) adjustSize(); } int MainInterface::controlVideo( void *p_window, int i_query, va_list args ) @@ -797,6 +813,20 @@ void MainInterface::undockPlaylist() void MainInterface::toggleMinimalView() { + /* HACK for minimalView, see menus.cpp */ + if( !menuBar()->isVisible() ) QVLCMenu::minimalViewAction->toggle(); + + if( i_visualmode != QT_ALWAYS_VIDEO_MODE && + i_visualmode != QT_MINIMAL_MODE ) + { /* NORMAL MODE then */ + if( videoWidget->isHidden() ) emit askBgWidgetToToggle(); + else + { + /* If video is visible, then toggle the status of bgWidget */ + bgWasVisible = !bgWasVisible; + } + } + TOGGLEV( menuBar() ); TOGGLEV( controls ); TOGGLEV( statusBar() ); @@ -816,6 +846,7 @@ void MainInterface::doComponentsUpdate() void MainInterface::toggleAdvanced() { controls->toggleAdvanced(); + if( fullscreenControls ) fullscreenControls->toggleAdvanced(); } /* Get the visibility status of the controls (hidden or not, advanced or not) */ @@ -882,13 +913,18 @@ void MainInterface::setName( QString name ) void MainInterface::setStatus( int status ) { - msg_Dbg( p_intf, "I was here, updating your status" ); + msg_Dbg( p_intf, "Updating the stream status: %i", status ); + /* Forward the status to the controls to toggle Play/Pause */ controls->setStatus( status ); - fullscreenControls->setStatus( status ); - controls->updateInput(); - fullscreenControls->updateInput(); + + if( fullscreenControls ) + { + fullscreenControls->setStatus( status ); + fullscreenControls->updateInput(); + } + speedControl->setEnable( THEMIM->getIM()->hasInput() ); /* And in the systray for the menu */ @@ -1208,7 +1244,8 @@ static int IntfShowCB( vlc_object_t *p_this, const char *psz_variable, vlc_value_t old_val, vlc_value_t new_val, void *param ) { intf_thread_t *p_intf = (intf_thread_t *)param; - p_intf->p_sys->p_mi->requestLayoutUpdate(); + p_intf->p_sys->p_mi->toggleFSC(); - return VLC_SUCCESS; + /* Show event */ + return VLC_SUCCESS; }