Response::ResponseCode Server_ProtocolHandler::cmdMessage(const Command_Message &cmd, ResponseContainer &rc) { if (authState == NotLoggedIn) return Response::RespLoginNeeded; QReadLocker locker(&server->clientsLock); QString receiver = QString::fromStdString(cmd.user_name()); Server_AbstractUserInterface *userInterface = server->findUser(receiver); if (!userInterface) return Response::RespNameNotFound; if (databaseInterface->isInIgnoreList(receiver, QString::fromStdString(userInfo->name()))) return Response::RespInIgnoreList; Event_UserMessage event; event.set_sender_name(userInfo->name()); event.set_receiver_name(cmd.user_name()); event.set_message(cmd.message()); SessionEvent *se = prepareSessionEvent(event); userInterface->sendProtocolItem(*se); rc.enqueuePreResponseItem(ServerMessage::SESSION_EVENT, se); return Response::RespOk; }
void TabMessage::processUserMessageEvent(const Event_UserMessage &event) { const UserLevelFlags userLevel(event.sender_name() == otherUserInfo->name() ? otherUserInfo->user_level() : ownUserInfo->user_level()); chatView->appendMessage(QString::fromStdString(event.message()), 0,QString::fromStdString(event.sender_name()), userLevel, true); if (tabSupervisor->currentIndex() != tabSupervisor->indexOf(this)) soundEngine->playSound("private_message"); if (settingsCache->getShowMessagePopup() && shouldShowSystemPopup(event)) showSystemPopup(event); emit userEvent(); }
void TabMessage::processUserMessageEvent(const Event_UserMessage &event) { auto userInfo = event.sender_name() == otherUserInfo->name() ? otherUserInfo : ownUserInfo; const UserLevelFlags userLevel(userInfo->user_level()); const QString userPriv = QString::fromStdString(userInfo->privlevel()); chatView->appendMessage(QString::fromStdString(event.message()), 0, QString::fromStdString(event.sender_name()), userLevel, userPriv, true); if (tabSupervisor->currentIndex() != tabSupervisor->indexOf(this)) soundEngine->playSound("private_message"); if (settingsCache->getShowMessagePopup() && shouldShowSystemPopup(event)) showSystemPopup(event); if (QString::fromStdString(event.sender_name()).toLower().simplified() == "servatrice") sayEdit->setDisabled(true); emit userEvent(); }
void TabMessage::showSystemPopup(const Event_UserMessage &event) { if (trayIcon) { disconnect(trayIcon, SIGNAL(messageClicked()), 0, 0); trayIcon->showMessage(tr("Private message from") + " " + otherUserInfo->name().c_str(), event.message().c_str()); connect(trayIcon, SIGNAL(messageClicked()), this, SLOT(messageClicked())); } else { qDebug() << "Error: trayIcon is NULL. TabMessage::showSystemPopup failed"; } }
bool TabMessage::shouldShowSystemPopup(const Event_UserMessage &event) { return (QApplication::activeWindow() == 0 || QApplication::focusWidget() == 0 || (event.sender_name() == otherUserInfo->name() && tabSupervisor->currentIndex() != tabSupervisor->indexOf(this))); }
void TabMessage::processUserMessageEvent(const Event_UserMessage &event) { const UserLevelFlags userLevel(event.sender_name() == otherUserInfo->name() ? otherUserInfo->user_level() : ownUserInfo->user_level()); chatView->appendMessage(QString::fromStdString(event.message()), QString::fromStdString(event.sender_name()), userLevel); emit userEvent(); }
void TabMessage::showSystemPopup(const Event_UserMessage &event) { disconnect(trayIcon, SIGNAL(messageClicked()), 0, 0); trayIcon->showMessage(tr("Private message from ") + otherUserInfo->name().c_str(), event.message().c_str()); connect(trayIcon, SIGNAL(messageClicked()), this, SLOT(messageClicked())); }