summary refs log tree commit diff
path: root/src/JdenticonProvider.h
diff options
context:
space:
mode:
authorLoren Burkholder <computersemiexpert@outlook.com>2020-12-25 09:14:00 -0500
committerLoren Burkholder <computersemiexpert@outlook.com>2021-09-11 19:35:31 -0400
commitd2e193ff78c491f7108476b00340aea97f4feed3 (patch)
tree18fe17ffd6f1ad667b54fbc09d424658b25fb54c /src/JdenticonProvider.h
parentMerge pull request #722 from Thulinma/noHtmlFixes (diff)
downloadnheko-d2e193ff78c491f7108476b00340aea97f4feed3.tar.xz
Add jdenticon support
Diffstat (limited to 'src/JdenticonProvider.h')
-rw-r--r--src/JdenticonProvider.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/JdenticonProvider.h b/src/JdenticonProvider.h
new file mode 100644

index 00000000..053842bb --- /dev/null +++ b/src/JdenticonProvider.h
@@ -0,0 +1,59 @@ +#pragma once + +#include <QImage> +#include <QQuickAsyncImageProvider> +#include <QQuickImageResponse> +#include <QThreadPool> + +#include <mtx/common.hpp> + +#include <boost/optional.hpp> + +#include "jdenticoninterface.h" + +namespace Jdenticon { +JdenticonInterface * +getJdenticonInterface(); +} + +class JdenticonResponse + : public QQuickImageResponse + , public QRunnable +{ +public: + JdenticonResponse(const QString &key, const QSize &requestedSize); + + QQuickTextureFactory *textureFactory() const override + { + return QQuickTextureFactory::textureFactoryForImage(m_pixmap.toImage()); + } + + void run() override; + + QString m_key; + QSize m_requestedSize; + QPixmap m_pixmap; + JdenticonInterface *jdenticonInterface_ = nullptr; +}; + +class JdenticonProvider + : public QObject + , public QQuickAsyncImageProvider +{ + Q_OBJECT + +public: + static bool isAvailable() { return Jdenticon::getJdenticonInterface() != nullptr; } + +public slots: + QQuickImageResponse *requestImageResponse(const QString &key, + const QSize &requestedSize) override + { + JdenticonResponse *response = new JdenticonResponse(key, requestedSize); + pool.start(response); + return response; + } + +private: + QThreadPool pool; +};