File indexing completed on 2024-05-19 04:49:28
0001 /**************************************************************************************** 0002 * Copyright (c) 2010 Ralf Engels <ralf-engels@gmx.de> * 0003 * * 0004 * This program is free software; you can redistribute it and/or modify it under * 0005 * the terms of the GNU General Public License as published by the Free Software * 0006 * Foundation; either version 2 of the License, or (at your option) any later * 0007 * version. * 0008 * * 0009 * This program is distributed in the hope that it will be useful, but WITHOUT ANY * 0010 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * 0011 * PARTICULAR PURPOSE. See the GNU General Public License for more details. * 0012 * * 0013 * You should have received a copy of the GNU General Public License along with * 0014 * this program. If not, see <http://www.gnu.org/licenses/>. * 0015 ****************************************************************************************/ 0016 0017 #include "MetaConstants.h" 0018 0019 #include "core/meta/Meta.h" 0020 #include "core/meta/Statistics.h" 0021 #include "FileType.h" 0022 0023 #include <KLocalizedString> 0024 0025 #include <QSet> 0026 0027 QString Meta::nameForField( qint64 field ) 0028 { 0029 switch( field ) 0030 { 0031 case 0: return QStringLiteral("anything"); 0032 case Meta::valUrl: return QStringLiteral("filename"); 0033 case Meta::valTitle: return QStringLiteral("title"); 0034 case Meta::valArtist: return QStringLiteral("artist"); 0035 case Meta::valAlbum: return QStringLiteral("album"); 0036 case Meta::valGenre: return QStringLiteral("genre"); 0037 case Meta::valComposer: return QStringLiteral("composer"); 0038 case Meta::valYear: return QStringLiteral("year"); 0039 case Meta::valComment: return QStringLiteral("comment"); 0040 case Meta::valTrackNr: return QStringLiteral("tracknr"); 0041 case Meta::valDiscNr: return QStringLiteral("discnumber"); 0042 case Meta::valBpm: return QStringLiteral("bpm"); 0043 case Meta::valLength: return QStringLiteral("length"); 0044 case Meta::valBitrate: return QStringLiteral("bitrate"); 0045 case Meta::valSamplerate: return QStringLiteral("samplerate"); 0046 case Meta::valFilesize: return QStringLiteral("filesize"); 0047 case Meta::valFormat: return QStringLiteral("format"); 0048 case Meta::valCreateDate: return QStringLiteral("added"); 0049 case Meta::valScore: return QStringLiteral("score"); 0050 case Meta::valRating: return QStringLiteral("rating"); 0051 case Meta::valFirstPlayed: return QStringLiteral("firstplay"); 0052 case Meta::valLastPlayed: return QStringLiteral("lastplay"); 0053 case Meta::valPlaycount: return QStringLiteral("playcount"); 0054 case Meta::valUniqueId: return QStringLiteral("uniqueid"); 0055 0056 case Meta::valTrackGain: return QStringLiteral("trackgain"); 0057 case Meta::valTrackGainPeak: return QStringLiteral("trackgainpeak"); 0058 case Meta::valAlbumGain: return QStringLiteral("albumgain"); 0059 case Meta::valAlbumGainPeak: return QStringLiteral("albumgainpeak"); 0060 0061 case Meta::valAlbumArtist: return QStringLiteral("albumartist"); 0062 case Meta::valLabel: return QStringLiteral("label"); 0063 case Meta::valModified: return QStringLiteral("modified"); 0064 case Meta::valLyrics: return QStringLiteral("lyrics"); 0065 default: return QString(); 0066 } 0067 } 0068 0069 qint64 Meta::fieldForName( const QString &name ) 0070 { 0071 if( name.compare( QLatin1String("anything"), Qt::CaseInsensitive ) == 0 0072 || name.compare( shortI18nForField( 0 ), Qt::CaseInsensitive ) == 0 ) 0073 return 0; 0074 else if( name.compare( QLatin1String("filename"), Qt::CaseInsensitive ) == 0 0075 || name.compare( shortI18nForField( Meta::valUrl ), Qt::CaseInsensitive ) == 0 ) 0076 return Meta::valUrl; 0077 else if( name.compare( QLatin1String("title"), Qt::CaseInsensitive ) == 0 0078 || name.compare( shortI18nForField( Meta::valTitle ), Qt::CaseInsensitive ) == 0 ) 0079 return Meta::valTitle; 0080 else if( name.compare( QLatin1String("artist"), Qt::CaseInsensitive ) == 0 0081 || name.compare( shortI18nForField( Meta::valArtist ), Qt::CaseInsensitive ) == 0 ) 0082 return Meta::valArtist; 0083 else if( name.compare( QLatin1String("album"), Qt::CaseInsensitive ) == 0 0084 || name.compare( shortI18nForField( Meta::valAlbum ), Qt::CaseInsensitive ) == 0 ) 0085 return Meta::valAlbum; 0086 else if( name.compare( QLatin1String("genre"), Qt::CaseInsensitive ) == 0 0087 || name.compare( shortI18nForField( Meta::valGenre ), Qt::CaseInsensitive ) == 0 ) 0088 return Meta::valGenre; 0089 else if( name.compare( QLatin1String("composer"), Qt::CaseInsensitive ) == 0 0090 || name.compare( shortI18nForField( Meta::valComposer ), Qt::CaseInsensitive ) == 0 ) 0091 return Meta::valComposer; 0092 else if( name.compare( QLatin1String("year"), Qt::CaseInsensitive ) == 0 0093 || name.compare( shortI18nForField( Meta::valYear ), Qt::CaseInsensitive ) == 0 ) 0094 return Meta::valYear; 0095 else if( name.compare( QLatin1String("comment"), Qt::CaseInsensitive ) == 0 0096 || name.compare( shortI18nForField( Meta::valComment ), Qt::CaseInsensitive ) == 0 ) 0097 return Meta::valComment; 0098 else if( name.compare( QLatin1String("tracknumber"), Qt::CaseInsensitive ) == 0 0099 || name.compare( shortI18nForField( Meta::valTrackNr ), Qt::CaseInsensitive ) == 0 ) 0100 return Meta::valTrackNr; 0101 else if( name.compare( QLatin1String("discnumber"), Qt::CaseInsensitive ) == 0 0102 || name.compare( shortI18nForField( Meta::valDiscNr ), Qt::CaseInsensitive ) == 0 ) 0103 return Meta::valDiscNr; 0104 else if( name.compare( QLatin1String("bpm"), Qt::CaseInsensitive ) == 0 0105 || name.compare( shortI18nForField( Meta::valBpm ), Qt::CaseInsensitive ) == 0 ) 0106 return Meta::valBpm; 0107 else if( name.compare( QLatin1String("length"), Qt::CaseInsensitive ) == 0 0108 || name.compare( shortI18nForField( Meta::valLength ), Qt::CaseInsensitive ) == 0 ) 0109 return Meta::valLength; 0110 else if( name.compare( QLatin1String("bitrate"), Qt::CaseInsensitive ) == 0 0111 || name.compare( shortI18nForField( Meta::valBitrate ), Qt::CaseInsensitive ) == 0 ) 0112 return Meta::valBitrate; 0113 else if( name.compare( QLatin1String("samplerate"), Qt::CaseInsensitive ) == 0 0114 || name.compare( shortI18nForField( Meta::valSamplerate ), Qt::CaseInsensitive ) == 0 ) 0115 return Meta::valSamplerate; 0116 else if( name.compare( QLatin1String("filesize"), Qt::CaseInsensitive ) == 0 0117 || name.compare( shortI18nForField( Meta::valFilesize ), Qt::CaseInsensitive ) == 0 ) 0118 return Meta::valFilesize; 0119 else if( name.compare( QLatin1String("format"), Qt::CaseInsensitive ) == 0 0120 || name.compare( QLatin1String("codec"), Qt::CaseInsensitive ) == 0 0121 || name.compare( shortI18nForField( Meta::valFormat ), Qt::CaseInsensitive ) == 0 ) 0122 return Meta::valFormat; 0123 else if( name.compare( QLatin1String("added"), Qt::CaseInsensitive ) == 0 0124 || name.compare( shortI18nForField( Meta::valCreateDate ), Qt::CaseInsensitive ) == 0 ) 0125 return Meta::valCreateDate; 0126 else if( name.compare( QLatin1String("score"), Qt::CaseInsensitive ) == 0 0127 || name.compare( shortI18nForField( Meta::valScore ), Qt::CaseInsensitive ) == 0 ) 0128 return Meta::valScore; 0129 else if( name.compare( QLatin1String("rating"), Qt::CaseInsensitive ) == 0 0130 || name.compare( shortI18nForField( Meta::valRating ), Qt::CaseInsensitive ) == 0 ) 0131 return Meta::valRating; 0132 else if( name.compare( QLatin1String("firstplay"), Qt::CaseInsensitive ) == 0 0133 || name.compare( QLatin1String("first"), Qt::CaseInsensitive ) == 0 // legacy 0134 || name.compare( shortI18nForField( Meta::valFirstPlayed ), Qt::CaseInsensitive ) == 0 ) 0135 return Meta::valFirstPlayed; 0136 else if( name.compare( QLatin1String("lastplay"), Qt::CaseInsensitive ) == 0 0137 || name.compare( QLatin1String("played"), Qt::CaseInsensitive ) == 0 // legacy 0138 || name.compare( shortI18nForField( Meta::valLastPlayed ), Qt::CaseInsensitive ) == 0 ) 0139 return Meta::valLastPlayed; 0140 else if( name.compare( QLatin1String("playcount"), Qt::CaseInsensitive ) == 0 0141 || name.compare( shortI18nForField( Meta::valPlaycount ), Qt::CaseInsensitive ) == 0 ) 0142 return Meta::valPlaycount; 0143 else if( name.compare( QLatin1String("uniqueid"), Qt::CaseInsensitive ) == 0 0144 || name.compare( shortI18nForField( Meta::valUniqueId ), Qt::CaseInsensitive ) == 0 ) 0145 return Meta::valUniqueId; 0146 0147 else if( name.compare( QLatin1String("trackgain"), Qt::CaseInsensitive ) == 0 0148 || name.compare( shortI18nForField( Meta::valTrackGain ), Qt::CaseInsensitive ) == 0 ) 0149 return Meta::valTrackGain; 0150 else if( name.compare( QLatin1String("trackgainpeak"), Qt::CaseInsensitive ) == 0 0151 || name.compare( shortI18nForField( Meta::valTrackGainPeak ), Qt::CaseInsensitive ) == 0 ) 0152 return Meta::valTrackGainPeak; 0153 else if( name.compare( QLatin1String("albumgain"), Qt::CaseInsensitive ) == 0 0154 || name.compare( shortI18nForField( Meta::valAlbumGain ), Qt::CaseInsensitive ) == 0 ) 0155 return Meta::valAlbumGain; 0156 else if( name.compare( QLatin1String("albumgainpeak"), Qt::CaseInsensitive ) == 0 0157 || name.compare( shortI18nForField( Meta::valAlbumGainPeak ), Qt::CaseInsensitive ) == 0 ) 0158 return Meta::valAlbumGainPeak; 0159 0160 else if( name.compare( QLatin1String("albumartist"), Qt::CaseInsensitive ) == 0 0161 || name.compare( shortI18nForField( Meta::valAlbumArtist ), Qt::CaseInsensitive ) == 0 ) 0162 return Meta::valAlbumArtist; 0163 else if( name.compare( QLatin1String("label"), Qt::CaseInsensitive ) == 0 0164 || name.compare( shortI18nForField( Meta::valLabel ), Qt::CaseInsensitive ) == 0 ) 0165 return Meta::valLabel; 0166 else if( name.compare( QLatin1String("modified"), Qt::CaseInsensitive ) == 0 0167 || name.compare( shortI18nForField( Meta::valModified ), Qt::CaseInsensitive ) == 0 ) 0168 return Meta::valModified; 0169 else if( name.compare( QLatin1String("lyrics"), Qt::CaseInsensitive ) == 0 0170 || name.compare( shortI18nForField( Meta::valLyrics ), Qt::CaseInsensitive ) == 0 ) 0171 return Meta::valLyrics; 0172 else 0173 return 0; 0174 } 0175 0176 QString Meta::i18nForField( qint64 field ) 0177 { 0178 switch( field ) 0179 { 0180 case 0: return i18nc("Track field name (when nothing specific is selected e.g. in the automatic playlist generator)", "anything"); 0181 case Meta::valUrl: return i18nc("Track field name (the file this track is stored in)", "File Name"); 0182 case Meta::valTitle: return i18nc("Track field name", "Title"); 0183 case Meta::valArtist: return i18nc("Track field name", "Artist"); 0184 case Meta::valAlbum: return i18nc("Track field name", "Album"); 0185 case Meta::valGenre: return i18nc("Track field name", "Genre"); 0186 case Meta::valComposer: return i18nc("Track field name", "Composer"); 0187 case Meta::valYear: return i18nc("Track field name", "Year"); 0188 case Meta::valComment: return i18nc("Track field name", "Comment"); 0189 case Meta::valTrackNr: return i18nc("Track field name", "Track Number"); 0190 case Meta::valDiscNr: return i18nc("Track field name", "Disc Number"); 0191 case Meta::valBpm: return i18nc("Track field name", "Bpm"); 0192 case Meta::valLength: return i18nc("Track field name", "Length"); 0193 case Meta::valBitrate: return i18nc("Track field name", "Bit Rate"); 0194 case Meta::valSamplerate: return i18nc("Track field name", "Sample Rate"); 0195 case Meta::valFilesize: return i18nc("Track field name", "File Size"); 0196 case Meta::valFormat: return i18nc("Track field name", "Format"); 0197 case Meta::valCreateDate: return i18nc("Track field name", "Added to Collection"); 0198 case Meta::valScore: return i18nc("Track field name", "Score"); 0199 case Meta::valRating: return i18nc("Track field name", "Rating"); 0200 case Meta::valFirstPlayed: return i18nc("Track field name", "First Played"); 0201 case Meta::valLastPlayed: return i18nc("Track field name", "Last Played"); 0202 case Meta::valPlaycount: return i18nc("Track field name", "Playcount"); 0203 case Meta::valUniqueId: return i18nc("Track field name", "Unique Id"); 0204 0205 case Meta::valTrackGain: return i18nc("Track field name", "Track Gain"); 0206 case Meta::valTrackGainPeak: return i18nc("Track field name", "Track Gain Peak"); 0207 case Meta::valAlbumGain: return i18nc("Track field name", "Album Gain"); 0208 case Meta::valAlbumGainPeak: return i18nc("Track field name", "Album Gain Peak"); 0209 0210 case Meta::valAlbumArtist: return i18nc("Track field name", "Album Artist"); 0211 case Meta::valLabel: return i18nc("Track field name", "Label"); 0212 case Meta::valModified: return i18nc("Track field name", "Last Modified"); 0213 case Meta::valLyrics: return i18nc("Track field name", "Lyrics"); 0214 default: return QString(); 0215 } 0216 } 0217 0218 QString Meta::shortI18nForField( qint64 field ) 0219 { 0220 // see also src/browsers/CollectionTreeItemModelBase.cpp for localized names 0221 0222 switch( field ) 0223 { 0224 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"); 0225 case Meta::valUrl: return i18nc("One word translation used in the collection filter. The name of the file this track is stored in", "filename" ); 0226 case Meta::valTitle: return i18nc("One word translation used in the collection filter", "title"); 0227 case Meta::valArtist: return i18nc("One word translation used in the collection filter", "artist"); 0228 case Meta::valAlbum: return i18nc("One word translation used in the collection filter", "album"); 0229 case Meta::valGenre: return i18nc("One word translation used in the collection filter", "genre"); 0230 case Meta::valComposer: return i18nc("One word translation used in the collection filter", "composer"); 0231 case Meta::valYear: return i18nc("One word translation used in the collection filter", "year"); 0232 case Meta::valComment: return i18nc("One word translation used in the collection filter", "comment"); 0233 case Meta::valTrackNr: return i18nc("One word translation used in the collection filter", "tracknumber"); 0234 case Meta::valDiscNr: return i18nc("One word translation used in the collection filter", "discnumber"); 0235 case Meta::valBpm: return i18nc("One word translation used in the collection filter", "bpm"); 0236 case Meta::valLength: return i18nc("One word translation used in the collection filter", "length"); 0237 case Meta::valBitrate: return i18nc("One word translation used in the collection filter", "bitrate"); 0238 case Meta::valSamplerate: return i18nc("One word translation used in the collection filter", "samplerate"); 0239 case Meta::valFilesize: return i18nc("One word translation used in the collection filter", "filesize"); 0240 case Meta::valFormat: return i18nc("One word translation used in the collection filter", "format"); 0241 case Meta::valCreateDate: return i18nc("One word translation used in the collection filter", "added"); 0242 case Meta::valScore: return i18nc("One word translation used in the collection filter", "score"); 0243 case Meta::valRating: return i18nc("One word translation used in the collection filter", "rating"); 0244 case Meta::valFirstPlayed: return i18nc("One word translation used in the collection filter. First played time / access date", "firstplay"); 0245 case Meta::valLastPlayed: return i18nc("One word translation used in the collection filter. Last played time / access date", "lastplay"); 0246 case Meta::valPlaycount: return i18nc("One word translation used in the collection filter", "playcount"); 0247 case Meta::valUniqueId: return i18nc("One word translation used in the collection filter", "uniqueid"); 0248 0249 case Meta::valTrackGain: return i18nc("One word translation used in the collection filter", "trackgain"); 0250 case Meta::valTrackGainPeak: return i18nc("One word translation used in the collection filter", "trackgainpeak"); 0251 case Meta::valAlbumGain: return i18nc("One word translation used in the collection filter", "albumgain"); 0252 case Meta::valAlbumGainPeak: return i18nc("One word translation used in the collection filter", "albumgainpeak"); 0253 0254 case Meta::valAlbumArtist: return i18nc("One word translation used in the collection filter", "albumartist"); 0255 case Meta::valLabel: return i18nc("One word translation used in the collection filter", "label"); 0256 case Meta::valModified: return i18nc("One word translation used in the collection filter", "modified"); 0257 case Meta::valLyrics: return i18nc("One word translation used in the collection filter", "lyrics"); 0258 default: return QString(); 0259 } 0260 } 0261 0262 QString Meta::playlistNameForField( qint64 field ) 0263 { 0264 switch( field ) 0265 { 0266 case 0: return QStringLiteral("anything"); 0267 case Meta::valUrl: return QStringLiteral("url"); 0268 case Meta::valTitle: return QStringLiteral("title"); 0269 case Meta::valArtist: return QStringLiteral("artist name"); 0270 case Meta::valAlbum: return QStringLiteral("album name"); 0271 case Meta::valGenre: return QStringLiteral("genre"); 0272 case Meta::valComposer: return QStringLiteral("composer"); 0273 case Meta::valYear: return QStringLiteral("year"); 0274 case Meta::valComment: return QStringLiteral("comment"); 0275 case Meta::valTrackNr: return QStringLiteral("track number"); 0276 case Meta::valDiscNr: return QStringLiteral("disc number"); 0277 case Meta::valBpm: return QStringLiteral("bpm"); 0278 case Meta::valLength: return QStringLiteral("length"); 0279 case Meta::valBitrate: return QStringLiteral("bit rate"); 0280 case Meta::valSamplerate: return QStringLiteral("sample rate"); 0281 case Meta::valFilesize: return QStringLiteral("file size"); 0282 case Meta::valFormat: return QStringLiteral("format"); 0283 case Meta::valCreateDate: return QStringLiteral("create date"); 0284 case Meta::valScore: return QStringLiteral("score"); 0285 case Meta::valRating: return QStringLiteral("rating"); 0286 case Meta::valFirstPlayed: return QStringLiteral("first played"); 0287 case Meta::valLastPlayed: return QStringLiteral("last played"); 0288 case Meta::valPlaycount: return QStringLiteral("play count"); 0289 case Meta::valUniqueId: return QStringLiteral("unique id"); 0290 0291 case Meta::valTrackGain: return QStringLiteral("track gain"); 0292 case Meta::valTrackGainPeak: return QStringLiteral("track gain peak"); 0293 case Meta::valAlbumGain: return QStringLiteral("album gain"); 0294 case Meta::valAlbumGainPeak: return QStringLiteral("album gain peak"); 0295 0296 case Meta::valAlbumArtist: return QStringLiteral("album artist name"); 0297 case Meta::valLabel: return QStringLiteral("label"); 0298 case Meta::valModified: return QStringLiteral("modified"); 0299 default: return QLatin1String(""); 0300 } 0301 } 0302 0303 qint64 Meta::fieldForPlaylistName( const QString &name ) 0304 { 0305 if( name == QLatin1String("anything") ) return 0; 0306 else if( name == QLatin1String("url") ) return Meta::valUrl; 0307 else if( name == QLatin1String("title") ) return Meta::valTitle; 0308 else if( name == QLatin1String("artist name") ) return Meta::valArtist; 0309 else if( name == QLatin1String("album name") ) return Meta::valAlbum; 0310 else if( name == QLatin1String("genre") ) return Meta::valGenre; 0311 else if( name == QLatin1String("composer") ) return Meta::valComposer; 0312 else if( name == QLatin1String("year") ) return Meta::valYear; 0313 else if( name == QLatin1String("comment") ) return Meta::valComment; 0314 else if( name == QLatin1String("track number") ) return Meta::valTrackNr; 0315 else if( name == QLatin1String("disc number") ) return Meta::valDiscNr; 0316 else if( name == QLatin1String("bpm") ) return Meta::valBpm; 0317 else if( name == QLatin1String("length") ) return Meta::valLength; 0318 else if( name == QLatin1String("bit rate") ) return Meta::valBitrate; 0319 else if( name == QLatin1String("sample rate") ) return Meta::valSamplerate; 0320 else if( name == QLatin1String("file size") ) return Meta::valFilesize; 0321 else if( name == QLatin1String("format") ) return Meta::valFormat; 0322 else if( name == QLatin1String("create date") ) return Meta::valCreateDate; 0323 else if( name == QLatin1String("score") ) return Meta::valScore; 0324 else if( name == QLatin1String("rating") ) return Meta::valRating; 0325 else if( name == QLatin1String("first played") ) return Meta::valFirstPlayed; 0326 else if( name == QLatin1String("last played") ) return Meta::valLastPlayed; 0327 else if( name == QLatin1String("play count") ) return Meta::valPlaycount; 0328 else if( name == QLatin1String("unique id") ) return Meta::valUniqueId; 0329 0330 else if( name == QLatin1String("track gain") ) return Meta::valTrackGain; 0331 else if( name == QLatin1String("track gain peak") ) return Meta::valTrackGainPeak; 0332 else if( name == QLatin1String("album gain") ) return Meta::valAlbumGain; 0333 else if( name == QLatin1String("album gain peak") ) return Meta::valAlbumGainPeak; 0334 0335 else if( name == QLatin1String("album artist name") ) return Meta::valAlbumArtist; 0336 else if( name == QLatin1String("label") ) return Meta::valLabel; 0337 else if( name == QLatin1String("modified") ) return Meta::valModified; 0338 else return 0; 0339 } 0340 0341 QString Meta::iconForField( qint64 field ) 0342 { 0343 // see also PlaylistDefines.h::iconNames 0344 switch( field ) 0345 { 0346 case Meta::valUrl: return QStringLiteral("filename-space-amarok"); 0347 case Meta::valTitle: return QStringLiteral("filename-title-amarok"); 0348 case Meta::valArtist: return QStringLiteral("filename-artist-amarok"); 0349 case Meta::valAlbumArtist: return QStringLiteral("filename-artist-amarok"); 0350 case Meta::valAlbum: return QStringLiteral("filename-album-amarok"); 0351 case Meta::valGenre: return QStringLiteral("filename-genre-amarok"); 0352 case Meta::valComposer: return QStringLiteral("filename-composer-amarok"); 0353 case Meta::valYear: return QStringLiteral("filename-year-amarok"); 0354 case Meta::valModified: 0355 case Meta::valCreateDate: return QStringLiteral("filename-year-amarok"); 0356 case Meta::valComment: return QStringLiteral("amarok_comment"); 0357 case Meta::valPlaycount: return QStringLiteral("amarok_playcount"); 0358 case Meta::valTrackNr: return QStringLiteral("filename-track-amarok"); 0359 case Meta::valDiscNr: return QStringLiteral("filename-discnumber-amarok"); 0360 case Meta::valBpm: return QStringLiteral("filename-bpm-amarok"); 0361 case Meta::valLength: return QStringLiteral("chronometer"); 0362 case Meta::valBitrate: return QStringLiteral("audio-x-generic"); 0363 case Meta::valSamplerate: return QStringLiteral("filename-sample-rate"); 0364 case Meta::valFormat: return QStringLiteral("filename-filetype-amarok"); 0365 case Meta::valScore: return QStringLiteral("emblem-favorite"); 0366 case Meta::valRating: return QStringLiteral("rating"); 0367 case Meta::valFirstPlayed: 0368 case Meta::valLastPlayed: return QStringLiteral("filename-last-played"); 0369 case Meta::valLabel: return QStringLiteral("label-amarok"); 0370 case Meta::valFilesize: return QStringLiteral("info-amarok"); 0371 default: return QString(); 0372 } 0373 } 0374 0375 QVariant Meta::valueForField( qint64 field, Meta::TrackPtr track ) 0376 { 0377 if( !track ) 0378 return QVariant(); 0379 0380 switch( field ) 0381 { 0382 case 0: 0383 { 0384 // that is the simple search for MetaQueryWidget 0385 QSet<QString> allInfos; 0386 allInfos += track->playableUrl().path() 0387 += track->name() 0388 += track->comment(); 0389 if( track->artist() ) 0390 allInfos += track->artist()->name(); 0391 if( track->album() ) 0392 allInfos += track->album()->name(); 0393 if( track->genre() ) 0394 allInfos += track->genre()->name(); 0395 0396 return QVariant( allInfos.values() ); 0397 } 0398 case Meta::valUrl: return track->playableUrl().path(); 0399 case Meta::valTitle: return track->name(); 0400 case Meta::valArtist: return track->artist() ? 0401 QVariant(track->artist()->name()) : QVariant(); 0402 case Meta::valAlbum: return track->album() ? 0403 QVariant(track->album()->name()) : QVariant(); 0404 case Meta::valGenre: return track->genre() ? 0405 QVariant(track->genre()->name()) : QVariant(); 0406 case Meta::valComposer: return track->composer() ? 0407 QVariant(track->composer()->name()) : QVariant(); 0408 case Meta::valYear: return track->year() ? 0409 QVariant(track->year()->name().toInt()) : QVariant(); 0410 case Meta::valComment: return track->comment(); 0411 case Meta::valTrackNr: return track->trackNumber(); 0412 case Meta::valDiscNr: return track->discNumber(); 0413 case Meta::valBpm: return track->bpm(); 0414 case Meta::valLength: return track->length(); 0415 case Meta::valBitrate: return track->bitrate(); 0416 case Meta::valSamplerate: return track->sampleRate(); 0417 case Meta::valFilesize: return track->filesize(); 0418 case Meta::valFormat: return int(Amarok::FileTypeSupport::fileType(track->type())); 0419 0420 case Meta::valCreateDate: return track->createDate(); 0421 case Meta::valScore: return track->statistics()->score(); 0422 case Meta::valRating: return track->statistics()->rating(); 0423 case Meta::valFirstPlayed: return track->statistics()->firstPlayed(); 0424 case Meta::valLastPlayed: return track->statistics()->lastPlayed(); 0425 case Meta::valPlaycount: return track->statistics()->playCount(); 0426 case Meta::valUniqueId: return track->uidUrl(); 0427 0428 // todo 0429 case Meta::valTrackGain: return "track gain"; 0430 case Meta::valTrackGainPeak: return "track gain peak"; 0431 case Meta::valAlbumGain: return "album gain"; 0432 case Meta::valAlbumGainPeak: return "album gain peak"; 0433 0434 case Meta::valAlbumArtist: return (track->album() && track->album()->albumArtist()) ? 0435 QVariant(track->album()->albumArtist()->name()) : QVariant(); 0436 case Meta::valLabel: 0437 { 0438 Meta::LabelList labels = track->labels(); 0439 QStringList strLabels; 0440 foreach( Meta::LabelPtr label, labels ) 0441 strLabels.append( label->name() ); 0442 return QVariant( strLabels ); 0443 } 0444 case Meta::valModified: return track->modifyDate(); 0445 default: return QVariant(); 0446 } 0447 } 0448 0449