diff --git a/src/libtomahawk/widgets/PlayableCover.cpp b/src/libtomahawk/widgets/PlayableCover.cpp index 016f19b89..9f5a140e4 100644 --- a/src/libtomahawk/widgets/PlayableCover.cpp +++ b/src/libtomahawk/widgets/PlayableCover.cpp @@ -20,6 +20,7 @@ #include "Artist.h" #include "Album.h" +#include "ContextMenu.h" #include "ViewManager.h" #include "audio/AudioEngine.h" #include "widgets/ImageButton.h" @@ -28,6 +29,7 @@ #include <QPainter> +using namespace Tomahawk; PlayableCover::PlayableCover( QWidget* parent ) : QLabel( parent ) @@ -45,6 +47,9 @@ PlayableCover::PlayableCover( QWidget* parent ) m_button->hide(); connect( m_button, SIGNAL( clicked( bool ) ), SLOT( onClicked() ) ); + + m_contextMenu = new ContextMenu( this ); + m_contextMenu->setSupportedActions( ContextMenu::ActionQueue | ContextMenu::ActionCopyLink | ContextMenu::ActionStopAfter | ContextMenu::ActionLove | ContextMenu::ActionPage ); } @@ -129,6 +134,22 @@ PlayableCover::mouseReleaseEvent( QMouseEvent* event ) } +void +PlayableCover::contextMenuEvent( QContextMenuEvent* event ) +{ + m_contextMenu->clear(); + + if ( m_artist ) + m_contextMenu->setArtist( m_artist ); + else if ( m_album ) + m_contextMenu->setAlbum( m_album ); + else + m_contextMenu->setQuery( m_query ); + + m_contextMenu->exec( event->globalPos() ); +} + + void PlayableCover::setPixmap( const QPixmap& pixmap ) { diff --git a/src/libtomahawk/widgets/PlayableCover.h b/src/libtomahawk/widgets/PlayableCover.h index 0a07af9e7..770351a4b 100644 --- a/src/libtomahawk/widgets/PlayableCover.h +++ b/src/libtomahawk/widgets/PlayableCover.h @@ -28,6 +28,11 @@ class ImageButton; +namespace Tomahawk +{ + class ContextMenu; +}; + /** * \class PlayableCover * \brief QLabel which shows a play/pause button on hovering. @@ -58,6 +63,8 @@ protected: virtual void mouseMoveEvent( QMouseEvent* event ); virtual void mouseReleaseEvent( QMouseEvent* event ); + + virtual void contextMenuEvent( QContextMenuEvent* event ); void leaveEvent( QEvent* event ); void enterEvent( QEvent* event ); @@ -69,6 +76,8 @@ private: QPixmap m_pixmap; ImageButton* m_button; + Tomahawk::ContextMenu* m_contextMenu; + Tomahawk::artist_ptr m_artist; Tomahawk::album_ptr m_album; Tomahawk::query_ptr m_query;