File indexing completed on 2024-04-28 15:39:42

0001 // SPDX-FileCopyrightText: 2014-2022 Jesper K. Pedersen <blackie@kde.org>
0002 //
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004 
0005 #ifndef REMOTEIMAGE_H
0006 #define REMOTEIMAGE_H
0007 
0008 #include "Types.h"
0009 #include <QImage>
0010 #include <QQuickPaintedItem>
0011 
0012 namespace RemoteControl
0013 {
0014 
0015 class RemoteImage : public QQuickPaintedItem
0016 {
0017     Q_OBJECT
0018     Q_PROPERTY(int imageId READ imageId WRITE setImageId NOTIFY imageIdChanged)
0019     Q_PROPERTY(RemoteControl::Types::ViewType type MEMBER m_type NOTIFY typeChanged)
0020     Q_PROPERTY(QString label MEMBER m_label NOTIFY labelChanged)
0021 
0022 public:
0023     explicit RemoteImage(QQuickItem *parent = 0);
0024     void paint(QPainter *painter) override;
0025     int imageId() const;
0026     QSize size() const;
0027     void setLabel(const QString &label);
0028     void setImage(const QImage &image);
0029 
0030 public Q_SLOTS:
0031     void setImageId(int imageId);
0032     void loadFullSize();
0033 
0034 protected:
0035     void componentComplete();
0036 
0037 private Q_SLOTS:
0038     void requestImage();
0039 
0040 Q_SIGNALS:
0041     void imageIdChanged();
0042     void typeChanged();
0043     void labelChanged();
0044     void sourceSizeChanged();
0045 
0046 private:
0047     int m_imageId;
0048     ViewType m_type;
0049     QString m_label;
0050     QImage m_image;
0051     bool m_hasFullSizedImage = false;
0052 };
0053 
0054 }
0055 
0056 #endif // REMOTEIMAGE_H