From 10dd1c088063368d1e234f5713b921b5aad5701e Mon Sep 17 00:00:00 2001 From: ronso0 Date: Tue, 4 Aug 2020 19:18:54 +0200 Subject: DlgTrackInfo: add star rating below cover art --- src/library/dlgtrackinfo.cpp | 17 +++++++++++++---- src/library/dlgtrackinfo.h | 2 ++ src/library/dlgtrackinfo.ui | 35 +++++++++++++++++++++-------------- src/widget/wstarrating.cpp | 14 +++++++++----- 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 @@ - + @@ -102,25 +102,13 @@ 0 - + 0 QLayout::SetDefaultConstraint - - 0 - - - 0 - - - 0 - - - 0 - @@ -227,6 +215,25 @@ + + + + + 0 + 0 + + + + + 0 + + + QLayout::SetDefaultConstraint + + + + + 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(ConfigKey(group, "stars_up")); - m_pStarsDown = std::make_unique(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(ConfigKey(group, "stars_up")); + m_pStarsDown = std::make_unique(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) { -- cgit v1.2.3