• Skip to content
  • Skip to link menu
KDE 4.2 API Reference
  • KDE API Reference
  • API Reference
  • Sitemap
  • Contact Us
 

Engines

pollingwatcher.cpp

Go to the documentation of this file.
00001 #include "pollingwatcher.h"
00002 
00003 #include <QTimer>
00004 
00005 #include <KDebug>
00006 
00007 #include "player.h"
00008 #include "playerfactory.h"
00009 
00010 PollingWatcher::PollingWatcher(QObject* parent)
00011     : QObject(parent),
00012       m_timer(0)
00013 {
00014     setObjectName("PollingWatcher");
00015 }
00016 
00017 QList<Player::Ptr> PollingWatcher::players()
00018 {
00019     return m_players.values();
00020 }
00021 
00022 void PollingWatcher::addFactory(PollingPlayerFactory* factory)
00023 {
00024     if (factory->exists()) {
00025         Player::Ptr player = factory->create();
00026         if (!player.isNull()) {
00027             m_players.insert(player);
00028             m_usedFactories.insert(factory);
00029             emit newPlayer(player);
00030         } else {
00031             kWarning() << "Failed to create a player";
00032             m_polledFactories.insert(factory);
00033         }
00034     } else {
00035         m_polledFactories.insert(factory);
00036     }
00037     if (!m_timer) {
00038         m_timer = new QTimer(this);
00039         m_timer->setInterval(5000);
00040         connect(m_timer, SIGNAL(timeout()), this, SLOT(checkPlayers()));
00041         m_timer->start();
00042     }
00043 }
00044 
00045 void PollingWatcher::checkPlayers()
00046 {
00047     foreach (Player::Ptr player, m_players) {
00048         if (!player->isRunning()) {
00049             m_players.remove(player);
00050             PollingPlayerFactory* factory =
00051                     qobject_cast<PollingPlayerFactory*>(player->factory());
00052             if (factory) {
00053                 m_usedFactories.remove(factory);
00054                 m_polledFactories.insert(factory);
00055             } else {
00056                 kWarning() << "Missing factory for player" << player->name();
00057             }
00058             emit playerDisappeared(player);
00059         }
00060     }
00061     foreach (PollingPlayerFactory* factory, m_polledFactories) {
00062         if (factory->exists()) {
00063             Player::Ptr player = factory->create();
00064             if (!player.isNull()) {
00065                 m_players.insert(player);
00066                 m_polledFactories.remove(factory);
00067                 m_usedFactories.insert(factory);
00068                 emit newPlayer(player);
00069             } else {
00070                 kWarning() << "Failed to create a player";
00071             }
00072         }
00073     }
00074     m_timer->start();
00075 }
00076 

Engines

Skip menu "Engines"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members

API Reference

Skip menu "API Reference"
  • KWin
  •   KWin Libraries
  • Libraries
  •   libkworkspace
  •   libsolidcontrol
  •   libtaskmanager
  • Plasma
  •   Animators
  •   Applets
  •   Engines
  • Solid Modules
Generated for API Reference by doxygen 1.5.7
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal