]> git.sesse.net Git - vlc/commitdiff
Advanced controls bar
authorClément Stenac <zorglub@videolan.org>
Sat, 23 Sep 2006 13:16:33 +0000 (13:16 +0000)
committerClément Stenac <zorglub@videolan.org>
Sat, 23 Sep 2006 13:16:33 +0000 (13:16 +0000)
Make some sttings persistent

13 files changed:
modules/gui/qt4/Modules.am
modules/gui/qt4/components/extended_panels.cpp [moved from modules/gui/qt4/components/equalizer.cpp with 91% similarity]
modules/gui/qt4/components/extended_panels.hpp [moved from modules/gui/qt4/components/equalizer.hpp with 85% similarity]
modules/gui/qt4/components/interface_widgets.cpp
modules/gui/qt4/components/interface_widgets.hpp
modules/gui/qt4/dialogs/extended.cpp
modules/gui/qt4/input_manager.cpp
modules/gui/qt4/input_manager.hpp
modules/gui/qt4/main_interface.cpp
modules/gui/qt4/main_interface.hpp
modules/gui/qt4/menus.cpp
modules/gui/qt4/menus.hpp
modules/gui/qt4/qt4.hpp

index 3e38bb5251b7aa7e91951d5a96726b217020f409..3863561fe041ebabdf58d03cec52dfb571e7f616 100644 (file)
@@ -30,7 +30,7 @@ TOMOC = main_interface \
        dialogs/streaminfo \
        dialogs/extended \
        dialogs/interaction \
-       components/equalizer \
+       components/extended_panels \
        components/infopanels \
        components/preferences_widgets \
        components/preferences \
@@ -56,7 +56,7 @@ nodist_SOURCES_qt4 = \
                dialogs/errors.moc.cpp \
                dialogs/prefs_dialog.moc.cpp \
                dialogs/interaction.moc.cpp \
-               components/equalizer.moc.cpp \
+               components/extended_panels.moc.cpp \
                components/infopanels.moc.cpp \
                components/preferences_widgets.moc.cpp \
                components/preferences.moc.cpp \
@@ -102,7 +102,7 @@ SOURCES_qt4 =       qt4.cpp \
                dialogs/messages.cpp \
                dialogs/errors.cpp \
                dialogs/interaction.cpp \
-               components/equalizer.cpp \
+               components/extended_panels.cpp \
                components/infopanels.cpp \
                components/preferences_widgets.cpp \
                components/preferences.cpp \
@@ -130,7 +130,7 @@ EXTRA_DIST += \
        dialogs/errors.hpp \
        dialogs/prefs_dialog.hpp \
        dialogs/interaction.hpp \
-       components/equalizer.hpp \
+       components/extended_panels.hpp \
        components/infopanels.hpp \
        components/preferences_widgets.hpp \
        components/preferences.hpp \
similarity index 91%
rename from modules/gui/qt4/components/equalizer.cpp
rename to modules/gui/qt4/components/extended_panels.cpp
index 664cf0eac1558f47ffac611f51acc502b59c1692..272151978c17dfdcd42a3a6f7ec0ad1cf223a936 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * equalizer.cpp : Equalizer
+ * extended_panels.cpp : Extended controls panels
  ****************************************************************************
  * Copyright (C) 2006 the VideoLAN team
  * $Id: preferences.cpp 16643 2006-09-13 12:45:46Z zorglub $
@@ -27,7 +27,7 @@
 #include <QFont>
 #include <QGridLayout>
 
-#include "components/equalizer.hpp"
+#include "components/extended_panels.hpp"
 #include "qt4.hpp"
 
 #include "../../audio_filter/equalizer_presets.h"
 #include <vlc_intf_strings.h>
 #include <assert.h>
 
+/**********************************************************************
+ * Equalizer
+ **********************************************************************/
+
 static const QString band_frequencies[] =
 {
     "   60Hz  ", " 170 Hz " , " 310 Hz ", " 600 Hz ", "  1 kHz  ",
@@ -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-preamp", EqzCallback, this );
 }
+
+
+/**********************************************************************
+ * Video filters / Adjust
+ **********************************************************************/
+
+/**********************************************************************
+ * Audio filters
+ **********************************************************************/
+
+/**********************************************************************
+ * Extended playbak controls
+ **********************************************************************/
similarity index 85%
rename from modules/gui/qt4/components/equalizer.hpp
rename to modules/gui/qt4/components/extended_panels.hpp
index 99130bc963e1209c7945012a893107d53b5b7852..de5e25b57dce808a32750e733eddd79a22d7467c 100644 (file)
@@ -56,4 +56,20 @@ private slots:
     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
index 5de3633382f976c6fbc2087b050d0233ac26db0a..c0fb11fa77b6135192667485f563e0e208996d41 100644 (file)
@@ -30,6 +30,8 @@
 #include "pixmaps/art.xpm"
 #include <vlc/vout.h>
 
