]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/dialogs/playlist.cpp
qt4 - Include cleanup.
[vlc] / modules / gui / qt4 / dialogs / playlist.cpp
index 18c93fdf622c39ee0512dff680c3e8dd10b42fb0..89d2e2b748ac3ff4276615effc68a5f3237a8ee8 100644 (file)
@@ -1,8 +1,8 @@
 /*****************************************************************************
  * playlist.cpp : Playlist dialog
  ****************************************************************************
- * Copyright (C) 2000-2005 the VideoLAN team
- * $Id: wxwidgets.cpp 15731 2006-05-25 14:43:53Z zorglub $
+ * Copyright (C) 2006 the VideoLAN team
+ * $Id$
  *
  * Authors: ClĂ©ment Stenac <zorglub@videolan.org>
  *
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ ******************************************************************************/
 
 #include "dialogs/playlist.hpp"
-#include "util/qvlcframe.hpp"
+
 #include "qt4.hpp"
-#include "components/playlist/panels.hpp"
+#include "main_interface.hpp"
+#include "util/qvlcframe.hpp"
+#include "components/interface_widgets.hpp"
+#include "dialogs_provider.hpp"
+#include "menus.hpp"
+
+#include <QUrl>
+#include <QHBoxLayout>
+#include <QSignalMapper>
+#include <QMenu>
+#include <QAction>
+#include <QMenuBar>
 
 PlaylistDialog *PlaylistDialog::instance = NULL;
 
-PlaylistDialog::PlaylistDialog( intf_thread_t *_p_intf ) : QVLCFrame( _p_intf )
+PlaylistDialog::PlaylistDialog( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
 {
-    playlist_t *p_playlist = (playlist_t *)vlc_object_find( p_intf,
-                                     VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
-    new StandardPLPanel( this, p_intf, p_playlist, p_playlist->p_root_category );
-    readSettings( "playlist", QSize( 500,500 ) );
+    QWidget *main = new QWidget( this );
+    setCentralWidget( main );
+    setWindowTitle( qtr( "Playlist" ) );
+
+    createPlMenuBar( menuBar(), p_intf );
+
+    QHBoxLayout *l = new QHBoxLayout( centralWidget() );
+    PlaylistWidget *plw = new PlaylistWidget( p_intf );
+    l->addWidget( plw );
+
+    readSettings( "playlist", QSize( 600,700 ) );
 }
 
 PlaylistDialog::~PlaylistDialog()
 {
     writeSettings( "playlist" );
 }
+
+void PlaylistDialog::createPlMenuBar( QMenuBar *bar, intf_thread_t *p_intf )
+{
+    QMenu *manageMenu = new QMenu();
+    manageMenu->setTitle( qtr("Manage") );
+    manageMenu->addAction( qtr("Open playlist file"), THEDP, SLOT( openPlaylist() ),
+            qtr( "Ctrl+L") );
+    manageMenu->addSeparator();
+    manageMenu->addAction( qtr("Dock playlist"), this, SLOT( dock() ), 
+            qtr( "Ctrl+U" ) );
+    bar->addMenu( manageMenu );
+    bar->addMenu( QVLCMenu::SDMenu( p_intf ) );
+}
+
+void PlaylistDialog::dock()
+{
+    hide();
+    QEvent *event = new QEvent( (QEvent::Type)(PLDockEvent_Type) );
+    QApplication::postEvent( p_intf->p_sys->p_mi, event );
+}
+
+
+void PlaylistDialog::dropEvent(QDropEvent *event)
+{
+     const QMimeData *mimeData = event->mimeData();
+     foreach( QUrl url, mimeData->urls() ) {
+        QString s = url.toString();
+        if( s.length() > 0 ) {
+            playlist_Add( THEPL, qtu(s), NULL,
+                          PLAYLIST_APPEND, PLAYLIST_END, VLC_TRUE, VLC_FALSE );
+        }
+     }
+     event->acceptProposedAction();
+}
+void PlaylistDialog::dragEnterEvent(QDragEnterEvent *event)
+{
+     event->acceptProposedAction();
+}
+void PlaylistDialog::dragMoveEvent(QDragMoveEvent *event)
+{
+     event->acceptProposedAction();
+}
+void PlaylistDialog::dragLeaveEvent(QDragLeaveEvent *event)
+{
+     event->accept();
+}
+
+