qskinny/skins/fluent2/QskFluent2SkinFactory.cpp

88 lines
2.6 KiB
C++
Raw Normal View History

2023-06-17 10:23:34 +00:00
/******************************************************************************
* QSkinny - Copyright (C) 2023 Edelhirsch Software GmbH
* SPDX-License-Identifier: BSD-3-Clause
*****************************************************************************/
#include "QskFluent2SkinFactory.h"
#include "QskFluent2Skin.h"
2023-07-02 10:18:47 +00:00
#include "QskFluent2Theme.h"
2023-06-17 10:23:34 +00:00
static const QString fluent2SkinName = QStringLiteral( "Fluent2" );
2023-07-03 15:50:57 +00:00
namespace
{
inline constexpr QRgb rgbGray( int value )
{
return qRgba( value, value, value, 255 );
}
}
2023-06-17 10:23:34 +00:00
QskFluent2SkinFactory::QskFluent2SkinFactory( QObject* parent )
: QskSkinFactory( parent )
{
}
QskFluent2SkinFactory::~QskFluent2SkinFactory()
{
}
QVector< QskSkin::SkinInfo > QskFluent2SkinFactory::skins() const
2023-06-17 10:23:34 +00:00
{
return { qMakePair( fluent2SkinName, QskSkin::LightScheme ),
qMakePair( fluent2SkinName, QskSkin::DarkScheme ) };
2023-06-17 10:23:34 +00:00
}
QskSkin* QskFluent2SkinFactory::createSkin( QskSkin::SkinInfo info )
2023-06-17 10:23:34 +00:00
{
// default to light:
const auto colorScheme = info.second == QskSkin::UnknownScheme ? QskSkin::LightScheme : info.second;
2023-07-03 15:50:57 +00:00
struct
{
QskSkin::ColorScheme scheme;
QskFluent2Theme::BaseColors baseColors;
QskFluent2Theme::AccentColors accentColors;
QskFluent2Theme theme() const { return { scheme, baseColors, accentColors }; }
} colors[2];
switch( colorScheme )
{
case QskSkin::LightScheme:
{
colors[0].scheme = colorScheme;
colors[0].baseColors = { rgbGray( 243 ), rgbGray( 249 ), rgbGray( 238 ) };
colors[0].accentColors = { 0xff0078d4, 0xff005eb7, 0xff003d92, 0xff001968 };
colors[1].scheme = colorScheme;
colors[1].baseColors = { rgbGray( 249 ), rgbGray( 249 ), rgbGray( 238 ) };
colors[1].accentColors = colors[0].accentColors;
break;
}
case QskSkin::DarkScheme:
{
colors[0].scheme = colorScheme;
colors[0].baseColors = { rgbGray( 32 ), rgbGray( 40 ), rgbGray( 28 ) };
colors[0].accentColors = { 0xff0078d4, 0xff0093f9, 0xff60ccfe, 0xff98ecfe };
colors[1].scheme = colorScheme;
colors[1].baseColors = { rgbGray( 40 ), rgbGray( 44 ), rgbGray( 28 ) };
colors[1].accentColors = colors[0].accentColors;
break;
}
default:;
}
auto skin = new QskFluent2Skin();
skin->addTheme( QskAspect::Body, colors[0].theme() );
skin->addTheme( QskAspect::Header, colors[1].theme() );
skin->addTheme( QskAspect::Footer, colors[1].theme() );
2023-06-17 10:23:34 +00:00
2023-07-03 15:50:57 +00:00
return skin;
2023-06-17 10:23:34 +00:00
}
#include "moc_QskFluent2SkinFactory.cpp"