b_videoEmbedded = var_InheritBool( p_intf, "embedded-video" );
/* Does the interface resize to video size or the opposite */
- b_keep_size = !var_InheritBool( p_intf, "qt-video-autoresize" );
+ b_autoresize = var_InheritBool( p_intf, "qt-video-autoresize" );
/* Are we in the enhanced always-video mode or not ? */
i_visualmode = var_InheritInteger( p_intf, "qt-minimal-view" );
/* */
b_plDocked = getSettings()->value( "pl-dock-status", true ).toBool();
-
- /**
- * Retrieve saved sizes for main window
- * mainBasedSize = based window size for normal mode
- * (no video, no background)
- * mainVideoSize = window size with video (all modes)
- **/
- mainBasedSize = settings->value( "mainBasedSize", QSize( 350, 120 ) ).toSize();
- mainVideoSize = settings->value( "mainVideoSize", QSize( 400, 300 ) ).toSize();
settings->endGroup( );
/**************
* UI and Widgets design
**************************/
setVLCWindowsTitle();
- createMainWidget( settings );
/************
* Menu Bar *
CONNECT( THEMIM->getIM(), voutListChanged( vout_thread_t **, int ),
this, destroyPopupMenu() );
+ createMainWidget( settings );
/*********************************
* Create the Systray Management *
*********************************/
if( videoWidget )
{
- CONNECT( this, askVideoToResize( unsigned int, unsigned int ),
- videoWidget, SetSizing( unsigned int, unsigned int ) );
- CONNECT( videoWidget, sizeChanged( int, int ),
- this, resizeStack( int, int ) );
+ if( b_autoresize )
+ {
+ CONNECT( this, askVideoToResize( unsigned int, unsigned int ),
+ videoWidget, SetSizing( unsigned int, unsigned int ) );
+ CONNECT( videoWidget, sizeChanged( int, int ),
+ this, resizeStack( int, int ) );
+ }
CONNECT( this, askVideoSetFullScreen( bool ),
videoWidget, SetFullScreen( bool ) );
CONNECT( videoWidget, keyPressed( QKeyEvent * ),
/* Register callback for the intf-popupmenu variable */
var_AddCallback( p_intf->p_libvlc, "intf-popupmenu", PopupMenuCB, p_intf );
+ /* Playlist */
+ int i_plVis = settings->value( "MainWindow/playlist-visible", false ).toBool();
+
+ if( i_plVis ) togglePlaylist();
+
/**** FINAL SIZING and placement of interface */
settings->beginGroup( "MainWindow" );
QVLCTools::restoreWidgetPosition( settings, this, QSize(400, 100) );
-
- /* resize to previously saved main window size if appicable */
- //FIXME remove.
- if( b_keep_size )
- {
- if( i_visualmode )
- resize( mainVideoSize );
- else
- resize( mainBasedSize );
- }
-
- /* Playlist */
- int i_plVis = settings->value( "playlist-visible", false ).toBool();
settings->endGroup();
- if( i_plVis ) togglePlaylist();
-
/* Final sizing and showing */
setVisible( !b_hideAfterCreation );
{
/* Unsure we hide the videoWidget before destroying it */
if( stackCentralOldWidget == videoWidget )
- showBg();
+ showTab( bgWidget );
#ifdef WIN32
if( himl )
settings->setValue( "adv-controls",
getControlsVisibilityStatus() & CONTROLS_ADVANCED );
- settings->setValue( "mainBasedSize", mainBasedSize );
- settings->setValue( "mainVideoSize", mainVideoSize );
-
- settings->setValue( "backgroundSize", bgWidget->size() );
+ /* Save the stackCentralW sizes */
+ settings->setValue( "bgSize", stackWidgetsSizes[bgWidget] );
+ settings->setValue( "playlistSize", stackWidgetsSizes[playlistWidget] );
/* Save this size */
QVLCTools::saveWidgetPosition(settings, this);
mainLayout->insertWidget( 1, stackCentralW );
settings->beginGroup( "MainWindow" );
+ stackWidgetsSizes[bgWidget] = settings->value( "bgSize", QSize( 400, 0 ) ).toSize();
+ /* Resize even if no-auto-resize, because we are at creation */
+ resizeStack( stackWidgetsSizes[bgWidget].width(), stackWidgetsSizes[bgWidget].height() );
/* Create the CONTROLS Widget */
controls = new ControlsWidget( p_intf,
}
inline void MainInterface::showVideo() { showTab( videoWidget ); }
-inline void MainInterface::showBg() { showTab( bgWidget ); }
+inline void MainInterface::restoreStackOldWidget()
+ { showTab( stackCentralOldWidget ); }
inline void MainInterface::showTab( QWidget *widget )
{
#ifdef DEBUG_INTF
msg_Warn( p_intf, "Old stackCentralOldWidget %i", stackCentralW->indexOf( stackCentralOldWidget ) );
#endif
+
stackCentralOldWidget = stackCentralW->currentWidget();
+ stackWidgetsSizes[stackCentralOldWidget] = stackCentralW->size();
+
stackCentralW->setCurrentWidget( widget );
+ if( b_autoresize )
+ resizeStack( stackWidgetsSizes[widget].width(), stackWidgetsSizes[widget].height() );
#ifdef DEBUG_INTF
msg_Warn( p_intf, "State change %i", stackCentralW->currentIndex() );
#endif
}
-inline void MainInterface::restoreStackOldWidget()
-{
-#ifdef DEBUG_INTF
- msg_Warn( p_intf, "New stackCentralOldWidget %i", stackCentralW->indexOf( stackCentralOldWidget ) );
-#endif
- QWidget *wTemp = stackCentralW->currentWidget();
-
- stackCentralW->setCurrentWidget( stackCentralOldWidget );
-
- stackCentralOldWidget = wTemp;
-#ifdef DEBUG_INTF
- msg_Warn( p_intf, "Debug %i %i",stackCentralW->indexOf( wTemp ), stackCentralW->indexOf( stackCentralW->currentWidget() ) );
-#endif
-}
-
void MainInterface::destroyPopupMenu()
{
QVLCMenu::PopupMenu( p_intf, false );
{
/* Request the videoWidget */
WId ret = videoWidget->request( pi_x, pi_y,
- pi_width, pi_height, b_keep_size );
+ pi_width, pi_height, !b_autoresize );
*p_id = ret;
if( ret ) /* The videoWidget is available */
{
- /* Ask videoWidget to resize correctly, if we are in normal mode */
- if( !isFullScreen() && !isMaximized() )
- videoWidget->SetSizing( *pi_width, *pi_height );
-
/* Consider the video active now */
showVideo();
+
+ /* Ask videoWidget to resize correctly, if we are in normal mode */
+ if( !isFullScreen() && !isMaximized() && b_autoresize )
+ videoWidget->SetSizing( *pi_width, *pi_height );
}
}
void MainInterface::releaseVideo( void )
{
emit askReleaseVideo();
+ QApplication::postEvent( this, new SetVideoOnTopQtEvent( false ) );
}
/* Function that is CONNECTED to the previous emit */
{
playlistWidget = new PlaylistWidget( p_intf, this );
- if( !b_plDocked )
+ if( b_plDocked )
{
+ stackCentralW->addWidget( playlistWidget );
+ stackWidgetsSizes[playlistWidget] = settings->value( "playlistSize", QSize( 500, 250 ) ).toSize();
+ }
+ else
+ {
+#ifdef WIN32
+ playlistWidget->setParent( NULL );
+#endif
playlistWidget->setWindowFlags( Qt::Window );
/* This will restore the geometry but will not work for position,
QVLCTools::restoreWidgetPosition( p_intf, "Playlist",
playlistWidget, QSize( 600, 300 ) );
}
- else
- {
- stackCentralW->addWidget( playlistWidget );
- }
}
void MainInterface::togglePlaylist()
{
if( !playlistWidget )
+ {
createPlaylist();
+ }
if( b_plDocked )
{
}
else
{
+#ifdef WIN32
+ playlistWidget->setParent( NULL );
+#endif
playlistWidget->setWindowFlags( Qt::Window );
playlistVisible = !playlistVisible;
playlistWidget->setVisible( playlistVisible );
if( !p_docked )
{
stackCentralW->removeWidget( playlistWidget );
+#ifdef WIN32
+ playlistWidget->setParent( NULL );
+#endif
playlistWidget->setWindowFlags( Qt::Window );
QVLCTools::restoreWidgetPosition( p_intf, "Playlist",
playlistWidget, QSize( 600, 300 ) );
*/
void MainInterface::toggleMinimalView( bool b_switch )
{
- if( i_visualmode == 0 )
+ if( i_visualmode == 0 && b_autoresize ) /* Normal mode */
{
if( stackCentralW->currentWidget() == bgWidget )
{
if ( event->type() == (int)SetVideoOnTopEvent_Type )
{
SetVideoOnTopQtEvent* p_event = (SetVideoOnTopQtEvent*)event;
+ Qt::WindowFlags oldflags = windowFlags(), newflags;
+
if( p_event->OnTop() )
- setWindowFlags( windowFlags() | Qt::WindowStaysOnTopHint );
+ newflags = oldflags | Qt::WindowStaysOnTopHint;
else
- setWindowFlags( windowFlags() & ~Qt::WindowStaysOnTopHint );
- show(); /* necessary to apply window flags */
+ newflags = oldflags & ~Qt::WindowStaysOnTopHint;
+ if( newflags != oldflags )
+ {
+ setWindowFlags( newflags );
+ show(); /* necessary to apply window flags */
+ }
}
}