File indexing completed on 2024-04-28 08:41:09

0001 /*
0002    SPDX-FileCopyrightText: 2016 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr>
0003 
0004    SPDX-License-Identifier: LGPL-3.0-or-later
0005  */
0006 
0007 #include "manageheaderbar.h"
0008 
0009 
0010 ManageHeaderBar::ManageHeaderBar(QObject *parent)
0011     : QObject(parent)
0012 {
0013 }
0014 
0015 void ManageHeaderBar::setArtistRole(int value)
0016 {
0017     mArtistRole = value;
0018     Q_EMIT artistRoleChanged();
0019 }
0020 
0021 int ManageHeaderBar::artistRole() const
0022 {
0023     return mArtistRole;
0024 }
0025 
0026 void ManageHeaderBar::setTitleRole(int value)
0027 {
0028     mTitleRole = value;
0029     Q_EMIT titleRoleChanged();
0030 }
0031 
0032 int ManageHeaderBar::titleRole() const
0033 {
0034     return mTitleRole;
0035 }
0036 
0037 void ManageHeaderBar::setAlbumRole(int value)
0038 {
0039     mAlbumRole = value;
0040     Q_EMIT albumRoleChanged();
0041 }
0042 
0043 void ManageHeaderBar::setAlbumArtistRole(int value)
0044 {
0045     mAlbumArtistRole = value;
0046     Q_EMIT albumArtistRoleChanged();
0047 }
0048 
0049 void ManageHeaderBar::setFileNameRole(int value)
0050 {
0051     mFileNameRole = value;
0052     Q_EMIT fileNameRoleChanged();
0053 }
0054 
0055 int ManageHeaderBar::albumRole() const
0056 {
0057     return mAlbumRole;
0058 }
0059 
0060 int ManageHeaderBar::albumArtistRole() const
0061 {
0062     return mAlbumArtistRole;
0063 }
0064 
0065 int ManageHeaderBar::fileNameRole() const
0066 {
0067     return mFileNameRole;
0068 }
0069 
0070 void ManageHeaderBar::setImageRole(int value)
0071 {
0072     mImageRole = value;
0073     Q_EMIT imageRoleChanged();
0074 }
0075 
0076 void ManageHeaderBar::setDatabaseIdRole(int databaseIdRole)
0077 {
0078     mDatabaseIdRole = databaseIdRole;
0079     Q_EMIT databaseIdRoleChanged();
0080 }
0081 
0082 void ManageHeaderBar::setTrackTypeRole(int trackTypeRole)
0083 {
0084     mTrackTypeIdRole = trackTypeRole;
0085     Q_EMIT trackTypeRoleChanged();
0086 }
0087 
0088 int ManageHeaderBar::imageRole() const
0089 {
0090     return mImageRole;
0091 }
0092 
0093 int ManageHeaderBar::databaseIdRole() const
0094 {
0095     return mDatabaseIdRole;
0096 }
0097 
0098 int ManageHeaderBar::trackTypeRole() const
0099 {
0100     return mTrackTypeIdRole;
0101 }
0102 
0103 void ManageHeaderBar::setAlbumIdRole(int albumIdRole)
0104 {
0105     mAlbumIdRole = albumIdRole;
0106     Q_EMIT albumIdRoleChanged();
0107 }
0108 
0109 int ManageHeaderBar::albumIdRole() const
0110 {
0111     return mAlbumIdRole;
0112 }
0113 
0114 QVariant ManageHeaderBar::album() const
0115 {
0116     QVariant result = QString{};
0117 
0118     if (!mCurrentTrack.isValid() || mCurrentTrack.data(mAlbumRole).isNull()) {
0119         return result;
0120     }
0121 
0122     result = mCurrentTrack.data(mAlbumRole);
0123 
0124     return result;
0125 }
0126 
0127 QVariant ManageHeaderBar::albumArtist() const
0128 {
0129     if (!mCurrentTrack.isValid()) {
0130         return QString();
0131     }
0132 
0133     return mCurrentTrack.data(mAlbumArtistRole);
0134 }
0135 
0136 QUrl ManageHeaderBar::fileUrl() const
0137 {
0138     QUrl result;
0139 
0140     if (!mCurrentTrack.isValid()) {
0141         return result;
0142     }
0143 
0144     result = mCurrentTrack.data(mFileNameRole).toUrl();
0145 
0146     return result;
0147 }
0148 
0149 QVariant ManageHeaderBar::title() const
0150 {
0151     if (!mCurrentTrack.isValid()) {
0152         return QString();
0153     }
0154 
0155     return mCurrentTrack.data(mTitleRole);
0156 }
0157 
0158 QVariant ManageHeaderBar::artist() const
0159 {
0160     if (!mCurrentTrack.isValid()) {
0161         return QString();
0162     }
0163 
0164     auto artistValue = mCurrentTrack.data(mArtistRole);
0165 
0166     if (!artistValue.isValid()) {
0167         return mCurrentTrack.data(mAlbumArtistRole);
0168     }
0169 
0170     return artistValue;
0171 }
0172 
0173 QUrl ManageHeaderBar::image() const
0174 {
0175     if (!mCurrentTrack.isValid()) {
0176         return {};
0177     }
0178 
0179     return mCurrentTrack.data(mImageRole).toUrl();
0180 }
0181 
0182 qulonglong ManageHeaderBar::databaseId() const
0183 {
0184     if (!mCurrentTrack.isValid()) {
0185         return 0;
0186     }
0187 
0188     return mCurrentTrack.data(mDatabaseIdRole).toULongLong();
0189 }
0190 
0191 ElisaUtils::PlayListEntryType ManageHeaderBar::trackType() const
0192 {
0193     if (!mCurrentTrack.isValid()) {
0194         return ElisaUtils::Unknown;
0195     }
0196 
0197     return mCurrentTrack.data(mTrackTypeIdRole).value<ElisaUtils::PlayListEntryType>();
0198 }
0199 
0200 qulonglong ManageHeaderBar::albumId() const
0201 {
0202     if (!mCurrentTrack.isValid()) {
0203         return 0;
0204     }
0205 
0206     return mCurrentTrack.data(mAlbumIdRole).toULongLong();
0207 }
0208 
0209 bool ManageHeaderBar::isValid() const
0210 {
0211     if (!mCurrentTrack.isValid()) {
0212         return false;
0213     }
0214 
0215     return mCurrentTrack.data(mIsValidRole).toBool();
0216 }
0217 
0218 int ManageHeaderBar::isValidRole() const
0219 {
0220     return mIsValidRole;
0221 }
0222 
0223 QPersistentModelIndex ManageHeaderBar::currentTrack() const
0224 {
0225     return mCurrentTrack;
0226 }
0227 
0228 void ManageHeaderBar::notifyArtistProperty()
0229 {
0230     auto newArtistValue = mCurrentTrack.data(mArtistRole);
0231     if (mOldArtist != newArtistValue) {
0232         Q_EMIT artistChanged();
0233 
0234         mOldArtist = newArtistValue;
0235     }
0236 }
0237 
0238 void ManageHeaderBar::notifyTitleProperty()
0239 {
0240     auto newTitleValue = mCurrentTrack.data(mTitleRole);
0241     if (mOldTitle != newTitleValue) {
0242         Q_EMIT titleChanged();
0243 
0244         mOldTitle = newTitleValue;
0245     }
0246 }
0247 
0248 void ManageHeaderBar::notifyAlbumProperty()
0249 {
0250     auto newAlbumValue = mCurrentTrack.data(mAlbumRole);
0251     if (mOldAlbum != newAlbumValue) {
0252         Q_EMIT albumChanged();
0253 
0254         mOldAlbum = newAlbumValue;
0255     }
0256 }
0257 
0258 void ManageHeaderBar::notifyAlbumArtistProperty()
0259 {
0260     auto newAlbumArtistValue = mCurrentTrack.data(mAlbumArtistRole);
0261     if (mOldAlbumArtist != newAlbumArtistValue) {
0262         Q_EMIT albumArtistChanged();
0263 
0264         mOldAlbumArtist = newAlbumArtistValue;
0265     }
0266 }
0267 
0268 void ManageHeaderBar::notifyFileNameProperty()
0269 {
0270     auto newFileNameValue = mCurrentTrack.data(mFileNameRole);
0271     if (mOldFileName != newFileNameValue) {
0272         Q_EMIT fileUrlChanged();
0273 
0274         mOldFileName = newFileNameValue;
0275     }
0276 }
0277 
0278 void ManageHeaderBar::notifyImageProperty()
0279 {
0280     auto newImageValue = mCurrentTrack.data(mImageRole);
0281     if (mOldImage != newImageValue) {
0282         Q_EMIT imageChanged();
0283 
0284         mOldImage = newImageValue;
0285     }
0286 }
0287 
0288 void ManageHeaderBar::notifyDatabaseIdProperty()
0289 {
0290     bool conversionOk;
0291     auto newDatabaseIdValue = mCurrentTrack.data(mDatabaseIdRole).toULongLong(&conversionOk);
0292     if (conversionOk && mOldDatabaseId != newDatabaseIdValue) {
0293         Q_EMIT databaseIdChanged();
0294 
0295         mOldDatabaseId = newDatabaseIdValue;
0296     } else if (!conversionOk && mOldDatabaseId != 0) {
0297         Q_EMIT databaseIdChanged();
0298 
0299         mOldDatabaseId = 0;
0300     }
0301 }
0302 
0303 void ManageHeaderBar::notifyTrackTypeProperty()
0304 {
0305     auto newTrackTypeValue = mCurrentTrack.data(mTrackTypeIdRole).value<ElisaUtils::PlayListEntryType>();
0306     if (mOldTrackType != newTrackTypeValue) {
0307         Q_EMIT trackTypeChanged();
0308 
0309         mOldTrackType = newTrackTypeValue;
0310     }
0311 }
0312 
0313 void ManageHeaderBar::notifyAlbumIdProperty()
0314 {
0315     bool conversionOk;
0316     auto newAlbumIdValue = mCurrentTrack.data(mAlbumIdRole).toULongLong(&conversionOk);
0317     if (conversionOk && mOldAlbumId != newAlbumIdValue) {
0318         Q_EMIT albumIdChanged();
0319 
0320         mOldAlbumId = newAlbumIdValue;
0321     } else if (!conversionOk && mOldAlbumId != 0) {
0322         Q_EMIT albumIdChanged();
0323 
0324         mOldAlbumId = 0;
0325     }
0326 }
0327 
0328 void ManageHeaderBar::notifyIsValidProperty()
0329 {
0330     auto newIsValidValue = mCurrentTrack.data(mIsValidRole).toBool();
0331     if (mOldIsValid != newIsValidValue) {
0332         Q_EMIT isValidChanged();
0333 
0334         mOldIsValid = newIsValidValue;
0335     }
0336 }
0337 
0338 void ManageHeaderBar::setIsValidRole(int isValidRole)
0339 {
0340     mIsValidRole = isValidRole;
0341     Q_EMIT isValidRoleChanged();
0342 }
0343 
0344 void ManageHeaderBar::setCurrentTrack(const QPersistentModelIndex &currentTrack)
0345 {
0346     mCurrentTrack = currentTrack;
0347     Q_EMIT currentTrackChanged();
0348     updateCurrentTrackData();
0349 }
0350 
0351 void ManageHeaderBar::updateCurrentTrackData()
0352 {
0353     notifyArtistProperty();
0354     notifyTitleProperty();
0355     notifyAlbumProperty();
0356     notifyAlbumArtistProperty();
0357     notifyImageProperty();
0358     notifyDatabaseIdProperty();
0359     notifyFileNameProperty();
0360     notifyTrackTypeProperty();
0361     notifyAlbumIdProperty();
0362     notifyIsValidProperty();
0363 }
0364 
0365 #include "moc_manageheaderbar.cpp"