File indexing completed on 2024-04-28 15:39:41
0001 // SPDX-FileCopyrightText: 2014-2022 Jesper K. Pedersen <blackie@kde.org> 0002 // 0003 // SPDX-License-Identifier: GPL-2.0-or-later 0004 0005 #ifndef REMOTECONTROL_IMAGESTORE_H 0006 #define REMOTECONTROL_IMAGESTORE_H 0007 0008 #include "Types.h" 0009 #include <QImage> 0010 #include <QMap> 0011 #include <QMutex> 0012 #include <QObject> 0013 0014 namespace RemoteControl 0015 { 0016 class RemoteImage; 0017 0018 class ImageStore : public QObject 0019 { 0020 Q_OBJECT 0021 0022 public: 0023 static ImageStore &instance(); 0024 void updateImage(ImageId imageId, const QImage &requestImage, const QString &label, ViewType type); 0025 void requestImage(RemoteImage *client, ImageId imageId, const QSize &size, ViewType type); 0026 0027 private Q_SLOTS: 0028 void reset(); 0029 void clientDeleted(); 0030 0031 private: 0032 explicit ImageStore(); 0033 0034 using RequestType = QPair<ImageId, ViewType>; 0035 QMap<RequestType, RemoteImage *> m_requestMap; 0036 QMap<RemoteImage *, RequestType> m_reverseRequestMap; 0037 QMutex m_mutex; 0038 }; 0039 0040 } // namespace RemoteControl 0041 0042 #endif // REMOTECONTROL_IMAGESTORE_H