#pragma once #include "concurrentmap.hpp" #include "emotemanager.hpp" #include "logging/loggingchannel.hpp" #include "messages/lazyloadedimage.hpp" #include "messages/limitedqueue.hpp" #include #include #include #include #include #include namespace chatterino { namespace messages { class Message; } class WindowManager; class IrcManager; class Channel { public: explicit Channel(WindowManager &_windowManager, EmoteManager &_emoteManager, IrcManager &_ircManager, const QString &channel, bool isSpecial = false); boost::signals2::signal messageRemovedFromStart; boost::signals2::signal messageAppended; // properties EmoteManager::EmoteMap &getBTTVChannelEmotes(); EmoteManager::EmoteMap &getFFZChannelEmotes(); bool isEmpty() const; const QString &getName() const; const QString &getSubLink() const; const QString &getChannelLink() const; const QString &getPopoutPlayerLink() const; bool getIsLive() const; int getStreamViewerCount() const; const QString &getStreamStatus() const; const QString &getStreamGame() const; messages::LimitedQueueSnapshot getMessageSnapshot(); // methods void addMessage(messages::SharedMessage message); void reloadChannelEmotes(); void sendMessage(const QString &message); std::string roomID; private: WindowManager &windowManager; EmoteManager &emoteManager; IrcManager &ircManager; // variabeles messages::LimitedQueue _messages; QString _name; EmoteManager::EmoteMap &bttvChannelEmotes; EmoteManager::EmoteMap &ffzChannelEmotes; QString _subLink; QString _channelLink; QString _popoutPlayerLink; bool _isLive; int _streamViewerCount; QString _streamStatus; QString _streamGame; // std::shared_ptr _loggingChannel; }; } // namespace chatterino