summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorronso0 <ronso0@mixxx.org>2020-08-04 19:18:54 +0200
committerronso0 <ronso0@mixxx.org>2020-08-04 19:18:54 +0200
commit10dd1c088063368d1e234f5713b921b5aad5701e (patch)
tree661a0326a48fdae4d8a0d502d598e753224cb235
parentf8fd6d1e8e822a3df8410d84c59e0a145118935a (diff)
DlgTrackInfo: add star rating below cover art
-rw-r--r--src/library/dlgtrackinfo.cpp17
-rw-r--r--src/library/dlgtrackinfo.h2
-rw-r--r--src/library/dlgtrackinfo.ui35
-rw-r--r--src/widget/wstarrating.cpp14
4 files changed, 45 insertions, 23 deletions
diff --git a/src/library/dlgtrackinfo.cpp b/src/library/dlgtrackinfo.cpp
index ea998a073f..e876f9f273 100644
--- a/src/library/dlgtrackinfo.cpp
+++ b/src/library/dlgtrackinfo.cpp
@@ -32,6 +32,7 @@ DlgTrackInfo::DlgTrackInfo(QWidget* parent,
m_pTapFilter(new TapFilter(this, kFilterLength, kMaxInterval)),
m_dLastTapedBpm(-1.),
m_pWCoverArtLabel(new WCoverArtLabel(this)),
+ m_pWStarRating(new WStarRating(nullptr, this)),
m_pConfig(pConfig),
m_pTrackModel(trackModel) {
init();
@@ -44,10 +45,17 @@ DlgTrackInfo::~DlgTrackInfo() {
void DlgTrackInfo::init() {
setupUi(this);
- coverBox->setAlignment(Qt::AlignRight|Qt::AlignTop);
- coverBox->setSpacing(0);
- coverBox->setContentsMargins(0, 0, 0, 0);
- coverBox->insertWidget(1, m_pWCoverArtLabel);
+ coverLayout->setAlignment(Qt::AlignRight | Qt::AlignTop);
+ coverLayout->setSpacing(0);
+ coverLayout->setContentsMargins(0, 0, 0, 0);
+ coverLayout->insertWidget(0, m_pWCoverArtLabel);
+
+ starsLayout->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
+ starsLayout->setSpacing(0);
+ starsLayout->setContentsMargins(0, 0, 0, 0);
+ starsLayout->insertWidget(0, m_pWStarRating);
+ // This is necessary to pass on mouseMove events to WStarRating
+ m_pWStarRating->setMouseTracking(true);
m_pTagFetcher.reset(new DlgTagFetcher(this, m_pTrackModel));
if (m_pTrackModel) {
@@ -269,6 +277,7 @@ void DlgTrackInfo::populateFields(const Track& track) {
m_loadedCoverInfo = track.getCoverInfoWithLocation();
m_pWCoverArtLabel->setCoverArt(m_loadedCoverInfo, QPixmap());
CoverArtCache::requestCover(this, m_loadedCoverInfo);
+ m_pWStarRating->slotTrackLoaded(m_pLoadedTrack);
}
void DlgTrackInfo::reloadTrackBeats(const Track& track) {
diff --git a/src/library/dlgtrackinfo.h b/src/library/dlgtrackinfo.h
index 1f50804fbb..4f4e77ddbd 100644
--- a/src/library/dlgtrackinfo.h
+++ b/src/library/dlgtrackinfo.h
@@ -16,6 +16,7 @@
#include "util/types.h"
#include "widget/wcoverartlabel.h"
#include "widget/wcoverartmenu.h"
+#include "widget/wstarrating.h"
/// A dialog box to display and edit track properties.
/// Use TrackPointer to load a track into the dialog or
@@ -100,6 +101,7 @@ class DlgTrackInfo : public QDialog, public Ui::DlgTrackInfo {
CoverInfo m_loadedCoverInfo;
WCoverArtLabel* m_pWCoverArtLabel;
+ WStarRating* m_pWStarRating;
UserSettingsPointer m_pConfig;
const TrackModel* m_pTrackModel;
diff --git a/src/library/dlgtrackinfo.ui b/src/library/dlgtrackinfo.ui
index 3b0e38c53b..51946d11aa 100644
--- a/src/library/dlgtrackinfo.ui
+++ b/src/library/dlgtrackinfo.ui
@@ -94,7 +94,7 @@
</widget>
</item>
- <item row="0" column="2" rowspan="3" colspan="2">
+ <item row="0" column="2" colspan="2" rowspan="3">
<widget class="QWidget" name="verticalWidgetCover" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
@@ -102,25 +102,13 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <layout class="QHBoxLayout" name="coverBox">
+ <layout class="QHBoxLayout" name="coverLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
</layout>
</widget>
</item>
@@ -227,6 +215,25 @@
</widget>
</item>
+ <item row="3" column="2" colspan="2">
+ <widget class="QWidget" name="verticalWidgetStars" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <layout class="QHBoxLayout" name="starsLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="sizeConstraint">
+ <enum>QLayout::SetDefaultConstraint</enum>
+ </property>
+ </layout>
+ </widget>
+ </item>
+
<item row="4" column="0">
<widget class="QLabel" name="lblComposer">
<property name="text">
diff --git a/src/widget/wstarrating.cpp b/src/widget/wstarrating.cpp
index d2c6a8150b..db98a0ad7c 100644
--- a/src/widget/wstarrating.cpp
+++ b/src/widget/wstarrating.cpp
@@ -10,11 +10,15 @@ WStarRating::WStarRating(QString group, QWidget* pParent)
m_starRating(0, 5),
m_group(group),
m_focused(false) {
- // Controls to change the star rating with controllers
- m_pStarsUp = std::make_unique<ControlPushButton>(ConfigKey(group, "stars_up"));
- m_pStarsDown = std::make_unique<ControlPushButton>(ConfigKey(group, "stars_down"));
- connect(m_pStarsUp.get(), SIGNAL(valueChanged(double)), this, SLOT(slotStarsUp(double)));
- connect(m_pStarsDown.get(), SIGNAL(valueChanged(double)), this, SLOT(slotStarsDown(double)));
+ // Controls to change the star rating with controllers.
+ // Note that 'group' maybe NULLPTR, e.g. when called from DlgTrackInfo,
+ // so only create rate change COs if there's a group passed when creating deck widgets.
+ if (!m_group.isEmpty()) {
+ m_pStarsUp = std::make_unique<ControlPushButton>(ConfigKey(group, "stars_up"));
+ m_pStarsDown = std::make_unique<ControlPushButton>(ConfigKey(group, "stars_down"));
+ connect(m_pStarsUp.get(), SIGNAL(valueChanged(double)), this, SLOT(slotStarsUp(double)));
+ connect(m_pStarsDown.get(), SIGNAL(valueChanged(double)), this, SLOT(slotStarsDown(double)));
+ }
}
void WStarRating::setup(const QDomNode& node, const SkinContext& context) {