1 /****************************************************************************************
2 * Copyright (c) 2010 Ralf Engels <ralf-engels@gmx.de> *
3 * *
4 * This program is free software; you can redistribute it and/or modify it under *
5 * the terms of the GNU General Public License as published by the Free Software *
6 * Foundation; either version 2 of the License, or (at your option) any later *
7 * version. *
8 * *
9 * This program is distributed in the hope that it will be useful, but WITHOUT ANY *
10 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A *
11 * PARTICULAR PURPOSE. See the GNU General Public License for more details. *
12 * *
13 * You should have received a copy of the GNU General Public License along with *
14 * this program. If not, see <http://www.gnu.org/licenses/>. *
15 ****************************************************************************************/
16
17 #include "MetaConstants.h"
18
19 #include "core/meta/Meta.h"
20 #include "core/meta/Statistics.h"
21 #include "FileType.h"
22
23 #include <KLocalizedString>
24
25 #include <QSet>
26
nameForField(qint64 field)27 QString Meta::nameForField( qint64 field )
28 {
29 switch( field )
30 {
31 case 0: return QStringLiteral("anything");
32 case Meta::valUrl: return QStringLiteral("filename");
33 case Meta::valTitle: return QStringLiteral("title");
34 case Meta::valArtist: return QStringLiteral("artist");
35 case Meta::valAlbum: return QStringLiteral("album");
36 case Meta::valGenre: return QStringLiteral("genre");
37 case Meta::valComposer: return QStringLiteral("composer");
38 case Meta::valYear: return QStringLiteral("year");
39 case Meta::valComment: return QStringLiteral("comment");
40 case Meta::valTrackNr: return QStringLiteral("tracknr");
41 case Meta::valDiscNr: return QStringLiteral("discnumber");
42 case Meta::valBpm: return QStringLiteral("bpm");
43 case Meta::valLength: return QStringLiteral("length");
44 case Meta::valBitrate: return QStringLiteral("bitrate");
45 case Meta::valSamplerate: return QStringLiteral("samplerate");
46 case Meta::valFilesize: return QStringLiteral("filesize");
47 case Meta::valFormat: return QStringLiteral("format");
48 case Meta::valCreateDate: return QStringLiteral("added");
49 case Meta::valScore: return QStringLiteral("score");
50 case Meta::valRating: return QStringLiteral("rating");
51 case Meta::valFirstPlayed: return QStringLiteral("firstplay");
52 case Meta::valLastPlayed: return QStringLiteral("lastplay");
53 case Meta::valPlaycount: return QStringLiteral("playcount");
54 case Meta::valUniqueId: return QStringLiteral("uniqueid");
55
56 case Meta::valTrackGain: return QStringLiteral("trackgain");
57 case Meta::valTrackGainPeak: return QStringLiteral("trackgainpeak");
58 case Meta::valAlbumGain: return QStringLiteral("albumgain");
59 case Meta::valAlbumGainPeak: return QStringLiteral("albumgainpeak");
60
61 case Meta::valAlbumArtist: return QStringLiteral("albumartist");
62 case Meta::valLabel: return QStringLiteral("label");
63 case Meta::valModified: return QStringLiteral("modified");
64 case Meta::valLyrics: return QStringLiteral("lyrics");
65 default: return QString();
66 }
67 }
68
fieldForName(const QString & name)69 qint64 Meta::fieldForName( const QString &name )
70 {
71 if( name.compare( QLatin1String("anything"), Qt::CaseInsensitive ) == 0
72 || name.compare( shortI18nForField( 0 ), Qt::CaseInsensitive ) == 0 )
73 return 0;
74 else if( name.compare( QLatin1String("filename"), Qt::CaseInsensitive ) == 0
75 || name.compare( shortI18nForField( Meta::valUrl ), Qt::CaseInsensitive ) == 0 )
76 return Meta::valUrl;
77 else if( name.compare( QLatin1String("title"), Qt::CaseInsensitive ) == 0
78 || name.compare( shortI18nForField( Meta::valTitle ), Qt::CaseInsensitive ) == 0 )
79 return Meta::valTitle;
80 else if( name.compare( QLatin1String("artist"), Qt::CaseInsensitive ) == 0
81 || name.compare( shortI18nForField( Meta::valArtist ), Qt::CaseInsensitive ) == 0 )
82 return Meta::valArtist;
83 else if( name.compare( QLatin1String("album"), Qt::CaseInsensitive ) == 0
84 || name.compare( shortI18nForField( Meta::valAlbum ), Qt::CaseInsensitive ) == 0 )
85 return Meta::valAlbum;
86 else if( name.compare( QLatin1String("genre"), Qt::CaseInsensitive ) == 0
87 || name.compare( shortI18nForField( Meta::valGenre ), Qt::CaseInsensitive ) == 0 )
88 return Meta::valGenre;
89 else if( name.compare( QLatin1String("composer"), Qt::CaseInsensitive ) == 0
90 || name.compare( shortI18nForField( Meta::valComposer ), Qt::CaseInsensitive ) == 0 )
91 return Meta::valComposer;
92 else if( name.compare( QLatin1String("year"), Qt::CaseInsensitive ) == 0
93 || name.compare( shortI18nForField( Meta::valYear ), Qt::CaseInsensitive ) == 0 )
94 return Meta::valYear;
95 else if( name.compare( QLatin1String("comment"), Qt::CaseInsensitive ) == 0
96 || name.compare( shortI18nForField( Meta::valComment ), Qt::CaseInsensitive ) == 0 )
97 return Meta::valComment;
98 else if( name.compare( QLatin1String("tracknumber"), Qt::CaseInsensitive ) == 0
99 || name.compare( shortI18nForField( Meta::valTrackNr ), Qt::CaseInsensitive ) == 0 )
100 return Meta::valTrackNr;
101 else if( name.compare( QLatin1String("discnumber"), Qt::CaseInsensitive ) == 0
102 || name.compare( shortI18nForField( Meta::valDiscNr ), Qt::CaseInsensitive ) == 0 )
103 return Meta::valDiscNr;
104 else if( name.compare( QLatin1String("bpm"), Qt::CaseInsensitive ) == 0
105 || name.compare( shortI18nForField( Meta::valBpm ), Qt::CaseInsensitive ) == 0 )
106 return Meta::valBpm;
107 else if( name.compare( QLatin1String("length"), Qt::CaseInsensitive ) == 0
108 || name.compare( shortI18nForField( Meta::valLength ), Qt::CaseInsensitive ) == 0 )
109 return Meta::valLength;
110 else if( name.compare( QLatin1String("bitrate"), Qt::CaseInsensitive ) == 0
111 || name.compare( shortI18nForField( Meta::valBitrate ), Qt::CaseInsensitive ) == 0 )
112 return Meta::valBitrate;
113 else if( name.compare( QLatin1String("samplerate"), Qt::CaseInsensitive ) == 0
114 || name.compare( shortI18nForField( Meta::valSamplerate ), Qt::CaseInsensitive ) == 0 )
115 return Meta::valSamplerate;
116 else if( name.compare( QLatin1String("filesize"), Qt::CaseInsensitive ) == 0
117 || name.compare( shortI18nForField( Meta::valFilesize ), Qt::CaseInsensitive ) == 0 )
118 return Meta::valFilesize;
119 else if( name.compare( QLatin1String("format"), Qt::CaseInsensitive ) == 0
120 || name.compare( QLatin1String("codec"), Qt::CaseInsensitive ) == 0
121 || name.compare( shortI18nForField( Meta::valFormat ), Qt::CaseInsensitive ) == 0 )
122 return Meta::valFormat;
123 else if( name.compare( QLatin1String("added"), Qt::CaseInsensitive ) == 0
124 || name.compare( shortI18nForField( Meta::valCreateDate ), Qt::CaseInsensitive ) == 0 )
125 return Meta::valCreateDate;
126 else if( name.compare( QLatin1String("score"), Qt::CaseInsensitive ) == 0
127 || name.compare( shortI18nForField( Meta::valScore ), Qt::CaseInsensitive ) == 0 )
128 return Meta::valScore;
129 else if( name.compare( QLatin1String("rating"), Qt::CaseInsensitive ) == 0
130 || name.compare( shortI18nForField( Meta::valRating ), Qt::CaseInsensitive ) == 0 )
131 return Meta::valRating;
132 else if( name.compare( QLatin1String("firstplay"), Qt::CaseInsensitive ) == 0
133 || name.compare( QLatin1String("first"), Qt::CaseInsensitive ) == 0 // legacy
134 || name.compare( shortI18nForField( Meta::valFirstPlayed ), Qt::CaseInsensitive ) == 0 )
135 return Meta::valFirstPlayed;
136 else if( name.compare( QLatin1String("lastplay"), Qt::CaseInsensitive ) == 0
137 || name.compare( QLatin1String("played"), Qt::CaseInsensitive ) == 0 // legacy
138 || name.compare( shortI18nForField( Meta::valLastPlayed ), Qt::CaseInsensitive ) == 0 )
139 return Meta::valLastPlayed;
140 else if( name.compare( QLatin1String("playcount"), Qt::CaseInsensitive ) == 0
141 || name.compare( shortI18nForField( Meta::valPlaycount ), Qt::CaseInsensitive ) == 0 )
142 return Meta::valPlaycount;
143 else if( name.compare( QLatin1String("uniqueid"), Qt::CaseInsensitive ) == 0
144 || name.compare( shortI18nForField( Meta::valUniqueId ), Qt::CaseInsensitive ) == 0 )
145 return Meta::valUniqueId;
146
147 else if( name.compare( QLatin1String("trackgain"), Qt::CaseInsensitive ) == 0
148 || name.compare( shortI18nForField( Meta::valTrackGain ), Qt::CaseInsensitive ) == 0 )
149 return Meta::valTrackGain;
150 else if( name.compare( QLatin1String("trackgainpeak"), Qt::CaseInsensitive ) == 0
151 || name.compare( shortI18nForField( Meta::valTrackGainPeak ), Qt::CaseInsensitive ) == 0 )
152 return Meta::valTrackGainPeak;
153 else if( name.compare( QLatin1String("albumgain"), Qt::CaseInsensitive ) == 0
154 || name.compare( shortI18nForField( Meta::valAlbumGain ), Qt::CaseInsensitive ) == 0 )
155 return Meta::valAlbumGain;
156 else if( name.compare( QLatin1String("albumgainpeak"), Qt::CaseInsensitive ) == 0
157 || name.compare( shortI18nForField( Meta::valAlbumGainPeak ), Qt::CaseInsensitive ) == 0 )
158 return Meta::valAlbumGainPeak;
159
160 else if( name.compare( QLatin1String("albumartist"), Qt::CaseInsensitive ) == 0
161 || name.compare( shortI18nForField( Meta::valAlbumArtist ), Qt::CaseInsensitive ) == 0 )
162 return Meta::valAlbumArtist;
163 else if( name.compare( QLatin1String("label"), Qt::CaseInsensitive ) == 0
164 || name.compare( shortI18nForField( Meta::valLabel ), Qt::CaseInsensitive ) == 0 )
165 return Meta::valLabel;
166 else if( name.compare( QLatin1String("modified"), Qt::CaseInsensitive ) == 0
167 || name.compare( shortI18nForField( Meta::valModified ), Qt::CaseInsensitive ) == 0 )
168 return Meta::valModified;
169 else if( name.compare( QLatin1String("lyrics"), Qt::CaseInsensitive ) == 0
170 || name.compare( shortI18nForField( Meta::valLyrics ), Qt::CaseInsensitive ) == 0 )
171 return Meta::valLyrics;
172 else
173 return 0;
174 }
175
i18nForField(qint64 field)176 QString Meta::i18nForField( qint64 field )
177 {
178 switch( field )
179 {
180 case 0: return i18nc("Track field name (when nothing specific is selected e.g. in the automatic playlist generator)", "anything");
181 case Meta::valUrl: return i18nc("Track field name (the file this track is stored in)", "File Name");
182 case Meta::valTitle: return i18nc("Track field name", "Title");
183 case Meta::valArtist: return i18nc("Track field name", "Artist");
184 case Meta::valAlbum: return i18nc("Track field name", "Album");
185 case Meta::valGenre: return i18nc("Track field name", "Genre");
186 case Meta::valComposer: return i18nc("Track field name", "Composer");
187 case Meta::valYear: return i18nc("Track field name", "Year");
188 case Meta::valComment: return i18nc("Track field name", "Comment");
189 case Meta::valTrackNr: return i18nc("Track field name", "Track Number");
190 case Meta::valDiscNr: return i18nc("Track field name", "Disc Number");
191 case Meta::valBpm: return i18nc("Track field name", "Bpm");
192 case Meta::valLength: return i18nc("Track field name", "Length");
193 case Meta::valBitrate: return i18nc("Track field name", "Bit Rate");
194 case Meta::valSamplerate: return i18nc("Track field name", "Sample Rate");
195 case Meta::valFilesize: return i18nc("Track field name", "File Size");
196 case Meta::valFormat: return i18nc("Track field name", "Format");
197 case Meta::valCreateDate: return i18nc("Track field name", "Added to Collection");
198 case Meta::valScore: return i18nc("Track field name", "Score");
199 case Meta::valRating: return i18nc("Track field name", "Rating");
200 case Meta::valFirstPlayed: return i18nc("Track field name", "First Played");
201 case Meta::valLastPlayed: return i18nc("Track field name", "Last Played");
202 case Meta::valPlaycount: return i18nc("Track field name", "Playcount");
203 case Meta::valUniqueId: return i18nc("Track field name", "Unique Id");
204
205 case Meta::valTrackGain: return i18nc("Track field name", "Track Gain");
206 case Meta::valTrackGainPeak: return i18nc("Track field name", "Track Gain Peak");
207 case Meta::valAlbumGain: return i18nc("Track field name", "Album Gain");
208 case Meta::valAlbumGainPeak: return i18nc("Track field name", "Album Gain Peak");
209
210 case Meta::valAlbumArtist: return i18nc("Track field name", "Album Artist");
211 case Meta::valLabel: return i18nc("Track field name", "Label");
212 case Meta::valModified: return i18nc("Track field name", "Last Modified");
213 case Meta::valLyrics: return i18nc("Track field name", "Lyrics");
214 default: return QString();
215 }
216 }
217
shortI18nForField(qint64 field)218 QString Meta::shortI18nForField( qint64 field )
219 {
220 // see also src/browsers/CollectionTreeItemModelBase.cpp for localized names
221
222 switch( field )
223 {
224 case 0: return i18nc("The field name in case nothing specific is selected e.g. in the automatic playlist generator. Use a one word translation.", "anything");
225 case Meta::valUrl: return i18nc("One word translation used in the collection filter. The name of the file this track is stored in", "filename" );
226 case Meta::valTitle: return i18nc("One word translation used in the collection filter", "title");
227 case Meta::valArtist: return i18nc("One word translation used in the collection filter", "artist");
228 case Meta::valAlbum: return i18nc("One word translation used in the collection filter", "album");
229 case Meta::valGenre: return i18nc("One word translation used in the collection filter", "genre");
230 case Meta::valComposer: return i18nc("One word translation used in the collection filter", "composer");
231 case Meta::valYear: return i18nc("One word translation used in the collection filter", "year");
232 case Meta::valComment: return i18nc("One word translation used in the collection filter", "comment");
233 case Meta::valTrackNr: return i18nc("One word translation used in the collection filter", "tracknumber");
234 case Meta::valDiscNr: return i18nc("One word translation used in the collection filter", "discnumber");
235 case Meta::valBpm: return i18nc("One word translation used in the collection filter", "bpm");
236 case Meta::valLength: return i18nc("One word translation used in the collection filter", "length");
237 case Meta::valBitrate: return i18nc("One word translation used in the collection filter", "bitrate");
238 case Meta::valSamplerate: return i18nc("One word translation used in the collection filter", "samplerate");
239 case Meta::valFilesize: return i18nc("One word translation used in the collection filter", "filesize");
240 case Meta::valFormat: return i18nc("One word translation used in the collection filter", "format");
241 case Meta::valCreateDate: return i18nc("One word translation used in the collection filter", "added");
242 case Meta::valScore: return i18nc("One word translation used in the collection filter", "score");
243 case Meta::valRating: return i18nc("One word translation used in the collection filter", "rating");
244 case Meta::valFirstPlayed: return i18nc("One word translation used in the collection filter. First played time / access date", "firstplay");
245 case Meta::valLastPlayed: return i18nc("One word translation used in the collection filter. Last played time / access date", "lastplay");
246 case Meta::valPlaycount: return i18nc("One word translation used in the collection filter", "playcount");
247 case Meta::valUniqueId: return i18nc("One word translation used in the collection filter", "uniqueid");
248
249 case Meta::valTrackGain: return i18nc("One word translation used in the collection filter", "trackgain");
250 case Meta::valTrackGainPeak: return i18nc("One word translation used in the collection filter", "trackgainpeak");
251 case Meta::valAlbumGain: return i18nc("One word translation used in the collection filter", "albumgain");
252 case Meta::valAlbumGainPeak: return i18nc("One word translation used in the collection filter", "albumgainpeak");
253
254 case Meta::valAlbumArtist: return i18nc("One word translation used in the collection filter", "albumartist");
255 case Meta::valLabel: return i18nc("One word translation used in the collection filter", "label");
256 case Meta::valModified: return i18nc("One word translation used in the collection filter", "modified");
257 case Meta::valLyrics: return i18nc("One word translation used in the collection filter", "lyrics");
258 default: return QString();
259 }
260 }
261
playlistNameForField(qint64 field)262 QString Meta::playlistNameForField( qint64 field )
263 {
264 switch( field )
265 {
266 case 0: return QStringLiteral("anything");
267 case Meta::valUrl: return QStringLiteral("url");
268 case Meta::valTitle: return QStringLiteral("title");
269 case Meta::valArtist: return QStringLiteral("artist name");
270 case Meta::valAlbum: return QStringLiteral("album name");
271 case Meta::valGenre: return QStringLiteral("genre");
272 case Meta::valComposer: return QStringLiteral("composer");
273 case Meta::valYear: return QStringLiteral("year");
274 case Meta::valComment: return QStringLiteral("comment");
275 case Meta::valTrackNr: return QStringLiteral("track number");
276 case Meta::valDiscNr: return QStringLiteral("disc number");
277 case Meta::valBpm: return QStringLiteral("bpm");
278 case Meta::valLength: return QStringLiteral("length");
279 case Meta::valBitrate: return QStringLiteral("bit rate");
280 case Meta::valSamplerate: return QStringLiteral("sample rate");
281 case Meta::valFilesize: return QStringLiteral("file size");
282 case Meta::valFormat: return QStringLiteral("format");
283 case Meta::valCreateDate: return QStringLiteral("create date");
284 case Meta::valScore: return QStringLiteral("score");
285 case Meta::valRating: return QStringLiteral("rating");
286 case Meta::valFirstPlayed: return QStringLiteral("first played");
287 case Meta::valLastPlayed: return QStringLiteral("last played");
288 case Meta::valPlaycount: return QStringLiteral("play count");
289 case Meta::valUniqueId: return QStringLiteral("unique id");
290
291 case Meta::valTrackGain: return QStringLiteral("track gain");
292 case Meta::valTrackGainPeak: return QStringLiteral("track gain peak");
293 case Meta::valAlbumGain: return QStringLiteral("album gain");
294 case Meta::valAlbumGainPeak: return QStringLiteral("album gain peak");
295
296 case Meta::valAlbumArtist: return QStringLiteral("album artist name");
297 case Meta::valLabel: return QStringLiteral("label");
298 case Meta::valModified: return QStringLiteral("modified");
299 default: return QLatin1String("");
300 }
301 }
302
fieldForPlaylistName(const QString & name)303 qint64 Meta::fieldForPlaylistName( const QString &name )
304 {
305 if( name == QLatin1String("anything") ) return 0;
306 else if( name == QLatin1String("url") ) return Meta::valUrl;
307 else if( name == QLatin1String("title") ) return Meta::valTitle;
308 else if( name == QLatin1String("artist name") ) return Meta::valArtist;
309 else if( name == QLatin1String("album name") ) return Meta::valAlbum;
310 else if( name == QLatin1String("genre") ) return Meta::valGenre;
311 else if( name == QLatin1String("composer") ) return Meta::valComposer;
312 else if( name == QLatin1String("year") ) return Meta::valYear;
313 else if( name == QLatin1String("comment") ) return Meta::valComment;
314 else if( name == QLatin1String("track number") ) return Meta::valTrackNr;
315 else if( name == QLatin1String("disc number") ) return Meta::valDiscNr;
316 else if( name == QLatin1String("bpm") ) return Meta::valBpm;
317 else if( name == QLatin1String("length") ) return Meta::valLength;
318 else if( name == QLatin1String("bit rate") ) return Meta::valBitrate;
319 else if( name == QLatin1String("sample rate") ) return Meta::valSamplerate;
320 else if( name == QLatin1String("file size") ) return Meta::valFilesize;
321 else if( name == QLatin1String("format") ) return Meta::valFormat;
322 else if( name == QLatin1String("create date") ) return Meta::valCreateDate;
323 else if( name == QLatin1String("score") ) return Meta::valScore;
324 else if( name == QLatin1String("rating") ) return Meta::valRating;
325 else if( name == QLatin1String("first played") ) return Meta::valFirstPlayed;
326 else if( name == QLatin1String("last played") ) return Meta::valLastPlayed;
327 else if( name == QLatin1String("play count") ) return Meta::valPlaycount;
328 else if( name == QLatin1String("unique id") ) return Meta::valUniqueId;
329
330 else if( name == QLatin1String("track gain") ) return Meta::valTrackGain;
331 else if( name == QLatin1String("track gain peak") ) return Meta::valTrackGainPeak;
332 else if( name == QLatin1String("album gain") ) return Meta::valAlbumGain;
333 else if( name == QLatin1String("album gain peak") ) return Meta::valAlbumGainPeak;
334
335 else if( name == QLatin1String("album artist name") ) return Meta::valAlbumArtist;
336 else if( name == QLatin1String("label") ) return Meta::valLabel;
337 else if( name == QLatin1String("modified") ) return Meta::valModified;
338 else return 0;
339 }
340
iconForField(qint64 field)341 QString Meta::iconForField( qint64 field )
342 {
343 // see also PlaylistDefines.h::iconNames
344 switch( field )
345 {
346 case Meta::valUrl: return QStringLiteral("filename-space-amarok");
347 case Meta::valTitle: return QStringLiteral("filename-title-amarok");
348 case Meta::valArtist: return QStringLiteral("filename-artist-amarok");
349 case Meta::valAlbumArtist: return QStringLiteral("filename-artist-amarok");
350 case Meta::valAlbum: return QStringLiteral("filename-album-amarok");
351 case Meta::valGenre: return QStringLiteral("filename-genre-amarok");
352 case Meta::valComposer: return QStringLiteral("filename-composer-amarok");
353 case Meta::valYear: return QStringLiteral("filename-year-amarok");
354 case Meta::valModified:
355 case Meta::valCreateDate: return QStringLiteral("filename-year-amarok");
356 case Meta::valComment: return QStringLiteral("amarok_comment");
357 case Meta::valPlaycount: return QStringLiteral("amarok_playcount");
358 case Meta::valTrackNr: return QStringLiteral("filename-track-amarok");
359 case Meta::valDiscNr: return QStringLiteral("filename-discnumber-amarok");
360 case Meta::valBpm: return QStringLiteral("filename-bpm-amarok");
361 case Meta::valLength: return QStringLiteral("chronometer");
362 case Meta::valBitrate: return QStringLiteral("audio-x-generic");
363 case Meta::valSamplerate: return QStringLiteral("filename-sample-rate");
364 case Meta::valFormat: return QStringLiteral("filename-filetype-amarok");
365 case Meta::valScore: return QStringLiteral("emblem-favorite");
366 case Meta::valRating: return QStringLiteral("rating");
367 case Meta::valFirstPlayed:
368 case Meta::valLastPlayed: return QStringLiteral("filename-last-played");
369 case Meta::valLabel: return QStringLiteral("label-amarok");
370 case Meta::valFilesize: return QStringLiteral("info-amarok");
371 default: return QString();
372 }
373 }
374
valueForField(qint64 field,Meta::TrackPtr track)375 QVariant Meta::valueForField( qint64 field, Meta::TrackPtr track )
376 {
377 if( !track )
378 return QVariant();
379
380 switch( field )
381 {
382 case 0:
383 {
384 // that is the simple search for MetaQueryWidget
385 QSet<QString> allInfos;
386 allInfos += track->playableUrl().path()
387 += track->name()
388 += track->comment();
389 if( track->artist() )
390 allInfos += track->artist()->name();
391 if( track->album() )
392 allInfos += track->album()->name();
393 if( track->genre() )
394 allInfos += track->genre()->name();
395
396 return QVariant( allInfos.toList() );
397 }
398 case Meta::valUrl: return track->playableUrl().path();
399 case Meta::valTitle: return track->name();
400 case Meta::valArtist: return track->artist() ?
401 QVariant(track->artist()->name()) : QVariant();
402 case Meta::valAlbum: return track->album() ?
403 QVariant(track->album()->name()) : QVariant();
404 case Meta::valGenre: return track->genre() ?
405 QVariant(track->genre()->name()) : QVariant();
406 case Meta::valComposer: return track->composer() ?
407 QVariant(track->composer()->name()) : QVariant();
408 case Meta::valYear: return track->year() ?
409 QVariant(track->year()->name().toInt()) : QVariant();
410 case Meta::valComment: return track->comment();
411 case Meta::valTrackNr: return track->trackNumber();
412 case Meta::valDiscNr: return track->discNumber();
413 case Meta::valBpm: return track->bpm();
414 case Meta::valLength: return track->length();
415 case Meta::valBitrate: return track->bitrate();
416 case Meta::valSamplerate: return track->sampleRate();
417 case Meta::valFilesize: return track->filesize();
418 case Meta::valFormat: return int(Amarok::FileTypeSupport::fileType(track->type()));
419
420 case Meta::valCreateDate: return track->createDate();
421 case Meta::valScore: return track->statistics()->score();
422 case Meta::valRating: return track->statistics()->rating();
423 case Meta::valFirstPlayed: return track->statistics()->firstPlayed();
424 case Meta::valLastPlayed: return track->statistics()->lastPlayed();
425 case Meta::valPlaycount: return track->statistics()->playCount();
426 case Meta::valUniqueId: return track->uidUrl();
427
428 // todo
429 case Meta::valTrackGain: return "track gain";
430 case Meta::valTrackGainPeak: return "track gain peak";
431 case Meta::valAlbumGain: return "album gain";
432 case Meta::valAlbumGainPeak: return "album gain peak";
433
434 case Meta::valAlbumArtist: return (track->album() && track->album()->albumArtist()) ?
435 QVariant(track->album()->albumArtist()->name()) : QVariant();
436 case Meta::valLabel:
437 {
438 Meta::LabelList labels = track->labels();
439 QStringList strLabels;
440 foreach( Meta::LabelPtr label, labels )
441 strLabels.append( label->name() );
442 return QVariant( strLabels );
443 }
444 case Meta::valModified: return track->modifyDate();
445 default: return QVariant();
446 }
447 }
448
449
450