mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-18 11:58:11 +00:00
feat(App): use a image provider for qrc images
This commit is contained in:
parent
8572347ba6
commit
323dcb1663
5 changed files with 105 additions and 1 deletions
|
|
@ -97,6 +97,7 @@ set(SOURCES
|
|||
src/app/logger/Logger.cpp
|
||||
src/app/paths/Paths.cpp
|
||||
src/app/providers/AvatarProvider.cpp
|
||||
src/app/providers/ImageProvider.cpp
|
||||
src/app/providers/ThumbnailProvider.cpp
|
||||
src/app/translator/DefaultTranslator.cpp
|
||||
src/components/assistant/AssistantModel.cpp
|
||||
|
|
@ -149,6 +150,7 @@ set(HEADERS
|
|||
src/app/logger/Logger.hpp
|
||||
src/app/paths/Paths.hpp
|
||||
src/app/providers/AvatarProvider.hpp
|
||||
src/app/providers/ImageProvider.hpp
|
||||
src/app/providers/ThumbnailProvider.hpp
|
||||
src/app/translator/DefaultTranslator.hpp
|
||||
src/components/assistant/AssistantModel.hpp
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
#include "logger/Logger.hpp"
|
||||
#include "paths/Paths.hpp"
|
||||
#include "providers/AvatarProvider.hpp"
|
||||
#include "providers/ImageProvider.hpp"
|
||||
#include "providers/ThumbnailProvider.hpp"
|
||||
#include "translator/DefaultTranslator.hpp"
|
||||
|
||||
|
|
@ -172,6 +173,7 @@ void App::initContentApp () {
|
|||
|
||||
// Provide avatars/thumbnails providers.
|
||||
mEngine->addImageProvider(AvatarProvider::PROVIDER_ID, new AvatarProvider());
|
||||
mEngine->addImageProvider(ImageProvider::PROVIDER_ID, new ImageProvider());
|
||||
mEngine->addImageProvider(ThumbnailProvider::PROVIDER_ID, new ThumbnailProvider());
|
||||
|
||||
registerTypes();
|
||||
|
|
|
|||
58
src/app/providers/ImageProvider.cpp
Normal file
58
src/app/providers/ImageProvider.cpp
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* ImageProvider.cpp
|
||||
* Copyright (C) 2017 Belledonne Communications, Grenoble, France
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* Created on: June 19, 2017
|
||||
* Author: Ronan Abhamon
|
||||
*/
|
||||
|
||||
#include <QImage>
|
||||
#include <QPainter>
|
||||
#include <QSvgRenderer>
|
||||
|
||||
#include "ImageProvider.hpp"
|
||||
|
||||
// =============================================================================
|
||||
|
||||
const QString ImageProvider::PROVIDER_ID = "internal";
|
||||
|
||||
ImageProvider::ImageProvider () : QQuickImageProvider(
|
||||
QQmlImageProviderBase::Image,
|
||||
QQmlImageProviderBase::ForceAsynchronousImageLoading
|
||||
) {}
|
||||
|
||||
QImage ImageProvider::requestImage (const QString &id, QSize *, const QSize &) {
|
||||
const QString path = QStringLiteral(":/assets/images/%1").arg(id);
|
||||
|
||||
// 1. Build svg renderer.
|
||||
QSvgRenderer renderer(path);
|
||||
if (!renderer.isValid())
|
||||
return QImage(path); // Not a svg file?
|
||||
|
||||
// 2. Create en empty image.
|
||||
const QRectF viewBox = renderer.viewBoxF();
|
||||
QImage image(static_cast<int>(viewBox.width()), static_cast<int>(viewBox.height()), QImage::Format_ARGB32);
|
||||
if (image.isNull())
|
||||
return QImage(); // Memory cannot be allocated.
|
||||
image.fill(0x00000000);
|
||||
|
||||
// 3. Paint!
|
||||
QPainter painter(&image);
|
||||
renderer.render(&painter);
|
||||
|
||||
return image;
|
||||
}
|
||||
42
src/app/providers/ImageProvider.hpp
Normal file
42
src/app/providers/ImageProvider.hpp
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* ImageProvider.hpp
|
||||
* Copyright (C) 2017 Belledonne Communications, Grenoble, France
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* Created on: June 19, 2017
|
||||
* Author: Ronan Abhamon
|
||||
*/
|
||||
|
||||
#ifndef IMAGE_PROVIDER_H_
|
||||
#define IMAGE_PROVIDER_H_
|
||||
|
||||
#include <QQuickImageProvider>
|
||||
|
||||
// =============================================================================
|
||||
|
||||
class ImageProvider : public QQuickImageProvider {
|
||||
public:
|
||||
ImageProvider ();
|
||||
~ImageProvider () = default;
|
||||
|
||||
QImage requestImage (const QString &id, QSize *size, const QSize &requestedSize) override;
|
||||
|
||||
static const QString PROVIDER_ID;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
#endif // IMAGE_PROVIDER_H_
|
||||
|
|
@ -9,5 +9,5 @@ QtObject {
|
|||
property int sizeMax: 999999
|
||||
|
||||
property string imagesFormat: '.svg'
|
||||
property string imagesPath: 'qrc:/assets/images/'
|
||||
property string imagesPath: 'image://internal/'
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue