void Widget::onFriendMessageReceived(int friendId, const QString& message, bool isAction) { Friend* f = FriendList::findFriend(friendId); if (!f) return; QDateTime timestamp = QDateTime::currentDateTime(); f->getChatForm()->addMessage(f->getToxID(), message, isAction, timestamp); if (isAction) HistoryKeeper::getInstance()->addChatEntry(f->getToxID().publicKey, "/me " + message, f->getToxID().publicKey, timestamp); else HistoryKeeper::getInstance()->addChatEntry(f->getToxID().publicKey, message, f->getToxID().publicKey, timestamp); if (activeChatroomWidget != nullptr) { if ((static_cast<GenericChatroomWidget*>(f->getFriendWidget()) != activeChatroomWidget) || isMinimized() || !isActiveWindow()) { f->setEventFlag(true); newMessageAlert(); } } else { f->setEventFlag(true); newMessageAlert(); } f->getFriendWidget()->updateStatusLight(); }
void Widget::onFriendMessageReceived(int friendId, const QString& message) { Friend* f = FriendList::findFriend(friendId); if (!f) return; f->chatForm->addFriendMessage(message); if (activeFriendWidget != nullptr) { Friend* f2 = FriendList::findFriend(activeFriendWidget->friendId); if (((f->friendId != f2->friendId) || isFriendWidgetActive == 0) || isWindowMinimized || !isActiveWindow()) { f->hasNewMessages = 1; newMessageAlert(); } } else { f->hasNewMessages = 1; newMessageAlert(); } updateFriendStatusLights(friendId); }
void Widget::onGroupMessageReceived(int groupnumber, const QString& message, const QString& author, bool isAction) { Group* g = GroupList::findGroup(groupnumber); if (!g) return; QString name = core->getUsername(); bool targeted = (author != name) && message.contains(name, Qt::CaseInsensitive); if (targeted) g->chatForm->addAlertMessage(author, message, QDateTime::currentDateTime()); else g->chatForm->addMessage(author, message, isAction, QDateTime::currentDateTime()); if ((static_cast<GenericChatroomWidget*>(g->widget) != activeChatroomWidget) || isMinimized() || !isActiveWindow()) { g->hasNewMessages = 1; if (targeted) { newMessageAlert(); g->userWasMentioned = 1; // useful for highlighting line or desktop notifications } g->widget->updateStatusLight(); } }
void Widget::onGroupMessageReceived(int groupnumber, int friendgroupnumber, const QString& message) { Group* g = GroupList::findGroup(groupnumber); if (!g) return; g->chatForm->addGroupMessage(message, friendgroupnumber); if ((isGroupWidgetActive != 1 || (activeGroupWidget && g->groupId != activeGroupWidget->groupId)) || isWindowMinimized || !isActiveWindow()) { if (message.contains(core->getUsername(), Qt::CaseInsensitive)) { newMessageAlert(); g->hasNewMessages = 1; g->userWasMentioned = 1; if (Settings::getInstance().getUseNativeDecoration()) g->widget->statusPic.setPixmap(QPixmap(":img/status/dot_online_notification.png")); else g->widget->statusPic.setPixmap(QPixmap(":img/status/dot_groupchat_notification.png")); } else if (g->hasNewMessages == 0) { g->hasNewMessages = 1; if (Settings::getInstance().getUseNativeDecoration()) g->widget->statusPic.setPixmap(QPixmap(":img/status/dot_online_notification.png")); else g->widget->statusPic.setPixmap(QPixmap(":img/status/dot_groupchat_newmessages.png")); } } }
void Widget::onFriendMessageReceived(int friendId, const QString& message) { Friend* f = FriendList::findFriend(friendId); if (!f) return; f->chatForm->addMessage(f->getName(), message); if (activeChatroomWidget != nullptr) { if ((static_cast<GenericChatroomWidget*>(f->widget) != activeChatroomWidget) || isWindowMinimized || !isActiveWindow()) { f->hasNewEvents = 1; newMessageAlert(); } } else { f->hasNewEvents = 1; newMessageAlert(); } f->widget->updateStatusLight(); }
void Widget::onFriendMessageReceived(int friendId, const QString& message, bool isAction) { Friend* f = FriendList::findFriend(friendId); if (!f) return; QDateTime timestamp = QDateTime::currentDateTime(); f->getChatForm()->addMessage(f->getToxID(), message, isAction, timestamp, true); HistoryKeeper::getInstance()->addChatEntry(f->getToxID().publicKey, isAction ? "/me " + message : message, f->getToxID().publicKey, timestamp, true); f->setEventFlag(f->getFriendWidget() != activeChatroomWidget); newMessageAlert(f->getFriendWidget()); f->getFriendWidget()->updateStatusLight(); }
void Widget::onGroupMessageReceived(int groupnumber, int friendgroupnumber, const QString& message) { Group* g = GroupList::findGroup(groupnumber); if (!g) return; g->chatForm->addGroupMessage(message, friendgroupnumber); if ((static_cast<GenericChatroomWidget*>(g->widget) != activeChatroomWidget) || isWindowMinimized || !isActiveWindow()) { g->hasNewMessages = 1; if (message.contains(core->getUsername(), Qt::CaseInsensitive)) { newMessageAlert(); g->userWasMentioned = 1; } g->widget->updateStatusLight(); } }
void Widget::onGroupMessageReceived(int groupnumber, int peernumber, const QString& message, bool isAction) { Group* g = GroupList::findGroup(groupnumber); if (!g) return; ToxID author = Core::getInstance()->getGroupPeerToxID(groupnumber, peernumber); bool targeted = !author.isMine() && (message.contains(nameMention) || message.contains(sanitizedNameMention)); if (targeted && !isAction) g->getChatForm()->addAlertMessage(author, message, QDateTime::currentDateTime()); else g->getChatForm()->addMessage(author, message, isAction, QDateTime::currentDateTime(), true); g->setEventFlag(static_cast<GenericChatroomWidget*>(g->getGroupWidget()) != activeChatroomWidget); if (targeted || Settings::getInstance().getGroupAlwaysNotify()) newMessageAlert(g->getGroupWidget()); if (targeted) g->setMentionedFlag(true); // useful for highlighting line or desktop notifications g->getGroupWidget()->updateStatusLight(); }