Skip to content

Commit

Permalink
Use std::optional<RgbColor> for track colors
Browse files Browse the repository at this point in the history
  • Loading branch information
uklotzde committed Feb 1, 2020
1 parent 01453e5 commit f526a4a
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 11 deletions.
4 changes: 2 additions & 2 deletions res/schema.xml
Original file line number Diff line number Diff line change
Expand Up @@ -483,10 +483,10 @@ METADATA
</revision>
<revision version="31" min_compatible="3">
<description>
Add track color support. Default color is #000000.
Add track color support.
</description>
<sql>
ALTER TABLE library ADD COLUMN color INTEGER DEFAULT 0xFF000000 NOT NULL;
ALTER TABLE library ADD COLUMN color INTEGER;
</sql>
</revision>
</schema>
5 changes: 4 additions & 1 deletion src/library/basetrackcache.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ namespace {

constexpr bool sDebug = false;

constexpr mixxx::RgbColor kDefaultTrackColor = mixxx::RgbColor(0x000000); // black

} // namespace

BaseTrackCache::BaseTrackCache(TrackCollection* pTrackCollection,
Expand Down Expand Up @@ -470,7 +472,8 @@ void BaseTrackCache::getTrackValueForColumn(TrackPointer pTrack,
} else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BPM_LOCK) == column) {
trackValue.setValue(pTrack->isBpmLocked());
} else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COLOR) == column) {
trackValue.setValue(pTrack->getColor().rgb());
trackValue.setValue(toQVariant(
pTrack->getColor().value_or(kDefaultTrackColor)));
} else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COVERART_LOCATION) == column) {
trackValue.setValue(pTrack->getCoverInfo().coverLocation);
} else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COVERART_HASH) == column ||
Expand Down
4 changes: 2 additions & 2 deletions src/library/dao/trackdao.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -526,7 +526,7 @@ namespace {
pTrackLibraryQuery->bindValue(":tracknumber", track.getTrackNumber());
pTrackLibraryQuery->bindValue(":tracktotal", track.getTrackTotal());
pTrackLibraryQuery->bindValue(":filetype", track.getType());
pTrackLibraryQuery->bindValue(":color", track.getColor().rgba());
pTrackLibraryQuery->bindValue(":color", toQVariant(track.getColor()));
pTrackLibraryQuery->bindValue(":comment", track.getComment());
pTrackLibraryQuery->bindValue(":url", track.getURL());
pTrackLibraryQuery->bindValue(":duration", track.getDuration());
Expand Down Expand Up @@ -1046,7 +1046,7 @@ bool setTrackTotal(const QSqlRecord& record, const int column,

bool setTrackColor(const QSqlRecord& record, const int column,
TrackPointer pTrack) {
pTrack->setColor(QColor(static_cast<QRgb>(record.value(column).toUInt())));
pTrack->setColor(mixxx::RgbColor::optional(record.value(column)));
return false;
}

Expand Down
4 changes: 2 additions & 2 deletions src/track/track.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -532,12 +532,12 @@ void Track::updatePlayCounter(bool bPlayed) {
}
}

QColor Track::getColor() const {
mixxx::RgbColor::optional_t Track::getColor() const {
QMutexLocker lock(&m_qMutex);
return m_record.getColor();
}

void Track::setColor(const QColor& color) {
void Track::setColor(mixxx::RgbColor::optional_t color) {
QMutexLocker lock(&m_qMutex);
if (compareAndSet(&m_record.refColor(), color)) {
markDirtyAndUnlock(&lock);
Expand Down
4 changes: 2 additions & 2 deletions src/track/track.h
Original file line number Diff line number Diff line change
Expand Up @@ -190,9 +190,9 @@ class Track : public QObject {
// Set genre
void setGenre(const QString&);
// Returns the track color
QColor getColor() const;
mixxx::RgbColor::optional_t getColor() const;
// Sets the track color
void setColor(const QColor&);
void setColor(mixxx::RgbColor::optional_t);
// Returns the user comment
QString getComment() const;
// Sets the user commnet
Expand Down
3 changes: 2 additions & 1 deletion src/track/trackrecord.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "track/playcounter.h"

#include "library/coverart.h"
#include "util/color/rgbcolor.h"


namespace mixxx {
Expand Down Expand Up @@ -44,7 +45,7 @@ class TrackRecord final {
PROPERTY_SET_BYVAL_GET_BYREF(QString, fileType, FileType)
PROPERTY_SET_BYVAL_GET_BYREF(QString, url, Url)
PROPERTY_SET_BYVAL_GET_BYREF(PlayCounter, playCounter, PlayCounter)
PROPERTY_SET_BYVAL_GET_BYREF(QColor, color, Color)
PROPERTY_SET_BYVAL_GET_BYREF(RgbColor::optional_t, color, Color)
PROPERTY_SET_BYVAL_GET_BYREF(CuePosition, cuePoint, CuePoint)
PROPERTY_SET_BYVAL_GET_BYREF(int, rating, Rating)
PROPERTY_SET_BYVAL_GET_BYREF(bool, bpmLocked, BpmLocked)
Expand Down
2 changes: 1 addition & 1 deletion src/widget/wtracktableview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1983,7 +1983,7 @@ void WTrackTableView::slotColorPicked(PredefinedColorPointer pColor) {
// TODO: This should be done in a thread for large selections
for (const auto& index : selectedTrackIndices) {
TrackPointer track = trackModel->getTrack(index);
track->setColor(pColor->m_defaultRgba);
track->setColor(mixxx::RgbColor::optional(pColor->m_defaultRgba));
}

m_pMenu->hide();
Expand Down

0 comments on commit f526a4a

Please sign in to comment.