refactored Channel
This commit is contained in:
+10
-14
@@ -20,31 +20,27 @@ namespace chatterino {
|
||||
Channel::Channel(const QString &_name, Type _type)
|
||||
: name(_name)
|
||||
, completionModel(this->name)
|
||||
, type(_type)
|
||||
, type_(_type)
|
||||
{
|
||||
this->clearCompletionModelTimer = new QTimer;
|
||||
QObject::connect(this->clearCompletionModelTimer, &QTimer::timeout, [this]() {
|
||||
QObject::connect(&this->clearCompletionModelTimer, &QTimer::timeout, [this]() {
|
||||
this->completionModel.ClearExpiredStrings(); //
|
||||
});
|
||||
this->clearCompletionModelTimer->start(60 * 1000);
|
||||
this->clearCompletionModelTimer.start(60 * 1000);
|
||||
}
|
||||
|
||||
Channel::~Channel()
|
||||
{
|
||||
this->destroyed.invoke();
|
||||
|
||||
this->clearCompletionModelTimer->stop();
|
||||
this->clearCompletionModelTimer->deleteLater();
|
||||
}
|
||||
|
||||
Channel::Type Channel::getType() const
|
||||
{
|
||||
return this->type;
|
||||
return this->type_;
|
||||
}
|
||||
|
||||
bool Channel::isTwitchChannel() const
|
||||
{
|
||||
return this->type >= Twitch && this->type < TwitchEnd;
|
||||
return this->type_ >= Type::Twitch && this->type_ < Type::TwitchEnd;
|
||||
}
|
||||
|
||||
bool Channel::isEmpty() const
|
||||
@@ -54,7 +50,7 @@ bool Channel::isEmpty() const
|
||||
|
||||
LimitedQueueSnapshot<MessagePtr> Channel::getMessageSnapshot()
|
||||
{
|
||||
return this->messages.getSnapshot();
|
||||
return this->messages_.getSnapshot();
|
||||
}
|
||||
|
||||
void Channel::addMessage(MessagePtr message)
|
||||
@@ -73,7 +69,7 @@ void Channel::addMessage(MessagePtr message)
|
||||
app->logging->addMessage(this->name, message);
|
||||
}
|
||||
|
||||
if (this->messages.pushBack(message, deleted)) {
|
||||
if (this->messages_.pushBack(message, deleted)) {
|
||||
this->messageRemovedFromStart.invoke(deleted);
|
||||
}
|
||||
|
||||
@@ -163,7 +159,7 @@ void Channel::disableAllMessages()
|
||||
|
||||
void Channel::addMessagesAtStart(std::vector<MessagePtr> &_messages)
|
||||
{
|
||||
std::vector<MessagePtr> addedMessages = this->messages.pushFront(_messages);
|
||||
std::vector<MessagePtr> addedMessages = this->messages_.pushFront(_messages);
|
||||
|
||||
if (addedMessages.size() != 0) {
|
||||
this->messagesAddedAtStart.invoke(addedMessages);
|
||||
@@ -172,7 +168,7 @@ void Channel::addMessagesAtStart(std::vector<MessagePtr> &_messages)
|
||||
|
||||
void Channel::replaceMessage(MessagePtr message, MessagePtr replacement)
|
||||
{
|
||||
int index = this->messages.replaceItem(message, replacement);
|
||||
int index = this->messages_.replaceItem(message, replacement);
|
||||
|
||||
if (index >= 0) {
|
||||
this->messageReplaced.invoke((size_t)index, replacement);
|
||||
@@ -211,7 +207,7 @@ bool Channel::hasModRights() const
|
||||
|
||||
std::shared_ptr<Channel> Channel::getEmpty()
|
||||
{
|
||||
static std::shared_ptr<Channel> channel(new Channel("", None));
|
||||
static std::shared_ptr<Channel> channel(new Channel("", Type::None));
|
||||
return channel;
|
||||
}
|
||||
|
||||
|
||||
+18
-18
@@ -17,10 +17,8 @@ struct Message;
|
||||
|
||||
class Channel : public std::enable_shared_from_this<Channel>
|
||||
{
|
||||
QTimer *clearCompletionModelTimer;
|
||||
|
||||
public:
|
||||
enum Type {
|
||||
enum class Type {
|
||||
None,
|
||||
Direct,
|
||||
Twitch,
|
||||
@@ -31,7 +29,7 @@ public:
|
||||
Misc
|
||||
};
|
||||
|
||||
explicit Channel(const QString &_name, Type type);
|
||||
explicit Channel(const QString &_name, Type type_);
|
||||
virtual ~Channel();
|
||||
|
||||
pajlada::Signals::Signal<const QString &, const QString &, bool &> sendMessageSignal;
|
||||
@@ -48,7 +46,7 @@ public:
|
||||
LimitedQueueSnapshot<MessagePtr> getMessageSnapshot();
|
||||
|
||||
void addMessage(MessagePtr message);
|
||||
void addMessagesAtStart(std::vector<MessagePtr> &messages);
|
||||
void addMessagesAtStart(std::vector<MessagePtr> &messages_);
|
||||
void addOrReplaceTimeout(MessagePtr message);
|
||||
void disableAllMessages();
|
||||
void replaceMessage(MessagePtr message, MessagePtr replacement);
|
||||
@@ -71,8 +69,9 @@ protected:
|
||||
virtual void onConnected();
|
||||
|
||||
private:
|
||||
LimitedQueue<MessagePtr> messages;
|
||||
Type type;
|
||||
LimitedQueue<MessagePtr> messages_;
|
||||
Type type_;
|
||||
QTimer clearCompletionModelTimer_;
|
||||
};
|
||||
|
||||
using ChannelPtr = std::shared_ptr<Channel>;
|
||||
@@ -92,40 +91,41 @@ class IndirectChannel
|
||||
}
|
||||
};
|
||||
|
||||
std::shared_ptr<Data> data;
|
||||
|
||||
public:
|
||||
IndirectChannel(ChannelPtr channel, Channel::Type type = Channel::Direct)
|
||||
: data(new Data(channel, type))
|
||||
IndirectChannel(ChannelPtr channel, Channel::Type type = Channel::Type::Direct)
|
||||
: data_(new Data(channel, type))
|
||||
{
|
||||
}
|
||||
|
||||
ChannelPtr get()
|
||||
{
|
||||
return data->channel;
|
||||
return data_->channel;
|
||||
}
|
||||
|
||||
void update(ChannelPtr ptr)
|
||||
{
|
||||
assert(this->data->type != Channel::Direct);
|
||||
assert(this->data_->type != Channel::Type::Direct);
|
||||
|
||||
this->data->channel = ptr;
|
||||
this->data->changed.invoke();
|
||||
this->data_->channel = ptr;
|
||||
this->data_->changed.invoke();
|
||||
}
|
||||
|
||||
pajlada::Signals::NoArgSignal &getChannelChanged()
|
||||
{
|
||||
return this->data->changed;
|
||||
return this->data_->changed;
|
||||
}
|
||||
|
||||
Channel::Type getType()
|
||||
{
|
||||
if (this->data->type == Channel::Direct) {
|
||||
if (this->data_->type == Channel::Type::Direct) {
|
||||
return this->get()->getType();
|
||||
} else {
|
||||
return this->data->type;
|
||||
return this->data_->type;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
std::shared_ptr<Data> data_;
|
||||
};
|
||||
|
||||
} // namespace chatterino
|
||||
|
||||
Reference in New Issue
Block a user