1
#include "pollingwatcher.h"
8
#include "playerfactory.h"
10
PollingWatcher::PollingWatcher(QObject* parent)
14
setObjectName( QLatin1String("PollingWatcher" ));
17
QList<Player::Ptr> PollingWatcher::players()
19
return m_players.values();
22
void PollingWatcher::addFactory(PollingPlayerFactory* factory)
24
if (factory->exists()) {
25
Player::Ptr player = factory->create();
26
if (!player.isNull()) {
27
m_players.insert(player);
28
m_usedFactories.insert(factory);
29
emit newPlayer(player);
31
kWarning() << "Failed to create a player";
32
m_polledFactories.insert(factory);
35
m_polledFactories.insert(factory);
39
m_timer = new QTimer(this);
40
m_timer->setInterval(5000);
41
connect(m_timer, SIGNAL(timeout()), this, SLOT(checkPlayers()));
46
void PollingWatcher::checkPlayers()
48
foreach (Player::Ptr player, m_players) {
49
if (!player->isRunning()) {
50
m_players.remove(player);
51
PollingPlayerFactory* factory =
52
qobject_cast<PollingPlayerFactory*>(player->factory());
54
m_usedFactories.remove(factory);
55
m_polledFactories.insert(factory);
57
kWarning() << "Missing factory for player" << player->name();
59
emit playerDisappeared(player);
62
foreach (PollingPlayerFactory* factory, m_polledFactories) {
63
if (factory->exists()) {
64
Player::Ptr player = factory->create();
65
if (!player.isNull()) {
66
m_players.insert(player);
67
m_polledFactories.remove(factory);
68
m_usedFactories.insert(factory);
69
emit newPlayer(player);
71
kWarning() << "Failed to create a player";