#pragma once #include "common/SignalVector.hpp" #include "common/Singleton.hpp" #include "singletons/Settings.hpp" #include namespace chatterino { class Settings; class Paths; class NotificationModel; enum class Platform : uint8_t { Twitch, // 0 // Mixer, // 1 }; class NotificationController final : public Singleton, private QObject { public: virtual void initialize(Settings &settings, Paths &paths) override; bool isChannelNotified(const QString &channelName, Platform p); void updateChannelNotification(const QString &channelName, Platform p); void addChannelNotification(const QString &channelName, Platform p); void removeChannelNotification(const QString &channelName, Platform p); void playSound(); UnsortedSignalVector getVector(Platform p); std::map> channelMap; NotificationModel *createModel(QObject *parent, Platform p); private: bool initialized_ = false; void fetchFakeChannels(); void removeFakeChannel(const QString channelName); void getFakeTwitchChannelLiveStatus(const QString &channelName); std::vector fakeTwitchChannels; QTimer *liveStatusTimer_; ChatterinoSetting> twitchSetting_ = { "/notifications/twitch"}; /* ChatterinoSetting> mixerSetting_ = { "/notifications/mixer"}; */ }; } // namespace chatterino