mirror of
https://github.com/QuasarApp/QtAndroidTools.git
synced 2025-05-01 15:19:32 +00:00
Added a general purpose bytearray to image provider for show image inside qml code
This commit is contained in:
parent
dc51d9387e
commit
09e74c3559
@ -72,12 +72,49 @@
|
|||||||
#endif
|
#endif
|
||||||
#include "QtAndroidTools.h"
|
#include "QtAndroidTools.h"
|
||||||
|
|
||||||
|
QtAndroidTools *QtAndroidTools::m_pInstance = nullptr;
|
||||||
|
|
||||||
QtAndroidTools::QtAndroidTools()
|
QtAndroidTools::QtAndroidTools()
|
||||||
{
|
{
|
||||||
|
m_pInstance = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
QObject* QtAndroidTools::qmlInstance(QQmlEngine *engine, QJSEngine *scriptEngine)
|
||||||
|
{
|
||||||
|
Q_UNUSED(engine);
|
||||||
|
Q_UNUSED(scriptEngine);
|
||||||
|
|
||||||
|
QtAndroidTools *pAndroidTools = new QtAndroidTools();
|
||||||
|
engine->addImageProvider("QtAndroidTools", new PhotoImageProvider(&pAndroidTools->m_PhotoMap));
|
||||||
|
return pAndroidTools;
|
||||||
|
}
|
||||||
|
|
||||||
|
QtAndroidTools* QtAndroidTools::instance()
|
||||||
|
{
|
||||||
|
return m_pInstance;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QtAndroidTools::insertImage(const QString &Name, const QByteArray &Data)
|
||||||
|
{
|
||||||
|
QPixmap DataImage;
|
||||||
|
|
||||||
|
if(DataImage.loadFromData(Data) == true)
|
||||||
|
{
|
||||||
|
m_PhotoMap.insert(Name, DataImage);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QtAndroidTools::removeImage(const QString &Name)
|
||||||
|
{
|
||||||
|
return (m_PhotoMap.remove(Name) > 0) ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtAndroidTools::InitializeQmlTools()
|
void QtAndroidTools::InitializeQmlTools()
|
||||||
{
|
{
|
||||||
|
qmlRegisterSingletonType<QtAndroidTools>("QtAndroidTools", 1, 0, "QtAndroidTools", &QtAndroidTools::qmlInstance);
|
||||||
#ifdef QTAT_APP_PERMISSIONS
|
#ifdef QTAT_APP_PERMISSIONS
|
||||||
qmlRegisterSingletonType<QAndroidAppPermissions>("QtAndroidTools", 1, 0, "QtAndroidAppPermissions", &QAndroidAppPermissions::qmlInstance);
|
qmlRegisterSingletonType<QAndroidAppPermissions>("QtAndroidTools", 1, 0, "QtAndroidAppPermissions", &QAndroidAppPermissions::qmlInstance);
|
||||||
#endif
|
#endif
|
||||||
|
@ -23,10 +23,56 @@
|
|||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
class QtAndroidTools
|
#include <QQuickImageProvider>
|
||||||
{
|
#include <QtAndroidExtras>
|
||||||
public:
|
#include <QQmlEngine>
|
||||||
explicit QtAndroidTools();
|
#include <QPixmap>
|
||||||
|
#include <QImage>
|
||||||
|
|
||||||
|
class QtAndroidTools : public QObject
|
||||||
|
{
|
||||||
|
Q_DISABLE_COPY(QtAndroidTools)
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
class PhotoImageProvider : public QQuickImageProvider
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
PhotoImageProvider(QMap<QString, QPixmap> *pPhotoMap) : QQuickImageProvider(QQuickImageProvider::Pixmap), m_pPhotoMap(pPhotoMap) {}
|
||||||
|
|
||||||
|
QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize)
|
||||||
|
{
|
||||||
|
QMap<QString, QPixmap>::const_iterator PhotoIterator = m_pPhotoMap->find(id);
|
||||||
|
|
||||||
|
if(PhotoIterator != m_pPhotoMap->constEnd())
|
||||||
|
{
|
||||||
|
const QPixmap Photo = PhotoIterator.value();
|
||||||
|
|
||||||
|
if(size) *size = Photo.size();
|
||||||
|
|
||||||
|
if(requestedSize.width() > 0 && requestedSize.height() > 0)
|
||||||
|
return Photo.scaled(requestedSize);
|
||||||
|
else
|
||||||
|
return Photo;
|
||||||
|
}
|
||||||
|
|
||||||
|
return QPixmap();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
const QMap<QString, QPixmap> *const m_pPhotoMap;
|
||||||
|
};
|
||||||
|
|
||||||
|
QtAndroidTools();
|
||||||
|
|
||||||
|
public:
|
||||||
|
static QObject* qmlInstance(QQmlEngine *engine, QJSEngine *scriptEngine);
|
||||||
|
static QtAndroidTools* instance();
|
||||||
static void InitializeQmlTools();
|
static void InitializeQmlTools();
|
||||||
|
|
||||||
|
Q_INVOKABLE bool insertImage(const QString &Name, const QByteArray &Data);
|
||||||
|
Q_INVOKABLE bool removeImage(const QString &Name);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static QtAndroidTools *m_pInstance;
|
||||||
|
QMap<QString, QPixmap> m_PhotoMap;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user