diff --git a/calbum.cpp b/calbum.cpp index a99466c..d717e5a 100644 --- a/calbum.cpp +++ b/calbum.cpp @@ -114,9 +114,9 @@ QString cAlbum::band() return(m_szBand); } -cTrack* cAlbum::addTrack(const QString& szTitle, const QString &szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString& szComposer, const QDate &recordingTime) +cTrack* cAlbum::addTrack(const QString& szTitle, const QString &szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString& szLeadArtist, const QString& szComposer, const QDate &recordingTime, const QString& szFileName) { - return(m_trackList.add(this, szTitle, szTrackNumber, szPartOfSet, szBand, szComposer, recordingTime)); + return(m_trackList.add(this, szTitle, szTrackNumber, szPartOfSet, szBand, szLeadArtist, szComposer, recordingTime, szFileName)); } cTrackList cAlbum::trackList() diff --git a/calbum.h b/calbum.h index eeaa638..e920c25 100644 --- a/calbum.h +++ b/calbum.h @@ -23,7 +23,7 @@ public: void setBand(const QString& szBand); QString band(); - cTrack* addTrack(const QString& szTitle, const QString& szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString& szComposer, const QDate& recordingTime); + cTrack* addTrack(const QString& szTitle, const QString& szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString &szLeadArtist, const QString& szComposer, const QDate& recordingTime, const QString &szFileName); cTrackList trackList(); void sortTracks(qint32 sort); diff --git a/cmainwindow.cpp b/cmainwindow.cpp index 0df5336..16f12a8 100644 --- a/cmainwindow.cpp +++ b/cmainwindow.cpp @@ -113,8 +113,6 @@ void cMainWindow::initSettings() void cMainWindow::loadDB() { QSqlQuery query; - QString szOldLeadArtist = ""; - QString szOldAlbum = ""; QString szAlbum; QString szTitle; QString szTrackNumber; @@ -123,6 +121,7 @@ void cMainWindow::loadDB() QString szBand; QString szComposer; QDate recordingTime; + QString szFileName; cAlbum* lpAlbum = 0; @@ -208,10 +207,11 @@ void cMainWindow::loadDB() szBand = query.value("band").toString(); szComposer = query.value("composer").toString(); recordingTime = query.value("recordingTime").toDate(); + szFileName = query.value("fileName").toString(); lpAlbum = m_albumList.add(szAlbum, szBand); if(lpAlbum) - lpAlbum->addTrack(szTitle, szTrackNumber, szPartOfSet, szBand, szComposer, recordingTime); + lpAlbum->addTrack(szTitle, szTrackNumber, szPartOfSet, szBand, szLeadArtist, szComposer, recordingTime, szFileName); } } @@ -222,7 +222,7 @@ void cMainWindow::displayDB() m_albumList.sort(SORT_ALBUM_ASC | SORT_BAND_ASC | SORT_TRACK_ASC); QStringList header; - header << "Original"; + header << tr("Track") << tr("Nr") << tr("Set") << tr("Year") << tr("Filename"); m_lpMusicListModel->setHorizontalHeaderLabels(header); @@ -242,11 +242,9 @@ void cMainWindow::displayDB() szOldAlbum = ""; lpBandItem.clear(); - lpBandItem.append(new QStandardItem(szOldBand)); - lpBandItem[0]->setData(USERROLE_TYPE_BAND, USERROLE_TYPE); - lpBandItem[0]->setData(QVariant::fromValue(lpAlbum), USERROLE_VALUE); - + lpBandItem.append(newItem(szOldBand, USERROLE_TYPE_BAND, QVariant::fromValue(lpAlbum), Qt::AlignLeft, true, false, QColor(), QColor(191, 191, 191))); m_lpMusicListModel->appendRow(lpBandItem); + ui->m_lpMusicList->setFirstColumnSpanned(lpBandItem[0]->index().row(), m_lpMusicListModel->invisibleRootItem()->index(), true); } if(szOldAlbum != lpAlbum->album()) @@ -254,12 +252,9 @@ void cMainWindow::displayDB() szOldAlbum = lpAlbum->album(); lpAlbumItem.clear(); - lpAlbumItem.append(new QStandardItem(szOldAlbum)); - lpAlbumItem[0]->setData(USERROLE_TYPE_ALBUM, USERROLE_TYPE); - lpAlbumItem[0]->setData(QVariant::fromValue(lpAlbum), USERROLE_VALUE); - lpAlbumItem.append(new QStandardItem(szOldAlbum)); - + lpAlbumItem.append(newItem(szOldAlbum, USERROLE_TYPE_ALBUM, QVariant::fromValue(lpAlbum), Qt::AlignLeft, false, true, QColor(), QColor(223, 223, 223))); lpBandItem[0]->appendRow(lpAlbumItem); + ui->m_lpMusicList->setFirstColumnSpanned(lpAlbumItem[0]->index().row(), lpBandItem[0]->index(), true); } cTrackList trackList = lpAlbum->trackList(); @@ -268,14 +263,40 @@ void cMainWindow::displayDB() cTrack* lpTrack = trackList.at(y); QList lpTrackItem; - lpTrackItem.append(new QStandardItem(lpTrack->title())); - lpTrackItem[0]->setData(USERROLE_TYPE_TRACK, USERROLE_TYPE); - lpTrackItem[0]->setData(QVariant::fromValue(lpTrack), USERROLE_VALUE); + lpTrackItem.append(newItem(lpTrack->title(), USERROLE_TYPE_TRACK, QVariant::fromValue(lpTrack))); + lpTrackItem.append(newItem(lpTrack->trackNumber(), USERROLE_TYPE_TRACK, QVariant::fromValue(lpTrack), Qt::AlignRight)); + lpTrackItem.append(newItem(lpTrack->partOfSet(), USERROLE_TYPE_TRACK, QVariant::fromValue(lpTrack), Qt::AlignRight)); + lpTrackItem.append(newItem(QString::number(lpTrack->recordingTime().year()), USERROLE_TYPE_TRACK, QVariant::fromValue(lpTrack), Qt::AlignRight)); + lpTrackItem.append(newItem(lpTrack->fileName(), USERROLE_TYPE_TRACK, QVariant::fromValue(lpTrack))); lpAlbumItem[0]->appendRow(lpTrackItem); } } } +QStandardItem* cMainWindow::newItem(const QString& szText, qint32 type, const QVariant& data, Qt::Alignment align, bool bold, bool italic, const QColor &foreground, const QColor &background) +{ + QStandardItem* lpItem = new QStandardItem(szText); + lpItem->setTextAlignment(align); + + if(bold || italic) + { + QFont font = lpItem->font(); + font.setBold(bold); + font.setItalic(italic); + lpItem->setFont(font); + } + + if(foreground.isValid()) + lpItem->setForeground(QBrush(foreground)); + + if(background.isValid()) + lpItem->setBackground(QBrush(background)); + + lpItem->setData(type, USERROLE_TYPE); + lpItem->setData(data, USERROLE_VALUE); + return(lpItem); +} + void cMainWindow::onCustomContextMenuRequested(const QPoint &/*pos*/) { /* diff --git a/cmainwindow.h b/cmainwindow.h index 20c000c..31315b2 100644 --- a/cmainwindow.h +++ b/cmainwindow.h @@ -42,6 +42,8 @@ private: void loadDB(); void displayDB(); + QStandardItem* newItem(const QString& szText, qint32 type, const QVariant &data, Qt::Alignment align = Qt::AlignLeft, bool bold = false, bool italic = false, const QColor& foreground = QColor(), const QColor& background = QColor()); + protected: void initSettings(); private slots: diff --git a/ctrack.cpp b/ctrack.cpp index e0450f3..8050c32 100644 --- a/ctrack.cpp +++ b/ctrack.cpp @@ -54,14 +54,16 @@ private: qint32 m_sort; }; -cTrack::cTrack(cAlbum* lpAlbum, const QString& szTitle, const QString &szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString& szComposer, const QDate& recordingTime) : +cTrack::cTrack(cAlbum* lpAlbum, const QString& szTitle, const QString &szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString& szLeadArtist, const QString& szComposer, const QDate& recordingTime, const QString& szFileName) : m_lpAlbum(lpAlbum), m_szTitle(szTitle), m_szTrackNumber(szTrackNumber), m_szPartOfSet(szPartOfSet), m_szBand(szBand), + m_szLeadArtist(szLeadArtist), m_szComposer(szComposer), - m_recordingTime(recordingTime) + m_recordingTime(recordingTime), + m_szFileName(szFileName) { } @@ -135,20 +137,33 @@ QDate cTrack::recordingTime() return(m_recordingTime); } -cTrack* cTrackList::add(cAlbum* lpAlbum, const QString& szTitle, const QString &szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString& szComposer, const QDate &recordingTime) +void cTrack::setFileName(const QString& szFileName) +{ + m_szFileName = szFileName; +} + +QString cTrack::fileName() +{ + return(m_szFileName); +} + +cTrack* cTrackList::add(cAlbum* lpAlbum, const QString& szTitle, const QString& szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString& szLeadArtist, const QString& szComposer, const QDate& recordingTime, const QString& szFileName) { QString szTitle1 = szTitle; QString szBand1 = szBand; + QString szLeadArtist1 = szLeadArtist; QString szComposer1 = szComposer; if(szTitle1.isEmpty()) szTitle1 = "*** NO TITLE ***"; if(szBand1.isEmpty()) - szBand1 = "*** NO BAND ***"; + szBand1 = "*** NO BAND ***"; + if(szLeadArtist1.isEmpty()) + szLeadArtist1 = "*** NO LEAD ARTIST ***"; if(szComposer1.isEmpty()) - szComposer1 = "*** NO COMPOSER ***"; + szComposer1 = "*** NO COMPOSER ***"; - cTrack* lpTrackNew = new cTrack(lpAlbum, szTitle1, szTrackNumber, szPartOfSet, szBand1, szComposer1, recordingTime); + cTrack* lpTrackNew = new cTrack(lpAlbum, szTitle1, szTrackNumber, szPartOfSet, szBand1, szLeadArtist1, szComposer1, recordingTime, szFileName); append(lpTrackNew); return(lpTrackNew); } diff --git a/ctrack.h b/ctrack.h index a49ac60..7d327c4 100644 --- a/ctrack.h +++ b/ctrack.h @@ -10,10 +10,70 @@ class cAlbum; +/* + " fileName TEXT, " + " fileSize INTEGER, " + " fileDate DATE, " + " fileType TEXT, " + " length INTEGER, " + " bitrate INTEGER, " + " sampleRate INTEGER, " + " channels INTEGER, " + " bitsPerSample INTEGER, " + " layer INTEGER, " + " version INTEGER, " + " sampleWidth INTEGER, " + " sampleFrames INTEGER, " + " isEncrypted BOOL, " + " trackGain INTEGER, " + " albumGain INTEGER, " + " trackPeak INTEGER, " + " albumPeak INTEGER, " + " protectionEnabled BOOL, " + " channelMode INTEGER, " + " isCopyrighted BOOL, " + " isOriginal BOOL, " + " copyright TEXT, " + " contentGroupDescription TEXT, " + " subTitle TEXT, " + " originalAlbum TEXT, " + " subTitleOfSet TEXT, " + " internationalStandardRecordingCode TEXT, " + " leadArtist TEXT, " + " conductor TEXT, " + " interpret TEXT, " + " originalArtist TEXT, " + " textWriter TEXT, " + " originalTextWriter TEXT, " + " encodedBy TEXT, " + " beatsPerMinute INTEGER, " + " language TEXT, " + " contentType TEXT, " + " mediaType TEXT, " + " mood TEXT, " + " producedNotice TEXT, " + " publisher TEXT, " + " fileOwner TEXT, " + " internetRadioStationName TEXT, " + " internetRadioStationOwner TEXT, " + " originalFilename TEXT, " + " playlistDelay TEXT, " + " encodingTime INTEGER, " + " originalReleaseTime DATE, " + " releaseTime DATE, " + " taggingTime DATE, " + " swhwSettings TEXT, " + " albumSortOrder TEXT, " + " performerSortOrder TEXT, " + " titleSortOrder TEXT, " + " synchronizedLyrics TEXT, " + " unsynchronizedLyrics TEXT)")) + */ + class cTrack { public: - cTrack(cAlbum* lpAlbum, const QString& szTitle, const QString& szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString& szComposer, const QDate& recordingTime); + cTrack(cAlbum* lpAlbum, const QString& szTitle, const QString& szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString &szLeadArtist, const QString& szComposer, const QDate& recordingTime, const QString &szFileName); void setAlbum(cAlbum* lpAlbum); cAlbum* album(); @@ -30,20 +90,28 @@ public: void setBand(const QString& szBand); QString band(); + void setLeadArtist(const QString& szLeadArtist); + QString leadArtist(); + void setComposer(const QString& szComposer); QString composer(); void setRecordingTime(const QDate &recordingTime); QDate recordingTime(); + void setFileName(const QString& szFileName); + QString fileName(); + private: cAlbum* m_lpAlbum; QString m_szTitle; QString m_szTrackNumber; QString m_szPartOfSet; QString m_szBand; + QString m_szLeadArtist; QString m_szComposer; QDate m_recordingTime; + QString m_szFileName; }; Q_DECLARE_METATYPE(cTrack*) @@ -51,7 +119,7 @@ Q_DECLARE_METATYPE(cTrack*) class cTrackList : public QList { public: - cTrack* add(cAlbum* lpAlbum, const QString& szTitle, const QString& szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString& szComposer, const QDate& recordingTime); + cTrack* add(cAlbum* lpAlbum, const QString& szTitle, const QString& szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString& szLeadArtist, const QString& szComposer, const QDate& recordingTime, const QString& szFileName); void sort(qint32 sort); };