#pragma once #include "concurrentmap.h" #include "logging/loggingchannel.h" #include "messages/lazyloadedimage.h" #include "messages/limitedqueue.h" #include #include #include #include #include #include namespace chatterino { namespace messages { class Message; } class ChannelManager; typedef std::shared_ptr SharedChannel; class Channel { public: Channel(const QString &channel); boost::signals2::signal messageRemovedFromStart; boost::signals2::signal messageAppended; // properties ConcurrentMap &getBttvChannelEmotes(); ConcurrentMap &getFfzChannelEmotes(); bool isEmpty() const; const QString &getName() const; int getRoomID() 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); private: // variabeles messages::LimitedQueue _messages; QString _name; int _roomID; ConcurrentMap _bttvChannelEmotes; ConcurrentMap _ffzChannelEmotes; QString _subLink; QString _channelLink; QString _popoutPlayerLink; bool _isLive; int _streamViewerCount; QString _streamStatus; QString _streamGame; // std::shared_ptr _loggingChannel; // methods void reloadBttvEmotes(); void reloadFfzEmotes(); }; } // namespace chatterino