+#include <QLabel>
+#include <QSpacerItem>
 #include <QCursor>
 #include <QPushButton>
 #include <QHBoxLayout>
@@ -154,6 +156,17 @@ VisualSelector::VisualSelector( intf_thread_t *_p_i ) :
     QPushButton *nextButton = new QPushButton( "Next");
     layout->addWidget( prevButton );
     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 );
     setMaximumHeight( 35 );
 }
@@ -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
  **********************************************************************/
index fd894685a271ba8c33725ffd6c4db3bc33a44cd9..04b476f5bcf6c73a579096fa9438a59e182671aa 100644 (file)
@@ -89,8 +89,34 @@ public:
     virtual ~VisualSelector();
 private:
     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 ****************/
 #include <QModelIndex>
 class QSignalMapper;
index a1b88c3100f015ad18b4aabb81769856488eaa82..4f8ec7b2bae544aaa90b61f96657f1671754a98a 100644 (file)
@@ -26,7 +26,7 @@
 #include "dialogs/extended.hpp"
 #include "dialogs_provider.hpp"
 #include "util/qvlcframe.hpp"
-#include "components/equalizer.hpp"
+#include "components/extended_panels.hpp"
 #include "qt4.hpp"
 
 ExtendedDialog *ExtendedDialog::instance = NULL;
index 6b2ed82de071f0bc55c53ebd796ee4b11bc01822..305fa77c7317d69d157c6eefa002a33c151b2c0f 100644 (file)
@@ -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;
     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, "video-es", ChangeVideo, this );
     }
@@ -139,7 +144,7 @@ void InputManager::update()
 
 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 );
 }
 
@@ -161,6 +166,24 @@ void InputManager::togglePlayPause()
     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
  * take care of updating the main playlist input
index 0f9427bf288c232608dce8a102c7d8add4923f18..e0197b925f737e9e17ec971173579c2856fd7d8f 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <QObject>
 #include <vlc/vlc.h>
