qskinny/skins/material/QskMaterialSkinFactory.cpp

117 lines
4.7 KiB
C++
Raw Normal View History

/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the 3-clause BSD License
*****************************************************************************/
#include "QskMaterialSkinFactory.h"
#include "QskMaterialSkin.h"
2022-02-17 20:54:56 +00:00
static const QString materialLightSkinName = QStringLiteral( "materialLight" );
static const QString materialDarkSkinName = QStringLiteral( "materialDark" );
2018-08-03 06:15:28 +00:00
QskMaterialSkinFactory::QskMaterialSkinFactory( QObject* parent )
: QskSkinFactory( parent )
{
using Q = QskRgbPalette;
m_palettes[ Primary ] = Q::palette( Q::DefaultMaterialPrimary );
m_palettes[ Secondary ] = Q::palette( Q::DefaultMaterialSecondary );
m_palettes[ Tertiary ] = Q::palette( Q::DefaultMaterialTertiary );
m_palettes[ Error ] = Q::palette( Q::DefaultMaterialError );
m_palettes[ Neutral ] = Q::palette( Q::DefaultMaterialNeutral );
m_palettes[ NeutralVariant ] = Q::palette( Q::DefaultMaterialNeutralVariant );
}
QskMaterialSkinFactory::~QskMaterialSkinFactory()
{
}
QStringList QskMaterialSkinFactory::skinNames() const
{
2022-02-17 20:54:56 +00:00
return { materialLightSkinName, materialDarkSkinName };
}
QskSkin* QskMaterialSkinFactory::createSkin( const QString& skinName )
{
if ( QString::compare( skinName, materialLightSkinName, Qt::CaseInsensitive ) == 0 )
{
// ### Move this to QskMaterialSkin?
QskMaterialPalette pal;
using Q = QskRgbPalette;
pal.primary = m_palettes[ Primary ].rgb( Q::W40 );
pal.onPrimary = m_palettes[ Primary ].rgb( Q::W100 );
pal.primaryContainer = m_palettes[ Primary ].rgb( Q::W90 );
pal.onPrimaryContainer = m_palettes[ Primary ].rgb( Q::W10 );
pal.primary = m_palettes[ Secondary ].rgb( Q::W40 );
pal.onSecondary = m_palettes[ Secondary ].rgb( Q::W100 );
pal.secondaryContainer = m_palettes[ Secondary ].rgb( Q::W90 );
pal.onSecondaryContainer = m_palettes[ Secondary ].rgb( Q::W10 );
pal.tertiary = m_palettes[ Tertiary ].rgb( Q::W40 );
pal.onTertiary = m_palettes[ Tertiary ].rgb( Q::W100 );
pal.tertiaryContainer = m_palettes[ Tertiary ].rgb( Q::W90 );
pal.onTertiaryContainer = m_palettes[ Tertiary ].rgb( Q::W10 );
pal.error = m_palettes[ Error ].rgb( Q::W40 );
pal.onError = m_palettes[ Error ].rgb( Q::W100 );
pal.errorContainer = m_palettes[ Error ].rgb( Q::W90 );
pal.onErrorContainer = m_palettes[ Error ].rgb( Q::W10 );
pal.background = m_palettes[ Neutral ].rgb( Q::W99 );
pal.onBackground = m_palettes[ Neutral ].rgb( Q::W10 );
pal.surface = m_palettes[ Neutral ].rgb( Q::W99 );
pal.onSurface = m_palettes[ Neutral ].rgb( Q::W10 );
pal.surfaceVariant = m_palettes[ NeutralVariant ].rgb( Q::W90 );
pal.onSurfaceVariant = m_palettes[ NeutralVariant ].rgb( Q::W30 );
pal.outline = m_palettes[ NeutralVariant ].rgb( Q::W50 );
2022-02-17 20:54:56 +00:00
return new QskMaterialSkin( pal );
}
if ( QString::compare( skinName, materialDarkSkinName, Qt::CaseInsensitive ) == 0 )
2022-02-17 20:54:56 +00:00
{
QskMaterialPalette pal;
using Q = QskRgbPalette;
pal.primary = m_palettes[ Primary ].rgb( Q::W80 );
pal.onPrimary = m_palettes[ Primary ].rgb( Q::W20 );
pal.primaryContainer = m_palettes[ Primary ].rgb( Q::W30 );
pal.onPrimaryContainer = m_palettes[ Primary ].rgb( Q::W90 );
pal.primary = m_palettes[ Secondary ].rgb( Q::W80 );
pal.onSecondary = m_palettes[ Secondary ].rgb( Q::W20 );
pal.secondaryContainer = m_palettes[ Secondary ].rgb( Q::W30 );
pal.onSecondaryContainer = m_palettes[ Secondary ].rgb( Q::W90 );
pal.tertiary = m_palettes[ Tertiary ].rgb( Q::W80 );
pal.onTertiary = m_palettes[ Tertiary ].rgb( Q::W20 );
pal.tertiaryContainer = m_palettes[ Tertiary ].rgb( Q::W30 );
pal.onTertiaryContainer = m_palettes[ Tertiary ].rgb( Q::W90 );
pal.error = m_palettes[ Error ].rgb( Q::W80 );
pal.onError = m_palettes[ Error ].rgb( Q::W20 );
pal.errorContainer = m_palettes[ Error ].rgb( Q::W30 );
pal.onErrorContainer = m_palettes[ Error ].rgb( Q::W90 );
pal.background = m_palettes[ Neutral ].rgb( Q::W10 );
pal.onBackground = m_palettes[ Neutral ].rgb( Q::W90 );
pal.surface = m_palettes[ Neutral ].rgb( Q::W10 );
pal.onSurface = m_palettes[ Neutral ].rgb( Q::W80 );
pal.surfaceVariant = m_palettes[ NeutralVariant ].rgb( Q::W30 );
pal.onSurfaceVariant = m_palettes[ NeutralVariant ].rgb( Q::W80 );
pal.outline = m_palettes[ NeutralVariant ].rgb( Q::W60 );
return new QskMaterialSkin( pal );
2022-02-17 20:54:56 +00:00
}
return nullptr;
}
#include "moc_QskMaterialSkinFactory.cpp"