117 lines
4.7 KiB
C++
117 lines
4.7 KiB
C++
/******************************************************************************
|
|
* 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"
|
|
|
|
static const QString materialLightSkinName = QStringLiteral( "materialLight" );
|
|
static const QString materialDarkSkinName = QStringLiteral( "materialDark" );
|
|
|
|
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
|
|
{
|
|
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 );
|
|
|
|
return new QskMaterialSkin( pal );
|
|
}
|
|
|
|
if ( QString::compare( skinName, materialDarkSkinName, Qt::CaseInsensitive ) == 0 )
|
|
{
|
|
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 );
|
|
}
|
|
|
|
return nullptr;
|
|
}
|
|
|
|
#include "moc_QskMaterialSkinFactory.cpp"
|