[vlc-commits] Qt: StandardPLPanel: show dropzone on views
Francois Cartegnie
git at videolan.org
Mon Jun 11 21:52:49 CEST 2012
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Mon Jun 11 21:50:01 2012 +0200| [523ef9f807d438c5e6e8a1a028e51fb7854321c2] | committer: Francois Cartegnie
Qt: StandardPLPanel: show dropzone on views
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=523ef9f807d438c5e6e8a1a028e51fb7854321c2
---
.../gui/qt4/components/playlist/standardpanel.cpp | 32 +++++++++++++++++++-
modules/gui/qt4/pixmaps/playlist/dropzone.png | Bin 0 -> 5646 bytes
modules/gui/qt4/vlc.qrc | 1 +
3 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/modules/gui/qt4/components/playlist/standardpanel.cpp b/modules/gui/qt4/components/playlist/standardpanel.cpp
index 7dccb55..a23f965 100644
--- a/modules/gui/qt4/components/playlist/standardpanel.cpp
+++ b/modules/gui/qt4/components/playlist/standardpanel.cpp
@@ -46,6 +46,7 @@
#include <QStackedLayout>
#include <QSignalMapper>
#include <QSettings>
+#include <QStylePainter>
#include <assert.h>
@@ -235,7 +236,7 @@ void StandardPLPanel::wheelEvent( QWheelEvent *e )
e->accept();
}
-bool StandardPLPanel::eventFilter ( QObject *, QEvent * event )
+bool StandardPLPanel::eventFilter ( QObject *obj, QEvent * event )
{
if (event->type() == QEvent::KeyPress)
{
@@ -247,6 +248,32 @@ bool StandardPLPanel::eventFilter ( QObject *, QEvent * event )
return true;
}
}
+ else if ( event->type() == QEvent::Paint )
+ {/* Warn! Don't filter events from anything else than views ! */
+ if ( model->rowCount() == 0 && p_selector->getCurrentItemCategory() == PL_ITEM_TYPE )
+ {
+ QWidget *viewport = qobject_cast<QWidget *>( obj );
+ QStylePainter painter( viewport );
+ QPixmap dropzone(":/dropzone");
+ QRect rect = viewport->geometry();
+ QSize size = rect.size() / 2 - dropzone.size() / 2;
+ rect.adjust( 0, size.height(), 0 , 0 );
+ painter.drawItemPixmap( rect, Qt::AlignHCenter, dropzone );
+ /* now select the zone just below the drop zone and let Qt center
+ the text by itself */
+ rect.adjust( 0, dropzone.size().height() + 10, 0, 0 );
+ rect.setRight( viewport->geometry().width() );
+ rect.setLeft( 0 );
+ painter.drawItemText( rect,
+ Qt::AlignHCenter,
+ palette(),
+ true,
+ qtr("Playlist is currently Empty\n"
+ "Drop a file here or select a "
+ "media source from the left"),
+ QPalette::Text );
+ }
+ }
return false;
}
@@ -266,6 +293,7 @@ void StandardPLPanel::createIconView()
CONNECT( iconView, activated( const QModelIndex & ),
this, activate( const QModelIndex & ) );
iconView->installEventFilter( this );
+ iconView->viewport()->installEventFilter( this );
viewStack->addWidget( iconView );
}
@@ -278,6 +306,7 @@ void StandardPLPanel::createListView()
CONNECT( listView, activated( const QModelIndex & ),
this, activate( const QModelIndex & ) );
listView->installEventFilter( this );
+ listView->viewport()->installEventFilter( this );
viewStack->addWidget( listView );
}
@@ -326,6 +355,7 @@ void StandardPLPanel::createTreeView()
CONNECT( treeView, customContextMenuRequested( const QPoint & ),
this, popupPlView( const QPoint & ) );
treeView->installEventFilter( this );
+ treeView->viewport()->installEventFilter( this );
/* SignalMapper for columns */
selectColumnsSigMapper = new QSignalMapper( this );
diff --git a/modules/gui/qt4/pixmaps/playlist/dropzone.png b/modules/gui/qt4/pixmaps/playlist/dropzone.png
new file mode 100644
index 0000000..072662d
Binary files /dev/null and b/modules/gui/qt4/pixmaps/playlist/dropzone.png differ
diff --git a/modules/gui/qt4/vlc.qrc b/modules/gui/qt4/vlc.qrc
index 98d094b..f741da2 100644
--- a/modules/gui/qt4/vlc.qrc
+++ b/modules/gui/qt4/vlc.qrc
@@ -98,6 +98,7 @@
<file alias="new.png">pixmaps/profile_new.png</file>
<file alias="lock">pixmaps/lock.png</file>
<file alias="search_clear">pixmaps/search_clear.png</file>
+ <file alias="dropzone">pixmaps/playlist/dropzone.png</file>
</qresource>
<qresource prefix="/prefsmenu">
<file alias="cone_audio_64">pixmaps/prefs/spref_cone_Audio_64.png</file>
More information about the vlc-commits
mailing list