Commit 3dda1153 authored by Clément Stenac's avatar Clément Stenac

Split video widget from background image managre

parent f929a72c
...@@ -36,7 +36,7 @@ TOMOC = main_interface \ ...@@ -36,7 +36,7 @@ TOMOC = main_interface \
components/preferences \ components/preferences \
components/simple_preferences \ components/simple_preferences \
components/open \ components/open \
components/video_widget \ components/interface_widgets \
components/playlist/panels \ components/playlist/panels \
components/playlist/selector \ components/playlist/selector \
util/input_slider \ util/input_slider \
...@@ -62,7 +62,7 @@ nodist_SOURCES_qt4 = \ ...@@ -62,7 +62,7 @@ nodist_SOURCES_qt4 = \
components/preferences.moc.cpp \ components/preferences.moc.cpp \
components/simple_preferences.moc.cpp \ components/simple_preferences.moc.cpp \
components/open.moc.cpp \ components/open.moc.cpp \
components/video_widget.moc.cpp \ components/interface_widgets.moc.cpp \
components/playlist/panels.moc.cpp \ components/playlist/panels.moc.cpp \
components/playlist/selector.moc.cpp \ components/playlist/selector.moc.cpp \
util/input_slider.moc.cpp \ util/input_slider.moc.cpp \
...@@ -108,7 +108,7 @@ SOURCES_qt4 = qt4.cpp \ ...@@ -108,7 +108,7 @@ SOURCES_qt4 = qt4.cpp \
components/preferences.cpp \ components/preferences.cpp \
components/simple_preferences.cpp \ components/simple_preferences.cpp \
components/open.cpp \ components/open.cpp \
components/video_widget.cpp \ components/interface_widgets.cpp \
components/playlist/standardpanel.cpp \ components/playlist/standardpanel.cpp \
components/playlist/selector.cpp \ components/playlist/selector.cpp \
util/input_slider.cpp \ util/input_slider.cpp \
...@@ -136,7 +136,7 @@ EXTRA_DIST += \ ...@@ -136,7 +136,7 @@ EXTRA_DIST += \
components/preferences.hpp \ components/preferences.hpp \
components/simple_preferences.hpp \ components/simple_preferences.hpp \
components/open.hpp \ components/open.hpp \
components/video_widget.hpp \ components/interface_widgets.hpp \
components/playlist/panels.hpp \ components/playlist/panels.hpp \
components/playlist/selector.hpp \ components/playlist/selector.hpp \
util/input_slider.hpp \ util/input_slider.hpp \
......
/***************************************************************************** /*****************************************************************************
* video_widget.cpp : Embedded video output * interface_widgets.cpp : Custom widgets for the main interface
**************************************************************************** ****************************************************************************
* Copyright (C) 2006 the VideoLAN team * Copyright (C) 2006 the VideoLAN team
* $Id$ * $Id$
...@@ -24,13 +24,17 @@ ...@@ -24,13 +24,17 @@
#include "dialogs_provider.hpp" #include "dialogs_provider.hpp"
#include <vlc/vout.h> #include <vlc/vout.h>
#include "qt4.hpp" #include "qt4.hpp"
#include "components/video_widget.hpp" #include "components/interface_widgets.hpp"
#include "main_interface.hpp" #include "main_interface.hpp"
#include "input_manager.hpp" #include "input_manager.hpp"
#include <QHBoxLayout> #include <QHBoxLayout>
#define ICON_SIZE 128 #define ICON_SIZE 128
/**********************************************************************
* Video Widget. A simple frame on which video is drawn
* This class handles resize issues
**********************************************************************/
static void *DoRequest( intf_thread_t *, vout_thread_t *, int*,int*, static void *DoRequest( intf_thread_t *, vout_thread_t *, int*,int*,
unsigned int *, unsigned int * ); unsigned int *, unsigned int * );
static void DoRelease( intf_thread_t *, void * ); static void DoRelease( intf_thread_t *, void * );
...@@ -38,11 +42,9 @@ static int DoControl( intf_thread_t *, void *, int, va_list ); ...@@ -38,11 +42,9 @@ static int DoControl( intf_thread_t *, void *, int, va_list );
bool need_update; bool need_update;
VideoWidget::VideoWidget( intf_thread_t *_p_i, bool _always ) : QFrame( NULL ), VideoWidget::VideoWidget( intf_thread_t *_p_i ) : QFrame( NULL ), p_intf( _p_i )
p_intf( _p_i )
{ {
vlc_mutex_init( p_intf, &lock ); vlc_mutex_init( p_intf, &lock );
always = _always;
p_intf->pf_request_window = ::DoRequest; p_intf->pf_request_window = ::DoRequest;
p_intf->pf_release_window = ::DoRelease; p_intf->pf_release_window = ::DoRelease;
...@@ -53,13 +55,6 @@ VideoWidget::VideoWidget( intf_thread_t *_p_i, bool _always ) : QFrame( NULL ), ...@@ -53,13 +55,6 @@ VideoWidget::VideoWidget( intf_thread_t *_p_i, bool _always ) : QFrame( NULL ),
setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ); setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred );
ON_TIMEOUT( update() ); ON_TIMEOUT( update() );
if( always )
{
DrawBackground();
CONNECT( THEMIM->getIM(), audioStarted(), this, hasAudio() );
CONNECT( THEMIM->getIM(), audioStarted(), this, hasVideo() );
}
need_update = false; need_update = false;
} }
...@@ -93,9 +88,6 @@ VideoWidget::~VideoWidget() ...@@ -93,9 +88,6 @@ VideoWidget::~VideoWidget()
p_intf->pf_control_window = NULL; p_intf->pf_control_window = NULL;
vlc_mutex_unlock( &lock ); vlc_mutex_unlock( &lock );
vlc_mutex_destroy( &lock ); vlc_mutex_destroy( &lock );
if( always )
CleanBackground();
} }
QSize VideoWidget::sizeHint() const QSize VideoWidget::sizeHint() const
...@@ -119,19 +111,6 @@ void *VideoWidget::Request( vout_thread_t *p_nvout, int *pi_x, int *pi_y, ...@@ -119,19 +111,6 @@ void *VideoWidget::Request( vout_thread_t *p_nvout, int *pi_x, int *pi_y,
} }
p_vout = p_nvout; p_vout = p_nvout;
// if( THEMIM->getIM()->b_has_video )
// {
// We are really running a video
// Close the existing vout
// Set visual to disabled
// }
// else
// {
// We are getting a request for visual
// Just go on.
// }
// Check THEMIM->b_has_audio. If true, hide audio.
setMinimumSize( 1,1 ); setMinimumSize( 1,1 );
p_intf->p_sys->p_mi->videoSize = QSize( *pi_width, *pi_height ); p_intf->p_sys->p_mi->videoSize = QSize( *pi_width, *pi_height );
updateGeometry(); updateGeometry();
...@@ -144,15 +123,6 @@ static void DoRelease( intf_thread_t *p_intf, void *p_win ) ...@@ -144,15 +123,6 @@ static void DoRelease( intf_thread_t *p_intf, void *p_win )
return p_intf->p_sys->p_video->Release( p_win ); return p_intf->p_sys->p_video->Release( p_win );
} }
void VideoWidget::resizeEvent( QResizeEvent *e )
{
if( !always )return;
if( e->size().height() < ICON_SIZE -1 )
label->setMaximumWidth( e->size().height() );
else
label->setMaximumWidth( ICON_SIZE );
}
void VideoWidget::Release( void *p_win ) void VideoWidget::Release( void *p_win )
{ {
p_vout = NULL; p_vout = NULL;
...@@ -164,57 +134,11 @@ void VideoWidget::Release( void *p_win ) ...@@ -164,57 +134,11 @@ void VideoWidget::Release( void *p_win )
} }
} }
void VideoWidget::hasAudio()
{
/* We have video already, do nothing */
if( THEMIM->getIM()->b_has_video )
{
}
else
{
/* Show the panel to the user */
fprintf( stderr, "Showing panel\n" );
}
}
void VideoWidget::hasVideo()
{
// if panel is shown, hide it
}
static int DoControl( intf_thread_t *p_intf, void *p_win, int i_q, va_list a ) static int DoControl( intf_thread_t *p_intf, void *p_win, int i_q, va_list a )
{ {
return p_intf->p_sys->p_video->Control( p_win, i_q, a ); return p_intf->p_sys->p_video->Control( p_win, i_q, a );
} }
int VideoWidget::DrawBackground()
{
setAutoFillBackground( true );
plt = palette();
plt.setColor( QPalette::Active, QPalette::Window , Qt::black );
plt.setColor( QPalette::Inactive, QPalette::Window , Qt::black );
setPalette( plt );
backgroundLayout = new QHBoxLayout;
label = new QLabel( "" );
label->setMaximumHeight( ICON_SIZE );
label->setMaximumWidth( ICON_SIZE );
label->setScaledContents( true );
label->setPixmap( QPixmap( ":/vlc128.png" ) );
backgroundLayout = new QHBoxLayout;
backgroundLayout->addWidget( label );
setLayout( backgroundLayout );
return 0;
}
int VideoWidget::CleanBackground()
{
backgroundLayout->takeAt(0);
delete backgroundLayout;
return 0;
}
int VideoWidget::Control( void *p_window, int i_query, va_list args ) int VideoWidget::Control( void *p_window, int i_query, va_list args )
{ {
int i_ret = VLC_EGENERIC; int i_ret = VLC_EGENERIC;
...@@ -255,3 +179,64 @@ int VideoWidget::Control( void *p_window, int i_query, va_list args ) ...@@ -255,3 +179,64 @@ int VideoWidget::Control( void *p_window, int i_query, va_list args )
vlc_mutex_unlock( &lock ); vlc_mutex_unlock( &lock );
return i_ret; return i_ret;
} }
/**********************************************************************
* Background Widget. Show a simple image background. Currently,
* it's a static cone.
**********************************************************************/
BackgroundWidget::BackgroundWidget( intf_thread_t *_p_i ) :
QFrame( NULL ), p_intf( _p_i )
{
DrawBackground();
CONNECT( THEMIM->getIM(), audioStarted(), this, hasAudio() );
CONNECT( THEMIM->getIM(), audioStarted(), this, hasVideo() );
}
int BackgroundWidget::DrawBackground()
{
setAutoFillBackground( true );
plt = palette();
plt.setColor( QPalette::Active, QPalette::Window , Qt::black );
plt.setColor( QPalette::Inactive, QPalette::Window , Qt::black );
setPalette( plt );
backgroundLayout = new QHBoxLayout;
label = new QLabel( "" );
label->setMaximumHeight( ICON_SIZE );
label->setMaximumWidth( ICON_SIZE );
label->setScaledContents( true );
label->setPixmap( QPixmap( ":/vlc128.png" ) );
backgroundLayout = new QHBoxLayout;
backgroundLayout->addWidget( label );
setLayout( backgroundLayout );
return 0;
}
int BackgroundWidget::CleanBackground()
{
backgroundLayout->takeAt(0);
delete backgroundLayout;
return 0;
}
void BackgroundWidget::hasAudio()
{
/* We have video already, do nothing */
if( THEMIM->getIM()->b_has_video )
{
}
else
{
/* Show the panel to the user */
fprintf( stderr, "Showing panel\n" );
}
}
void BackgroundWidget::resizeEvent( QResizeEvent *e )
{
if( e->size().height() < ICON_SIZE -1 )
label->setMaximumWidth( e->size().height() );
else
label->setMaximumWidth( ICON_SIZE );
}
/***************************************************************************** /*****************************************************************************
* video_widget.hpp : Embedded video * interface_widgets.hpp : Custom widgets for the main interface
**************************************************************************** ****************************************************************************
* Copyright (C) 2006 the VideoLAN team * Copyright (C) 2006 the VideoLAN team
* $Id$ * $Id$
...@@ -21,8 +21,8 @@ ...@@ -21,8 +21,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/ *****************************************************************************/
#ifndef _VIDEO_H_ #ifndef _INTFWIDGETS_H_
#define _VIDEO_H_ #define _INTFWIDGETS_H_
#include <vlc/vlc.h> #include <vlc/vlc.h>
#include <vlc/intf.h> #include <vlc/intf.h>
...@@ -40,7 +40,7 @@ class VideoWidget : public QFrame ...@@ -40,7 +40,7 @@ class VideoWidget : public QFrame
{ {
Q_OBJECT Q_OBJECT
public: public:
VideoWidget( intf_thread_t *, bool ); VideoWidget( intf_thread_t * );
virtual ~VideoWidget(); virtual ~VideoWidget();
virtual QSize sizeHint() const; virtual QSize sizeHint() const;
...@@ -52,20 +52,34 @@ public: ...@@ -52,20 +52,34 @@ public:
int i_video_height, i_video_width; int i_video_height, i_video_width;
vout_thread_t *p_vout; vout_thread_t *p_vout;
private: private:
virtual void resizeEvent( QResizeEvent *e );
int DrawBackground();
int CleanBackground();
bool always;
QPalette plt;
QLabel *label;
QWidget *frame; QWidget *frame;
QHBoxLayout *backgroundLayout;
intf_thread_t *p_intf; intf_thread_t *p_intf;
vlc_mutex_t lock; vlc_mutex_t lock;
private slots: private slots:
void update(); void update();
};
class BackgroundWidget : public QFrame
{
Q_OBJECT
public:
BackgroundWidget( intf_thread_t * );
virtual ~BackgroundWidget();
private:
QPalette plt;
QLabel *label;
QHBoxLayout *backgroundLayout;
virtual void resizeEvent( QResizeEvent *e );
int DrawBackground();
int CleanBackground();
intf_thread_t *p_intf;
private slots:
void hasAudio(); void hasAudio();
void hasVideo(); void hasVideo();
}; };
#endif #endif
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#include "util/input_slider.hpp" #include "util/input_slider.hpp"
#include "util/qvlcframe.hpp" #include "util/qvlcframe.hpp"
#include "dialogs_provider.hpp" #include "dialogs_provider.hpp"
#include "components/video_widget.hpp" #include "components/interface_widgets.hpp"
#include <QCloseEvent> #include <QCloseEvent>
#include <assert.h> #include <assert.h>
#include <QPushButton> #include <QPushButton>
...@@ -88,8 +88,7 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) ...@@ -88,8 +88,7 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
resize ( PREF_W, PREF_H ); resize ( PREF_W, PREF_H );
if( config_GetInt( p_intf, "embedded" ) ) if( config_GetInt( p_intf, "embedded" ) )
{ {
videoWidget = new VideoWidget( p_intf, config_GetInt( p_intf, videoWidget = new VideoWidget( p_intf );
"qt-always-video" ) ? true:false );
if( config_GetInt( p_intf, "qt-always-video" ) ) if( config_GetInt( p_intf, "qt-always-video" ) )
{ {
QSettings settings( "VideoLAN", "VLC" ); QSettings settings( "VideoLAN", "VLC" );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment