QPushButton *undockButton = new QPushButton( "UN", this );
undockButton->setMaximumWidth( 25 );
+ BUTTONACT( undockButton, undock() );
+
undockButton->setToolTip( qtr( "Undock playlist for main interface" ) );
QPushButton *sourcesButton = new QPushButton( "Sources", this );
sourcesButton->setToolTip( qtr( "Select additional stream sources" ) );
{
}
+void PlaylistWidget::undock()
+{
+ hide();
+ THEDP->playlistDialog();
+ deleteLater();
+
+ QEvent *event = new QEvent( (QEvent::Type)(PLUndockEvent_Type) );
+ QApplication::postEvent( p_intf->p_sys->p_mi, event );
+}
+
QSize PlaylistWidget::sizeHint() const
{
fprintf( stderr, "PL Size %ix%i\n", widgetSize.width(), widgetSize.height() );
PLSelector *selector;
PLPanel *rightPanel;
intf_thread_t *p_intf;
+private slots:
+ void undock();
};
#endif
******************************************************************************/
#include "dialogs/playlist.hpp"
-#include "util/qvlcframe.hpp"
+
#include "qt4.hpp"
+#include "main_interface.hpp"
+#include "util/qvlcframe.hpp"
#include "components/playlist/panels.hpp"
#include "components/playlist/selector.hpp"
+#include "dialogs_provider.hpp"
+
#include <QHBoxLayout>
#include <QSignalMapper>
#include <QMenu>
#include <QAction>
#include <QMenuBar>
-#include "dialogs_provider.hpp"
PlaylistDialog *PlaylistDialog::instance = NULL;
manageMenu->addMenu( subML );
manageMenu->addAction( "Open playlist file", THEDP, SLOT( openPlaylist() ));
+ manageMenu->addAction( "Dock playlist", this, SLOT( dock() ) );
bar->addMenu( manageMenu );
bar->addMenu( SDMenu() );
}
return menu;
}
+void PlaylistDialog::dock()
+{
+ hide();
+ QEvent *event = new QEvent( (QEvent::Type)(PLDockEvent_Type) );
+ QApplication::postEvent( p_intf->p_sys->p_mi, event );
+}
+
void PlaylistDialog::SDMenuAction( QString data )
{
char *psz_sd = data.toUtf8().data();
if( !instance) instance = new PlaylistDialog( p_intf );
return instance;
}
- static void killInstance() { if( instance ) delete instance; }
+ static void killInstance()
+ {
+ if( instance ) delete instance;
+ instance = NULL;
+ }
virtual ~PlaylistDialog();
private:
PLSelector *selector;
PLPanel *rightPanel;
private slots:
+ void dock();
void SDMenuAction( QString );
};
/* Stop any currently running visualization */
visualSelector->hide();
}
- calculateInterfaceSize();
- resize( mainSize );
+ doComponentsUpdate();
}
void MainInterface::playlist()
}
if( VISIBLE( bgWidget ) ) bgWidget->hide();
}
-
- calculateInterfaceSize();
- resize( mainSize );
+ doComponentsUpdate();
}
/* Video widget cannot do this synchronously as it runs in another thread */
resize( mainSize );
}
+void MainInterface::customEvent( QEvent *event )
+{
+ if( event->type() == PLUndockEvent_Type )
+ {
+ ui.vboxLayout->removeWidget( playlistWidget );
+ playlistWidget = NULL;
+ playlistEmbeddedFlag = false;
+ doComponentsUpdate();
+ }
+ else if( event->type() == PLDockEvent_Type )
+ {
+ PlaylistDialog::killInstance();
+ playlistEmbeddedFlag = true;
+ playlist();
+ }
+}
+
/************************************************************************
* Other stuff
************************************************************************/
class QCloseEvent;
class QKeyEvent;
class QLabel;
-
+class QEvent;
class InputManager;
class InputSlider;
class VideoWidget;
QLabel *timeLabel;
QLabel *nameLabel;
+
+ void customEvent( QEvent *);
private slots:
void setStatus( int );
void setName( QString );
#define ON_TIMEOUT( act ) CONNECT( THEDP->fixed_timer, timeout(), this, act )
static int DialogEvent_Type = QEvent::User + 1;
+static int PLUndockEvent_Type = QEvent::User + 2;
+static int PLDockEvent_Type = QEvent::User + 3;
class DialogEvent : public QEvent
{