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() {
style::main_palette::reset();
style::main_palette::reset(ColorizerForTheme(QString()));
saveAdjustableColors();
saveForRevert();

View file

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

View file

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

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