mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-21 22:24:07 +01:00
Make an IApplication interface (#3758)
This commit is contained in:
parent
bd3d2ed82a
commit
35a7780564
2 changed files with 90 additions and 1 deletions
|
@ -46,6 +46,12 @@ namespace chatterino {
|
||||||
static std::atomic<bool> isAppInitialized{false};
|
static std::atomic<bool> isAppInitialized{false};
|
||||||
|
|
||||||
Application *Application::instance = nullptr;
|
Application *Application::instance = nullptr;
|
||||||
|
IApplication *IApplication::instance = nullptr;
|
||||||
|
|
||||||
|
IApplication::IApplication()
|
||||||
|
{
|
||||||
|
IApplication::instance = this;
|
||||||
|
}
|
||||||
|
|
||||||
// this class is responsible for handling the workflow of Chatterino
|
// this class is responsible for handling the workflow of Chatterino
|
||||||
// It will create the instances of the major classes, and connect their signals
|
// It will create the instances of the major classes, and connect their signals
|
||||||
|
@ -526,4 +532,13 @@ Application *getApp()
|
||||||
return Application::instance;
|
return Application::instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IApplication *getIApp()
|
||||||
|
{
|
||||||
|
assert(IApplication::instance != nullptr);
|
||||||
|
|
||||||
|
assertInGuiThread();
|
||||||
|
|
||||||
|
return IApplication::instance;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace chatterino
|
} // namespace chatterino
|
||||||
|
|
|
@ -29,7 +29,29 @@ class Toasts;
|
||||||
class ChatterinoBadges;
|
class ChatterinoBadges;
|
||||||
class FfzBadges;
|
class FfzBadges;
|
||||||
|
|
||||||
class Application
|
class IApplication
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
IApplication();
|
||||||
|
virtual ~IApplication() = default;
|
||||||
|
|
||||||
|
static IApplication *instance;
|
||||||
|
|
||||||
|
virtual Theme *getThemes() = 0;
|
||||||
|
virtual Fonts *getFonts() = 0;
|
||||||
|
virtual Emotes *getEmotes() = 0;
|
||||||
|
virtual AccountController *getAccounts() = 0;
|
||||||
|
virtual HotkeyController *getHotkeys() = 0;
|
||||||
|
virtual WindowManager *getWindows() = 0;
|
||||||
|
virtual Toasts *getToasts() = 0;
|
||||||
|
virtual CommandController *getCommands() = 0;
|
||||||
|
virtual NotificationController *getNotifications() = 0;
|
||||||
|
virtual TwitchIrcServer *getTwitch() = 0;
|
||||||
|
virtual ChatterinoBadges *getChatterinoBadges() = 0;
|
||||||
|
virtual FfzBadges *getFfzBadges() = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Application : public IApplication
|
||||||
{
|
{
|
||||||
std::vector<std::unique_ptr<Singleton>> singletons_;
|
std::vector<std::unique_ptr<Singleton>> singletons_;
|
||||||
int argc_;
|
int argc_;
|
||||||
|
@ -64,6 +86,55 @@ public:
|
||||||
|
|
||||||
/*[[deprecated]]*/ Logging *const logging{};
|
/*[[deprecated]]*/ Logging *const logging{};
|
||||||
|
|
||||||
|
Theme *getThemes() override
|
||||||
|
{
|
||||||
|
return this->themes;
|
||||||
|
}
|
||||||
|
Fonts *getFonts() override
|
||||||
|
{
|
||||||
|
return this->fonts;
|
||||||
|
}
|
||||||
|
Emotes *getEmotes() override
|
||||||
|
{
|
||||||
|
return this->emotes;
|
||||||
|
}
|
||||||
|
AccountController *getAccounts() override
|
||||||
|
{
|
||||||
|
return this->accounts;
|
||||||
|
}
|
||||||
|
HotkeyController *getHotkeys() override
|
||||||
|
{
|
||||||
|
return this->hotkeys;
|
||||||
|
}
|
||||||
|
WindowManager *getWindows() override
|
||||||
|
{
|
||||||
|
return this->windows;
|
||||||
|
}
|
||||||
|
Toasts *getToasts() override
|
||||||
|
{
|
||||||
|
return this->toasts;
|
||||||
|
}
|
||||||
|
CommandController *getCommands() override
|
||||||
|
{
|
||||||
|
return this->commands;
|
||||||
|
}
|
||||||
|
NotificationController *getNotifications() override
|
||||||
|
{
|
||||||
|
return this->notifications;
|
||||||
|
}
|
||||||
|
TwitchIrcServer *getTwitch() override
|
||||||
|
{
|
||||||
|
return this->twitch;
|
||||||
|
}
|
||||||
|
ChatterinoBadges *getChatterinoBadges() override
|
||||||
|
{
|
||||||
|
return this->chatterinoBadges;
|
||||||
|
}
|
||||||
|
FfzBadges *getFfzBadges() override
|
||||||
|
{
|
||||||
|
return this->ffzBadges;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void addSingleton(Singleton *singleton);
|
void addSingleton(Singleton *singleton);
|
||||||
void initPubSub();
|
void initPubSub();
|
||||||
|
@ -83,4 +154,7 @@ private:
|
||||||
|
|
||||||
Application *getApp();
|
Application *getApp();
|
||||||
|
|
||||||
|
// Get an interface version of the Application class - should be preferred when possible for new code
|
||||||
|
IApplication *getIApp();
|
||||||
|
|
||||||
} // namespace chatterino
|
} // namespace chatterino
|
||||||
|
|
Loading…
Reference in a new issue