chatwidgetview refreshes on new message
This commit is contained in:
+4
-59
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user