/* Copyright (C) 2019 by Kevin Whitaker This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License or (at your option) version 3 or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 14 of version 3 of the license. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include "simplecastengine.h" #include "simplecastservice.h" SimpleCastEngine::SimpleCastEngine(QObject *parent, const QVariantList &args) : Plasma::DataEngine(parent,args), player(new MiniMediaPlayer(this)), tcpService(player,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))); tcpService.listen(); } 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) { return updateSourceEvent(source); } void SimpleCastEngine::playlistChanged(QStringList playlist) { setData("Playlist",playlist); } bool SimpleCastEngine::updateSourceEvent(const QString& source) { if(source == "Playlist") { setData(source, QStringList(player->getTrackNames())); } else if(source == "CurrentState") { QMap state = player->currentState(); setData(source,"trackDuration",state["duration"]); setData(source,"trackPosition",state["position"]); setData(source,"playingState",state["state"]); } return true; } QStringList SimpleCastEngine::sources() const { return QStringList() << "Playlist" << "CurrentState"; } Plasma::Service * SimpleCastEngine::serviceForSource(const QString& source) { if(source == "CurrentState") { return new SimpleCastService(source, player, this); } return Plasma::DataEngine::serviceForSource(source); } K_EXPORT_PLASMA_DATAENGINE_WITH_JSON(org.eyecreate.simplecast, SimpleCastEngine,"plasma-dataengine-simplecast.json") #include "simplecastengine.moc"