QVariantMap MediaPlayer2Player::Metadata() const { QVariantMap metaData; // The track ID is annoying since it must result in a valid DBus object // path, and the regex for that is, and I quote: [a-zA-Z0-9_]*, along with // the normal / delimiters for paths. PlaylistItem *item = Playlist::playingItem(); if (!item) return metaData; FileHandle playingFile = item->file(); QByteArray playingTrackFileId = idFromPlaylistItem(item); metaData["mpris:trackid"] = QVariant::fromValue<QDBusObjectPath>( QDBusObjectPath(playingTrackFileId.constData())); metaData["xesam:album"] = playingFile.tag()->album(); metaData["xesam:title"] = playingFile.tag()->title(); metaData["xesam:artist"] = QStringList(playingFile.tag()->artist()); metaData["xesam:genre"] = QStringList(playingFile.tag()->genre()); metaData["mpris:length"] = qint64(playingFile.tag()->seconds() * 1000000); metaData["xesam:url"] = QString::fromLatin1( KUrl::fromLocalFile(playingFile.absFilePath()).toEncoded()); if(playingFile.coverInfo()->hasCover()) { QString fallbackFileName = KStandardDirs::locateLocal("tmp", QString("juk-cover-%1.png").arg(item->trackId())); QString path = fallbackFileName; if(!QFile::exists(path)) { path = playingFile.coverInfo()->localPathToCover(fallbackFileName); } metaData["mpris:artUrl"] = QString::fromLatin1(QUrl::fromLocalFile( path).toEncoded()); } return metaData; }
CollectionListItem::CollectionListItem(const FileHandle &file) : PlaylistItem(CollectionList::instance()), m_shuttingDown(false) { CollectionList *l = CollectionList::instance(); if(l) { l->addToDict(file.absFilePath(), this); data()->fileHandle = file; if(file.tag()) { refresh(); l->dataChanged(); // l->addWatched(m_path); } else kdError() << "CollectionListItem::CollectionListItem() -- Tag() could not be created." << endl; } else kdError(65432) << "CollectionListItems should not be created before " << "CollectionList::initialize() has been called." << endl; SplashScreen::increment(); }