qmlFrontend/themeiconprovider.cpp
author unc0rr
Sat, 25 Apr 2015 23:46:09 +0300
branchqmlfrontend
changeset 10900 6a805e822074
parent 10440 b74a7bbe224e
child 11437 97e3e62ea5f9
permissions -rw-r--r--
Some hedgewars coding a week keeps doctor away

#include <QByteArray>
#include <QDebug>

#include "themeiconprovider.h"
#include "flib.h"

ThemeIconProvider::ThemeIconProvider()
    : QQuickImageProvider(QQuickImageProvider::Image)
{
    getThemeIcon = 0;
}

void ThemeIconProvider::setFileContentsFunction(getThemeIcon_t *f)
{
    getThemeIcon = f;
}

QImage ThemeIconProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize)
{
    Q_UNUSED(requestedSize);

    if(!getThemeIcon)
        return QImage();

    QByteArray buf;
    buf.resize(65536);

    char * bufptr = buf.data();
    uint32_t fileSize = getThemeIcon(id.toUtf8().data(), bufptr, buf.size());
    buf.truncate(fileSize);
    qDebug() << "ThemeIconProvider file size = " << fileSize;

    QImage img = QImage::fromData(buf);

    if (size)
        *size = img.size();
    return img;
}