Material skin: Allow setting a different palette
This commit is contained in:
parent
a2d67f0438
commit
421db106da
|
@ -809,10 +809,16 @@ QskMaterialTheme::QskMaterialTheme( Lightness lightness )
|
||||||
QskMaterialTheme::QskMaterialTheme( Lightness lightness,
|
QskMaterialTheme::QskMaterialTheme( Lightness lightness,
|
||||||
std::array< QskRgbPalette, NumPaletteTypes > palettes )
|
std::array< QskRgbPalette, NumPaletteTypes > palettes )
|
||||||
: m_palettes( palettes )
|
: m_palettes( palettes )
|
||||||
|
, m_lightness( lightness )
|
||||||
|
{
|
||||||
|
initColors();
|
||||||
|
}
|
||||||
|
|
||||||
|
void QskMaterialTheme::initColors()
|
||||||
{
|
{
|
||||||
using Q = QskRgbPalette;
|
using Q = QskRgbPalette;
|
||||||
|
|
||||||
if ( lightness == Light )
|
if ( m_lightness == Light )
|
||||||
{
|
{
|
||||||
primary = m_palettes[ Primary ].rgb( Q::W40 );
|
primary = m_palettes[ Primary ].rgb( Q::W40 );
|
||||||
onPrimary = m_palettes[ Primary ].rgb( Q::W100 );
|
onPrimary = m_palettes[ Primary ].rgb( Q::W100 );
|
||||||
|
@ -843,7 +849,7 @@ QskMaterialTheme::QskMaterialTheme( Lightness lightness,
|
||||||
onSurfaceVariant = m_palettes[ NeutralVariant ].rgb( Q::W30 );
|
onSurfaceVariant = m_palettes[ NeutralVariant ].rgb( Q::W30 );
|
||||||
outline = m_palettes[ NeutralVariant ].rgb( Q::W50 );
|
outline = m_palettes[ NeutralVariant ].rgb( Q::W50 );
|
||||||
}
|
}
|
||||||
else if ( lightness == Dark )
|
else if ( m_lightness == Dark )
|
||||||
{
|
{
|
||||||
primary = m_palettes[ Primary ].rgb( Q::W80 );
|
primary = m_palettes[ Primary ].rgb( Q::W80 );
|
||||||
onPrimary = m_palettes[ Primary ].rgb( Q::W20 );
|
onPrimary = m_palettes[ Primary ].rgb( Q::W20 );
|
||||||
|
@ -876,19 +882,41 @@ QskMaterialTheme::QskMaterialTheme( Lightness lightness,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QskMaterialSkin::QskMaterialSkin( const QskMaterialTheme& palette, QObject* parent )
|
std::array< QskRgbPalette, QskMaterialTheme::NumPaletteTypes > QskMaterialTheme::palettes() const
|
||||||
|
{
|
||||||
|
return m_palettes;
|
||||||
|
}
|
||||||
|
|
||||||
|
void QskMaterialTheme::setPalette( PaletteType type, const QskRgbPalette& palette )
|
||||||
|
{
|
||||||
|
m_palettes[ type ] = palette;
|
||||||
|
initColors();
|
||||||
|
}
|
||||||
|
|
||||||
|
QskMaterialSkin::QskMaterialSkin( const QskMaterialTheme& theme, QObject* parent )
|
||||||
: Inherited( parent )
|
: Inherited( parent )
|
||||||
|
, m_theme( theme )
|
||||||
{
|
{
|
||||||
setupFonts();
|
setupFonts();
|
||||||
|
init( theme );
|
||||||
Editor editor( &hintTable(), palette );
|
|
||||||
editor.setup();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QskMaterialSkin::~QskMaterialSkin()
|
QskMaterialSkin::~QskMaterialSkin()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QskMaterialSkin::setPalette( QskMaterialTheme::PaletteType type,
|
||||||
|
const QskRgbPalette& palette )
|
||||||
|
{
|
||||||
|
m_theme.setPalette( type, palette );
|
||||||
|
}
|
||||||
|
|
||||||
|
void QskMaterialSkin::init( const QskMaterialTheme& palette )
|
||||||
|
{
|
||||||
|
Editor editor( &hintTable(), palette );
|
||||||
|
editor.setup();
|
||||||
|
}
|
||||||
|
|
||||||
void QskMaterialSkin::setupFonts()
|
void QskMaterialSkin::setupFonts()
|
||||||
{
|
{
|
||||||
Inherited::setupFonts( QStringLiteral( "Roboto" ) );
|
Inherited::setupFonts( QStringLiteral( "Roboto" ) );
|
||||||
|
|
|
@ -68,8 +68,14 @@ class QSK_MATERIAL_EXPORT QskMaterialTheme
|
||||||
const qreal pressedOpacity = 0.12;
|
const qreal pressedOpacity = 0.12;
|
||||||
const qreal draggedOpacity = 0.16;
|
const qreal draggedOpacity = 0.16;
|
||||||
|
|
||||||
|
std::array< QskRgbPalette, NumPaletteTypes > palettes() const;
|
||||||
|
void setPalette( PaletteType type, const QskRgbPalette& palette );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void initColors();
|
||||||
|
|
||||||
std::array< QskRgbPalette, NumPaletteTypes > m_palettes;
|
std::array< QskRgbPalette, NumPaletteTypes > m_palettes;
|
||||||
|
Lightness m_lightness;
|
||||||
};
|
};
|
||||||
|
|
||||||
class QSK_MATERIAL_EXPORT QskMaterialSkin : public QskSkin
|
class QSK_MATERIAL_EXPORT QskMaterialSkin : public QskSkin
|
||||||
|
@ -87,10 +93,13 @@ class QSK_MATERIAL_EXPORT QskMaterialSkin : public QskSkin
|
||||||
M3LabelLarge = QskSkin::HugeFont + 1,
|
M3LabelLarge = QskSkin::HugeFont + 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
// ### add setTheme() re-implement resetColors()
|
void setPalette( QskMaterialTheme::PaletteType, const QskRgbPalette& palette );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void init( const QskMaterialTheme& palette );
|
||||||
void setupFonts();
|
void setupFonts();
|
||||||
|
|
||||||
|
QskMaterialTheme m_theme;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue