@@ -16,46 +16,25 @@
17#include "MirSurfaceItem.h"
17#include "MirSurfaceItem.h"
19−#include <QQmlEngine>
19+#include <QPainter>
20−#include <QQmlComponent>
21−#include <QQmlContext>
24MirSurfaceItem::MirSurfaceItem(const QString& name,
21MirSurfaceItem::MirSurfaceItem(const QString& name,
25 MirSurfaceItem::Type type,
22 MirSurfaceItem::Type type,
26 MirSurfaceItem::State state,
23 MirSurfaceItem::State state,
27− const QString& imageQml,
24+ const QUrl& screenshot,
28 QQuickItem *parent)
25 QQuickItem *parent)
29− : QQuickItem(parent)
26+ : QQuickPaintedItem(parent)
30 , m_name(name)
27 , m_name(name)
31 , m_type(type)
28 , m_type(type)
32 , m_state(state)
29 , m_state(state)
33− , m_imageQml(imageQml)
30+ , m_img(screenshot.isLocalFile() ? screenshot.toLocalFile() : screenshot.toString())
34− , m_imageComponent(nullptr)
35− , m_imageItem(nullptr)
32+ setFillColor(Qt::white);
39−void MirSurfaceItem::itemChange(ItemChange change, const ItemChangeData & value)
35+void MirSurfaceItem::paint(QPainter * painter)
41− QQuickItem::itemChange(change, value);
37+ if (!m_img.isNull()) {
42−
38+ painter->drawImage(contentsBoundingRect(), m_img, QRect(QPoint(0,0), m_img.size()));
44− if (change == QQuickItem::ItemParentHasChanged) {
49−void MirSurfaceItem::createImage()
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());
58− m_imageItem = qobject_cast<QQuickItem *>(m_imageComponent->create());
59− if (m_imageItem) m_imageItem->setParentItem(this);