graphic provider handling fixed. graphic URL namespace clashes fixed

( provider for the gallery icons was loaded by a provider that was only
available with M3 )
This commit is contained in:
Uwe Rathmann 2023-03-09 11:11:36 +01:00
parent 9635c13181
commit 10af58137f
5 changed files with 23 additions and 39 deletions

View File

@ -1,5 +1,5 @@
<RCC>
<qresource>
<qresource prefix="/gallery">
<file>icons/qvg/airport_shuttle.qvg</file>
<file>icons/qvg/flight.qvg</file>
<file>icons/qvg/local_pizza.qvg</file>

View File

@ -31,12 +31,28 @@
#include <QskAnimationHint.h>
#include <QskBoxBorderMetrics.h>
#include <QskBoxShapeMetrics.h>
#include <QskGraphicProvider.h>
#include <QskGraphicIO.h>
#include <QskGraphic.h>
#include <QskSetup.h>
#include <QGuiApplication>
namespace
{
class GraphicProvider : public QskGraphicProvider
{
protected:
const QskGraphic* loadGraphic( const QString& id ) const override
{
const QString path = QStringLiteral( ":gallery/icons/qvg/" )
+ id + QStringLiteral( ".qvg" );
const auto graphic = QskGraphicIO::read( path );
return graphic.isNull() ? nullptr : new QskGraphic( graphic );
}
};
class TabView : public QskTabView
{
public:
@ -234,6 +250,7 @@ int main( int argc, char* argv[] )
QskObjectCounter counter( true );
#endif
Qsk::addGraphicProvider( QString(), new GraphicProvider() );
Qsk::addGraphicProvider( "shapes", new SkinnyShapeProvider() );
// dialogs in faked windows -> QskSubWindow

View File

@ -16,7 +16,6 @@
#include <QskFunctions.h>
#include <QskGraphic.h>
#include <QskGraphicIO.h>
#include <QskGraphicProvider.h>
#include <QskInputPanelBox.h>
#include <QskListView.h>
#include <QskMenu.h>
@ -110,15 +109,12 @@ namespace
void setupTextInput();
void setupTextLabel();
QskGraphic symbol( const char* url ) const
QskGraphic symbol( const char* name ) const
{
const auto provider = m_skin->graphicProvider( {} );
const QString path = QStringLiteral( ":m3/icons/qvg/" )
+ name + QStringLiteral( ".qvg" );
auto graphic = provider->requestGraphic( url );
if ( graphic )
return *graphic;
return QskGraphic();
return QskGraphicIO::read( path );
}
void setStandardSymbol( QskAspect aspect,
@ -1319,24 +1315,9 @@ QskMaterial3Theme::QskMaterial3Theme( Lightness lightness,
shapeExtraSmallTop = QskBoxShapeMetrics( 4_dp, 4_dp, 0, 0 );
}
QskMaterial3GraphicProvder::QskMaterial3GraphicProvder( QObject* parent )
: Inherited( parent )
{
}
const QskGraphic* QskMaterial3GraphicProvder::loadGraphic( const QString& id ) const
{
const QString name = QString( ":/icons/qvg/%1.qvg" ).arg( id );
const QskGraphic graphic = QskGraphicIO::read( name );
return graphic.isNull() ? nullptr : new QskGraphic( graphic );
}
QskMaterial3Skin::QskMaterial3Skin( const QskMaterial3Theme& palette, QObject* parent )
: Inherited( parent )
{
addGraphicProvider( {}, new QskMaterial3GraphicProvder() );
setupFonts();
setupGraphicFilters( palette );

View File

@ -9,7 +9,6 @@
#include "QskMaterial3Global.h"
#include <QskBoxShapeMetrics.h>
#include <QskGraphicProvider.h>
#include <QskHctColor.h>
#include <QskSkin.h>
#include <QskShadowMetrics.h>
@ -104,19 +103,6 @@ class QSK_MATERIAL3_EXPORT QskMaterial3Theme
std::array< QskHctColor, NumPaletteTypes > m_palettes;
};
class QSK_MATERIAL3_EXPORT QskMaterial3GraphicProvder : public QskGraphicProvider
{
Q_OBJECT
using Inherited = QskGraphicProvider;
public:
QskMaterial3GraphicProvder( QObject* parent = nullptr );
protected:
virtual const QskGraphic* loadGraphic( const QString& id ) const override;
};
class QSK_MATERIAL3_EXPORT QskMaterial3Skin : public QskSkin
{
Q_OBJECT

View File

@ -1,5 +1,5 @@
<RCC>
<qresource>
<qresource prefix="/m3">
<file>icons/qvg/check_small.qvg</file>
<file>icons/qvg/combo-box-arrow-closed.qvg</file>
<file>icons/qvg/combo-box-arrow-open.qvg</file>