]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/dialogs/playlist.cpp
Qt(Dialog provider): Add support for key accelerators
[vlc] / modules / gui / qt4 / dialogs / playlist.cpp
index c652396f9f8b559a3a40367846fed049db8b4fb6..0da5c984535cc85f398ff5db0253b6748fdecc4f 100644 (file)
 #include "util/qt_dirs.hpp"
 
 #include <QUrl>
+#include <QMimeData>
 #include <QHBoxLayout>
 
-PlaylistDialog *PlaylistDialog::instance = NULL;
-
 PlaylistDialog::PlaylistDialog( intf_thread_t *_p_intf )
                 : QVLCMW( _p_intf )
 {
-    QWidget *main = new QWidget( this );
-    setCentralWidget( main );
     setWindowTitle( qtr( "Playlist" ) );
-    setWindowOpacity( config_GetFloat( p_intf, "qt-opacity" ) );
+    setWindowRole( "vlc-playlist" );
+    setWindowOpacity( var_InheritFloat( p_intf, "qt-opacity" ) );
 
-    QHBoxLayout *l = new QHBoxLayout( centralWidget() );
+    playlistWidget = new PlaylistWidget( p_intf, this );
+    setCentralWidget( playlistWidget );
 
-    getSettings()->beginGroup("playlistdialog");
+    readSettings( "playlistdialog", QSize( 600,700 ) );
+}
 
-    playlistWidget = new PlaylistWidget( p_intf );
-    l->addWidget( playlistWidget );
+PlaylistWidget *PlaylistDialog::exportPlaylistWidget()
+{
+    Q_ASSERT( playlistWidget );
+    PlaylistWidget *widget = playlistWidget;
+    layout()->removeWidget( playlistWidget );
+    playlistWidget = NULL;
+    return widget;
+}
 
-    readSettings( getSettings(), QSize( 600,700 ) );
+void PlaylistDialog::importPlaylistWidget( PlaylistWidget *widget )
+{
+    Q_ASSERT( !playlistWidget );
+    playlistWidget = widget;
+    setCentralWidget( playlistWidget );
+    playlistWidget->show();
+}
 
-    getSettings()->endGroup();
+bool PlaylistDialog::hasPlaylistWidget()
+{
+    return ( !! playlistWidget );
+}
+
+void PlaylistDialog::hideEvent( QHideEvent * event )
+{
+    QWidget::hideEvent( event );
+    emit visibilityChanged( false );
 }
 
 PlaylistDialog::~PlaylistDialog()
 {
-    getSettings()->beginGroup("playlistdialog");
-    writeSettings( getSettings() );
-    getSettings()->endGroup();
+    writeSettings( "playlistdialog" );
 }
 
 void PlaylistDialog::dropEvent( QDropEvent *event )
 {
-     const QMimeData *mimeData = event->mimeData();
-     foreach( QUrl url, mimeData->urls() ) {
-        QString s = toNativeSeparators( url.toString() );
-        if( s.length() > 0 ) {
-            playlist_Add( THEPL, qtu(s), NULL,
-                          PLAYLIST_APPEND, PLAYLIST_END, true, false );
-        }
-     }
-     event->acceptProposedAction();
+    playlistWidget->dropEvent(event);
 }
 void PlaylistDialog::dragEnterEvent( QDragEnterEvent *event )
 {