/* * Squawk messenger. * Copyright (C) 2019 Yury Gubich * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once #include "enums.h" #include "message.h" #include "exception.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Shared { class Global { public: struct FileInfo { enum class Preview { none, picture, animation }; QString path; QString name; QSize size; QMimeType mime; Preview preview; }; Global(); static Global* getInstance(); static QString getName(Availability av); static QString getName(ConnectionState cs); static QString getName(SubscriptionState ss); static QString getName(Affiliation af); static QString getName(Role rl); static QString getName(Message::State rl); static QString getName(AccountPassword ap); static QString getName(TrustLevel tl); static QString getName(EncryptionProtocol ep); static QString getDescription(AccountPassword ap); const std::deque availability; const std::deque connectionState; const std::deque subscriptionState; const std::deque affiliation; const std::deque role; const std::deque messageState; const std::deque accountPassword; const std::deque trustLevel; const std::deque encryptionProtocols; const std::deque accountPasswordDescription; const QString defaultSystemStyle; const QPalette defaultSystemPalette; static bool supported(const QString& pluginName); static void setSupported(const QString& pluginName, bool support); static const std::set supportedImagesExts; static FileInfo getFileInfo(const QString& path); static void highlightInFileManager(const QString& path); static QIcon createThemePreview(const QString& path); static QString getColorSchemeName(const QString& path); static void setTheme(const QString& path); static void setStyle(const QString& style); const bool omemoSupport; QFont defaultFont; QFont monospaceFont; QFont smallFont; QFont headerFont; QFont titleFont; QFontMetrics defaultFontMetrics; QFontMetrics monospaceMetrics; QFontMetrics smallFontMetrics; QFontMetrics headerFontMetrics; QFontMetrics titleFontMetrics; template static T fromInt(int src); template static T fromInt(unsigned int src); class EnumOutOfRange: public Utils::Exception { public: EnumOutOfRange(const std::string& p_name):Exception(), name(p_name) {} std::string getMessage() const{ return "An attempt to get enum " + name + " from integer out of range of that enum"; } private: std::string name; }; private: static Global* instance; std::map optionalFeatures; std::map fileCache; #ifdef WITH_KIO static QLibrary openFileManagerWindowJob; typedef void (*HighlightInFileManager)(const QUrl &); static HighlightInFileManager hfm; #endif #ifdef WITH_KCONFIG static QLibrary colorSchemeTools; typedef QIcon* (*CreatePreview)(const QString&); typedef void (*DeletePreview)(QIcon*); typedef void (*ColorSchemeName)(const QString&, QString&); typedef void (*CreatePalette)(const QString&, QPalette&); static CreatePreview createPreview; static DeletePreview deletePreview; static ColorSchemeName colorSchemeName; static CreatePalette createPalette; #endif }; }