void Player::handleMetadataChanged () { MediaObject *object = qobject_cast<MediaObject*> (sender ()); if (!object) { qWarning () << Q_FUNC_INFO << "not a MediaObject" << object; return; } MediaSource source = object->currentSource (); for (int i = 0; i < QueueModel_->rowCount (); ++i) { QStandardItem *item = QueueModel_->item (i); if (source == *item->data (SourceRole).value<MediaSource*> ()) { QStringList title = object->metaData (TitleMetaData); QStringList album = object->metaData (AlbumMetaData); QStringList artist = object->metaData (ArtistMetaData); QString text; if (!title.isEmpty () && !title.at (0).isEmpty ()) { text += title.at (0); text += " - "; } if (!album.isEmpty () && !album.at (0).isEmpty ()) { text += album.at (0); text += " - "; } if (!artist.isEmpty () && !artist.at (0).isEmpty ()) { text += artist.at (0); text += " - "; } text = text.left (text.size () - 3); if (!text.isEmpty ()) item->setText (text); break; } } if (object != Ui_.Player_->GetMediaObject ()) object->deleteLater (); }
static QByteArray debugMediaObject(WebCore::MediaPlayerPrivate* mediaPlayer, const MediaObject& mediaObject) { QByteArray byteArray; QTextStream stream(&byteArray); const QMetaObject* metaObj = mediaPlayer->metaObject(); QMetaEnum phononStates = metaObj->enumerator(metaObj->indexOfEnumerator("PhononState")); stream << "debugMediaObject -> Phonon::MediaObject("; stream << "State: " << phononStates.valueToKey(mediaObject.state()); stream << " | Current time: " << mediaObject.currentTime(); stream << " | Remaining time: " << mediaObject.remainingTime(); stream << " | Total time: " << mediaObject.totalTime(); stream << " | Meta-data: "; QMultiMap<QString, QString> map = mediaObject.metaData(); for (QMap<QString, QString>::const_iterator it = map.constBegin(); it != map.constEnd(); ++it) { stream << "(" << it.key() << ", " << it.value() << ")"; } stream << " | Has video: " << mediaObject.hasVideo(); stream << " | Is seekable: " << mediaObject.isSeekable(); stream << ")"; stream.flush(); return byteArray; }