Пример #1
0
void Player::onMetaChanged()
{
    if(m_Current)
        if(!m_Current->metaLoaded()) {
            QMap<QString, QString> tags = m_GstPlayer->meta();

            if(!tags["brate"].isEmpty())
                Q_EMIT metaChanged(tags);

            QString artStr;
            if(!m_bArtRequested && !tags["album"].isEmpty()) {
                artStr = tags["artist"] + " " + tags["album"];
                Q_EMIT loadArt(artStr);
                m_bArtRequested = true;
            }

            if(!tags["artist"].isEmpty())
                m_Current->setMetaArtist(tags["artist"].trimmed());

            if(!tags["title"].isEmpty())// {
                m_Current->setMetaTitle(tags["title"]);

            if(!tags["album"].isEmpty()) {
                m_Current->setMetaAlbum(tags["album"]);
                m_Current->setMetaLoaded(true);
            }


            Q_EMIT metaChanged();
         }
}
Пример #2
0
Player::Player(QObject *parent) :
    QObject(parent)
{
    if(m_instance)
            qFatal("Only one instance of Player object is allowed");
    m_instance = this;

    m_plistsgroup = PlistsGroup::instance();

    m_VkActions = VkActions::instance();

    m_Prev = 0;
    m_Current = 0;

    m_bArtRequested = false;

    m_bBroadcastStatus = Settings::instance()->getValue("player/status").toBool();

    m_State = Stoped;

    // QGstreamer init
    m_GstPlayer = new GstPlayer(this);
    connect(m_GstPlayer, SIGNAL(positionChanged()), SLOT(positionChanged()));
    connect(m_GstPlayer, SIGNAL(linkExpired()), SLOT(onLinkExpired()));
    connect(m_GstPlayer, SIGNAL(stateChanged()), SLOT(onStateChanged()));
    connect(m_GstPlayer, SIGNAL(finished()), SIGNAL(needTrack()));
    connect(m_GstPlayer, SIGNAL(gotBitrate(quint32)), SLOT(setBitrate(quint32)));
    connect(m_GstPlayer, SIGNAL(metaChanged()), SLOT(onMetaChanged()));

    QTimer::singleShot(10, this, SLOT(setInitVolume()));

    m_GstPlayer->setVolume(Settings::instance()->getValue("player/volume").toDouble());

}
Пример #3
0
void Player::playTrack(Track *p)
{
    Q_EMIT trackChanged();
    Q_EMIT trackChanged(p);

    // Set PlayState for track
    p->setPlayState();

    // Stop playing prev tack
    m_GstPlayer->stop();
    setState(Player::Stoped);

    Q_EMIT newTitles(p->artist(), p->title());

    m_GstPlayer->stop();
    m_GstPlayer->setUri(p->url());
    m_GstPlayer->play();

    setState(Playing);
    m_bArtRequested = false;

    Q_EMIT changed();

    if(p->metaLoaded())
        Q_EMIT metaChanged();
}
Пример #4
0
void Player::setTrack(Track *p)
{
    if(m_Current) {
        m_Prev = m_Current;
        connect(m_Prev, SIGNAL(destroyed()), SLOT(onPrevDeleted()));
    }

    if(m_Prev) {
        m_Prev->setDefaultState();
        disconnect(m_Prev, SIGNAL(updated(bool)), this, SLOT(trackUpdated(bool)));
        m_Prev->setLast(false);
    }

    m_Current = p;
    connect(m_Current, SIGNAL(destroyed()), SLOT(prevDeleted()));

    m_Current->setLast(true);

    if(m_Current->url().isEmpty()) {
        m_Current->updateUrl();
        connect(m_Current, SIGNAL(updated(bool)), SLOT(trackUpdated(bool)));
    } else {
        playTrack(m_Current);
    }

    if(m_bBroadcastStatus)
        m_VkActions->setStatus(m_Current);

    // Meta
    if(m_Current->metaLoaded()) {
        Q_EMIT metaChanged();

        QString artStr;
        if(!m_bArtRequested && !m_Current->metaAlbum().isEmpty()) {
            artStr = m_Current->metaArtist() + " " + m_Current->metaAlbum();
            Q_EMIT loadArt(artStr);
            m_bArtRequested = true;
        }
    }

}
Пример #5
0
inline void InputManager::UpdateMeta( input_item_t *p_item_ )
{
    emit metaChanged( p_item_ );
    emit artChanged( p_item_ );
}
Пример #6
0
QUrl FooPlaylist::getNextTrack(FooPlaybackOrder::FooPlaybackOrder order, FooPlayback::FooPlayback playback)
{
	if (shouldCurrentTrackIndex >= 0)
	{
		currentTrackIndex = shouldCurrentTrackIndex;
		shouldCurrentTrackIndex = -1;
	}

	int beforeTrackIndex = currentTrackIndex;

	QUrl newTrack;

	if (playlist.empty())
	{
		currentTrackIndex = -1;
		shouldCurrentTrackIndex = -1;
	}
	else if (order == FooPlaybackOrder::Random || playback == FooPlayback::random)
	{
		newTrack = getRandomTrack();
	}
	else if (currentTrackIndex < 0)
	{
		currentTrackIndex = 0;

		newTrack = playlist.at(currentTrackIndex).file();
	}
	else
	{
		if ((playback == FooPlayback::enque && order == FooPlaybackOrder::Default) || (playback == FooPlayback::next && (order == FooPlaybackOrder::Default || order == FooPlaybackOrder::Repeat_Track)))
		{
			++currentTrackIndex;

			if (currentTrackIndex >= playlist.size())
			{
				currentTrackIndex = -1;
			}
			else
			{
				newTrack = playlist.at(currentTrackIndex).file();
			}
		}
		else if (playback == FooPlayback::prev && (order == FooPlaybackOrder::Default || order == FooPlaybackOrder::Repeat_Track))
		{
			--currentTrackIndex;

			if (currentTrackIndex < 0)
			{
				currentTrackIndex = -1;
			}
			else
			{
				newTrack = playlist.at(currentTrackIndex).file();
			}
		}
		else if (order == FooPlaybackOrder::Repeat_Playlist && (playback == FooPlayback::enque || playback == FooPlayback::next))
		{
			++currentTrackIndex;

			if (currentTrackIndex >= playlist.size())
			{
				currentTrackIndex = 0;
			}

			newTrack = playlist.at(currentTrackIndex).file();
		}
		else if (playback == FooPlayback::prev && order == FooPlaybackOrder::Repeat_Playlist)
		{
			--currentTrackIndex;

			if (currentTrackIndex < 0)
			{
				currentTrackIndex = playlist.size() - 1;
			}

			newTrack = playlist.at(currentTrackIndex).file();
		}
		else if ((playback == FooPlayback::enque && order == FooPlaybackOrder::Repeat_Track) || playback == FooPlayback::play)
		{
			newTrack = playlist.at(currentTrackIndex).file();
		}
	}

	emit metaChanged(beforeTrackIndex);

	if (currentTrackIndex >= 0)
	{
		emit metaChanged(currentTrackIndex);
	}

	return newTrack;
}