Finish implementing basic play, engine, and service.
This commit is contained in:
@@ -22,25 +22,55 @@
|
||||
#include "simplecastservice.h"
|
||||
|
||||
SimpleCastEngine::SimpleCastEngine(QObject *parent, const QVariantList &args)
|
||||
: Plasma::DataEngine(parent,args)
|
||||
: Plasma::DataEngine(parent,args), player(new MiniMediaPlayer(this))
|
||||
{
|
||||
Q_UNUSED(args)
|
||||
setMinimumPollingInterval(333);
|
||||
connect(player,SIGNAL(playStateChanged(bool)),this,SLOT(playStateChanged(bool)));
|
||||
connect(player,SIGNAL(trackDurationChanged(qint64)),this,SLOT(durationChanged(qint64)));
|
||||
connect(player,SIGNAL(trackPositionChanged(qint64)),this,SLOT(positionChanged(qint64)));
|
||||
connect(player,SIGNAL(playlistChanged(QStringList)),this,SLOT(playlistChanged(QStringList)));
|
||||
}
|
||||
|
||||
void SimpleCastEngine::durationChanged(qint64 length)
|
||||
{
|
||||
setData("CurrentState","trackDuration",length);
|
||||
}
|
||||
|
||||
void SimpleCastEngine::playStateChanged(bool isPlaying)
|
||||
{
|
||||
setData("CurrentState","playingState",isPlaying);
|
||||
}
|
||||
|
||||
void SimpleCastEngine::positionChanged(qint64 position)
|
||||
{
|
||||
setData("CurrentState","trackPosition",position);
|
||||
}
|
||||
|
||||
bool SimpleCastEngine::sourceRequestEvent(const QString& source)
|
||||
{
|
||||
setData(source, "you found me");
|
||||
return true;
|
||||
//return updateSourceEvent(source);//TODO
|
||||
return updateSourceEvent(source);
|
||||
}
|
||||
|
||||
void SimpleCastEngine::playlistChanged(QStringList playlist)
|
||||
{
|
||||
setData("Playlist",playlist);
|
||||
}
|
||||
|
||||
bool SimpleCastEngine::updateSourceEvent(const QString& source)
|
||||
{
|
||||
//Source for current playlist(contains title and url)
|
||||
//Source for current track time and length, and playing state
|
||||
setData(source, "you found me again");
|
||||
return true;//TODO
|
||||
if(source == "Playlist")
|
||||
{
|
||||
setData(source, QStringList(player->getTrackNames()));
|
||||
}
|
||||
else if(source == "CurrentState")
|
||||
{
|
||||
QMap<QString,qint64> state = player->currentState();
|
||||
setData(source,"trackDuration",state["duration"]);
|
||||
setData(source,"trackPosition",state["position"]);
|
||||
setData(source,"playingState",state["state"]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
QStringList SimpleCastEngine::sources() const
|
||||
@@ -52,7 +82,7 @@ Plasma::Service * SimpleCastEngine::serviceForSource(const QString& source)
|
||||
{
|
||||
if(source == "CurrentState")
|
||||
{
|
||||
return new SimpleCastService(source, this);
|
||||
return new SimpleCastService(source, player, this);
|
||||
}
|
||||
return Plasma::DataEngine::serviceForSource(source);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user