예제 #1
0
	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;
}