2021-03-05 02:35:15 +03:00
|
|
|
// SPDX-FileCopyrightText: 2021 Nheko Contributors
|
|
|
|
//
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
2017-05-16 21:46:45 +03:00
|
|
|
#pragma once
|
2017-04-06 02:06:42 +03:00
|
|
|
|
|
|
|
#include <QColor>
|
|
|
|
#include <QHash>
|
|
|
|
#include <QObject>
|
|
|
|
|
2017-10-15 22:08:51 +03:00
|
|
|
namespace ui {
|
|
|
|
enum class AvatarType
|
2017-04-06 02:06:42 +03:00
|
|
|
{
|
2017-10-15 22:08:51 +03:00
|
|
|
Image,
|
|
|
|
Letter
|
|
|
|
};
|
2017-04-06 02:06:42 +03:00
|
|
|
|
|
|
|
// Default font size.
|
|
|
|
const int FontSize = 16;
|
|
|
|
|
|
|
|
// Default avatar size. Width and height.
|
|
|
|
const int AvatarSize = 40;
|
|
|
|
|
2017-10-15 22:08:51 +03:00
|
|
|
enum class ButtonPreset
|
|
|
|
{
|
|
|
|
FlatPreset,
|
|
|
|
CheckablePreset
|
|
|
|
};
|
2017-04-06 02:06:42 +03:00
|
|
|
|
2017-10-15 22:08:51 +03:00
|
|
|
enum class RippleStyle
|
|
|
|
{
|
|
|
|
CenteredRipple,
|
|
|
|
PositionedRipple,
|
|
|
|
NoRipple
|
|
|
|
};
|
2017-04-06 02:06:42 +03:00
|
|
|
|
2017-10-15 22:08:51 +03:00
|
|
|
enum class OverlayStyle
|
|
|
|
{
|
|
|
|
NoOverlay,
|
|
|
|
TintedOverlay,
|
|
|
|
GrayOverlay
|
|
|
|
};
|
2017-04-06 02:06:42 +03:00
|
|
|
|
2017-10-15 22:08:51 +03:00
|
|
|
enum class Role
|
|
|
|
{
|
|
|
|
Default,
|
|
|
|
Primary,
|
|
|
|
Secondary
|
|
|
|
};
|
2017-04-06 02:06:42 +03:00
|
|
|
|
2017-10-15 22:08:51 +03:00
|
|
|
enum class ButtonIconPlacement
|
|
|
|
{
|
|
|
|
LeftIcon,
|
|
|
|
RightIcon
|
|
|
|
};
|
2017-04-06 02:06:42 +03:00
|
|
|
|
2017-10-15 22:08:51 +03:00
|
|
|
enum class ProgressType
|
|
|
|
{
|
|
|
|
DeterminateProgress,
|
|
|
|
IndeterminateProgress
|
|
|
|
};
|
2017-04-06 02:06:42 +03:00
|
|
|
|
2017-10-15 22:08:51 +03:00
|
|
|
enum class Color
|
|
|
|
{
|
2017-09-10 12:59:21 +03:00
|
|
|
Black,
|
|
|
|
BrightWhite,
|
|
|
|
FadedWhite,
|
|
|
|
MediumWhite,
|
|
|
|
DarkGreen,
|
|
|
|
LightGreen,
|
|
|
|
BrightGreen,
|
|
|
|
Gray,
|
|
|
|
Red,
|
|
|
|
Blue,
|
|
|
|
Transparent
|
2017-04-06 02:06:42 +03:00
|
|
|
};
|
|
|
|
|
2017-08-20 13:47:22 +03:00
|
|
|
} // namespace ui
|
2017-04-06 02:06:42 +03:00
|
|
|
|
|
|
|
class Theme : public QObject
|
|
|
|
{
|
2017-09-10 12:59:21 +03:00
|
|
|
Q_OBJECT
|
2017-04-06 02:06:42 +03:00
|
|
|
public:
|
2020-02-04 06:58:43 +03:00
|
|
|
explicit Theme(QObject *parent = nullptr);
|
2017-04-06 02:06:42 +03:00
|
|
|
|
2017-09-10 12:59:21 +03:00
|
|
|
QColor getColor(const QString &key) const;
|
2017-04-06 02:06:42 +03:00
|
|
|
|
2017-09-10 12:59:21 +03:00
|
|
|
void setColor(const QString &key, const QColor &color);
|
|
|
|
void setColor(const QString &key, ui::Color color);
|
2017-04-06 02:06:42 +03:00
|
|
|
|
|
|
|
private:
|
2017-09-10 12:59:21 +03:00
|
|
|
QColor rgba(int r, int g, int b, qreal a) const;
|
2017-04-06 02:06:42 +03:00
|
|
|
|
2017-09-10 12:59:21 +03:00
|
|
|
QHash<QString, QColor> colors_;
|
2017-04-06 02:06:42 +03:00
|
|
|
};
|