#include "actions_manager.hpp" // killInstance
#include "extensions_manager.hpp" // killInstance
-#include "util/customwidgets.hpp" // qtEventToVLCKey
+#include "util/customwidgets.hpp" // qtEventToVLCKey, QVLCStackedWidget
#include "util/qt_dirs.hpp" // toNativeSeparators
#include "components/interface_widgets.hpp" // bgWidget, videoWidget
bgWidget = NULL;
videoWidget = NULL;
playlistWidget = NULL;
+ stackCentralOldWidget= NULL;
#ifndef HAVE_MAEMO
sysTray = NULL;
#endif
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( );
/**************
* Status Bar *
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 * ),
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", 0 ).toInt();
-
+ int i_plVis = settings->value( "playlist-visible", false ).toBool();
settings->endGroup();
if( i_plVis ) togglePlaylist();
MainInterface::~MainInterface()
{
/* Unsure we hide the videoWidget before destroying it */
- if( stackCentralOldWidget == playlistWidget )
- showBg();
-
- /* Save playlist state */
- if( playlistWidget )
- {
- if( !isPlDocked() )
- QVLCTools::saveWidgetPosition( p_intf, "Playlist", playlistWidget );
-
- delete playlistWidget;
- }
+ if( stackCentralOldWidget == videoWidget )
+ showTab( bgWidget );
#ifdef WIN32
if( himl )
/* Save states */
settings->beginGroup( "MainWindow" );
+
settings->setValue( "pl-dock-status", b_plDocked );
- settings->setValue( "playlist-visible", (int)playlistVisible );
+ /* Save playlist state */
+ if( playlistWidget )
+ {
+ settings->setValue( "playlist-visible",
+ isPlDocked() ?
+ playlistVisible :
+ playlistWidget->isVisible() /* FIXME */ );
+ }
+
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);
+
settings->endGroup();
+ /* Save undocked playlist size */
+ if( playlistWidget && !isPlDocked() )
+ QVLCTools::saveWidgetPosition( p_intf, "Playlist", playlistWidget );
+
+ delete playlistWidget;
+
delete statusBar();
/* Unregister callbacks */
*****************************/
void MainInterface::recreateToolbars()
{
- // FIXME: do the same for the FSC
+ bool b_adv = getControlsVisibilityStatus() & CONTROLS_ADVANCED;
+
settings->beginGroup( "MainWindow" );
delete controls;
delete inputC;
- controls = new ControlsWidget( p_intf, false, this ); /* FIXME */
- CONNECT( controls, advancedControlsToggled( bool ),
- this, adaptGeometry() );
- CONNECT( controls, sizeChanged(),
- this, adaptGeometry() );
-
+ controls = new ControlsWidget( p_intf, b_adv, this );
inputC = new InputControlsWidget( p_intf, this );
+ if( fullscreenControls )
+ {
+ delete fullscreenControls;
+ fullscreenControls = new FullscreenControllerWidget( p_intf, this );
+ CONNECT( fullscreenControls, keyPressed( QKeyEvent * ),
+ this, handleKeyPress( QKeyEvent * ) );
+ }
mainLayout->insertWidget( 2, inputC );
mainLayout->insertWidget( settings->value( "ToolbarPos", 0 ).toInt() ? 0: 3,
controls );
mainLayout->setSpacing( 0 ); mainLayout->setMargin( 0 );
/* */
- stackCentralW = new QStackedWidget( main );
+ stackCentralW = new QVLCStackedWidget( main );
/* Bg Cone */
bgWidget = new BackgroundWidget( p_intf );
}
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,
settings->value( "adv-controls", false ).toBool(), this );
- CONNECT( controls, advancedControlsToggled( bool ),
- this, adaptGeometry() );
- CONNECT( controls, sizeChanged(),
- this, adaptGeometry() );
inputC = new InputControlsWidget( p_intf, this );
mainLayout->insertWidget( 2, inputC );
visualSelector->hide();
#endif
- getSettings()->endGroup();
+ settings->endGroup();
/* Enable the popup menu in the MI */
main->setContextMenuPolicy( Qt::CustomContextMenu );
timeLabel->setFrameStyle( QFrame::Sunken | QFrame::Panel );
speedLabel->setFrameStyle( QFrame::Sunken | QFrame::Panel );
nameLabel->setFrameStyle( QFrame::Sunken | QFrame::StyledPanel);
+ timeLabel->setStyleSheet(
+ "QLabel:hover { background-color: rgba(255, 255, 255, 50%) }" );
+ speedLabel->setStyleSheet(
+ "QLabel:hover { background-color: rgba(255, 255, 255, 50%) }" );
/* and adding those */
statusBarr->addWidget( nameLabel, 8 );
* Handling of sizing of the components
**********************************************************************/
-/* This function is called:
- - Advanced buttons toggled
- - Toolbar geom changed
- */
-void MainInterface::adaptGeometry()
-{
- resize( sizeHint() );
-
-#ifdef DEBUG_INTF
- debug();
-#endif
-}
-
void MainInterface::debug()
{
#ifdef DEBUG_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 show */
- 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 );
}
}
{
videoWidget->release();
- restoreStackOldWidget();
+ msg_Warn( p_intf, "Here" );
+ if( stackCentralW->currentWidget() == videoWidget )
+ restoreStackOldWidget();
/* We don't want to have a blank video to popup */
stackCentralOldWidget = bgWidget;
{
unsigned int i_width = va_arg( args, unsigned int );
unsigned int i_height = va_arg( args, unsigned int );
+ if( isFullScreen() || isMaximized() )
+ showNormal();
emit askVideoToResize( i_width, i_height );
return VLC_SUCCESS;
}
{
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
{
playlistWidget->setWindowFlags( Qt::Window );
QVLCTools::restoreWidgetPosition( p_intf, "Playlist",
playlistWidget, QSize( 600, 300 ) );
}
- else
- {
- stackCentralW->addWidget( playlistWidget );
- }
}
void MainInterface::togglePlaylist()
{
if( !playlistWidget )
+ {
createPlaylist();
+ }
if( b_plDocked )
{
/* Playlist is not visible, show it */
if( stackCentralW->currentWidget() != playlistWidget )
{
- playlistWidget->forceShow();
showTab( playlistWidget );
}
else /* Hide it! */
{
restoreStackOldWidget();
- stackCentralW->updateGeometry();
- // HACK: So it doesn't limit the stackWidget minimumSize
- playlistWidget->forceHide();
}
playlistVisible = ( stackCentralW->currentWidget() == playlistWidget );
}
}
else
{
+ QVLCTools::saveWidgetPosition( p_intf, "Playlist", playlistWidget );
playlistWidget->setWindowFlags( Qt::Widget ); // Probably a Qt bug here
// It would be logical that QStackWidget::addWidget reset the flags...
stackCentralW->addWidget( playlistWidget );
- stackCentralW->setCurrentWidget( playlistWidget );
+ showTab( playlistWidget );
}
+ playlistVisible = true;
}
/*
*/
void MainInterface::toggleMinimalView( bool b_switch )
{
- if( i_visualmode == 0 )
- { /* NORMAL MODE then */
- if( !videoWidget || stackCentralW->currentWidget() != videoWidget )
- {
- showBg();
- }
- else
+ if( i_visualmode == 0 && b_autoresize ) /* Normal mode */
+ {
+ if( stackCentralW->currentWidget() == bgWidget )
{
- /* If video is visible, then toggle the status of bgWidget */
- //FIXME
- //bgWasVisible = !bgWasVisible;
- /* if( stackCentralOldState == BACK G_TAB )
- stackCentralOldState = HID DEN_TAB;
- else
- stackCentralOldState = BACK G_TAB;
-
- */
+ if( stackCentralW->height() < 16 )
+ {
+ resizeStack( stackCentralW->width(), 100 );
+ }
}
}
/* Get the visibility status of the controls (hidden or not, advanced or not) */
int MainInterface::getControlsVisibilityStatus()
{
+ if( !controls ) return 0;
return( (controls->isVisible() ? CONTROLS_VISIBLE : CONTROLS_HIDDEN )
+ CONTROLS_ADVANCED * controls->b_advancedVisible );
}
{
switch( i_status )
{
- case 0:
- case END_S:
- {
- sysTray->setToolTip( qtr( "VLC media player" ) );
- break;
- }
- case PLAYING_S:
- {
- sysTray->setToolTip( input_name );
- break;
- }
- case PAUSE_S:
- {
- sysTray->setToolTip( input_name + " - "
- + qtr( "Paused") );
- break;
- }
+ case PLAYING_S:
+ sysTray->setToolTip( input_name );
+ break;
+ case PAUSE_S:
+ sysTray->setToolTip( input_name + " - " + qtr( "Paused") );
+ break;
+ default:
+ sysTray->setToolTip( qtr( "VLC media player" ) );
+ break;
}
QVLCMenu::updateSystrayMenu( this, p_intf );
}
************************************************************************/
void MainInterface::customEvent( QEvent *event )
{
-#if 0
- if( event->type() == PLDockEvent_Type )
- {
- PlaylistDialog::killInstance();
- playlistEmbeddedFlag = true;
- menuBar()->clear();
- QVLCMenu::createMenuBar(this, p_intf, true, visualSelectorEnabled);
- togglePlaylist();
- }
-#endif
- /*else */
if ( event->type() == (int)SetVideoOnTopEvent_Type )
{
SetVideoOnTopQtEvent* p_event = (SetVideoOnTopQtEvent*)event;
e->ignore();
}
-void MainInterface::resizeEvent( QResizeEvent * event )
-{
-#if 0
- if( b_keep_size )
- {
- if( i_visualmode )
- {
- mainVideoSize = size();
- }
- else
- {
- if( VISIBLE( bgWidget) ||
- ( videoIsActive && videoWidget->isVisible() )
- )
- mainVideoSize = size();
- else
- mainBasedSize = size();
- }
- }
-#endif
- QVLCMW::resizeEvent( event );
- msg_Dbg( p_intf, "Resize Event, height: %i", size().height() );
- debug();
-}
-
void MainInterface::wheelEvent( QWheelEvent *e )
{
int i_vlckey = qtWheelEventToVLCKey( e );