#include "main_interface.hpp"
#include "input_manager.hpp"
+#include "actions_manager.hpp"
#include "util/customwidgets.hpp"
#include "util/qt_dirs.hpp"
/* Set The Video In emebedded Mode or not */
videoEmbeddedFlag = config_GetInt( p_intf, "embedded-video" );
+ /* Do we confine videos within a persistent resizeable window */
+ b_keep_size = config_GetInt( p_intf, "qt-keep-size" );
+
/* Are we in the enhanced always-video mode or not ? */
i_visualmode = config_GetInt( p_intf, "qt-display-mode" );
settings = getSettings();
settings->beginGroup( "MainWindow" );
+ /**
+ * 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();
+
/* Visualisation, not really used yet */
visualSelectorEnabled = settings->value( "visual-selector", false).toBool();
/* StatusBar Creation */
createStatusBar();
- /* Recents menu updates */
- CONNECT( RecentsMRL::getInstance( p_intf ), updated(),
- this, updateRecentsMenu() );
-
/********************
* Input Manager *
********************/
/* Status on the systray */
if( sysTray )
{
- CONNECT( THEMIM->getIM(), statusChanged( int ), this,
- updateSystrayTooltipStatus( int ) );
+ CONNECT( THEMIM->getIM(), statusChanged( int ),
+ this, updateSystrayTooltipStatus( int ) );
}
/* END CONNECTS ON IM */
************/
var_Create( p_intf, "interaction", VLC_VAR_ADDRESS );
var_AddCallback( p_intf, "interaction", InteractCallback, this );
- p_intf->b_interaction = true;
+ interaction_Register( p_intf );
var_AddCallback( p_intf->p_libvlc, "intf-show", IntfShowCB, p_intf );
/* VideoWidget connects to avoid different threads speaking to each other */
- CONNECT( this, askReleaseVideo( void ),
- this, releaseVideoSlot( void ) );
+ connect( this, SIGNAL(askReleaseVideo( void )),
+ this, SLOT(releaseVideoSlot( void )), Qt::BlockingQueuedConnection );
+
if( videoWidget )
CONNECT( this, askVideoToResize( unsigned int, unsigned int ),
videoWidget, SetSizing( unsigned int, unsigned int ) );
settings->beginGroup( "MainWindow" );
QVLCTools::restoreWidgetPosition( settings, this, QSize(380, 60) );
+ /* resize to previously saved main window size if appicable */
+ if( b_keep_size )
+ {
+ if( i_visualmode == QT_ALWAYS_VIDEO_MODE ||
+ i_visualmode == QT_MINIMAL_MODE )
+ {
+ resize( mainVideoSize );
+ }
+ else
+ {
+ resize( mainBasedSize );
+ }
+ }
+
bool b_visible = settings->value( "playlist-visible", 0 ).toInt();
settings->endGroup();
delete playlistWidget;
}
+ ActionsManager::killInstance();
+
settings->beginGroup( "MainWindow" );
settings->setValue( "pl-dock-status", (int)i_pl_dock );
settings->setValue( "adv-controls",
getControlsVisibilityStatus() & CONTROLS_ADVANCED );
+ settings->setValue( "mainBasedSize", mainBasedSize );
+ settings->setValue( "mainVideoSize", mainVideoSize );
+
if( bgWidget )
settings->setValue( "backgroundSize", bgWidget->size() );
/* Unregister callback for the intf-popupmenu variable */
var_DelCallback( p_intf->p_libvlc, "intf-popupmenu", PopupMenuCB, p_intf );
- p_intf->b_interaction = false;
+ interaction_Unregister( p_intf );
var_DelCallback( p_intf, "interaction", InteractCallback, this );
p_intf->p_sys->p_mi = NULL;
inline void MainInterface::initSystray()
{
- bool b_createSystray = false;
bool b_systrayAvailable = QSystemTrayIcon::isSystemTrayAvailable();
- if( config_GetInt( p_intf, "qt-start-minimized") )
+ bool b_systrayWanted = config_GetInt( p_intf, "qt-system-tray" );
+
+ if( config_GetInt( p_intf, "qt-start-minimized") > 0 )
{
if( b_systrayAvailable )
{
- b_createSystray = true;
+ b_systrayWanted = true;
hide();
}
- else msg_Err( p_intf, "You can't minimize if you haven't a system "
- "tray bar" );
+ else
+ msg_Err( p_intf, "cannot start minimized without system tray bar" );
}
- if( config_GetInt( p_intf, "qt-system-tray") )
- b_createSystray = true;
- if( b_systrayAvailable && b_createSystray )
+ if( b_systrayAvailable && b_systrayWanted )
createSystray();
}
this, doComponentsUpdate() );
inputC = new InputControlsWidget( p_intf, this );
- /* Add the controls Widget to the main Widget */
- mainLayout->insertWidget( 0, controls, 0, Qt::AlignBottom );
- mainLayout->insertWidget( 0, inputC, 0, Qt::AlignBottom );
-
- /* Visualisation */
+ /* Visualisation */
/* Disabled for now, they SUCK */
#if 0
visualSelector = new VisualSelector( 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 &&
/* And video Outputs */
if( videoEmbeddedFlag )
- {
videoWidget = new VideoWidget( p_intf );
- mainLayout->insertWidget( 0, videoWidget, 10 );
- }
+
+ /* Add the controls Widget to the main Widget */
+ mainLayout->insertWidget( 0, bgWidget );
+ if( videoWidget ) mainLayout->insertWidget( 0, videoWidget, 10 );
+ mainLayout->insertWidget( 2, inputC, 0, Qt::AlignBottom );
+ mainLayout->insertWidget( settings->value( "ToolbarPos", 0 ).toInt() ? 0: 3,
+ controls, 0, Qt::AlignBottom );
/* Finish the sizing */
main->updateGeometry();
QSize MainInterface::sizeHint() const
{
+ if( b_keep_size )
+ {
+ if( i_visualmode == QT_ALWAYS_VIDEO_MODE ||
+ i_visualmode == QT_MINIMAL_MODE )
+ {
+ return mainVideoSize;
+ }
+ else
+ {
+ if( VISIBLE( bgWidget) ||
+ ( videoIsActive && videoWidget->isVisible() )
+ )
+ return mainVideoSize;
+ else
+ return mainBasedSize;
+ }
+ }
+
int nwidth = controls->sizeHint().width();
int nheight = controls->isVisible() ?
controls->size().height()
unsigned int *pi_height )
{
/* Request the videoWidget */
- void *ret = videoWidget->request( p_nvout,pi_x, pi_y, pi_width, pi_height );
+ void *ret = videoWidget->request( p_nvout,pi_x, pi_y,
+ pi_width, pi_height, b_keep_size );
if( ret ) /* The videoWidget is available */
{
/* Did we have a bg ? Hide it! */
videoIsActive = true;
emit askUpdate();
-
- if( fullscreenControls ) fullscreenControls->attachVout( p_nvout );
}
return ret;
}
/* Call from the WindowClose function */
void MainInterface::releaseVideo( void )
{
- if( fullscreenControls ) fullscreenControls->detachVout();
emit askReleaseVideo( );
}
/* Call from WindowControl function */
int MainInterface::controlVideo( void *p_window, int i_query, va_list args )
{
+ VLC_UNUSED( p_window ); //FIXME remove this param
int i_ret = VLC_SUCCESS;
switch( i_query )
{
}
else
{
- /* Visible */
+ /* Visible (possibly under other windows) */
#ifdef WIN32
/* check if any visible window is above vlc in the z-order,
* but ignore the ones always on top
( GetWindowInfo( hwnd, &wi ) &&
(wi.dwExStyle&WS_EX_NOACTIVATE) ) );
hwnd = GetNextWindow( hwnd, GW_HWNDPREV ) );
- if( !hwnd || !GetWindowInfo( hwnd, &wi ) ||
+ if( !hwnd || !GetWindowInfo( hwnd, &wi ) ||
(wi.dwExStyle&WS_EX_TOPMOST) )
+ {
+ hide();
+ }
+ else
+ {
+ activateWindow();
+ }
#else
- if( isActiveWindow() )
+ hide();
#endif
- {
- hide();
- }
- else
- {
- activateWindow();
- }
}
QVLCMenu::updateSystrayMenu( this, p_intf );
}
switch( reason )
{
case QSystemTrayIcon::Trigger:
+ case QSystemTrayIcon::DoubleClick:
toggleUpdateSystrayMenu();
break;
case QSystemTrayIcon::MiddleClick:
+ case QSystemTrayIcon::Context:
sysTray->showMessage( qtr( "VLC media player" ),
qtr( "Control menu for the player" ),
QSystemTrayIcon::Information, 3000 );
break;
+ default:
+ break;
}
}
}
}
bool first = b_play;
- foreach( QUrl url, mimeData->urls() )
+ foreach( const QUrl &url, mimeData->urls() )
{
QString s = toNativeSeparators( url.toLocalFile() );
e->ignore();
}
+void MainInterface::resizeEvent( QResizeEvent * event )
+{
+ if( b_keep_size )
+ {
+ if( i_visualmode == QT_ALWAYS_VIDEO_MODE ||
+ i_visualmode == QT_MINIMAL_MODE )
+ {
+ mainVideoSize = size();
+ }
+ else
+ {
+ if( VISIBLE( bgWidget) ||
+ ( videoIsActive && videoWidget->isVisible() )
+ )
+ mainVideoSize = size();
+ else
+ mainBasedSize = size();
+ }
+ }
+}
+
void MainInterface::wheelEvent( QWheelEvent *e )
{
int i_vlckey = qtWheelEventToVLCKey( e );
void MainInterface::closeEvent( QCloseEvent *e )
{
+ e->accept();
hide();
THEDP->quit();
}
if( p_intf->pf_show_dialog )
{
p_intf->pf_show_dialog( p_intf, INTF_DIALOG_POPUPMENU,
- new_val.b_bool, 0 );
+ new_val.b_bool, NULL );
}
return VLC_SUCCESS;
return VLC_SUCCESS;
}
-/*****************************************************************************
- * updateRecentsMenu: event called by RecentsMRL
- *****************************************************************************/
-
-void MainInterface::updateRecentsMenu()
-{
- QVLCMenu::updateRecents( p_intf );
-}