1 /* 2 SPDX-FileCopyrightText: 2016 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr> 3 4 SPDX-License-Identifier: LGPL-3.0-or-later 5 */ 6 7 #include "manageheaderbar.h" 8 9 #include <QTime> 10 ManageHeaderBar(QObject * parent)11ManageHeaderBar::ManageHeaderBar(QObject *parent) 12 : QObject(parent) 13 { 14 } 15 setArtistRole(int value)16void ManageHeaderBar::setArtistRole(int value) 17 { 18 mArtistRole = value; 19 Q_EMIT artistRoleChanged(); 20 } 21 artistRole() const22int ManageHeaderBar::artistRole() const 23 { 24 return mArtistRole; 25 } 26 setTitleRole(int value)27void ManageHeaderBar::setTitleRole(int value) 28 { 29 mTitleRole = value; 30 Q_EMIT titleRoleChanged(); 31 } 32 titleRole() const33int ManageHeaderBar::titleRole() const 34 { 35 return mTitleRole; 36 } 37 setAlbumRole(int value)38void ManageHeaderBar::setAlbumRole(int value) 39 { 40 mAlbumRole = value; 41 Q_EMIT albumRoleChanged(); 42 } 43 setAlbumArtistRole(int value)44void ManageHeaderBar::setAlbumArtistRole(int value) 45 { 46 mAlbumArtistRole = value; 47 Q_EMIT albumArtistRoleChanged(); 48 } 49 setFileNameRole(int value)50void ManageHeaderBar::setFileNameRole(int value) 51 { 52 mFileNameRole = value; 53 Q_EMIT fileNameRoleChanged(); 54 } 55 albumRole() const56int ManageHeaderBar::albumRole() const 57 { 58 return mAlbumRole; 59 } 60 albumArtistRole() const61int ManageHeaderBar::albumArtistRole() const 62 { 63 return mAlbumArtistRole; 64 } 65 fileNameRole() const66int ManageHeaderBar::fileNameRole() const 67 { 68 return mFileNameRole; 69 } 70 setImageRole(int value)71void ManageHeaderBar::setImageRole(int value) 72 { 73 mImageRole = value; 74 Q_EMIT imageRoleChanged(); 75 } 76 setDatabaseIdRole(int databaseIdRole)77void ManageHeaderBar::setDatabaseIdRole(int databaseIdRole) 78 { 79 mDatabaseIdRole = databaseIdRole; 80 Q_EMIT databaseIdRoleChanged(); 81 } 82 setTrackTypeRole(int trackTypeRole)83void ManageHeaderBar::setTrackTypeRole(int trackTypeRole) 84 { 85 mTrackTypeIdRole = trackTypeRole; 86 Q_EMIT trackTypeRoleChanged(); 87 } 88 imageRole() const89int ManageHeaderBar::imageRole() const 90 { 91 return mImageRole; 92 } 93 databaseIdRole() const94int ManageHeaderBar::databaseIdRole() const 95 { 96 return mDatabaseIdRole; 97 } 98 trackTypeRole() const99int ManageHeaderBar::trackTypeRole() const 100 { 101 return mTrackTypeIdRole; 102 } 103 setAlbumIdRole(int albumIdRole)104void ManageHeaderBar::setAlbumIdRole(int albumIdRole) 105 { 106 mAlbumIdRole = albumIdRole; 107 Q_EMIT albumIdRoleChanged(); 108 } 109 albumIdRole() const110int ManageHeaderBar::albumIdRole() const 111 { 112 return mAlbumIdRole; 113 } 114 album() const115QVariant ManageHeaderBar::album() const 116 { 117 QVariant result = QString{}; 118 119 if (!mCurrentTrack.isValid() || mCurrentTrack.data(mAlbumRole).isNull()) { 120 return result; 121 } 122 123 result = mCurrentTrack.data(mAlbumRole); 124 125 return result; 126 } 127 albumArtist() const128QVariant ManageHeaderBar::albumArtist() const 129 { 130 if (!mCurrentTrack.isValid()) { 131 return QString(); 132 } 133 134 return mCurrentTrack.data(mAlbumArtistRole); 135 } 136 fileUrl() const137QUrl ManageHeaderBar::fileUrl() const 138 { 139 QUrl result; 140 141 if (!mCurrentTrack.isValid()) { 142 return result; 143 } 144 145 result = mCurrentTrack.data(mFileNameRole).toUrl(); 146 147 return result; 148 } 149 title() const150QVariant ManageHeaderBar::title() const 151 { 152 if (!mCurrentTrack.isValid()) { 153 return QString(); 154 } 155 156 return mCurrentTrack.data(mTitleRole); 157 } 158 artist() const159QVariant ManageHeaderBar::artist() const 160 { 161 if (!mCurrentTrack.isValid()) { 162 return QString(); 163 } 164 165 auto artistValue = mCurrentTrack.data(mArtistRole); 166 167 if (!artistValue.isValid()) { 168 return mCurrentTrack.data(mAlbumArtistRole); 169 } 170 171 return artistValue; 172 } 173 image() const174QUrl ManageHeaderBar::image() const 175 { 176 if (!mCurrentTrack.isValid()) { 177 return {}; 178 } 179 180 return mCurrentTrack.data(mImageRole).toUrl(); 181 } 182 databaseId() const183qulonglong ManageHeaderBar::databaseId() const 184 { 185 if (!mCurrentTrack.isValid()) { 186 return 0; 187 } 188 189 return mCurrentTrack.data(mDatabaseIdRole).toULongLong(); 190 } 191 trackType() const192ElisaUtils::PlayListEntryType ManageHeaderBar::trackType() const 193 { 194 if (!mCurrentTrack.isValid()) { 195 return ElisaUtils::Unknown; 196 } 197 198 return mCurrentTrack.data(mTrackTypeIdRole).value<ElisaUtils::PlayListEntryType>(); 199 } 200 albumId() const201qulonglong ManageHeaderBar::albumId() const 202 { 203 if (!mCurrentTrack.isValid()) { 204 return 0; 205 } 206 207 return mCurrentTrack.data(mAlbumIdRole).toULongLong(); 208 } 209 isValid() const210bool ManageHeaderBar::isValid() const 211 { 212 if (!mCurrentTrack.isValid()) { 213 return false; 214 } 215 216 return mCurrentTrack.data(mIsValidRole).toBool(); 217 } 218 isValidRole() const219int ManageHeaderBar::isValidRole() const 220 { 221 return mIsValidRole; 222 } 223 currentTrack() const224QPersistentModelIndex ManageHeaderBar::currentTrack() const 225 { 226 return mCurrentTrack; 227 } 228 notifyArtistProperty()229void ManageHeaderBar::notifyArtistProperty() 230 { 231 auto newArtistValue = mCurrentTrack.data(mArtistRole); 232 if (mOldArtist != newArtistValue) { 233 Q_EMIT artistChanged(); 234 235 mOldArtist = newArtistValue; 236 } 237 } 238 notifyTitleProperty()239void ManageHeaderBar::notifyTitleProperty() 240 { 241 auto newTitleValue = mCurrentTrack.data(mTitleRole); 242 if (mOldTitle != newTitleValue) { 243 Q_EMIT titleChanged(); 244 245 mOldTitle = newTitleValue; 246 } 247 } 248 notifyAlbumProperty()249void ManageHeaderBar::notifyAlbumProperty() 250 { 251 auto newAlbumValue = mCurrentTrack.data(mAlbumRole); 252 if (mOldAlbum != newAlbumValue) { 253 Q_EMIT albumChanged(); 254 255 mOldAlbum = newAlbumValue; 256 } 257 } 258 notifyAlbumArtistProperty()259void ManageHeaderBar::notifyAlbumArtistProperty() 260 { 261 auto newAlbumArtistValue = mCurrentTrack.data(mAlbumArtistRole); 262 if (mOldAlbumArtist != newAlbumArtistValue) { 263 Q_EMIT albumArtistChanged(); 264 265 mOldAlbumArtist = newAlbumArtistValue; 266 } 267 } 268 notifyFileNameProperty()269void ManageHeaderBar::notifyFileNameProperty() 270 { 271 auto newFileNameValue = mCurrentTrack.data(mFileNameRole); 272 if (mOldFileName != newFileNameValue) { 273 Q_EMIT fileUrlChanged(); 274 275 mOldFileName = newFileNameValue; 276 } 277 } 278 notifyImageProperty()279void ManageHeaderBar::notifyImageProperty() 280 { 281 auto newImageValue = mCurrentTrack.data(mImageRole); 282 if (mOldImage != newImageValue) { 283 Q_EMIT imageChanged(); 284 285 mOldImage = newImageValue; 286 } 287 } 288 notifyDatabaseIdProperty()289void ManageHeaderBar::notifyDatabaseIdProperty() 290 { 291 bool conversionOk; 292 auto newDatabaseIdValue = mCurrentTrack.data(mDatabaseIdRole).toULongLong(&conversionOk); 293 if (conversionOk && mOldDatabaseId != newDatabaseIdValue) { 294 Q_EMIT databaseIdChanged(); 295 296 mOldDatabaseId = newDatabaseIdValue; 297 } else if (!conversionOk && mOldDatabaseId != 0) { 298 Q_EMIT databaseIdChanged(); 299 300 mOldDatabaseId = 0; 301 } 302 } 303 notifyTrackTypeProperty()304void ManageHeaderBar::notifyTrackTypeProperty() 305 { 306 auto newTrackTypeValue = mCurrentTrack.data(mTrackTypeIdRole).value<ElisaUtils::PlayListEntryType>(); 307 if (mOldTrackType != newTrackTypeValue) { 308 Q_EMIT trackTypeChanged(); 309 310 mOldTrackType = newTrackTypeValue; 311 } 312 } 313 notifyAlbumIdProperty()314void ManageHeaderBar::notifyAlbumIdProperty() 315 { 316 bool conversionOk; 317 auto newAlbumIdValue = mCurrentTrack.data(mAlbumIdRole).toULongLong(&conversionOk); 318 if (conversionOk && mOldAlbumId != newAlbumIdValue) { 319 Q_EMIT albumIdChanged(); 320 321 mOldAlbumId = newAlbumIdValue; 322 } else if (!conversionOk && mOldAlbumId != 0) { 323 Q_EMIT albumIdChanged(); 324 325 mOldAlbumId = 0; 326 } 327 } 328 notifyIsValidProperty()329void ManageHeaderBar::notifyIsValidProperty() 330 { 331 auto newIsValidValue = mCurrentTrack.data(mIsValidRole).toBool(); 332 if (mOldIsValid != newIsValidValue) { 333 Q_EMIT isValidChanged(); 334 335 mOldIsValid = newIsValidValue; 336 } 337 } 338 setIsValidRole(int isValidRole)339void ManageHeaderBar::setIsValidRole(int isValidRole) 340 { 341 mIsValidRole = isValidRole; 342 Q_EMIT isValidRoleChanged(); 343 } 344 setCurrentTrack(const QPersistentModelIndex & currentTrack)345void ManageHeaderBar::setCurrentTrack(const QPersistentModelIndex ¤tTrack) 346 { 347 mCurrentTrack = currentTrack; 348 Q_EMIT currentTrackChanged(); 349 updateCurrentTrackData(); 350 } 351 updateCurrentTrackData()352void ManageHeaderBar::updateCurrentTrackData() 353 { 354 notifyArtistProperty(); 355 notifyTitleProperty(); 356 notifyAlbumProperty(); 357 notifyAlbumArtistProperty(); 358 notifyFileNameProperty(); 359 notifyImageProperty(); 360 notifyDatabaseIdProperty(); 361 notifyTrackTypeProperty(); 362 notifyAlbumIdProperty(); 363 notifyIsValidProperty(); 364 } 365 366 #include "moc_manageheaderbar.cpp" 367