chatwidgetview refreshes on new message

This commit is contained in:
fourtf
2017-01-16 03:15:07 +01:00
parent d924f5bd8d
commit 1194905646
21 changed files with 321 additions and 196 deletions
+4 -59
View File
@@ -1,14 +1,10 @@
#include "channel.h"
#include "message.h"
#include "windows.h"
#include <memory>
Channel Channel::whispers(QString("/whispers"));
Channel Channel::mentions(QString("/mentions"));
QMap<QString, Channel *> Channel::channels = QMap<QString, Channel *>();
Channel::Channel(QString channel)
Channel::Channel(const QString &channel)
: m_messages()
, m_name((channel.length() > 0 && channel[0] == '#') ? channel.mid(1)
: channel)
@@ -22,59 +18,6 @@ Channel::Channel(QString channel)
{
}
Channel *
Channel::addChannel(const QString &channel)
{
auto c = getChannel(channel);
if (c == NULL) {
c = new Channel(channel);
channels.insert(channel, c);
return c;
}
c->m_referenceCount++;
return c;
}
Channel *
Channel::getChannel(const QString &channel)
{
if (channel == "/whispers") {
return const_cast<Channel *>(&whispers);
}
if (channel == "/mentions") {
return const_cast<Channel *>(&mentions);
}
auto a = channels.find(channel);
if (a == channels.end()) {
return NULL;
}
return a.value();
}
void
Channel::removeChannel(const QString &channel)
{
auto c = getChannel(channel);
if (c == NULL)
return;
c->m_referenceCount--;
if (c->m_referenceCount == 0) {
channels.remove(channel);
delete c;
}
}
QVector<std::shared_ptr<Message>>
Channel::getMessagesClone()
{
@@ -91,4 +34,6 @@ Channel::addMessage(std::shared_ptr<Message> message)
m_messageMutex.lock();
m_messages.append(message);
m_messageMutex.unlock();
Windows::repaintVisibleChatWidgets();
}