Changeset View
Changeset View
Standalone View
Standalone View
src/models/trackmetadatamodel.cpp
Show First 20 Lines • Show All 51 Lines • ▼ Show 20 Line(s) | 50 | { | |||
---|---|---|---|---|---|
52 | 52 | | |||
53 | const auto currentKey = mTrackKeys[index.row()]; | 53 | const auto currentKey = mTrackKeys[index.row()]; | ||
54 | 54 | | |||
55 | switch (role) | 55 | switch (role) | ||
56 | { | 56 | { | ||
57 | case Qt::DisplayRole: | 57 | case Qt::DisplayRole: | ||
58 | switch (currentKey) | 58 | switch (currentKey) | ||
59 | { | 59 | { | ||
60 | case DatabaseInterface::TrackNumberRole: | 60 | case DataTypes::TrackNumberRole: | ||
61 | { | 61 | { | ||
62 | auto trackNumber = mTrackData.trackNumber(); | 62 | auto trackNumber = mTrackData.trackNumber(); | ||
63 | if (trackNumber > 0) { | 63 | if (trackNumber > 0) { | ||
64 | result = trackNumber; | 64 | result = trackNumber; | ||
65 | } | 65 | } | ||
66 | break; | 66 | break; | ||
67 | } | 67 | } | ||
68 | case DatabaseInterface::DiscNumberRole: | 68 | case DataTypes::DiscNumberRole: | ||
69 | { | 69 | { | ||
70 | auto discNumber = mTrackData.discNumber(); | 70 | auto discNumber = mTrackData.discNumber(); | ||
71 | if (discNumber > 0) { | 71 | if (discNumber > 0) { | ||
72 | result = discNumber; | 72 | result = discNumber; | ||
73 | } | 73 | } | ||
74 | break; | 74 | break; | ||
75 | } | 75 | } | ||
76 | case DatabaseInterface::ChannelsRole: | 76 | case DataTypes::ChannelsRole: | ||
77 | { | 77 | { | ||
78 | auto channels = mTrackData.channels(); | 78 | auto channels = mTrackData.channels(); | ||
79 | if (channels > 0) { | 79 | if (channels > 0) { | ||
80 | result = channels; | 80 | result = channels; | ||
81 | } | 81 | } | ||
82 | break; | 82 | break; | ||
83 | } | 83 | } | ||
84 | case DatabaseInterface::BitRateRole: | 84 | case DataTypes::BitRateRole: | ||
85 | { | 85 | { | ||
86 | auto bitRate = mTrackData.bitRate(); | 86 | auto bitRate = mTrackData.bitRate(); | ||
87 | if (bitRate > 0) { | 87 | if (bitRate > 0) { | ||
88 | result = bitRate; | 88 | result = bitRate; | ||
89 | } | 89 | } | ||
90 | break; | 90 | break; | ||
91 | } | 91 | } | ||
92 | case DatabaseInterface::SampleRateRole: | 92 | case DataTypes::SampleRateRole: | ||
93 | { | 93 | { | ||
94 | auto sampleRate = mTrackData.sampleRate(); | 94 | auto sampleRate = mTrackData.sampleRate(); | ||
95 | if (sampleRate > 0) { | 95 | if (sampleRate > 0) { | ||
96 | result = sampleRate; | 96 | result = sampleRate; | ||
97 | } | 97 | } | ||
98 | break; | 98 | break; | ||
99 | } | 99 | } | ||
100 | default: | 100 | default: | ||
101 | result = mTrackData[currentKey]; | 101 | result = mTrackData[currentKey]; | ||
102 | break; | 102 | break; | ||
103 | } | 103 | } | ||
104 | break; | 104 | break; | ||
105 | case ItemNameRole: | 105 | case ItemNameRole: | ||
106 | switch (currentKey) | 106 | switch (currentKey) | ||
107 | { | 107 | { | ||
108 | case DatabaseInterface::TitleRole: | 108 | case DataTypes::TitleRole: | ||
109 | result = i18nc("Track title for track metadata view", "Title"); | 109 | result = i18nc("Track title for track metadata view", "Title"); | ||
110 | break; | 110 | break; | ||
111 | case DatabaseInterface::DurationRole: | 111 | case DataTypes::DurationRole: | ||
112 | result = i18nc("Duration label for track metadata view", "Duration"); | 112 | result = i18nc("Duration label for track metadata view", "Duration"); | ||
113 | break; | 113 | break; | ||
114 | case DatabaseInterface::ArtistRole: | 114 | case DataTypes::ArtistRole: | ||
115 | result = i18nc("Track artist for track metadata view", "Artist"); | 115 | result = i18nc("Track artist for track metadata view", "Artist"); | ||
116 | break; | 116 | break; | ||
117 | case DatabaseInterface::AlbumRole: | 117 | case DataTypes::AlbumRole: | ||
118 | result = i18nc("Album name for track metadata view", "Album"); | 118 | result = i18nc("Album name for track metadata view", "Album"); | ||
119 | break; | 119 | break; | ||
120 | case DatabaseInterface::AlbumArtistRole: | 120 | case DataTypes::AlbumArtistRole: | ||
121 | result = i18nc("Album artist for track metadata view", "Album Artist"); | 121 | result = i18nc("Album artist for track metadata view", "Album Artist"); | ||
122 | break; | 122 | break; | ||
123 | case DatabaseInterface::TrackNumberRole: | 123 | case DataTypes::TrackNumberRole: | ||
124 | result = i18nc("Track number for track metadata view", "Track Number"); | 124 | result = i18nc("Track number for track metadata view", "Track Number"); | ||
125 | break; | 125 | break; | ||
126 | case DatabaseInterface::DiscNumberRole: | 126 | case DataTypes::DiscNumberRole: | ||
127 | result = i18nc("Disc number for track metadata view", "Disc Number"); | 127 | result = i18nc("Disc number for track metadata view", "Disc Number"); | ||
128 | break; | 128 | break; | ||
129 | case DatabaseInterface::RatingRole: | 129 | case DataTypes::RatingRole: | ||
130 | result = i18nc("Rating label for information panel", "Rating"); | 130 | result = i18nc("Rating label for information panel", "Rating"); | ||
131 | break; | 131 | break; | ||
132 | case DatabaseInterface::GenreRole: | 132 | case DataTypes::GenreRole: | ||
133 | result = i18nc("Genre label for track metadata view", "Genre"); | 133 | result = i18nc("Genre label for track metadata view", "Genre"); | ||
134 | break; | 134 | break; | ||
135 | case DatabaseInterface::LyricistRole: | 135 | case DataTypes::LyricistRole: | ||
136 | result = i18nc("Lyricist label for track metadata view", "Lyricist"); | 136 | result = i18nc("Lyricist label for track metadata view", "Lyricist"); | ||
137 | break; | 137 | break; | ||
138 | case DatabaseInterface::ComposerRole: | 138 | case DataTypes::ComposerRole: | ||
139 | result = i18nc("Composer name for track metadata view", "Composer"); | 139 | result = i18nc("Composer name for track metadata view", "Composer"); | ||
140 | break; | 140 | break; | ||
141 | case DatabaseInterface::CommentRole: | 141 | case DataTypes::CommentRole: | ||
142 | result = i18nc("Comment label for track metadata view", "Comment"); | 142 | result = i18nc("Comment label for track metadata view", "Comment"); | ||
143 | break; | 143 | break; | ||
144 | case DatabaseInterface::YearRole: | 144 | case DataTypes::YearRole: | ||
145 | result = i18nc("Year label for track metadata view", "Year"); | 145 | result = i18nc("Year label for track metadata view", "Year"); | ||
146 | break; | 146 | break; | ||
147 | case DatabaseInterface::ChannelsRole: | 147 | case DataTypes::ChannelsRole: | ||
148 | result = i18nc("Channels label for track metadata view", "Channels"); | 148 | result = i18nc("Channels label for track metadata view", "Channels"); | ||
149 | break; | 149 | break; | ||
150 | case DatabaseInterface::BitRateRole: | 150 | case DataTypes::BitRateRole: | ||
151 | result = i18nc("Bit rate label for track metadata view", "Bit Rate"); | 151 | result = i18nc("Bit rate label for track metadata view", "Bit Rate"); | ||
152 | break; | 152 | break; | ||
153 | case DatabaseInterface::SampleRateRole: | 153 | case DataTypes::SampleRateRole: | ||
154 | result = i18nc("Sample Rate label for track metadata view", "Sample Rate"); | 154 | result = i18nc("Sample Rate label for track metadata view", "Sample Rate"); | ||
155 | break; | 155 | break; | ||
156 | case DatabaseInterface::LastPlayDate: | 156 | case DataTypes::LastPlayDate: | ||
157 | result = i18nc("Last play date label for track metadata view", "Last played"); | 157 | result = i18nc("Last play date label for track metadata view", "Last played"); | ||
158 | break; | 158 | break; | ||
159 | case DatabaseInterface::PlayCounter: | 159 | case DataTypes::PlayCounter: | ||
160 | result = i18nc("Play counter label for track metadata view", "Play count"); | 160 | result = i18nc("Play counter label for track metadata view", "Play count"); | ||
161 | break; | 161 | break; | ||
162 | case DatabaseInterface::LyricsRole: | 162 | case DataTypes::LyricsRole: | ||
163 | result = i18nc("Lyrics label for track metadata view", "Lyrics"); | 163 | result = i18nc("Lyrics label for track metadata view", "Lyrics"); | ||
164 | break; | 164 | break; | ||
165 | case DatabaseInterface::ResourceRole: | 165 | case DataTypes::ResourceRole: | ||
166 | result = i18nc("Radio HTTP address for radio metadata view", "Stream Http Address"); | 166 | result = i18nc("Radio HTTP address for radio metadata view", "Stream Http Address"); | ||
167 | break; | 167 | break; | ||
168 | case DatabaseInterface::SecondaryTextRole: | 168 | case DataTypes::SecondaryTextRole: | ||
169 | case DatabaseInterface::ImageUrlRole: | 169 | case DataTypes::ImageUrlRole: | ||
170 | case DatabaseInterface::ShadowForImageRole: | 170 | case DataTypes::ShadowForImageRole: | ||
171 | case DatabaseInterface::ChildModelRole: | 171 | case DataTypes::ChildModelRole: | ||
172 | case DatabaseInterface::StringDurationRole: | 172 | case DataTypes::StringDurationRole: | ||
173 | case DatabaseInterface::MilliSecondsDurationRole: | 173 | case DataTypes::MilliSecondsDurationRole: | ||
174 | case DatabaseInterface::IsValidAlbumArtistRole: | 174 | case DataTypes::IsValidAlbumArtistRole: | ||
175 | case DatabaseInterface::AllArtistsRole: | 175 | case DataTypes::AllArtistsRole: | ||
176 | case DatabaseInterface::HighestTrackRating: | 176 | case DataTypes::HighestTrackRating: | ||
177 | case DatabaseInterface::IdRole: | 177 | case DataTypes::IdRole: | ||
178 | case DatabaseInterface::DatabaseIdRole: | 178 | case DataTypes::DatabaseIdRole: | ||
179 | case DatabaseInterface::IsSingleDiscAlbumRole: | 179 | case DataTypes::IsSingleDiscAlbumRole: | ||
180 | case DatabaseInterface::ContainerDataRole: | 180 | case DataTypes::ContainerDataRole: | ||
181 | case DatabaseInterface::IsPartialDataRole: | 181 | case DataTypes::IsPartialDataRole: | ||
182 | case DatabaseInterface::AlbumIdRole: | 182 | case DataTypes::AlbumIdRole: | ||
183 | case DatabaseInterface::HasEmbeddedCover: | 183 | case DataTypes::HasEmbeddedCover: | ||
184 | case DatabaseInterface::FileModificationTime: | 184 | case DataTypes::FileModificationTime: | ||
185 | case DatabaseInterface::FirstPlayDate: | 185 | case DataTypes::FirstPlayDate: | ||
186 | case DatabaseInterface::PlayFrequency: | 186 | case DataTypes::PlayFrequency: | ||
187 | case DatabaseInterface::ElementTypeRole: | 187 | case DataTypes::ElementTypeRole: | ||
188 | break; | 188 | break; | ||
189 | } | 189 | } | ||
190 | break; | 190 | break; | ||
191 | case ItemTypeRole: | 191 | case ItemTypeRole: | ||
192 | switch (currentKey) | 192 | switch (currentKey) | ||
193 | { | 193 | { | ||
194 | case DatabaseInterface::TitleRole: | 194 | case DataTypes::TitleRole: | ||
195 | result = TextEntry; | 195 | result = TextEntry; | ||
196 | break; | 196 | break; | ||
197 | case DatabaseInterface::ResourceRole: | 197 | case DataTypes::ResourceRole: | ||
198 | result = TextEntry; | 198 | result = TextEntry; | ||
199 | break; | 199 | break; | ||
200 | case DatabaseInterface::ArtistRole: | 200 | case DataTypes::ArtistRole: | ||
201 | result = TextEntry; | 201 | result = TextEntry; | ||
202 | break; | 202 | break; | ||
203 | case DatabaseInterface::AlbumRole: | 203 | case DataTypes::AlbumRole: | ||
204 | result = TextEntry; | 204 | result = TextEntry; | ||
205 | break; | 205 | break; | ||
206 | case DatabaseInterface::AlbumArtistRole: | 206 | case DataTypes::AlbumArtistRole: | ||
207 | result = TextEntry; | 207 | result = TextEntry; | ||
208 | break; | 208 | break; | ||
209 | case DatabaseInterface::TrackNumberRole: | 209 | case DataTypes::TrackNumberRole: | ||
210 | result = IntegerEntry; | 210 | result = IntegerEntry; | ||
211 | break; | 211 | break; | ||
212 | case DatabaseInterface::DiscNumberRole: | 212 | case DataTypes::DiscNumberRole: | ||
213 | result = IntegerEntry; | 213 | result = IntegerEntry; | ||
214 | break; | 214 | break; | ||
215 | case DatabaseInterface::RatingRole: | 215 | case DataTypes::RatingRole: | ||
216 | result = RatingEntry; | 216 | result = RatingEntry; | ||
217 | break; | 217 | break; | ||
218 | case DatabaseInterface::GenreRole: | 218 | case DataTypes::GenreRole: | ||
219 | result = TextEntry; | 219 | result = TextEntry; | ||
220 | break; | 220 | break; | ||
221 | case DatabaseInterface::LyricistRole: | 221 | case DataTypes::LyricistRole: | ||
222 | result = TextEntry; | 222 | result = TextEntry; | ||
223 | break; | 223 | break; | ||
224 | case DatabaseInterface::ComposerRole: | 224 | case DataTypes::ComposerRole: | ||
225 | result = TextEntry; | 225 | result = TextEntry; | ||
226 | break; | 226 | break; | ||
227 | case DatabaseInterface::CommentRole: | 227 | case DataTypes::CommentRole: | ||
228 | result = TextEntry; | 228 | result = TextEntry; | ||
229 | break; | 229 | break; | ||
230 | case DatabaseInterface::YearRole: | 230 | case DataTypes::YearRole: | ||
231 | result = IntegerEntry; | 231 | result = IntegerEntry; | ||
232 | break; | 232 | break; | ||
233 | case DatabaseInterface::LastPlayDate: | 233 | case DataTypes::LastPlayDate: | ||
234 | result = DateEntry; | 234 | result = DateEntry; | ||
235 | break; | 235 | break; | ||
236 | case DatabaseInterface::PlayCounter: | 236 | case DataTypes::PlayCounter: | ||
237 | result = IntegerEntry; | 237 | result = IntegerEntry; | ||
238 | break; | 238 | break; | ||
239 | case DatabaseInterface::LyricsRole: | 239 | case DataTypes::LyricsRole: | ||
240 | result = LongTextEntry; | 240 | result = LongTextEntry; | ||
241 | break; | 241 | break; | ||
242 | case DatabaseInterface::DurationRole: | 242 | case DataTypes::DurationRole: | ||
243 | case DatabaseInterface::SampleRateRole: | 243 | case DataTypes::SampleRateRole: | ||
244 | case DatabaseInterface::BitRateRole: | 244 | case DataTypes::BitRateRole: | ||
245 | case DatabaseInterface::ChannelsRole: | 245 | case DataTypes::ChannelsRole: | ||
246 | case DatabaseInterface::SecondaryTextRole: | 246 | case DataTypes::SecondaryTextRole: | ||
247 | case DatabaseInterface::ImageUrlRole: | 247 | case DataTypes::ImageUrlRole: | ||
248 | case DatabaseInterface::ShadowForImageRole: | 248 | case DataTypes::ShadowForImageRole: | ||
249 | case DatabaseInterface::ChildModelRole: | 249 | case DataTypes::ChildModelRole: | ||
250 | case DatabaseInterface::StringDurationRole: | 250 | case DataTypes::StringDurationRole: | ||
251 | case DatabaseInterface::MilliSecondsDurationRole: | 251 | case DataTypes::MilliSecondsDurationRole: | ||
252 | case DatabaseInterface::IsValidAlbumArtistRole: | 252 | case DataTypes::IsValidAlbumArtistRole: | ||
253 | case DatabaseInterface::AllArtistsRole: | 253 | case DataTypes::AllArtistsRole: | ||
254 | case DatabaseInterface::HighestTrackRating: | 254 | case DataTypes::HighestTrackRating: | ||
255 | case DatabaseInterface::IdRole: | 255 | case DataTypes::IdRole: | ||
256 | case DatabaseInterface::DatabaseIdRole: | 256 | case DataTypes::DatabaseIdRole: | ||
257 | case DatabaseInterface::IsSingleDiscAlbumRole: | 257 | case DataTypes::IsSingleDiscAlbumRole: | ||
258 | case DatabaseInterface::ContainerDataRole: | 258 | case DataTypes::ContainerDataRole: | ||
259 | case DatabaseInterface::IsPartialDataRole: | 259 | case DataTypes::IsPartialDataRole: | ||
260 | case DatabaseInterface::AlbumIdRole: | 260 | case DataTypes::AlbumIdRole: | ||
261 | case DatabaseInterface::HasEmbeddedCover: | 261 | case DataTypes::HasEmbeddedCover: | ||
262 | case DatabaseInterface::FileModificationTime: | 262 | case DataTypes::FileModificationTime: | ||
263 | case DatabaseInterface::FirstPlayDate: | 263 | case DataTypes::FirstPlayDate: | ||
264 | case DatabaseInterface::PlayFrequency: | 264 | case DataTypes::PlayFrequency: | ||
265 | case DatabaseInterface::ElementTypeRole: | 265 | case DataTypes::ElementTypeRole: | ||
266 | break; | 266 | break; | ||
267 | } | 267 | } | ||
268 | break; | 268 | break; | ||
269 | } | 269 | } | ||
270 | 270 | | |||
271 | return result; | 271 | return result; | ||
272 | } | 272 | } | ||
273 | 273 | | |||
▲ Show 20 Lines • Show All 48 Lines • ▼ Show 20 Line(s) | |||||
322 | } | 322 | } | ||
323 | 323 | | |||
324 | void TrackMetadataModel::trackData(const TrackMetadataModel::TrackDataType &trackData) | 324 | void TrackMetadataModel::trackData(const TrackMetadataModel::TrackDataType &trackData) | ||
325 | { | 325 | { | ||
326 | if (!mFullData.isEmpty() && trackData.databaseId() != mFullData.databaseId()) { | 326 | if (!mFullData.isEmpty() && trackData.databaseId() != mFullData.databaseId()) { | ||
327 | return; | 327 | return; | ||
328 | } | 328 | } | ||
329 | 329 | | |||
330 | const QList<DatabaseInterface::ColumnsRoles> fieldsForTrack({DatabaseInterface::TitleRole, DatabaseInterface::ArtistRole, | 330 | const QList<DataTypes::ColumnsRoles> fieldsForTrack({DataTypes::TitleRole, DataTypes::ArtistRole, | ||
331 | DatabaseInterface::AlbumRole, DatabaseInterface::AlbumArtistRole, | 331 | DataTypes::AlbumRole, DataTypes::AlbumArtistRole, | ||
332 | DatabaseInterface::TrackNumberRole, DatabaseInterface::DiscNumberRole, | 332 | DataTypes::TrackNumberRole, DataTypes::DiscNumberRole, | ||
333 | DatabaseInterface::RatingRole, DatabaseInterface::GenreRole, | 333 | DataTypes::RatingRole, DataTypes::GenreRole, | ||
334 | DatabaseInterface::LyricistRole, DatabaseInterface::ComposerRole, | 334 | DataTypes::LyricistRole, DataTypes::ComposerRole, | ||
335 | DatabaseInterface::CommentRole, DatabaseInterface::YearRole, | 335 | DataTypes::CommentRole, DataTypes::YearRole, | ||
336 | DatabaseInterface::LastPlayDate, DatabaseInterface::PlayCounter}); | 336 | DataTypes::LastPlayDate, DataTypes::PlayCounter}); | ||
337 | 337 | | |||
338 | fillDataFromTrackData(trackData, fieldsForTrack); | 338 | fillDataFromTrackData(trackData, fieldsForTrack); | ||
339 | } | 339 | } | ||
340 | 340 | | |||
341 | void TrackMetadataModel::fillDataFromTrackData(const TrackMetadataModel::TrackDataType &trackData, | 341 | void TrackMetadataModel::fillDataFromTrackData(const TrackMetadataModel::TrackDataType &trackData, | ||
342 | const QList<DatabaseInterface::ColumnsRoles> &fieldsForTrack) | 342 | const QList<DataTypes::ColumnsRoles> &fieldsForTrack) | ||
343 | { | 343 | { | ||
344 | beginResetModel(); | 344 | beginResetModel(); | ||
345 | mFullData = trackData; | 345 | mFullData = trackData; | ||
346 | mTrackData.clear(); | 346 | mTrackData.clear(); | ||
347 | mTrackKeys.clear(); | 347 | mTrackKeys.clear(); | ||
348 | 348 | | |||
349 | for (DatabaseInterface::ColumnsRoles role : fieldsForTrack) { | 349 | for (DataTypes::ColumnsRoles role : fieldsForTrack) { | ||
350 | if (trackData.constFind(role) != trackData.constEnd()) { | 350 | if (trackData.constFind(role) != trackData.constEnd()) { | ||
351 | if (role == DatabaseInterface::RatingRole) { | 351 | if (role == DataTypes::RatingRole) { | ||
352 | if (trackData[role].toInt() == 0) { | 352 | if (trackData[role].toInt() == 0) { | ||
353 | continue; | 353 | continue; | ||
354 | } | 354 | } | ||
355 | } | 355 | } | ||
356 | 356 | | |||
357 | mTrackKeys.push_back(role); | 357 | mTrackKeys.push_back(role); | ||
358 | mTrackData[role] = trackData[role]; | 358 | mTrackData[role] = trackData[role]; | ||
359 | } | 359 | } | ||
360 | } | 360 | } | ||
361 | filterDataFromTrackData(); | 361 | filterDataFromTrackData(); | ||
362 | endResetModel(); | 362 | endResetModel(); | ||
363 | 363 | | |||
364 | fetchLyrics(); | 364 | fetchLyrics(); | ||
365 | 365 | | |||
366 | mDatabaseId = trackData[DatabaseInterface::DatabaseIdRole].toULongLong(); | 366 | mDatabaseId = trackData[DataTypes::DatabaseIdRole].toULongLong(); | ||
367 | Q_EMIT databaseIdChanged(); | 367 | Q_EMIT databaseIdChanged(); | ||
368 | 368 | | |||
369 | mCoverImage = trackData[DatabaseInterface::ImageUrlRole].toUrl(); | 369 | mCoverImage = trackData[DataTypes::ImageUrlRole].toUrl(); | ||
370 | Q_EMIT coverUrlChanged(); | 370 | Q_EMIT coverUrlChanged(); | ||
371 | 371 | | |||
372 | auto rawFileUrl = trackData[DatabaseInterface::ResourceRole].toUrl(); | 372 | auto rawFileUrl = trackData[DataTypes::ResourceRole].toUrl(); | ||
373 | 373 | | |||
374 | if (rawFileUrl.isLocalFile()) { | 374 | if (rawFileUrl.isLocalFile()) { | ||
375 | mFileUrl = rawFileUrl.toLocalFile(); | 375 | mFileUrl = rawFileUrl.toLocalFile(); | ||
376 | } else { | 376 | } else { | ||
377 | mFileUrl = rawFileUrl.toString(); | 377 | mFileUrl = rawFileUrl.toString(); | ||
378 | } | 378 | } | ||
379 | Q_EMIT fileUrlChanged(); | 379 | Q_EMIT fileUrlChanged(); | ||
380 | } | 380 | } | ||
381 | 381 | | |||
382 | void TrackMetadataModel::filterDataFromTrackData() | 382 | void TrackMetadataModel::filterDataFromTrackData() | ||
383 | { | 383 | { | ||
384 | } | 384 | } | ||
385 | 385 | | |||
386 | void TrackMetadataModel::removeMetaData(DatabaseInterface::ColumnsRoles metaData) | 386 | void TrackMetadataModel::removeMetaData(DataTypes::ColumnsRoles metaData) | ||
387 | { | 387 | { | ||
388 | auto itMetaData = std::find(mTrackKeys.begin(), mTrackKeys.end(), metaData); | 388 | auto itMetaData = std::find(mTrackKeys.begin(), mTrackKeys.end(), metaData); | ||
389 | if (itMetaData == mTrackKeys.end()) { | 389 | if (itMetaData == mTrackKeys.end()) { | ||
390 | return; | 390 | return; | ||
391 | } | 391 | } | ||
392 | 392 | | |||
393 | mTrackKeys.erase(itMetaData); | 393 | mTrackKeys.erase(itMetaData); | ||
394 | mTrackData.remove(metaData); | 394 | mTrackData.remove(metaData); | ||
395 | } | 395 | } | ||
396 | 396 | | |||
397 | TrackMetadataModel::TrackDataType::mapped_type TrackMetadataModel::dataFromType(TrackDataType::key_type metaData) const | 397 | TrackMetadataModel::TrackDataType::mapped_type TrackMetadataModel::dataFromType(TrackDataType::key_type metaData) const | ||
398 | { | 398 | { | ||
399 | return mFullData[metaData]; | 399 | return mFullData[metaData]; | ||
400 | } | 400 | } | ||
401 | 401 | | |||
402 | void TrackMetadataModel::fillLyricsDataFromTrack() | 402 | void TrackMetadataModel::fillLyricsDataFromTrack() | ||
403 | { | 403 | { | ||
404 | beginInsertRows({}, mTrackData.size(), mTrackData.size()); | 404 | beginInsertRows({}, mTrackData.size(), mTrackData.size()); | ||
405 | mTrackKeys.push_back(DatabaseInterface::LyricsRole); | 405 | mTrackKeys.push_back(DataTypes::LyricsRole); | ||
406 | mTrackData[DatabaseInterface::LyricsRole] = mLyricsValueWatcher.result(); | 406 | mTrackData[DataTypes::LyricsRole] = mLyricsValueWatcher.result(); | ||
407 | endInsertRows(); | 407 | endInsertRows(); | ||
408 | } | 408 | } | ||
409 | 409 | | |||
410 | void TrackMetadataModel::lyricsValueIsReady() | 410 | void TrackMetadataModel::lyricsValueIsReady() | ||
411 | { | 411 | { | ||
412 | if (!mLyricsValueWatcher.result().isEmpty()) { | 412 | if (!mLyricsValueWatcher.result().isEmpty()) { | ||
413 | fillLyricsDataFromTrack(); | 413 | fillLyricsDataFromTrack(); | ||
414 | 414 | | |||
415 | mFullData[DatabaseInterface::LyricsRole] = mLyricsValueWatcher.result(); | 415 | mFullData[DataTypes::LyricsRole] = mLyricsValueWatcher.result(); | ||
416 | 416 | | |||
417 | Q_EMIT lyricsChanged(); | 417 | Q_EMIT lyricsChanged(); | ||
418 | } | 418 | } | ||
419 | } | 419 | } | ||
420 | 420 | | |||
421 | void TrackMetadataModel::initializeById(ElisaUtils::PlayListEntryType type, qulonglong databaseId) | 421 | void TrackMetadataModel::initializeById(ElisaUtils::PlayListEntryType type, qulonglong databaseId) | ||
422 | { | 422 | { | ||
423 | mFullData.clear(); | 423 | mFullData.clear(); | ||
Show All 39 Lines | 462 | connect(&mDataLoader, &ModelDataLoader::radioAdded, | |||
463 | this, &TrackMetadataModel::radioData); | 463 | this, &TrackMetadataModel::radioData); | ||
464 | connect(&mDataLoader, &ModelDataLoader::radioModified, | 464 | connect(&mDataLoader, &ModelDataLoader::radioModified, | ||
465 | this, &TrackMetadataModel::radioData); | 465 | this, &TrackMetadataModel::radioData); | ||
466 | } | 466 | } | ||
467 | 467 | | |||
468 | void TrackMetadataModel::fetchLyrics() | 468 | void TrackMetadataModel::fetchLyrics() | ||
469 | { | 469 | { | ||
470 | auto lyricicsValue = QtConcurrent::run(QThreadPool::globalInstance(), [=]() { | 470 | auto lyricicsValue = QtConcurrent::run(QThreadPool::globalInstance(), [=]() { | ||
471 | auto trackData = mFileScanner.scanOneFile(mFullData[DatabaseInterface::ResourceRole].toUrl(), mMimeDatabase); | 471 | auto trackData = mFileScanner.scanOneFile(mFullData[DataTypes::ResourceRole].toUrl(), mMimeDatabase); | ||
472 | if (!trackData.lyrics().isEmpty()) { | 472 | if (!trackData.lyrics().isEmpty()) { | ||
473 | return trackData.lyrics(); | 473 | return trackData.lyrics(); | ||
474 | } | 474 | } | ||
475 | return QString{}; | 475 | return QString{}; | ||
476 | }); | 476 | }); | ||
477 | 477 | | |||
478 | mLyricsValueWatcher.setFuture(lyricicsValue); | 478 | mLyricsValueWatcher.setFuture(lyricicsValue); | ||
479 | } | 479 | } | ||
480 | 480 | | |||
481 | void TrackMetadataModel::initializeForNewRadio() | 481 | void TrackMetadataModel::initializeForNewRadio() | ||
482 | { | 482 | { | ||
483 | mFullData.clear(); | 483 | mFullData.clear(); | ||
484 | mTrackData.clear(); | 484 | mTrackData.clear(); | ||
485 | 485 | | |||
486 | fillDataForNewRadio(); | 486 | fillDataForNewRadio(); | ||
487 | } | 487 | } | ||
488 | 488 | | |||
489 | void TrackMetadataModel::fillDataForNewRadio() | 489 | void TrackMetadataModel::fillDataForNewRadio() | ||
490 | { | 490 | { | ||
491 | beginResetModel(); | 491 | beginResetModel(); | ||
492 | mTrackData.clear(); | 492 | mTrackData.clear(); | ||
493 | mTrackKeys.clear(); | 493 | mTrackKeys.clear(); | ||
494 | 494 | | |||
495 | for (auto role : { | 495 | for (auto role : { | ||
496 | DatabaseInterface::TitleRole, | 496 | DataTypes::TitleRole, | ||
497 | DatabaseInterface::ResourceRole, | 497 | DataTypes::ResourceRole, | ||
498 | DatabaseInterface::CommentRole, | 498 | DataTypes::CommentRole, | ||
499 | DatabaseInterface::DatabaseIdRole | 499 | DataTypes::DatabaseIdRole | ||
500 | 500 | | |||
501 | }) { | 501 | }) { | ||
502 | mTrackKeys.push_back(role); | 502 | mTrackKeys.push_back(role); | ||
503 | if (role == DatabaseInterface::DatabaseIdRole) { | 503 | if (role == DataTypes::DatabaseIdRole) { | ||
504 | mTrackData[role] = -1; | 504 | mTrackData[role] = -1; | ||
505 | } else { | 505 | } else { | ||
506 | mTrackData[role] = QString(); | 506 | mTrackData[role] = QString(); | ||
507 | } | 507 | } | ||
508 | 508 | | |||
509 | } | 509 | } | ||
510 | filterDataFromTrackData(); | 510 | filterDataFromTrackData(); | ||
511 | endResetModel(); | 511 | endResetModel(); | ||
Show All 23 Lines | |||||
535 | 535 | | |||
536 | void TrackMetadataModel::saveData() | 536 | void TrackMetadataModel::saveData() | ||
537 | { | 537 | { | ||
538 | Q_EMIT saveRadioData(mTrackData); | 538 | Q_EMIT saveRadioData(mTrackData); | ||
539 | } | 539 | } | ||
540 | 540 | | |||
541 | void TrackMetadataModel::deleteRadio() | 541 | void TrackMetadataModel::deleteRadio() | ||
542 | { | 542 | { | ||
543 | if (mTrackData[DatabaseInterface::DatabaseIdRole]>=0) { | 543 | if (mTrackData[DataTypes::DatabaseIdRole]>=0) { | ||
544 | Q_EMIT deleteRadioData(mTrackData[DatabaseInterface::DatabaseIdRole].toULongLong()); | 544 | Q_EMIT deleteRadioData(mTrackData[DataTypes::DatabaseIdRole].toULongLong()); | ||
545 | } | 545 | } | ||
546 | } | 546 | } | ||
547 | 547 | | |||
548 | void TrackMetadataModel::radioData(const TrackDataType &radiosData) | 548 | void TrackMetadataModel::radioData(const TrackDataType &radiosData) | ||
549 | { | 549 | { | ||
550 | if (!mFullData.isEmpty() && mFullData[DatabaseInterface::DatabaseIdRole].toInt() != -1 && | 550 | if (!mFullData.isEmpty() && mFullData[DataTypes::DatabaseIdRole].toInt() != -1 && | ||
551 | mFullData.databaseId() != radiosData.databaseId()) { | 551 | mFullData.databaseId() != radiosData.databaseId()) { | ||
552 | return; | 552 | return; | ||
553 | } | 553 | } | ||
554 | 554 | | |||
555 | const QList<DatabaseInterface::ColumnsRoles> fieldsForTrack({DatabaseInterface::TitleRole, DatabaseInterface::ResourceRole, | 555 | const QList<DataTypes::ColumnsRoles> fieldsForTrack({DataTypes::TitleRole, DataTypes::ResourceRole, | ||
556 | DatabaseInterface::CommentRole, DatabaseInterface::DatabaseIdRole}); | 556 | DataTypes::CommentRole, DataTypes::DatabaseIdRole}); | ||
557 | 557 | | |||
558 | fillDataFromTrackData(radiosData, fieldsForTrack); | 558 | fillDataFromTrackData(radiosData, fieldsForTrack); | ||
559 | } | 559 | } | ||
560 | 560 | | |||
561 | #include "moc_trackmetadatamodel.cpp" | 561 | #include "moc_trackmetadatamodel.cpp" |