QObject* ServerParticipantEntry::CreateMessage (IMessage::MessageType, const QString&, const QString& body) { IrcMessage *message = new IrcMessage (IMessage::MTChatMessage, IMessage::DOut, ISH_->GetServerID (), Nick_, Account_->GetClientConnection ().get ()); message->SetBody (body); message->SetDateTime (QDateTime::currentDateTime ()); return message; }
void IrcServerHandler::IncomingMessage (const QString& nick, const QString& target, const QString& msg, IMessage::Type type) { if (ChannelsManager_->IsChannelExists (target)) ChannelsManager_->ReceivePublicMessage (target, nick, msg); else { //TODO Work only for exists entries IrcMessage *message = new IrcMessage (type, IMessage::Direction::In, ServerID_, nick, Account_->GetClientConnection ().get ()); message->SetBody (msg); message->SetDateTime (QDateTime::currentDateTime ()); bool found = false; for (const auto entryObj : ChannelsManager_->GetParticipantsByNick (nick)) { const auto entry = qobject_cast<EntryBase*> (entryObj); if (!entry) continue; found = true; entry->HandleMessage (message); } if (!found) { if (Nick2Entry_.contains (nick)) Nick2Entry_ [nick]->HandleMessage (message); else GetParticipantEntry (nick)->HandleMessage (message); } } }