コード例 #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 ();
	}