+#include <vlc/input.h>
 
 class InputManager : public QObject
 {
@@ -35,6 +36,7 @@ public:
     virtual ~InputManager();
 
     void delInput();
+    bool hasInput() { return p_input && !p_input->b_dead && !p_input->b_die; }
     bool hasAudio() { return b_has_audio; }
     bool hasVideo() { return b_has_video; }
     bool b_has_audio, b_has_video, b_had_audio, b_had_video;
@@ -48,6 +50,9 @@ public slots:
     void update(); ///< Periodic updates
     void setInput( input_thread_t * ); ///< Our controlled input changed
     void sliderUpdate( float ); ///< User dragged the slider. We get new pos
+    void slower();
+    void faster();
+    void normalRate();
 signals:
     /// Send new position, new time and new length
     void positionUpdated( float , int, int );
index 9fe65065468cd00575600e295a73857ab9fe5870..ac792669d6a2ff92a163aaac67435d2f34bbe4a7 100644 (file)
@@ -39,6 +39,7 @@
 #include <assert.h>
 #include <vlc_keys.h>
 #include <vlc/vout.h>
+#include <aout_internal.h>
 
 #ifdef WIN32
     #define PREF_W 410
     #define PREF_H 125
 #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 SET_WIDTH(i,j) i->widgetSize.setWidth(j)
@@ -90,10 +87,24 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
     bgWidget = NULL; videoWidget = NULL; playlistWidget = NULL;
     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") ) );
     handleMainUi( settings );
 
-    QVLCMenu::createMenuBar( this, p_intf, playlistEmbeddedFlag );
+    QVLCMenu::createMenuBar( this, p_intf, playlistEmbeddedFlag,
+                             advControlsEnabled );
 
     /* Status bar */
     timeLabel = new QLabel( 0 );
@@ -126,7 +137,11 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
 
 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;
     var_DelCallback( p_intf, "interaction", InteractCallback, this );
 
@@ -144,17 +159,13 @@ void MainInterface::handleMainUi( QSettings *settings )
     slider = new InputSlider( Qt::Horizontal, NULL );
     ui.hboxLayout->insertWidget( 0, slider );
 
-    BUTTON_SET( prev, previous.png, qtr( "Previous" ) );
-    BUTTONACT( ui.prevButton, prev() );
-    BUTTON_SET( next, next.png , qtr( "Next" ) );
-    BUTTONACT( ui.nextButton, next() );
-    BUTTON_SET( play, play.png , qtr( "Play" ) );
-    BUTTONACT( ui.playButton, play() );
-    BUTTON_SET( stop, stop.png , qtr( "Stop" )  );
-    BUTTONACT( ui.stopButton, stop() );
-
-    BUTTON_SET( visual,  stop.png, qtr( "Audio visualizations" ) );
-    BUTTONACT( ui.visualButton, visual() );
+    BUTTON_SET_ACT_I( ui.prevButton, "" , previous.png,
+                      qtr("Previous"), prev() );
+    BUTTON_SET_ACT_I( ui.nextButton, "", next.png, qtr("Next"), next() );
+    BUTTON_SET_ACT_I( ui.playButton, "", play.png, qtr("Play"), play() );
+    BUTTON_SET_ACT_I( ui.stopButton, "", stop.png, qtr("Stop"), stop() );
+    BUTTON_SET_ACT_I( ui.visualButton, "", stop.png,
+                    qtr( "Audio visualizations" ), visual() );
 
     /* Volume */
     ui.volMuteLabel->setPixmap( QPixmap( ":/pixmaps/volume-low.png" ) );
@@ -164,20 +175,8 @@ void MainInterface::handleMainUi( QSettings *settings )
     ui.volMuteLabel->installEventFilter(h);
     ui.volumeSlider->setFocusPolicy( Qt::NoFocus );
 
-    /* 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 = true;
-    /// \todo fetch playlist settings
-
-    BUTTON_SET( playlist, volume-low.png, playlistEmbeddedFlag ?
-                                                qtr( "Show playlist" ) :
+    BUTTON_SET_IMG( ui.playlistButton, "" ,volume-low.png,
+                        playlistEmbeddedFlag ?  qtr( "Show playlist" ) :
                                                 qtr( "Open playlist" ) );
     BUTTONACT( ui.playlistButton, playlist() );
 
@@ -186,6 +185,12 @@ void MainInterface::handleMainUi( QSettings *settings )
 
     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 );
     ui.vboxLayout->insertWidget( 0, visualSelector );
     visualSelector->hide();
@@ -211,10 +216,6 @@ void MainInterface::handleMainUi( QSettings *settings )
         p_intf->pf_release_window  = ::DoRelease;
         p_intf->pf_control_window  = ::DoControl;
     }
-
-    calculateInterfaceSize();
-    resize( mainSize );
-
     setMinimumSize( PREF_W, addSize.height() );
 }
 
@@ -249,7 +250,14 @@ void MainInterface::calculateInterfaceSize()
     }
     if( VISIBLE( visualSelector ) )
         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",
                      width + addSize.width() , height + addSize.height() );
 
@@ -265,14 +273,12 @@ void MainInterface::resizeEvent( QResizeEvent *e )
         SET_WH( videoWidget, e->size().width() - addSize.width(),
                              e->size().height()  - addSize.height() );
         videoWidget->updateGeometry();
-        fprintf( stderr, "Video set to %ix%i\n", DS( videoWidget->widgetSize) );
     }
     if( VISIBLE( playlistWidget ) )
     {
         SET_WH( playlistWidget , e->size().width() - addSize.width(),
                                  e->size().height() - addSize.height() );
         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 )
     return i_ret;
 }
 
+void MainInterface::advanced()
+{
+    if( !VISIBLE( advControls ) )
+    {
+        advControls->show();
+        advControlsEnabled = true;
+    }
+    else
+    {
+        advControls->hide();
+        advControlsEnabled = false;
+    }
+    doComponentsUpdate();
+}
+
 void MainInterface::visual()
 {
     if( !VISIBLE( visualSelector) )
@@ -404,7 +425,6 @@ void MainInterface::playlist()
     /// Todo, reset its size ?
     if( VISIBLE( playlistWidget) )
     {
-        fprintf( stderr, "hiding playlist\n" );
         playlistWidget->hide();
         if( videoIsActive )
         {
@@ -415,7 +435,6 @@ void MainInterface::playlist()
     }
     else
     {
-        fprintf( stderr, "showing playlist\n" );
         playlistWidget->show();
         if( videoIsActive )
         {
@@ -448,7 +467,7 @@ void MainInterface::undockPlaylist()
         playlistEmbeddedFlag = false;
 
         menuBar()->clear();
-        QVLCMenu::createMenuBar( this, p_intf, false );
+        QVLCMenu::createMenuBar( this, p_intf, false, advControlsEnabled );
 
         if( videoIsActive )
         {
@@ -469,7 +488,7 @@ void MainInterface::customEvent( QEvent *event )
         PlaylistDialog::killInstance();
         playlistEmbeddedFlag = true;
         menuBar()->clear();
-        QVLCMenu::createMenuBar(this, p_intf, true );
+        QVLCMenu::createMenuBar(this, p_intf, true, advControlsEnabled );
         playlist();
     }
 }
@@ -587,6 +606,21 @@ static bool b_my_volume;
 
 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 )
     {
         QApplication::closeAllWindows();
@@ -634,8 +668,6 @@ static int InteractCallback( vlc_object_t *p_this,
 {
     intf_dialog_args_t *p_arg = new intf_dialog_args_t;
     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 );
     QApplication::postEvent( THEDP, static_cast<QEvent*>(event) );
     return VLC_SUCCESS;
index 2cfb0ac8ba21781f9eb064c8967ee719a62b1afa..cbece4bb99d1ca9b4bef1bd1faf22aa7646388ee 100644 (file)
@@ -42,6 +42,7 @@ class BackgroundWidget;
 class PlaylistWidget;
 class VolumeClickHandler;
 class VisualSelector;
+class ControlsWidget;
 
 class MainInterface : public QVLCMW
 {
@@ -74,11 +75,13 @@ private:
 
     BackgroundWidget    *bgWidget;
     VisualSelector      *visualSelector;
+    ControlsWidget      *advControls;
     PlaylistWidget      *playlistWidget;
 
     bool                 playlistEmbeddedFlag;
     bool                 videoEmbeddedFlag;
     bool                 alwaysVideoFlag;
+    bool                 advControlsEnabled;
 
     InputManager        *main_input_manager;
     InputSlider         *slider;
@@ -101,6 +104,7 @@ private slots:
     void next();
     void playlist();
     void visual();
+    void advanced();
     void updateVolume( int sliderVolume );
 };
 
index f814834b322973d9e9e70c77d265f66882ea6640..f00454417e118061ee7be7c5c61502bb2a871aba 100644 (file)
@@ -120,15 +120,15 @@ static int AudioAutoMenuBuilder( vlc_object_t *p_object,
     THEDP->menusUpdateMapper->setMapping( menu, f ); }
 
 void QVLCMenu::createMenuBar( MainInterface *mi, intf_thread_t *p_intf,
-                              bool playlist )
+                              bool playlist, bool adv_controls_enabled )
 {
     QMenuBar *bar = mi->menuBar();
-    BAR_ADD( FileMenu(), qtr("File") );
+    BAR_ADD( FileMenu(), qtr("Media") );
     if( 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( AudioMenu( p_intf, NULL ), qtr("Audio"), 2 );
     BAR_DADD( NavigMenu( p_intf, NULL ), qtr("Navigation"), 3 );
@@ -161,7 +161,8 @@ QMenu *QVLCMenu::PlaylistMenu( MainInterface *mi, intf_thread_t *p_intf )
     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();
     if( with_intf )
@@ -169,15 +170,22 @@ QMenu *QVLCMenu::ToolsMenu( intf_thread_t *p_intf, bool with_intf )
         QMenu *intfmenu = InterfacesMenu( p_intf, NULL );
         intfmenu->setTitle( qtr("Interfaces" ) );
         menu->addMenu( intfmenu );
-        /** \todo ADD EXT GUI HERE */
         menu->addSeparator();
     }
     DP_SADD( qtr("Messages" ), "", "", messagesDialog() );
     DP_SADD( qtr("Information") , "", "", streaminfoDialog() );
     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();
     DP_SADD( qtr("Preferences"), "", "", prefsDialog() );
