qmlFrontend/themeiconprovider.cpp
author unc0rr
Wed, 01 Oct 2014 01:20:05 +0400
branchqmlfrontend
changeset 10436 084e046f6bd5
child 10440 b74a7bbe224e
permissions -rw-r--r--
flib provides theme icons, qmlFrontend shows them

#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);

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

    QImage img = QImage::fromData(buf);

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