syncthingtray/model/syncthingicons.h

135 lines
3.3 KiB
C
Raw Normal View History

2017-02-20 18:03:20 +01:00
#ifndef DATA_SYNCTHINGICONS_H
#define DATA_SYNCTHINGICONS_H
#include "./global.h"
#include <QIcon>
2017-05-01 03:34:43 +02:00
#include <QSize>
2017-02-20 18:03:20 +01:00
QT_FORWARD_DECLARE_CLASS(QColor)
2017-02-20 18:03:20 +01:00
namespace Data {
enum class StatusEmblem {
None,
Scanning,
Synchronizing,
Alert,
Paused,
Complete,
Add,
};
struct GradientColor {
QString start;
QString end;
};
QByteArray LIB_SYNCTHING_MODEL_EXPORT makeSyncthingIcon(const GradientColor &gradientColor, StatusEmblem statusEmblem);
QPixmap LIB_SYNCTHING_MODEL_EXPORT renderSvgImage(const QString &path, const QSize &size = QSize(128, 128), int margin = 0);
QPixmap LIB_SYNCTHING_MODEL_EXPORT renderSvgImage(const QByteArray &contents, const QSize &size = QSize(128, 128), int margin = 0);
QByteArray LIB_SYNCTHING_MODEL_EXPORT loadFontAwesomeIcon(const QString &iconName, const QColor &color, bool solid = true);
struct StatusIconSettings {
StatusIconSettings();
GradientColor defaultColor;
GradientColor errorColor;
GradientColor warningColor;
GradientColor idleColor;
GradientColor disconnectedColor;
};
2017-05-01 03:34:43 +02:00
struct StatusIcons {
StatusIcons(const StatusIconSettings &settings = StatusIconSettings());
2017-02-20 18:03:20 +01:00
QIcon disconnected;
QIcon idling;
QIcon scanninig;
QIcon notify;
QIcon pause;
QIcon sync;
2018-03-18 03:09:07 +01:00
QIcon syncComplete;
2017-02-20 18:03:20 +01:00
QIcon error;
QIcon errorSync;
2018-05-01 22:24:41 +02:00
QIcon newItem;
2017-02-20 18:03:20 +01:00
};
struct FontAwesomeIcons {
FontAwesomeIcons(const QColor &color, const QSize &size, int margin);
QIcon hashtag;
QIcon folderOpen;
QIcon globe;
QIcon home;
QIcon shareAlt;
QIcon refresh;
QIcon clock;
QIcon exchangeAlt;
QIcon exclamationTriangle;
QIcon cogs;
QIcon link;
QIcon eye;
QIcon fileArchive;
QIcon folder;
QIcon certificate;
QIcon networkWired;
QIcon cloudDownloadAlt;
QIcon cloudUploadAlt;
QIcon tag;
};
class LIB_SYNCTHING_MODEL_EXPORT IconManager {
public:
static IconManager &instance(const StatusIconSettings *settingsForFirstTimeSetup = nullptr);
void applySettings(const StatusIconSettings &settings);
const StatusIcons &statusIcons() const;
const FontAwesomeIcons &fontAwesomeIconsForLightTheme() const;
const FontAwesomeIcons &fontAwesomeIconsForDarkTheme() const;
private:
IconManager(const StatusIconSettings *settings = nullptr);
StatusIcons m_statusIcons;
FontAwesomeIcons m_fontAwesomeIconsForLightTheme;
FontAwesomeIcons m_fontAwesomeIconsForDarkTheme;
};
inline void IconManager::applySettings(const StatusIconSettings &settings)
{
m_statusIcons = StatusIcons(settings);
}
inline const StatusIcons &IconManager::statusIcons() const
{
return m_statusIcons;
}
inline const FontAwesomeIcons &IconManager::fontAwesomeIconsForLightTheme() const
{
return m_fontAwesomeIconsForLightTheme;
}
inline const FontAwesomeIcons &IconManager::fontAwesomeIconsForDarkTheme() const
{
return m_fontAwesomeIconsForDarkTheme;
}
inline const StatusIcons &statusIcons()
{
return IconManager::instance().statusIcons();
}
inline const FontAwesomeIcons &fontAwesomeIconsForLightTheme()
{
return IconManager::instance().fontAwesomeIconsForLightTheme();
}
inline const FontAwesomeIcons &fontAwesomeIconsForDarkTheme()
{
return IconManager::instance().fontAwesomeIconsForDarkTheme();
}
2017-02-20 18:03:20 +01:00
} // namespace Data
#endif // DATA_SYNCTHINGICONS_H