/* * Copyright (c) 2010-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #if defined(SWIFTEN_PLATFORM_MACOSX) #include #include #endif #if defined(SWIFTEN_PLATFORM_WINDOWS) #include #endif namespace po = boost::program_options; class QSplitter; namespace Swift { class ApplicationPathProvider; class AvatarStorage; class CapsStorage; class CertificateStorageFactory; class Dock; class EventLoop; class AccountController; class Notifier; class QtChatTabs; class QtChatWindowFactory; class QtLoginWindow; class QtMUCSearchWindowFactory; class QtSingleWindow; class QtSoundPlayer; class QtSystemTray; class QtUIFactory; class QtUserSearchWindowFactory; class SettingsProviderHierachy; class StatusCache; class StoragesFactory; class URIHandler; class XMLSettingsProvider; class QtSwift : public QObject { Q_OBJECT public: QtSwift(const po::variables_map& options); static po::options_description getOptionsDescription(); ~QtSwift(); private slots: void handleAboutToQuit(); void handleAutoUpdaterStateChanged(AutoUpdater::State updatedState); void handleWantsToAddAccount(); private: XMLSettingsProvider* loadSettingsFile(const QString& fileName); void loadEmoticonsFile(const QString& fileName, std::map& emoticons); static const std::string& updateChannelToFeed(const std::string& channel); QtLoginWindow* addAccount(); ClientOptions parseClientOptions(const std::string& optionString); void restoreAccounts(); /** * Upgrades the config from pre-multi-account to post-multi-account format (added in 5.0). */ void migrateLastLoginAccount(); private: QtEventLoop clientMainThreadCaller_; PlatformTLSFactories tlsFactories_; BoostNetworkFactories networkFactories_; QtChatWindowFactory* chatWindowFactory_; std::vector accountControllers_; std::vector systemTrays_; std::vector uiFactories_; QtSettingsProvider* qtSettings_; XMLSettingsProvider* xmlSettings_; SettingsProviderHierachy* settingsHierarchy_; QtSingleWindow* splitter_; QtSoundPlayer* soundPlayer_; Dock* dock_; URIHandler* uriHandler_; ApplicationPathProvider* applicationPathProvider_; StoragesFactory* storagesFactory_; CertificateStorageFactory* certificateStorageFactory_; AutoUpdater* autoUpdater_ = nullptr; Notifier* notifier_; StatusCache* statusCache_; PlatformIdleQuerier idleQuerier_; ActualIdleDetector idleDetector_; std::map emoticons_; bool enableAdHocCommandOnJID_ = false; bool useDelayForLatency_; #if defined(SWIFTEN_PLATFORM_MACOSX) CocoaApplication cocoaApplication_; CocoaApplicationActivateHelper cocoaApplicationActivateHelper_; #endif }; }