-    DP_SADD( qtr("Extended"), "","",extendedDialog() );
     return menu;
 }
 
@@ -340,7 +348,7 @@ QMenu *QVLCMenu::SDMenu( intf_thread_t *p_intf )
     intfmenu->setTitle( qtr("Interfaces" ) ); \
     menu->addMenu( intfmenu ); \
     \
-    QMenu *toolsmenu = ToolsMenu( p_intf, false ); \
+    QMenu *toolsmenu = ToolsMenu( p_intf, NULL, false, false ); \
     toolsmenu->setTitle( qtr("Tools" ) ); \
     menu->addMenu( toolsmenu ); \
 
index 8929c6da57662f05816c83f14f1898d7419a6e2a..f50f18ecbf71cc17ada7144ac8d069973c59a55d 100644 (file)
@@ -58,13 +58,14 @@ class QVLCMenu : public QObject
 {
     Q_OBJECT;
 public:
-    static void createMenuBar( MainInterface *mi, intf_thread_t *, bool );
+    static void createMenuBar( MainInterface *mi, intf_thread_t *, bool, bool );
 
     /* Menus */
     static QMenu *FileMenu();
     static QMenu *SDMenu( 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 *VideoMenu( intf_thread_t * , QMenu * );
     static QMenu *AudioMenu( intf_thread_t * , QMenu * );
index fe66a737e562fc987a6985bf0b8c55570e7a0640..5d1a48979fa486330d0dbab645b97b0155a108a7 100644 (file)
@@ -62,6 +62,22 @@ struct intf_sys_t
 #define BUTTONACT( b, a ) connect( b, SIGNAL( clicked() ), this, SLOT(a) )
 #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 PLUndockEvent_Type = QEvent::User + 2;
 static int PLDockEvent_Type = QEvent::User + 3;