mirror-chatterino2/channel.h
2017-01-26 18:22:04 +01:00

134 lines
2.3 KiB
C++

#ifndef CHANNEL_H
#define CHANNEL_H
#include "concurrentmap.h"
#include "messages/lazyloadedimage.h"
#include <QMap>
#include <QMutex>
#include <QString>
#include <QVector>
#include <memory>
namespace chatterino {
namespace messages {
class Message;
}
class Channel
{
public:
Channel(const QString &channel);
// properties
ConcurrentMap<QString, messages::LazyLoadedImage *> &
getBttvChannelEmotes()
{
return bttvChannelEmotes;
}
ConcurrentMap<QString, messages::LazyLoadedImage *> &
getFfzChannelEmotes()
{
return ffzChannelEmotes;
}
const QMutex &
getMessageMutex() const
{
return messageMutex;
}
const QString &
getName() const
{
return name;
}
int
getRoomID() const
{
return roomID;
}
const QString &
getSubLink() const
{
return subLink;
}
const QString &
getChannelLink() const
{
return channelLink;
}
const QString &
getPopoutPlayerLink() const
{
return popoutPlayerLink;
}
bool
getIsLive() const
{
return isLive;
}
int
getStreamViewerCount() const
{
return streamViewerCount;
}
const QString &
getStreamStatus() const
{
return streamStatus;
}
const QString &
getStreamGame() const
{
return streamGame;
}
// methods
void addMessage(std::shared_ptr<messages::Message> message);
QVector<std::shared_ptr<messages::Message>> getMessagesClone();
QVector<std::shared_ptr<messages::Message>> &
getMessages()
{
return messages;
}
void
reloadChannelEmotes()
{
reloadBttvEmotes();
reloadFfzEmotes();
}
private:
QVector<std::shared_ptr<messages::Message>> messages;
QString name;
int roomID;
ConcurrentMap<QString, messages::LazyLoadedImage *> bttvChannelEmotes;
ConcurrentMap<QString, messages::LazyLoadedImage *> ffzChannelEmotes;
QMutex messageMutex;
QString subLink;
QString channelLink;
QString popoutPlayerLink;
bool isLive;
int streamViewerCount;
QString streamStatus;
QString streamGame;
void reloadBttvEmotes();
void reloadFfzEmotes();
};
}
#endif // CHANNEL_H