| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /*
- This file is part of Telegram Desktop,
- the official desktop application for the Telegram messaging service.
- For license and copyright information please follow this link:
- https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
- */
- #pragma once
- namespace style {
- struct colorizer;
- } // namespace style
- namespace Window {
- namespace Theme {
- enum class EmbeddedType {
- DayBlue,
- Default,
- Night,
- NightGreen,
- };
- struct EmbeddedScheme {
- EmbeddedType type = EmbeddedType();
- QColor background;
- QColor sent;
- QColor received;
- QColor radiobuttonInactive;
- QColor radiobuttonActive;
- rpl::producer<QString> name;
- QString path;
- QColor accentColor;
- };
- class AccentColors final {
- public:
- [[nodiscard]] QByteArray serialize() const;
- bool setFromSerialized(const QByteArray &serialized);
- void set(EmbeddedType type, const QColor &value);
- void clear(EmbeddedType type);
- [[nodiscard]] std::optional<QColor> get(EmbeddedType type) const;
- private:
- base::flat_map<EmbeddedType, QColor> _data;
- };
- [[nodiscard]] style::colorizer ColorizerFrom(
- const EmbeddedScheme &scheme,
- const QColor &color);
- [[nodiscard]] style::colorizer ColorizerForTheme(const QString &absolutePath);
- void Colorize(
- EmbeddedScheme &scheme,
- const style::colorizer &colorizer);
- [[nodiscard]] std::vector<EmbeddedScheme> EmbeddedThemes();
- [[nodiscard]] std::vector<QColor> DefaultAccentColors(EmbeddedType type);
- [[nodiscard]] Fn<void(style::palette&)> PreparePaletteCallback(
- bool dark,
- std::optional<QColor> accent);
- [[nodiscard]] Fn<void(style::palette&)> PrepareCurrentPaletteCallback();
- } // namespace Theme
- } // namespace Window
|