Commit a47f5608 authored by Clément Stenac's avatar Clément Stenac

Start handling input

Quit
parent 6309ebbf
......@@ -33,7 +33,7 @@ DialogsProvider::DialogsProvider( intf_thread_t *_p_intf ) :
QObject( NULL ), p_intf( _p_intf )
{
idle_timer = new QTimer( this );
idle_timer->start( 0 );
// idle_timer->start( 0 );
fixed_timer = new QTimer( this );
fixed_timer->start( 100 /* milliseconds */ );
......@@ -90,17 +90,14 @@ void DialogsProvider::openDialog( int i_dialog )
void DialogsProvider::streaminfoDialog()
{
StreamInfoDialog::getInstance( p_intf )->toggleVisible();
QObject::connect( DialogsProvider::getInstance(NULL)->fixed_timer, SIGNAL( timeout() ), this, SLOT( prefsDialog() )) ;
}
void DialogsProvider::prefsDialog()
{
fprintf( stderr, "P\n");
}
void DialogsProvider::messagesDialog()
{
fprintf( stderr, "M\n");
}
void DialogsProvider::popupMenu( int i_dialog )
......
......@@ -40,6 +40,7 @@ InputManager::~InputManager()
void InputManager::setInput( input_thread_t *_p_input )
{
fprintf( stderr, "[IM] Got input\n");
p_input = _p_input;
emit reset();
}
......@@ -58,5 +59,10 @@ void InputManager::update()
i_time = var_GetTime( p_input, "time") / 1000000;
f_pos = var_GetFloat( p_input, "position" );
fprintf( stderr, "Changing pos\n");
emit positionUpdated( f_pos, i_time, i_length );
}
void InputManager::sliderUpdate( float new_pos )
{
}
......@@ -23,24 +23,29 @@
#include "main_interface.hpp"
#include "input_manager.hpp"
#include "dialogs_provider.hpp"
#include <QCloseEvent>
MainInterface::MainInterface( intf_thread_t *p_intf ) : QWidget( NULL )
MainInterface::MainInterface( intf_thread_t *_p_intf ) :
QWidget( NULL ), p_intf( _p_intf)
{
fprintf( stderr, "QT Main interface\n" );
/* Init UI */
/* Init input manager */
p_input = NULL;
main_input_manager = new InputManager( this, p_intf );
}
void MainInterface::init()
{
/* Get timer updates */
QObject::connect( DialogsProvider::getInstance(NULL)->fixed_timer,
SIGNAL( timeout() ), this, SLOT(updateOnTimer() ) );
SIGNAL( timeout() ), this, SLOT(updateOnTimer() ) );
/* Tell input manager about the input changes */
QObject::connect( this, SIGNAL( inputChanged( input_thread_t * ) ),
main_input_manager, SLOT( setInput( input_thread_t * ) ) );
main_input_manager, SLOT( setInput( input_thread_t * ) ) );
}
MainInterface::~MainInterface()
......@@ -49,5 +54,41 @@ MainInterface::~MainInterface()
void MainInterface::updateOnTimer()
{
if( p_intf->b_die )
{
QApplication::quit();
}
vlc_mutex_lock( &p_intf->change_lock );
if( p_input && p_input->b_dead )
{
vlc_object_release( p_input );
p_input = NULL;
emit inputChanged( NULL );
}
if( !p_input )
{
playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf,
VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
assert( p_playlist );
PL_LOCK;
p_input = p_playlist->p_input;
if( p_input )
{
vlc_object_yield( p_input );
fprintf( stderr, "Sending input\n");
emit inputChanged( p_input );
}
PL_UNLOCK;
vlc_object_release( p_playlist );
}
vlc_mutex_unlock( &p_intf->change_lock );
}
void MainInterface::closeEvent( QCloseEvent *e )
{
hide();
p_intf->b_die = VLC_TRUE;
}
......@@ -27,6 +27,7 @@
#include <QWidget>
class InputManager;
class QCloseEvent;
class MainInterface : public QWidget
{
......@@ -35,10 +36,17 @@ public:
MainInterface( intf_thread_t *);
virtual ~MainInterface();
void init();
protected:
void closeEvent( QCloseEvent *);
private:
InputManager *main_input_manager;
intf_thread_t *p_intf;
/// Main input associated to the playlist
input_thread_t *p_input;
private slots:
void updateOnTimer();
signals:
void inputChanged( input_thread_t *);
};
#endif
......@@ -115,15 +115,18 @@ static void Init( intf_thread_t *p_intf )
QApplication *app = new QApplication( argc, argv , true );
p_intf->p_sys->p_app = app;
// Initialize timers
DialogsProvider::getInstance( p_intf );
/* Normal interface */
if( !p_intf->pf_show_dialog )
{
MainInterface *p_mi = new MainInterface( p_intf );
p_intf->p_sys->p_mi = p_mi;
p_mi->init();
p_mi->show();
}
DialogsProvider::getInstance( p_intf );
if( p_intf->pf_show_dialog )
vlc_thread_ready( p_intf );
......
......@@ -31,7 +31,7 @@ void InputSlider::init()
setPageStep( 100 );
setTracking( true );
QObject::connect( this, SIGNAL( valueChanged(int) ), this,
SLOT( userDrag( int ) ) );
SLOT( userDrag( int ) ) );
}
void InputSlider::setPosition( float pos, int a, int b )
......
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