summaryrefslogtreecommitdiffstats
path: root/src/widget
diff options
context:
space:
mode:
authorDaniel Schürmann <daschuer@mixxx.org>2020-06-07 18:45:07 +0200
committerDaniel Schürmann <daschuer@mixxx.org>2020-06-07 18:45:07 +0200
commitd53365cd259b2a2022118e5dbc4ddaf973ed5dc0 (patch)
tree6c5a5a9131c3e48e9514d038fac5dd578e9be932 /src/widget
parent8b9b6d5cd94d09cd972b427398eb4e94aa2847ac (diff)
Added a Context menu to the WTrackWidgetGroup, ane accept() the context menu event in other widgets.
Diffstat (limited to 'src/widget')
-rw-r--r--src/widget/wcoverart.cpp14
-rw-r--r--src/widget/wcoverart.h5
-rw-r--r--src/widget/wcoverartlabel.cpp17
-rw-r--r--src/widget/wcoverartlabel.h1
-rw-r--r--src/widget/wtrackproperty.cpp13
-rw-r--r--src/widget/wtrackproperty.h4
-rw-r--r--src/widget/wtracktableview.cpp1
-rw-r--r--src/widget/wtracktext.cpp1
-rw-r--r--src/widget/wtracktext.h4
-rw-r--r--src/widget/wtrackwidgetgroup.cpp28
-rw-r--r--src/widget/wtrackwidgetgroup.h11
11 files changed, 75 insertions, 24 deletions
diff --git a/src/widget/wcoverart.cpp b/src/widget/wcoverart.cpp
index add4f52c4a..803d090fa7 100644
--- a/src/widget/wcoverart.cpp
+++ b/src/widget/wcoverart.cpp
@@ -234,15 +234,21 @@ void WCoverArt::resizeEvent(QResizeEvent* /*unused*/) {
m_defaultCoverScaled = scaledCoverArt(m_defaultCover);
}
+void WCoverArt::contextMenuEvent(QContextMenuEvent* event) {
+ event->accept();
+ if (m_loadedTrack) {
+ m_pMenu->setCoverArt(m_lastRequestedCover);
+ m_pMenu->popup(event->globalPos());
+ }
+}
+
void WCoverArt::mousePressEvent(QMouseEvent* event) {
if (!m_bEnable) {
return;
}
- if (event->button() == Qt::RightButton && m_loadedTrack) { // show context-menu
- m_pMenu->setCoverArt(m_lastRequestedCover);
- m_pMenu->popup(event->globalPos());
- } else if (event->button() == Qt::LeftButton) {
+ if (event->button() == Qt::LeftButton) {
+ event->accept();
// do nothing if left button is pressed,
// wait for button release
m_clickTimer.setSingleShot(true);
diff --git a/src/widget/wcoverart.h b/src/widget/wcoverart.h
index 98b2ab32e9..590dace590 100644
--- a/src/widget/wcoverart.h
+++ b/src/widget/wcoverart.h
@@ -51,8 +51,9 @@ class WCoverArt : public QWidget, public WBaseWidget, public TrackDropTarget {
protected:
void paintEvent(QPaintEvent* /*unused*/) override;
void resizeEvent(QResizeEvent* /*unused*/) override;
- void mousePressEvent(QMouseEvent* /*unused*/) override;
- void mouseReleaseEvent(QMouseEvent* /*unused*/) override;
+ void mousePressEvent(QMouseEvent* event) override;
+ void mouseReleaseEvent(QMouseEvent* event) override;
+ void contextMenuEvent(QContextMenuEvent* event) override;
void dragEnterEvent(QDragEnterEvent *event) override;
void dropEvent(QDropEvent *event) override;
diff --git a/src/widget/wcoverartlabel.cpp b/src/widget/wcoverartlabel.cpp
index 7bd9d1bbf2..78d0ea410c 100644
--- a/src/widget/wcoverartlabel.cpp
+++ b/src/widget/wcoverartlabel.cpp
@@ -16,13 +16,11 @@ WCoverArtLabel::WCoverArtLabel(QWidget* parent)
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
setFrameShape(QFrame::Box);
setAlignment(Qt::AlignCenter);
- setContextMenuPolicy(Qt::CustomContextMenu);
- connect(this, SIGNAL(customContextMenuRequested(QPoint)),
- this, SLOT(slotCoverMenu(QPoint)));
- connect(m_pCoverMenu, SIGNAL(coverInfoSelected(const CoverInfoRelative&)),
- this, SIGNAL(coverInfoSelected(const CoverInfoRelative&)));
- connect(m_pCoverMenu, SIGNAL(reloadCoverArt()),
- this, SIGNAL(reloadCoverArt()));
+ connect(m_pCoverMenu,
+ &WCoverArtMenu::coverInfoSelected,
+ this,
+ &WCoverArtLabel::coverInfoSelected);
+ connect(m_pCoverMenu, &WCoverArtMenu::reloadCoverArt, this, &WCoverArtLabel::reloadCoverArt);
m_defaultCover.setDevicePixelRatio(getDevicePixelRatioF(this));
m_defaultCover = m_defaultCover.scaled(s_labelDisplaySize * getDevicePixelRatioF(this),
@@ -60,6 +58,11 @@ void WCoverArtLabel::slotCoverMenu(const QPoint& pos) {
m_pCoverMenu->popup(mapToGlobal(pos));
}
+void WCoverArtLabel::contextMenuEvent(QContextMenuEvent* event) {
+ event->accept();
+ m_pCoverMenu->popup(event->globalPos());
+}
+
void WCoverArtLabel::loadTrack(TrackPointer pTrack) {
m_pLoadedTrack = pTrack;
}
diff --git a/src/widget/wcoverartlabel.h b/src/widget/wcoverartlabel.h
index 9ae4528c5e..fc073ad4c8 100644
--- a/src/widget/wcoverartlabel.h
+++ b/src/widget/wcoverartlabel.h
@@ -26,6 +26,7 @@ class WCoverArtLabel : public QLabel {
protected:
void mousePressEvent(QMouseEvent* event) override;
+ void contextMenuEvent(QContextMenuEvent* event) override;
private slots:
void slotCoverMenu(const QPoint& pos);
diff --git a/src/widget/wtrackproperty.cpp b/src/widget/wtrackproperty.cpp
index 42742c9cf2..f2c6179046 100644
--- a/src/widget/wtrackproperty.cpp
+++ b/src/widget/wtrackproperty.cpp
@@ -7,7 +7,7 @@
#include "util/dnd.h"
namespace {
-const WTrackMenu::Features trackMenuFeatures =
+const WTrackMenu::Features kTrackMenuFeatures =
WTrackMenu::Feature::Playlist |
WTrackMenu::Feature::Crate |
WTrackMenu::Feature::Metadata |
@@ -26,7 +26,7 @@ WTrackProperty::WTrackProperty(QWidget* pParent,
m_pGroup(group),
m_pConfig(pConfig),
m_pTrackMenu(make_parented<WTrackMenu>(
- this, pConfig, pTrackCollectionManager, trackMenuFeatures)) {
+ this, pConfig, pTrackCollectionManager, kTrackMenuFeatures)) {
setAcceptDrops(true);
}
@@ -77,21 +77,22 @@ void WTrackProperty::updateLabel() {
setText("");
}
-void WTrackProperty::mouseMoveEvent(QMouseEvent *event) {
+void WTrackProperty::mouseMoveEvent(QMouseEvent* event) {
if ((event->buttons() & Qt::LeftButton) && m_pCurrentTrack) {
DragAndDropHelper::dragTrack(m_pCurrentTrack, this, m_pGroup);
}
}
-void WTrackProperty::dragEnterEvent(QDragEnterEvent *event) {
+void WTrackProperty::dragEnterEvent(QDragEnterEvent* event) {
DragAndDropHelper::handleTrackDragEnterEvent(event, m_pGroup, m_pConfig);
}
-void WTrackProperty::dropEvent(QDropEvent *event) {
+void WTrackProperty::dropEvent(QDropEvent* event) {
DragAndDropHelper::handleTrackDropEvent(event, *this, m_pGroup, m_pConfig);
}
-void WTrackProperty::contextMenuEvent(QContextMenuEvent *event) {
+void WTrackProperty::contextMenuEvent(QContextMenuEvent* event) {
+ event->accept();
if (m_pCurrentTrack) {
m_pTrackMenu->loadTrack(m_pCurrentTrack);
// Create the right-click menu
diff --git a/src/widget/wtrackproperty.h b/src/widget/wtrackproperty.h
index 138026d758..acfc8e941d 100644
--- a/src/widget/wtrackproperty.h
+++ b/src/widget/wtrackproperty.h
@@ -34,9 +34,11 @@ signals:
void slotTrackLoaded(TrackPointer track);
void slotLoadingTrack(TrackPointer pNewTrack, TrackPointer pOldTrack);
+ protected:
+ void contextMenuEvent(QContextMenuEvent* event) override;
+
private slots:
void slotTrackChanged(TrackId);
- void contextMenuEvent(QContextMenuEvent* event) override;
private:
void dragEnterEvent(QDragEnterEvent *event) override;
diff --git a/src/widget/wtracktableview.cpp b/src/widget/wtracktableview.cpp
index 057b312932..73e66ef048 100644
--- a/src/widget/wtracktableview.cpp
+++ b/src/widget/wtracktableview.cpp
@@ -431,6 +431,7 @@ void WTrackTableView::contextMenuEvent(QContextMenuEvent* event) {
VERIFY_OR_DEBUG_ASSERT(m_pTrackMenu.get()) {
initTrackMenu();
}
+ event->accept();
// Update track indices in context menu
QModelIndexList indices = selectionModel()->selectedRows();
m_pTrackMenu->loadTrackModelIndices(indices);
diff --git a/src/widget/wtracktext.cpp b/src/widget/wtracktext.cpp
index dc33643313..d92c02a4ce 100644
--- a/src/widget/wtracktext.cpp
+++ b/src/widget/wtracktext.cpp
@@ -84,6 +84,7 @@ void WTrackText::dropEvent(QDropEvent *event) {
}
void WTrackText::contextMenuEvent(QContextMenuEvent* event) {
+ event->accept();
if (m_pCurrentTrack) {
m_pTrackMenu->loadTrack(m_pCurrentTrack);
// Create the right-click menu
diff --git a/src/widget/wtracktext.h b/src/widget/wtracktext.h
index 81f7b77c56..419de54358 100644
--- a/src/widget/wtracktext.h
+++ b/src/widget/wtracktext.h
@@ -31,9 +31,11 @@ class WTrackText : public WLabel, public TrackDropTarget {
void slotTrackLoaded(TrackPointer track);
void slotLoadingTrack(TrackPointer pNewTrack, TrackPointer pOldTrack);
+ protected:
+ void contextMenuEvent(QContextMenuEvent* event) override;
+
private slots:
void slotTrackChanged(TrackId);
- void contextMenuEvent(QContextMenuEvent* event) override;
private:
void dragEnterEvent(QDragEnterEvent *event) override;
diff --git a/src/widget/wtrackwidgetgroup.cpp b/src/widget/wtrackwidgetgroup.cpp
index 50aeb68aaa..644d3d6540 100644
--- a/src/widget/wtrackwidgetgroup.cpp
+++ b/src/widget/wtrackwidgetgroup.cpp
@@ -6,16 +6,31 @@
#include <QUrl>
#include "control/controlobject.h"
+#include "widget/wtrackmenu.h"
namespace {
int kDefaultTrackColorAplha = 255;
+const WTrackMenu::Features kTrackMenuFeatures =
+ WTrackMenu::Feature::Playlist |
+ WTrackMenu::Feature::Crate |
+ WTrackMenu::Feature::Metadata |
+ WTrackMenu::Feature::Reset |
+ WTrackMenu::Feature::BPM |
+ WTrackMenu::Feature::Color |
+ WTrackMenu::Feature::FileBrowser |
+ WTrackMenu::Feature::Properties;
+
} // anonymous namespace
-WTrackWidgetGroup::WTrackWidgetGroup(QWidget* pParent)
+WTrackWidgetGroup::WTrackWidgetGroup(QWidget* pParent,
+ UserSettingsPointer pConfig,
+ TrackCollectionManager* pTrackCollectionManager)
: WWidgetGroup(pParent),
- m_trackColorAlpha(kDefaultTrackColorAplha) {
+ m_trackColorAlpha(kDefaultTrackColorAplha),
+ m_pTrackMenu(make_parented<WTrackMenu>(
+ this, pConfig, pTrackCollectionManager, kTrackMenuFeatures)) {
}
void WTrackWidgetGroup::setup(const QDomNode& node, const SkinContext& context) {
@@ -76,3 +91,12 @@ void WTrackWidgetGroup::paintEvent(QPaintEvent* pe) {
p.fillRect(rect(), QBrush(m_trackColor));
}
}
+
+void WTrackWidgetGroup::contextMenuEvent(QContextMenuEvent* event) {
+ event->accept();
+ if (m_pCurrentTrack) {
+ m_pTrackMenu->loadTrack(m_pCurrentTrack);
+ // Create the right-click menu
+ m_pTrackMenu->popup(event->globalPos());
+ }
+}
diff --git a/src/widget/wtrackwidgetgroup.h b/src/widget/wtrackwidgetgroup.h
index 4f1d5573c6..b8c5dc3c52 100644
--- a/src/widget/wtrackwidgetgroup.h
+++ b/src/widget/wtrackwidgetgroup.h
@@ -2,12 +2,18 @@
#include "skin/skincontext.h"
#include "track/track.h"
+#include "util/parented_ptr.h"
#include "widget/wwidgetgroup.h"
+class WTrackMenu;
+class TrackCollectionManager;
+
class WTrackWidgetGroup : public WWidgetGroup {
Q_OBJECT
public:
- WTrackWidgetGroup(QWidget* pParent);
+ WTrackWidgetGroup(QWidget* pParent,
+ UserSettingsPointer pConfig,
+ TrackCollectionManager* pTrackCollectionManager);
void setup(const QDomNode& node, const SkinContext& context) override;
public slots:
@@ -16,6 +22,7 @@ class WTrackWidgetGroup : public WWidgetGroup {
protected:
void paintEvent(QPaintEvent* pe) override;
+ void contextMenuEvent(QContextMenuEvent* event) override;
private slots:
void slotTrackChanged(TrackId);
@@ -26,4 +33,6 @@ class WTrackWidgetGroup : public WWidgetGroup {
TrackPointer m_pCurrentTrack;
QColor m_trackColor;
int m_trackColorAlpha;
+
+ const parented_ptr<WTrackMenu> m_pTrackMenu;
};