Support colorizing of the default palette.

This commit is contained in:
John Preston 2021-09-02 20:48:12 +03:00
parent 2554aaf3c0
commit 444f21fd7e
4 changed files with 33 additions and 15 deletions

View file

@ -1036,7 +1036,7 @@ void ChatBackground::setTestingTheme(Instance &&theme) {
} }
void ChatBackground::setTestingDefaultTheme() { void ChatBackground::setTestingDefaultTheme() {
style::main_palette::reset(); style::main_palette::reset(ColorizerForTheme(QString()));
saveAdjustableColors(); saveAdjustableColors();
saveForRevert(); saveForRevert();

View file

@ -98,6 +98,9 @@ style::colorizer ColorizerFrom(
&result.now.saturation, &result.now.saturation,
&result.now.value); &result.now.value);
switch (scheme.type) { switch (scheme.type) {
case EmbeddedType::Default:
result.lightnessMax = 160;
break;
case EmbeddedType::DayBlue: case EmbeddedType::DayBlue:
result.lightnessMax = 160; result.lightnessMax = 160;
break; break;
@ -149,7 +152,7 @@ style::colorizer ColorizerFrom(
} }
style::colorizer ColorizerForTheme(const QString &absolutePath) { style::colorizer ColorizerForTheme(const QString &absolutePath) {
if (absolutePath.isEmpty() || !IsEmbeddedTheme(absolutePath)) { if (!IsEmbeddedTheme(absolutePath)) {
return {}; return {};
} }
const auto schemes = EmbeddedThemes(); const auto schemes = EmbeddedThemes();
@ -195,7 +198,8 @@ std::vector<EmbeddedScheme> EmbeddedThemes() {
qColor("eaffdc"), qColor("eaffdc"),
qColor("ffffff"), qColor("ffffff"),
tr::lng_settings_theme_classic, tr::lng_settings_theme_classic,
QString() QString(),
qColor("40a7e3")
}, },
EmbeddedScheme{ EmbeddedScheme{
EmbeddedType::DayBlue, EmbeddedType::DayBlue,
@ -250,7 +254,16 @@ std::vector<QColor> DefaultAccentColors(EmbeddedType type) {
qColor("dea922"), qColor("dea922"),
}; };
case EmbeddedType::Default: case EmbeddedType::Default:
return {}; return {
qColor("45bce7"),
qColor("52b440"),
qColor("d46c99"),
qColor("df8a49"),
qColor("9978c8"),
qColor("c55245"),
qColor("687b98"),
qColor("dea922"),
};
case EmbeddedType::Night: case EmbeddedType::Night:
return { return {
qColor("58bfe8"), qColor("58bfe8"),
@ -323,6 +336,7 @@ bool AccentColors::setFromSerialized(const QByteArray &serialized) {
const auto color = Serialize::readColor(stream); const auto color = Serialize::readColor(stream);
const auto uncheckedType = static_cast<EmbeddedType>(type); const auto uncheckedType = static_cast<EmbeddedType>(type);
switch (uncheckedType) { switch (uncheckedType) {
case EmbeddedType::Default:
case EmbeddedType::DayBlue: case EmbeddedType::DayBlue:
case EmbeddedType::Night: case EmbeddedType::Night:
case EmbeddedType::NightGreen: case EmbeddedType::NightGreen:

View file

@ -81,26 +81,30 @@ constexpr auto kMaxChatEntryHistorySize = 50;
std::optional<QColor> accent) { std::optional<QColor> accent) {
return [=](style::palette &palette) { return [=](style::palette &palette) {
using namespace Theme; using namespace Theme;
palette.finalize(); const auto &embedded = EmbeddedThemes();
if (dark) { const auto i = ranges::find(
const auto &embedded = EmbeddedThemes(); embedded,
const auto i = ranges::find( dark ? EmbeddedType::Night : EmbeddedType::Default,
embedded, &EmbeddedScheme::type);
EmbeddedType::Night, Assert(i != end(embedded));
&EmbeddedScheme::type); const auto colorizer = accent
Assert(i != end(embedded)); ? ColorizerFrom(*i, *accent)
: style::colorizer();
if (dark) {
auto instance = Instance(); auto instance = Instance();
const auto loaded = LoadFromFile( const auto loaded = LoadFromFile(
i->path, i->path,
&instance, &instance,
nullptr, nullptr,
nullptr, nullptr,
accent ? ColorizerFrom(*i, *accent) : style::colorizer()); colorizer);
Assert(loaded); Assert(loaded);
palette.finalize();
palette = instance.palette; palette = instance.palette;
} else { } else {
// #TODO themes apply accent color to classic theme palette.finalize(colorizer);
} }
}; };
} }

@ -1 +1 @@
Subproject commit cc5ebf21e747802e60941083da0e0d7d1bfbb2aa Subproject commit 1180d13a5c654b517901d6bdab030f17ff314ff6