******************************************************************************/
#include "dialogs/playlist.hpp"
-#include "util/qvlcframe.hpp"
+
#include "qt4.hpp"
-#include "components/playlist/panels.hpp"
-#include "components/playlist/selector.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 )
{
+ QWidget *main = new QWidget( this );
+ setCentralWidget( main );
setWindowTitle( qtr( "Playlist" ) );
- selector = new PLSelector( this, p_intf, THEPL );
- selector->setMaximumWidth( 150 );
- rightPanel = qobject_cast<PLPanel *>(new StandardPLPanel( this, p_intf,
- THEPL, THEPL->p_local_category ) );
- connect( selector, SIGNAL( activated( int ) ), rightPanel, SLOT( setRoot( int ) ) );
+ createPlMenuBar( menuBar(), p_intf );
+
+ QHBoxLayout *l = new QHBoxLayout( centralWidget() );
+ PlaylistWidget *plw = new PlaylistWidget( p_intf );
+ l->addWidget( plw );
- QHBoxLayout *layout = new QHBoxLayout();
- layout->addWidget( selector, 0 );
- layout->addWidget( rightPanel, 10 );
- readSettings( "playlist", QSize( 600,300 ) );
- setLayout( layout );
+ 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+X") );
+ 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();
+}
+
+