mirror of
https://github.com/QuasarApp/QtAndroidTools.git
synced 2025-04-29 22:44:31 +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
QtAndroidTools
@ -72,12 +72,49 @@
|
||||
#endif
|
||||
#include "QtAndroidTools.h"
|
||||
|
||||
QtAndroidTools *QtAndroidTools::m_pInstance = nullptr;
|
||||
|
||||
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()
|
||||
{
|
||||
qmlRegisterSingletonType<QtAndroidTools>("QtAndroidTools", 1, 0, "QtAndroidTools", &QtAndroidTools::qmlInstance);
|
||||
#ifdef QTAT_APP_PERMISSIONS
|
||||
qmlRegisterSingletonType<QAndroidAppPermissions>("QtAndroidTools", 1, 0, "QtAndroidAppPermissions", &QAndroidAppPermissions::qmlInstance);
|
||||
#endif
|
||||
|
@ -23,10 +23,56 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
class QtAndroidTools
|
||||
{
|
||||
public:
|
||||
explicit QtAndroidTools();
|
||||
#include <QQuickImageProvider>
|
||||
#include <QtAndroidExtras>
|
||||
#include <QQmlEngine>
|
||||
#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();
|
||||
|
||||
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