1 #pragma once
2 
3 #include <QObject>
4 
5 #include "common/SignalVector.hpp"
6 #include "common/Singleton.hpp"
7 #include "providers/twitch/TwitchAccountManager.hpp"
8 #include "util/SharedPtrElementLess.hpp"
9 
10 namespace chatterino {
11 
12 class Account;
13 class Settings;
14 class Paths;
15 
16 class AccountModel;
17 
18 class AccountController final : public Singleton
19 {
20 public:
21     AccountController();
22 
23     AccountModel *createModel(QObject *parent);
24 
25     virtual void initialize(Settings &settings, Paths &paths) override;
26 
27     TwitchAccountManager twitch;
28 
29 private:
30     SignalVector<std::shared_ptr<Account>> accounts_;
31 };
32 
33 }  // namespace chatterino
34