Commit 2e6b2114 authored by Clément Stenac's avatar Clément Stenac

Advanced controls bar

Make some sttings persistent
parent 19f019c7
...@@ -30,7 +30,7 @@ TOMOC = main_interface \ ...@@ -30,7 +30,7 @@ TOMOC = main_interface \
dialogs/streaminfo \ dialogs/streaminfo \
dialogs/extended \ dialogs/extended \
dialogs/interaction \ dialogs/interaction \
components/equalizer \ components/extended_panels \
components/infopanels \ components/infopanels \
components/preferences_widgets \ components/preferences_widgets \
components/preferences \ components/preferences \
...@@ -56,7 +56,7 @@ nodist_SOURCES_qt4 = \ ...@@ -56,7 +56,7 @@ nodist_SOURCES_qt4 = \
dialogs/errors.moc.cpp \ dialogs/errors.moc.cpp \
dialogs/prefs_dialog.moc.cpp \ dialogs/prefs_dialog.moc.cpp \
dialogs/interaction.moc.cpp \ dialogs/interaction.moc.cpp \
components/equalizer.moc.cpp \ components/extended_panels.moc.cpp \
components/infopanels.moc.cpp \ components/infopanels.moc.cpp \
components/preferences_widgets.moc.cpp \ components/preferences_widgets.moc.cpp \
components/preferences.moc.cpp \ components/preferences.moc.cpp \
...@@ -102,7 +102,7 @@ SOURCES_qt4 = qt4.cpp \ ...@@ -102,7 +102,7 @@ SOURCES_qt4 = qt4.cpp \
dialogs/messages.cpp \ dialogs/messages.cpp \
dialogs/errors.cpp \ dialogs/errors.cpp \
dialogs/interaction.cpp \ dialogs/interaction.cpp \
components/equalizer.cpp \ components/extended_panels.cpp \
components/infopanels.cpp \ components/infopanels.cpp \
components/preferences_widgets.cpp \ components/preferences_widgets.cpp \
components/preferences.cpp \ components/preferences.cpp \
...@@ -130,7 +130,7 @@ EXTRA_DIST += \ ...@@ -130,7 +130,7 @@ EXTRA_DIST += \
dialogs/errors.hpp \ dialogs/errors.hpp \
dialogs/prefs_dialog.hpp \ dialogs/prefs_dialog.hpp \
dialogs/interaction.hpp \ dialogs/interaction.hpp \
components/equalizer.hpp \ components/extended_panels.hpp \
components/infopanels.hpp \ components/infopanels.hpp \
components/preferences_widgets.hpp \ components/preferences_widgets.hpp \
components/preferences.hpp \ components/preferences.hpp \
......
/***************************************************************************** /*****************************************************************************
* equalizer.cpp : Equalizer * extended_panels.cpp : Extended controls panels
**************************************************************************** ****************************************************************************
* Copyright (C) 2006 the VideoLAN team * Copyright (C) 2006 the VideoLAN team
* $Id: preferences.cpp 16643 2006-09-13 12:45:46Z zorglub $ * $Id: preferences.cpp 16643 2006-09-13 12:45:46Z zorglub $
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
#include <QFont> #include <QFont>
#include <QGridLayout> #include <QGridLayout>
#include "components/equalizer.hpp" #include "components/extended_panels.hpp"
#include "qt4.hpp" #include "qt4.hpp"
#include "../../audio_filter/equalizer_presets.h" #include "../../audio_filter/equalizer_presets.h"
...@@ -36,6 +36,10 @@ ...@@ -36,6 +36,10 @@
#include <vlc_intf_strings.h> #include <vlc_intf_strings.h>
#include <assert.h> #include <assert.h>
/**********************************************************************
* Equalizer
**********************************************************************/
static const QString band_frequencies[] = static const QString band_frequencies[] =
{ {
" 60Hz ", " 170 Hz " , " 310 Hz ", " 600 Hz ", " 1 kHz ", " 60Hz ", " 170 Hz " , " 310 Hz ", " 600 Hz ", " 1 kHz ",
...@@ -257,3 +261,16 @@ void Equalizer::addCallbacks( aout_instance_t *p_aout ) ...@@ -257,3 +261,16 @@ void Equalizer::addCallbacks( aout_instance_t *p_aout )
// var_AddCallback( p_aout, "equalizer-bands", EqzCallback, this ); // var_AddCallback( p_aout, "equalizer-bands", EqzCallback, this );
// var_AddCallback( p_aout, "equalizer-preamp", EqzCallback, this ); // var_AddCallback( p_aout, "equalizer-preamp", EqzCallback, this );
} }
/**********************************************************************
* Video filters / Adjust
**********************************************************************/
/**********************************************************************
* Audio filters
**********************************************************************/
/**********************************************************************
* Extended playbak controls
**********************************************************************/
...@@ -56,4 +56,20 @@ private slots: ...@@ -56,4 +56,20 @@ private slots:
void setPreset(int); void setPreset(int);
}; };
class ExtendedControls: public QWidget
{
Q_OBJECT
public:
ExtendedControls( intf_thread_t *, QWidget * ) {};
virtual ~ExtendedControls() {};
private:
intf_thread_t *p_intf;
private slots:
void slower() {};
void faster() {};
void normal() {};
void snapshot() {};
};
#endif #endif
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
#include "pixmaps/art.xpm" #include "pixmaps/art.xpm"
#include <vlc/vout.h> #include <vlc/vout.h>
#include <QLabel>
#include <QSpacerItem>
#include <QCursor> #include <QCursor>
#include <QPushButton> #include <QPushButton>
#include <QHBoxLayout> #include <QHBoxLayout>
...@@ -154,6 +156,17 @@ VisualSelector::VisualSelector( intf_thread_t *_p_i ) : ...@@ -154,6 +156,17 @@ VisualSelector::VisualSelector( intf_thread_t *_p_i ) :
QPushButton *nextButton = new QPushButton( "Next"); QPushButton *nextButton = new QPushButton( "Next");
layout->addWidget( prevButton ); layout->addWidget( prevButton );
layout->addWidget( nextButton ); layout->addWidget( nextButton );
layout->addItem( new QSpacerItem( 40,20,
QSizePolicy::Expanding, QSizePolicy::Minimum) );
layout->addWidget( new QLabel( qtr("Current visualization:") ) );
current = new QLabel( qtr( "None" ) );
layout->addWidget( current );
BUTTONACT( prevButton, prev() );
BUTTONACT( nextButton, next() );
setLayout( layout ); setLayout( layout );
setMaximumHeight( 35 ); setMaximumHeight( 35 );
} }
...@@ -162,6 +175,103 @@ VisualSelector::~VisualSelector() ...@@ -162,6 +175,103 @@ VisualSelector::~VisualSelector()
{ {
} }
void VisualSelector::prev()
{
char *psz_new = aout_VisualPrev( p_intf );
if( psz_new )
{
current->setText( qfu( psz_new ) );
free( psz_new );
}
}
void VisualSelector::next()
{
char *psz_new = aout_VisualNext( p_intf );
if( psz_new )
{
current->setText( qfu( psz_new ) );
free( psz_new );
}
}
/**********************************************************************
* More controls
**********************************************************************/
ControlsWidget::ControlsWidget( intf_thread_t *_p_i ) :
QFrame( NULL ), p_intf( _p_i )
{
QHBoxLayout *layout = new QHBoxLayout( this );
layout->setMargin( 0 );
slowerButton = new QPushButton( "S" );
BUTTON_SET_ACT( slowerButton, "S", qtr("Slower" ), slower() );
layout->addWidget( slowerButton );
slowerButton->setMaximumWidth( 35 );
normalButton = new QPushButton( "N" );
BUTTON_SET_ACT( normalButton, "N", qtr("Normal rate"), normal() );
layout->addWidget( normalButton );
normalButton->setMaximumWidth( 35 );
fasterButton = new QPushButton( "F" );
BUTTON_SET_ACT( fasterButton, "F", qtr("Faster" ), faster() );
layout->addWidget( fasterButton );
fasterButton->setMaximumWidth( 35 );
layout->addItem( new QSpacerItem( 100,20,
QSizePolicy::Expanding, QSizePolicy::Minimum) );
snapshotButton = new QPushButton( "S" );
BUTTON_SET_ACT( snapshotButton, "S", qtr("Take a snapshot"), snapshot() );
layout->addWidget( snapshotButton );
snapshotButton->setMaximumWidth( 35 );
fullscreenButton = new QPushButton( "F" );
BUTTON_SET_ACT( fullscreenButton, "F", qtr("Fullscreen"), fullscreen() );
layout->addWidget( fullscreenButton );
fullscreenButton->setMaximumWidth( 35 );
}
ControlsWidget::~ControlsWidget()
{
}
void ControlsWidget::enableInput( bool enable )
{
slowerButton->setEnabled( enable );
normalButton->setEnabled( enable );
fasterButton->setEnabled( enable );
}
void ControlsWidget::enableVideo( bool enable )
{
snapshotButton->setEnabled( enable );
fullscreenButton->setEnabled( enable );
}
void ControlsWidget::slower()
{
THEMIM->getIM()->slower();
}
void ControlsWidget::faster()
{
THEMIM->getIM()->faster();
}
void ControlsWidget::normal()
{
THEMIM->getIM()->normalRate();
}
void ControlsWidget::snapshot()
{
}
void ControlsWidget::fullscreen()
{
}
/********************************************************************** /**********************************************************************
* Playlist Widget. The embedded playlist * Playlist Widget. The embedded playlist
**********************************************************************/ **********************************************************************/
......
...@@ -89,8 +89,34 @@ public: ...@@ -89,8 +89,34 @@ public:
virtual ~VisualSelector(); virtual ~VisualSelector();
private: private:
intf_thread_t *p_intf; intf_thread_t *p_intf;
QLabel *current;
private slots:
void prev();
void next();
}; };
class QPushButton;
class ControlsWidget : public QFrame
{
Q_OBJECT
public:
ControlsWidget( intf_thread_t *);
virtual ~ControlsWidget();
void enableInput( bool );
void enableVideo( bool );
private:
intf_thread_t *p_intf;
QPushButton *slowerButton, *normalButton, *fasterButton;
QPushButton *fullscreenButton, *snapshotButton;
private slots:
void faster();
void slower();
void normal();
void snapshot();
void fullscreen();
};
/******************** Playlist Widgets ****************/ /******************** Playlist Widgets ****************/
#include <QModelIndex> #include <QModelIndex>
class QSignalMapper; class QSignalMapper;
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#include "dialogs/extended.hpp" #include "dialogs/extended.hpp"
#include "dialogs_provider.hpp" #include "dialogs_provider.hpp"
#include "util/qvlcframe.hpp" #include "util/qvlcframe.hpp"
#include "components/equalizer.hpp" #include "components/extended_panels.hpp"
#include "qt4.hpp" #include "qt4.hpp"
ExtendedDialog *ExtendedDialog::instance = NULL; ExtendedDialog *ExtendedDialog::instance = NULL;
......
...@@ -55,6 +55,11 @@ void InputManager::setInput( input_thread_t *_p_input ) ...@@ -55,6 +55,11 @@ void InputManager::setInput( input_thread_t *_p_input )
b_had_audio = b_had_video = b_has_audio = b_has_video = false; b_had_audio = b_had_video = b_has_audio = b_has_video = false;
if( p_input ) if( p_input )
{ {
vlc_value_t val;
var_Change( p_input, "video-es", VLC_VAR_CHOICESCOUNT, &val, NULL );
b_has_video = val.i_int > 0;
var_Change( p_input, "audio-es", VLC_VAR_CHOICESCOUNT, &val, NULL );
b_has_audio = val.i_int > 0;
var_AddCallback( p_input, "audio-es", ChangeAudio, this ); var_AddCallback( p_input, "audio-es", ChangeAudio, this );
var_AddCallback( p_input, "video-es", ChangeVideo, this ); var_AddCallback( p_input, "video-es", ChangeVideo, this );
} }
...@@ -139,7 +144,7 @@ void InputManager::update() ...@@ -139,7 +144,7 @@ void InputManager::update()
void InputManager::sliderUpdate( float new_pos ) void InputManager::sliderUpdate( float new_pos )
{ {
if( p_input && !p_input->b_die && !p_input->b_dead ) if( hasInput() )
var_SetFloat( p_input, "position", new_pos ); var_SetFloat( p_input, "position", new_pos );
} }
...@@ -161,6 +166,24 @@ void InputManager::togglePlayPause() ...@@ -161,6 +166,24 @@ void InputManager::togglePlayPause()
emit statusChanged( state.i_int ); emit statusChanged( state.i_int );
} }
void InputManager::slower()
{
if( hasInput() )
var_SetVoid( p_input, "rate-slower" );
}
void InputManager::faster()
{
if( hasInput() )
var_SetVoid( p_input, "rate-faster" );
}
void InputManager::normalRate()
{
if( hasInput() )
var_SetInteger( p_input, "rate", INPUT_RATE_DEFAULT );
}
/********************************************************************** /**********************************************************************
* MainInputManager implementation. Wrap an input manager and * MainInputManager implementation. Wrap an input manager and
* take care of updating the main playlist input * take care of updating the main playlist input
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include <QObject> #include <QObject>
#include <vlc/vlc.h> #include <vlc/vlc.h>
#include <vlc/input.h>
class InputManager : public QObject class InputManager : public QObject
{ {
...@@ -35,6 +36,7 @@ public: ...@@ -35,6 +36,7 @@ public:
virtual ~InputManager(); virtual ~InputManager();
void delInput(); void delInput();
bool hasInput() { return p_input && !p_input->b_dead && !p_input->b_die; }
bool hasAudio() { return b_has_audio; } bool hasAudio() { return b_has_audio; }
bool hasVideo() { return b_has_video; } bool hasVideo() { return b_has_video; }
bool b_has_audio, b_has_video, b_had_audio, b_had_video; bool b_has_audio, b_has_video, b_had_audio, b_had_video;
...@@ -48,6 +50,9 @@ public slots: ...@@ -48,6 +50,9 @@ public slots:
void update(); ///< Periodic updates void update(); ///< Periodic updates
void setInput( input_thread_t * ); ///< Our controlled input changed void setInput( input_thread_t * ); ///< Our controlled input changed
void sliderUpdate( float ); ///< User dragged the slider. We get new pos void sliderUpdate( float ); ///< User dragged the slider. We get new pos
void slower();
void faster();
void normalRate();
signals: signals:
/// Send new position, new time and new length /// Send new position, new time and new length
void positionUpdated( float , int, int ); void positionUpdated( float , int, int );
......
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
#include <assert.h> #include <assert.h>
#include <vlc_keys.h> #include <vlc_keys.h>
#include <vlc/vout.h> #include <vlc/vout.h>
#include <aout_internal.h>
#ifdef WIN32 #ifdef WIN32
#define PREF_W 410 #define PREF_W 410
...@@ -48,10 +49,6 @@ ...@@ -48,10 +49,6 @@
#define PREF_H 125 #define PREF_H 125
#endif #endif
#define BUTTON_SET( button, image, tooltip ) ui.button##Button->setText(""); \
ui.button##Button->setIcon( QIcon( ":/pixmaps/"#image ) ); \
ui.button##Button->setToolTip( tooltip );
#define VISIBLE(i) (i && i->isVisible()) #define VISIBLE(i) (i && i->isVisible())
#define SET_WIDTH(i,j) i->widgetSize.setWidth(j) #define SET_WIDTH(i,j) i->widgetSize.setWidth(j)
...@@ -90,10 +87,24 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) ...@@ -90,10 +87,24 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
bgWidget = NULL; videoWidget = NULL; playlistWidget = NULL; bgWidget = NULL; videoWidget = NULL; playlistWidget = NULL;
embeddedPlaylistWasActive = videoIsActive = false; embeddedPlaylistWasActive = videoIsActive = false;
/* Fetch configuration from settings and vlc config */
videoEmbeddedFlag = false;
if( config_GetInt( p_intf, "embedded-video" ) )
videoEmbeddedFlag = true;
alwaysVideoFlag = false;
if( videoEmbeddedFlag && config_GetInt( p_intf, "qt-always-video" ))
alwaysVideoFlag = true;
playlistEmbeddedFlag = settings->value( "playlist-embedded", true ).
toBool();
advControlsEnabled= settings->value( "adv-controls", false ).toBool();
setWindowTitle( QString::fromUtf8( _("VLC media player") ) ); setWindowTitle( QString::fromUtf8( _("VLC media player") ) );
handleMainUi( settings ); handleMainUi( settings );
QVLCMenu::createMenuBar( this, p_intf, playlistEmbeddedFlag ); QVLCMenu::createMenuBar( this, p_intf, playlistEmbeddedFlag,
advControlsEnabled );
/* Status bar */ /* Status bar */
timeLabel = new QLabel( 0 ); timeLabel = new QLabel( 0 );
...@@ -126,7 +137,11 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) ...@@ -126,7 +137,11 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
MainInterface::~MainInterface() MainInterface::~MainInterface()
{ {
/// \todo Save everything settings->setValue( "playlist-embedded", playlistEmbeddedFlag );
settings->setValue( "adv-controls", advControlsEnabled );
settings->setValue( "pos", pos() );
settings->endGroup();
delete settings;
p_intf->b_interaction = VLC_FALSE; p_intf->b_interaction = VLC_FALSE;
var_DelCallback( p_intf, "interaction", InteractCallback, this ); var_DelCallback( p_intf, "interaction", InteractCallback, this );
...@@ -144,17 +159,13 @@ void MainInterface::handleMainUi( QSettings *settings ) ...@@ -144,17 +159,13 @@ void MainInterface::handleMainUi( QSettings *settings )
slider = new InputSlider( Qt::Horizontal, NULL ); slider = new InputSlider( Qt::Horizontal, NULL );
ui.hboxLayout->insertWidget( 0, slider ); ui.hboxLayout->insertWidget( 0, slider );
BUTTON_SET( prev, previous.png, qtr( "Previous" ) ); BUTTON_SET_ACT_I( ui.prevButton, "" , previous.png,
BUTTONACT( ui.prevButton, prev() ); qtr("Previous"), prev() );
BUTTON_SET( next, next.png , qtr( "Next" ) ); BUTTON_SET_ACT_I( ui.nextButton, "", next.png, qtr("Next"), next() );
BUTTONACT( ui.nextButton, next() ); BUTTON_SET_ACT_I( ui.playButton, "", play.png, qtr("Play"), play() );
BUTTON_SET( play, play.png , qtr( "Play" ) ); BUTTON_SET_ACT_I( ui.stopButton, "", stop.png, qtr("Stop"), stop() );
BUTTONACT( ui.playButton, play() ); BUTTON_SET_ACT_I( ui.visualButton, "", stop.png,
BUTTON_SET( stop, stop.png , qtr( "Stop" ) ); qtr( "Audio visualizations" ), visual() );
BUTTONACT( ui.stopButton, stop() );
BUTTON_SET( visual, stop.png, qtr( "Audio visualizations" ) );
BUTTONACT( ui.visualButton, visual() );
/* Volume */ /* Volume */
ui.volMuteLabel->setPixmap( QPixmap( ":/pixmaps/volume-low.png" ) ); ui.volMuteLabel->setPixmap( QPixmap( ":/pixmaps/volume-low.png" ) );
...@@ -164,20 +175,8 @@ void MainInterface::handleMainUi( QSettings *settings ) ...@@ -164,20 +175,8 @@ void MainInterface::handleMainUi( QSettings *settings )
ui.volMuteLabel->installEventFilter(h); ui.volMuteLabel->installEventFilter(h);
ui.volumeSlider->setFocusPolicy( Qt::NoFocus ); ui.volumeSlider->setFocusPolicy( Qt::NoFocus );
/* Fetch configuration from settings and vlc config */ BUTTON_SET_IMG( ui.playlistButton, "" ,volume-low.png,
videoEmbeddedFlag = false; playlistEmbeddedFlag ? qtr( "Show playlist" ) :
if( config_GetInt( p_intf, "embedded-video" ) )
videoEmbeddedFlag = true;
alwaysVideoFlag = false;
if( videoEmbeddedFlag && config_GetInt( p_intf, "qt-always-video" ))
alwaysVideoFlag = true;
playlistEmbeddedFlag = true;
/// \todo fetch playlist settings
BUTTON_SET( playlist, volume-low.png, playlistEmbeddedFlag ?
qtr( "Show playlist" ) :
qtr( "Open playlist" ) ); qtr( "Open playlist" ) );
BUTTONACT( ui.playlistButton, playlist() ); BUTTONACT( ui.playlistButton, playlist() );
...@@ -186,6 +185,12 @@ void MainInterface::handleMainUi( QSettings *settings ) ...@@ -186,6 +185,12 @@ void MainInterface::handleMainUi( QSettings *settings )
addSize = QSize( ui.vboxLayout->margin() * 2, PREF_H ); addSize = QSize( ui.vboxLayout->margin() * 2, PREF_H );
advControls = new ControlsWidget( p_intf );
ui.vboxLayout->insertWidget( 0, advControls );
advControls->updateGeometry();
if( !advControlsEnabled ) advControls->hide();
need_components_update = true;
visualSelector = new VisualSelector( p_intf ); visualSelector = new VisualSelector( p_intf );
ui.vboxLayout->insertWidget( 0, visualSelector ); ui.vboxLayout->insertWidget( 0, visualSelector );
visualSelector->hide(); visualSelector->hide();
...@@ -211,10 +216,6 @@ void MainInterface::handleMainUi( QSettings *settings ) ...@@ -211,10 +216,6 @@ void MainInterface::handleMainUi( QSettings *settings )
p_intf->pf_release_window = ::DoRelease; p_intf->pf_release_window = ::DoRelease;
p_intf->pf_control_window = ::DoControl; p_intf->pf_control_window = ::DoControl;
} }
calculateInterfaceSize();
resize( mainSize );
setMinimumSize( PREF_W, addSize.height() ); setMinimumSize( PREF_W, addSize.height() );
} }
...@@ -249,7 +250,14 @@ void MainInterface::calculateInterfaceSize() ...@@ -249,7 +250,14 @@ void MainInterface::calculateInterfaceSize()
} }
if( VISIBLE( visualSelector ) ) if( VISIBLE( visualSelector ) )
height += visualSelector->height(); height += visualSelector->height();
fprintf( stderr, "Adv %p - visible %i\n", advControls, advControls->isVisible() );
if( VISIBLE( advControls) )
{
fprintf( stderr, "visible\n" );
height += advControls->sizeHint().height();
}
fprintf( stderr, "Adv height %i\n", advControls->sizeHint().height() );
fprintf( stderr, "Setting to %ix%i\n", fprintf( stderr, "Setting to %ix%i\n",
width + addSize.width() , height + addSize.height() ); width + addSize.width() , height + addSize.height() );
...@@ -265,14 +273,12 @@ void MainInterface::resizeEvent( QResizeEvent *e ) ...@@ -265,14 +273,12 @@ void MainInterface::resizeEvent( QResizeEvent *e )
SET_WH( videoWidget, e->size().width() - addSize.width(), SET_WH( videoWidget, e->size().width() - addSize.width(),
e->size().height() - addSize.height() ); e->size().height() - addSize.height() );
videoWidget->updateGeometry(); videoWidget->updateGeometry();
fprintf( stderr, "Video set to %ix%i\n", DS( videoWidget->widgetSize) );
} }
if( VISIBLE( playlistWidget ) ) if( VISIBLE( playlistWidget ) )
{ {
SET_WH( playlistWidget , e->size().width() - addSize.width(), SET_WH( playlistWidget , e->size().width() - addSize.width(),
e->size().height() - addSize.height() ); e->size().height() - addSize.height() );
playlistWidget->updateGeometry(); playlistWidget->updateGeometry();
fprintf( stderr, "PL set to %ix%i\n",DS(playlistWidget->widgetSize ) );
} }
} }
...@@ -361,6 +367,21 @@ int MainInterface::controlVideo( void *p_window, int i_query, va_list args ) ...@@ -361,6 +367,21 @@ int MainInterface::controlVideo( void *p_window, int i_query, va_list args )
return i_ret; return i_ret;
} }
void MainInterface::advanced()
{
if( !VISIBLE( advControls ) )
{
advControls->show();
advControlsEnabled = true;
}
else
{
advControls->hide();
advControlsEnabled = false;
}
doComponentsUpdate();
}
void MainInterface::visual() void MainInterface::visual()
{ {
if( !VISIBLE( visualSelector) ) if( !VISIBLE( visualSelector) )
...@@ -404,7 +425,6 @@ void MainInterface::playlist() ...@@ -404,7 +425,6 @@ void MainInterface::playlist()
/// Todo, reset its size ? /// Todo, reset its size ?
if( VISIBLE( playlistWidget) ) if( VISIBLE( playlistWidget) )
{ {
fprintf( stderr, "hiding playlist\n" );
playlistWidget->hide(); playlistWidget->hide();
if( videoIsActive ) if( videoIsActive )
{ {
...@@ -415,7 +435,6 @@ void MainInterface::playlist() ...@@ -415,7 +435,6 @@ void MainInterface::playlist()
} }
else else
{ {
fprintf( stderr, "showing playlist\n" );
playlistWidget->show(); playlistWidget->show();
if( videoIsActive ) if( videoIsActive )
{ {
...@@ -448,7 +467,7 @@ void MainInterface::undockPlaylist() ...@@ -448,7 +467,7 @@ void MainInterface::undockPlaylist()
playlistEmbeddedFlag = false; playlistEmbeddedFlag = false;
menuBar()->clear(); menuBar()->clear();
QVLCMenu::createMenuBar( this, p_intf, false ); QVLCMenu::createMenuBar( this, p_intf, false, advControlsEnabled );
if( videoIsActive ) if( videoIsActive )
{ {
...@@ -469,7 +488,7 @@ void MainInterface::customEvent( QEvent *event ) ...@@ -469,7 +488,7 @@ void MainInterface::customEvent( QEvent *event )
PlaylistDialog::killInstance(); PlaylistDialog::killInstance();
playlistEmbeddedFlag = true; playlistEmbeddedFlag = true;
menuBar()->clear(); menuBar()->clear();
QVLCMenu::createMenuBar(this, p_intf, true ); QVLCMenu::createMenuBar(this, p_intf, true, advControlsEnabled );
playlist(); playlist();
} }
} }
...@@ -587,6 +606,21 @@ static bool b_my_volume; ...@@ -587,6 +606,21 @@ static bool b_my_volume;
void MainInterface::updateOnTimer() void MainInterface::updateOnTimer()
{ {
aout_instance_t *p_aout = (aout_instance_t *)vlc_object_find( p_intf,
VLC_OBJECT_AOUT, FIND_ANYWHERE );
/* Todo: make this event-driven */
if( p_aout )
{
ui.visualButton->setEnabled( true );
vlc_object_release( p_aout );
}
else
ui.visualButton->setEnabled( false );
/* And this too */
advControls->enableInput( THEMIM->getIM()->hasInput() );
advControls->enableVideo( THEMIM->getIM()->hasVideo() );
if( p_intf->b_die ) if( p_intf->b_die )
{ {
QApplication::closeAllWindows(); QApplication::closeAllWindows();
...@@ -634,8 +668,6 @@ static int InteractCallback( vlc_object_t *p_this, ...@@ -634,8 +668,6 @@ static int InteractCallback( vlc_object_t *p_this,
{ {
intf_dialog_args_t *p_arg = new intf_dialog_args_t; intf_dialog_args_t *p_arg = new intf_dialog_args_t;
p_arg->p_dialog = (interaction_dialog_t *)(new_val.p_address); p_arg->p_dialog = (interaction_dialog_t *)(new_val.p_address);
MainInterface *p_interface = (MainInterface*)param;
DialogEvent *event = new DialogEvent( INTF_DIALOG_INTERACTION, 0, p_arg ); DialogEvent *event = new DialogEvent( INTF_DIALOG_INTERACTION, 0, p_arg );
QApplication::postEvent( THEDP, static_cast<QEvent*>(event) ); QApplication::postEvent( THEDP, static_cast<QEvent*>(event) );
return VLC_SUCCESS; return VLC_SUCCESS;
......
...@@ -42,6 +42,7 @@ class BackgroundWidget; ...@@ -42,6 +42,7 @@ class BackgroundWidget;
class PlaylistWidget; class PlaylistWidget;
class VolumeClickHandler; class VolumeClickHandler;
class VisualSelector; class VisualSelector;
class ControlsWidget;
class MainInterface : public QVLCMW class MainInterface : public QVLCMW
{ {
...@@ -74,11 +75,13 @@ private: ...@@ -74,11 +75,13 @@ private:
BackgroundWidget *bgWidget; BackgroundWidget *bgWidget;
VisualSelector *visualSelector; VisualSelector *visualSelector;
ControlsWidget *advControls;
PlaylistWidget *playlistWidget; PlaylistWidget *playlistWidget;
bool playlistEmbeddedFlag; bool playlistEmbeddedFlag;
bool videoEmbeddedFlag; bool videoEmbeddedFlag;
bool alwaysVideoFlag; bool alwaysVideoFlag;
bool advControlsEnabled;
InputManager *main_input_manager; InputManager *main_input_manager;
InputSlider *slider; InputSlider *slider;
...@@ -101,6 +104,7 @@ private slots: ...@@ -101,6 +104,7 @@ private slots:
void next(); void next();
void playlist(); void playlist();
void visual(); void visual();
void advanced();
void updateVolume( int sliderVolume ); void updateVolume( int sliderVolume );
}; };
......
...@@ -120,15 +120,15 @@ static int AudioAutoMenuBuilder( vlc_object_t *p_object, ...@@ -120,15 +120,15 @@ static int AudioAutoMenuBuilder( vlc_object_t *p_object,
THEDP->menusUpdateMapper->setMapping( menu, f ); } THEDP->menusUpdateMapper->setMapping( menu, f ); }
void QVLCMenu::createMenuBar( MainInterface *mi, intf_thread_t *p_intf, void QVLCMenu::createMenuBar( MainInterface *mi, intf_thread_t *p_intf,
bool playlist ) bool playlist, bool adv_controls_enabled )
{ {
QMenuBar *bar = mi->menuBar(); QMenuBar *bar = mi->menuBar();
BAR_ADD( FileMenu(), qtr("File") ); BAR_ADD( FileMenu(), qtr("Media") );
if( playlist ) if( playlist )
{ {
BAR_ADD( PlaylistMenu( mi,p_intf ), qtr("Playlist" ) ); BAR_ADD( PlaylistMenu( mi,p_intf ), qtr("Playlist" ) );
} }
BAR_ADD( ToolsMenu( p_intf ), qtr("Tools") ); BAR_ADD( ToolsMenu( p_intf, mi, adv_controls_enabled ), qtr("Tools") );
BAR_DADD( VideoMenu( p_intf, NULL ), qtr("Video"), 1 ); BAR_DADD( VideoMenu( p_intf, NULL ), qtr("Video"), 1 );
BAR_DADD( AudioMenu( p_intf, NULL ), qtr("Audio"), 2 ); BAR_DADD( AudioMenu( p_intf, NULL ), qtr("Audio"), 2 );
BAR_DADD( NavigMenu( p_intf, NULL ), qtr("Navigation"), 3 ); BAR_DADD( NavigMenu( p_intf, NULL ), qtr("Navigation"), 3 );
...@@ -161,7 +161,8 @@ QMenu *QVLCMenu::PlaylistMenu( MainInterface *mi, intf_thread_t *p_intf ) ...@@ -161,7 +161,8 @@ QMenu *QVLCMenu::PlaylistMenu( MainInterface *mi, intf_thread_t *p_intf )
return menu; return menu;
} }
QMenu *QVLCMenu::ToolsMenu( intf_thread_t *p_intf, bool with_intf ) QMenu *QVLCMenu::ToolsMenu( intf_thread_t *p_intf, MainInterface *mi,
bool adv_controls_enabled, bool with_intf )
{ {
QMenu *menu = new QMenu(); QMenu *menu = new QMenu();
if( with_intf ) if( with_intf )
...@@ -169,15 +170,22 @@ QMenu *QVLCMenu::ToolsMenu( intf_thread_t *p_intf, bool with_intf ) ...@@ -169,15 +170,22 @@ QMenu *QVLCMenu::ToolsMenu( intf_thread_t *p_intf, bool with_intf )
QMenu *intfmenu = InterfacesMenu( p_intf, NULL ); QMenu *intfmenu = InterfacesMenu( p_intf, NULL );
intfmenu->setTitle( qtr("Interfaces" ) ); intfmenu->setTitle( qtr("Interfaces" ) );
menu->addMenu( intfmenu ); menu->addMenu( intfmenu );
/** \todo ADD EXT GUI HERE */
menu->addSeparator(); menu->addSeparator();
} }
DP_SADD( qtr("Messages" ), "", "", messagesDialog() ); DP_SADD( qtr("Messages" ), "", "", messagesDialog() );
DP_SADD( qtr("Information") , "", "", streaminfoDialog() ); DP_SADD( qtr("Information") , "", "", streaminfoDialog() );
DP_SADD( qtr("Bookmarks"), "", "", bookmarksDialog() ); DP_SADD( qtr("Bookmarks"), "", "", bookmarksDialog() );
DP_SADD( qtr("Extended settings"), "","",extendedDialog() );
if( mi )
{
menu->addSeparator();
QAction *adv = menu->addAction( qtr("Advanced controls" ),
mi, SLOT( advanced() ) );
adv->setCheckable( true );
if( adv_controls_enabled ) adv->setChecked( true );
}
menu->addSeparator(); menu->addSeparator();
DP_SADD( qtr("Preferences"), "", "", prefsDialog() ); DP_SADD( qtr("Preferences"), "", "", prefsDialog() );
DP_SADD( qtr("Extended"), "","",extendedDialog() );
return menu; return menu;
} }
...@@ -340,7 +348,7 @@ QMenu *QVLCMenu::SDMenu( intf_thread_t *p_intf ) ...@@ -340,7 +348,7 @@ QMenu *QVLCMenu::SDMenu( intf_thread_t *p_intf )
intfmenu->setTitle( qtr("Interfaces" ) ); \ intfmenu->setTitle( qtr("Interfaces" ) ); \
menu->addMenu( intfmenu ); \ menu->addMenu( intfmenu ); \
\ \
QMenu *toolsmenu = ToolsMenu( p_intf, false ); \ QMenu *toolsmenu = ToolsMenu( p_intf, NULL, false, false ); \
toolsmenu->setTitle( qtr("Tools" ) ); \ toolsmenu->setTitle( qtr("Tools" ) ); \
menu->addMenu( toolsmenu ); \ menu->addMenu( toolsmenu ); \
......
...@@ -58,13 +58,14 @@ class QVLCMenu : public QObject ...@@ -58,13 +58,14 @@ class QVLCMenu : public QObject
{ {
Q_OBJECT; Q_OBJECT;
public: public:
static void createMenuBar( MainInterface *mi, intf_thread_t *, bool ); static void createMenuBar( MainInterface *mi, intf_thread_t *, bool, bool );
/* Menus */ /* Menus */
static QMenu *FileMenu(); static QMenu *FileMenu();
static QMenu *SDMenu( intf_thread_t * ); static QMenu *SDMenu( intf_thread_t * );
static QMenu *PlaylistMenu( MainInterface *, intf_thread_t *); static QMenu *PlaylistMenu( MainInterface *, intf_thread_t *);
static QMenu *ToolsMenu( intf_thread_t *, bool with_intf = true ); static QMenu *ToolsMenu( intf_thread_t *, MainInterface *, bool,
bool with = true );
static QMenu *NavigMenu( intf_thread_t * , QMenu * ); static QMenu *NavigMenu( intf_thread_t * , QMenu * );
static QMenu *VideoMenu( intf_thread_t * , QMenu * ); static QMenu *VideoMenu( intf_thread_t * , QMenu * );
static QMenu *AudioMenu( intf_thread_t * , QMenu * ); static QMenu *AudioMenu( intf_thread_t * , QMenu * );
......
...@@ -62,6 +62,22 @@ struct intf_sys_t ...@@ -62,6 +62,22 @@ struct intf_sys_t
#define BUTTONACT( b, a ) connect( b, SIGNAL( clicked() ), this, SLOT(a) ) #define BUTTONACT( b, a ) connect( b, SIGNAL( clicked() ), this, SLOT(a) )
#define ON_TIMEOUT( act ) CONNECT( THEDP->fixed_timer, timeout(), this, act ) #define ON_TIMEOUT( act ) CONNECT( THEDP->fixed_timer, timeout(), this, act )
#define BUTTON_SET( button, text, tooltip ) \
button->setText( text ); \
button->setToolTip( tooltip );
#define BUTTON_SET_ACT( button, text, tooltip, thisslot ) \
BUTTON_SET( button, text, tooltip ); \
BUTTONACT( button, thisslot );
#define BUTTON_SET_IMG( button, text, image, tooltip ) \
BUTTON_SET( button, text, tooltip ); \
button->setIcon( QIcon( ":/pixmaps/"#image ) );
#define BUTTON_SET_ACT_I( button, text, image, tooltip, thisslot ) \
BUTTON_SET_IMG( button, text, image, tooltip ); \
BUTTONACT( button, thisslot );
static int DialogEvent_Type = QEvent::User + 1; static int DialogEvent_Type = QEvent::User + 1;
static int PLUndockEvent_Type = QEvent::User + 2; static int PLUndockEvent_Type = QEvent::User + 2;
static int PLDockEvent_Type = QEvent::User + 3; static int PLDockEvent_Type = QEvent::User + 3;
......
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