File indexing completed on 2024-03-24 04:51:43
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 ¤tTrack) 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"