@@ -16,46 +16,25 @@
1616
1717#include "MirSurfaceItem.h"
1818
19−#include <QQmlEngine>
20−#include <QQmlComponent>
21−#include <QQmlContext>
22−#include <QTimer>
19+#include <QPainter>
2320
2421MirSurfaceItem::MirSurfaceItem(const QString& name,
2522 MirSurfaceItem::Type type,
2623 MirSurfaceItem::State state,
27− const QString& imageQml,
24+ const QUrl& screenshot,
2825 QQuickItem *parent)
29− : QQuickItem(parent)
26+ : QQuickPaintedItem(parent)
3027 , m_name(name)
3128 , m_type(type)
3229 , m_state(state)
33− , m_imageQml(imageQml)
34− , m_imageComponent(nullptr)
35− , m_imageItem(nullptr)
30+ , m_img(screenshot.isLocalFile() ? screenshot.toLocalFile() : screenshot.toString())
3631{
32+ setFillColor(Qt::white);
3733}
3834
39−void MirSurfaceItem::itemChange(ItemChange change, const ItemChangeData & value)
35+void MirSurfaceItem::paint(QPainter * painter)
4036{
41− QQuickItem::itemChange(change, value);
42−
43− Q_UNUSED(value)
44− if (change == QQuickItem::ItemParentHasChanged) {
45− createImage();
46− }
47−}
48−
49−void MirSurfaceItem::createImage()
50−{
51− if (!m_imageComponent) {
52− QQmlContext* context = QQmlEngine::contextForObject(parentItem());
53− if (!context) return;
54− m_imageComponent = new QQmlComponent(context->engine(), this);
55− m_imageComponent->setData(m_imageQml.toUtf8(), QUrl());
56− }
57− if (!m_imageItem) {
58− m_imageItem = qobject_cast<QQuickItem *>(m_imageComponent->create());
59− if (m_imageItem) m_imageItem->setParentItem(this);
37+ if (!m_img.isNull()) {
38+ painter->drawImage(contentsBoundingRect(), m_img, QRect(QPoint(0,0), m_img.size()));
6039 }
6140}