qmlFrontend/themeiconprovider.cpp
author unc0rr
Sun, 14 Jan 2018 23:30:42 +0100
branchqmlfrontend
changeset 12892 0088bcccd19a
parent 11432 97e3e62ea5f9
permissions -rw-r--r--
Fix for freebsd

#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 = fileSize ? QImage::fromData(buf) : QImage(16, 16, QImage::Format_ARGB32);

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