#include #include #include "watch.h" #include "graphicswatchlet.h" using namespace sowatch; GraphicsWatchlet::GraphicsWatchlet(WatchServer* server, const QString& id) : Watchlet(server, id), _scene(0), _damaged() { } QGraphicsScene* GraphicsWatchlet::scene() { return _scene; } void GraphicsWatchlet::setScene(QGraphicsScene *scene) { if (_scene) { disconnect(this, SLOT(sceneChanged(QList))); } _scene = scene; if (_scene) { connect(_scene, SIGNAL(changed(QList)), this, SLOT(sceneChanged(QList))); } } void GraphicsWatchlet::sceneChanged(const QList ®ion) { foreach(const QRectF& r, region) { _damaged += r.toRect(); } if (!_damaged.isEmpty() && !watch()->busy()) { const QVector rects = _damaged.rects(); QPainter p(watch()); foreach(const QRect& r, rects) { _scene->render(&p, r, r, Qt::IgnoreAspectRatio); } _damaged = QRegion(); } }