Major lobby cleanup.

Create an object holding the handling of all netmessage types.
Display private messages sent by moderators.

Details:
 Switch back the second and third argument of CreateSimpleMessage, so it
relates again to the switch/object.
 Reduce the dimension/nesting of the object/switch from three to two.
 Hence remove the useless "standard" and "internal" value send in the
text field.
 Rename CreateSimpleMessage to CreateGUIMessage
 Use the property "level" instead of "text" for "connect" and
"disconnect".
 Remove the handling of the "connect" event in lobby.js, since it is
never called.
 Translate the disconnect event.
 Add comments and explicit checks to handleMessage and handleMUCMessage
to make obvious where they differ.
 Remove the "message" property from those GUI messages, since it should
just use "text".
 Move the login-fail handling to JS.
 Remove useless sprintf calls from warning messages.
 Inline some variables.
 Add missing semicolons.

This was SVN commit r17581.
This commit is contained in:
elexis
2015-12-31 17:08:23 +00:00
parent 2bf194134b
commit ccb534259d
4 changed files with 167 additions and 153 deletions
+94 -74
View File
@@ -35,7 +35,7 @@ const g_GameColors = {
"init": "0 219 0", "init": "0 219 0",
"waiting": "255 127 0", "waiting": "255 127 0",
"running": "219 0 0" "running": "219 0 0"
} };
/** /**
* The playerlist will be assembled using these values. * The playerlist will be assembled using these values.
@@ -91,6 +91,81 @@ var g_SelectedPlayer = "";
*/ */
var g_SelectedGameIP = ""; var g_SelectedGameIP = "";
/**
* Notifications sent by XmppClient.cpp
*/
var g_NetMessageTypes = {
"system": {
// Three cases are handled in prelobby.js
"registered": msg => {
},
"login-failed": msg => {
},
"connected": msg => {
},
"disconnected": msg => {
updateGameList();
updateLeaderboard();
updatePlayerList();
Engine.GetGUIObjectByName("hostButton").enabled = false;
addChatMessage({ "from": "system", "text": translate("Disconnected."), "color": g_SystemColor });
},
"error": msg => {
addChatMessage({ "from": "system", "text": escapeText(msg.text), "color": g_SystemColor });
}
},
"chat": {
"subject": msg => {
updateSubject(msg.text);
},
"join": msg => {
addChatMessage({
"text": "/special " + sprintf(translate("%(nick)s has joined."), { "nick": msg.text }),
"isSpecial": true
});
Engine.SendGetRatingList();
},
"leave": msg => {
addChatMessage({
"text": "/special " + sprintf(translate("%(nick)s has left."), { "nick": msg.text }),
"isSpecial": true
});
},
"presence": msg => {
},
"nick": msg => {
addChatMessage({
"text": "/special " + sprintf(translate("%(oldnick)s is now known as %(newnick)s."), {
"oldnick": msg.text,
"newnick": msg.data
}),
"isSpecial": true
});
},
"room-message": msg => {
addChatMessage({
"from": escapeText(msg.from),
"text": escapeText(msg.text),
"datetime": msg.datetime
});
},
"private-message": msg => {
if (Engine.LobbyGetPlayerRole(msg.from) == "moderator")
addChatMessage({
"from": "(Private) " + escapeText(msg.from), // TODO: placeholder
"text": escapeText(msg.text.trim()), // some XMPP clients send trailing whitespace
"datetime": msg.datetime
});
}
},
"game": {
"gamelist": msg => updateGameList(),
"profile": msg => updateProfile(),
"leaderboard": msg => updateLeaderboard(),
"ratinglist": msg => updatePlayerList()
}
};
/** /**
* Called after the XmppConnection succeeded and when returning from a game. * Called after the XmppConnection succeeded and when returning from a game.
* *
@@ -276,7 +351,7 @@ function updatePlayerList()
playersBox.list_status = presenceList; playersBox.list_status = presenceList;
playersBox.list_rating = ratingList; playersBox.list_rating = ratingList;
playersBox.list = nickList; playersBox.list = nickList;
playersBox.selected = playersBox.list.indexOf(g_SelectedPlayer) playersBox.selected = playersBox.list.indexOf(g_SelectedPlayer);
} }
/** /**
@@ -566,80 +641,25 @@ function onTick()
while (true) while (true)
{ {
var message = Engine.LobbyGuiPollMessage(); let msg = Engine.LobbyGuiPollMessage();
if (!message) if (!msg)
break; break;
switch (message.type)
if (!g_NetMessageTypes[msg.type])
{ {
case "mucmessage": warn("Unrecognised message type: " + msg.type);
addChatMessage({ "from": escapeText(message.from), "text": escapeText(message.text), "datetime": message.datetime}); continue;
break;
case "muc":
switch(message.level)
{
case "join":
addChatMessage({ "text": "/special " + sprintf(translate("%(nick)s has joined."), { "nick": message.text }), "isSpecial": true });
Engine.SendGetRatingList();
break;
case "leave":
addChatMessage({ "text": "/special " + sprintf(translate("%(nick)s has left."), { "nick": message.text }), "isSpecial": true });
break;
case "nick":
addChatMessage({ "text": "/special " + sprintf(translate("%(oldnick)s is now known as %(newnick)s."), { "oldnick": message.text, "newnick": message.data }), "isSpecial": true });
break;
case "presence":
break;
case "subject":
updateSubject(message.text);
break;
default:
warn(sprintf("Unknown message.level '%(msglvl)s'", { "msglvl": message.level }));
break;
}
// To improve performance, only update the playerlist GUI when the last update in the current stack is processed
if (Engine.LobbyGetMucMessageCount() == 0)
updatePlayerList();
break;
case "system":
switch (message.level)
{
case "standard":
addChatMessage({ "from": "system", "text": escapeText(message.text), "color": g_SystemColor });
if (message.text == "disconnected")
{
updateGameList();
updateLeaderboard();
updatePlayerList();
Engine.GetGUIObjectByName("hostButton").enabled = false;
}
else if (message.text == "connected")
Engine.GetGUIObjectByName("hostButton").enabled = true;
break;
case "error":
addChatMessage({ "from": "system", "text": escapeText(message.text), "color": g_SystemColor });
break;
case "internal":
switch (message.text)
{
case "gamelist updated":
updateGameList();
break;
case "boardlist updated":
updateLeaderboard();
break;
case "ratinglist updated":
updatePlayerList();
break;
case "profile updated":
updateProfile();
break;
}
break;
}
break;
default:
error(sprintf("Unrecognised message type %(msgtype)s", { "msgtype": message.type }));
} }
if (!g_NetMessageTypes[msg.type][msg.level])
{
warn("Unrecognised message level: " + msg.level);
continue;
}
g_NetMessageTypes[msg.type][msg.level](msg);
// To improve performance, only update the playerlist GUI when the last update in the current stack is processed
if (msg.type == "chat" && Engine.LobbyGetMucMessageCount() == 0)
updatePlayerList();
} }
} }
@@ -888,7 +908,7 @@ function isSpam(text, from)
*/ */
function checkSpamMonitor() function checkSpamMonitor()
{ {
var time = Math.floor(Date.now() / 1000) var time = Math.floor(Date.now() / 1000);
for (let i in g_SpamMonitor) for (let i in g_SpamMonitor)
{ {
let stats = g_SpamMonitor[i]; let stats = g_SpamMonitor[i];
+45 -49
View File
@@ -5,6 +5,39 @@ var g_TermsOfServiceRead = false;
var g_TermsOfUseRead = false; var g_TermsOfUseRead = false;
var g_HasSystemMessage = false; var g_HasSystemMessage = false;
/**
* Notifications sent by XmppClient.cpp
* Other types are handled in lobby.js
*/
var g_SystemMessageTypes = {
"error": (message, username, password) => {
Engine.GetGUIObjectByName("feedback").caption = message.text;
Engine.StopXmppClient();
},
"login-failed": (message, username, password) => {
Engine.GetGUIObjectByName("feedback").caption = translate("Authentication failed");
Engine.StopXmppClient();
},
"registered": (message, username, password) => {
Engine.GetGUIObjectByName("feedback").caption = translate("Registered");
Engine.GetGUIObjectByName("connectUsername").caption = username;
Engine.GetGUIObjectByName("connectPassword").caption = password;
Engine.StopXmppClient();
switchPage("connect");
},
"connected": (message, username, password) => {
Engine.PopGuiPage();
Engine.SwitchGuiPage("page_lobby.xml");
Engine.ConfigDB_CreateValue("user", "playername", sanitizePlayerName(username, true, true));
Engine.ConfigDB_CreateValue("user", "lobby.login", username);
if (password != g_EncrytedPassword.substring(0, 10))
g_EncrytedPassword = Engine.EncryptPassword(password, username);
Engine.ConfigDB_CreateValue("user", "lobby.password", g_EncrytedPassword);
Engine.ConfigDB_WriteFile("user", "config/user.cfg");
}
};
function init() function init()
{ {
g_EncrytedPassword = Engine.ConfigDB_GetValue("user", "lobby.password"); g_EncrytedPassword = Engine.ConfigDB_GetValue("user", "lobby.password");
@@ -69,21 +102,13 @@ function lobbyStartRegister()
function onTick() function onTick()
{ {
var pageRegisterHidden = Engine.GetGUIObjectByName("pageRegister").hidden; var pageRegisterHidden = Engine.GetGUIObjectByName("pageRegister").hidden;
if (pageRegisterHidden) var username = Engine.GetGUIObjectByName(pageRegisterHidden ? "connectUsername" : "registerUsername").caption;
{ var password = Engine.GetGUIObjectByName(pageRegisterHidden ? "connectPassword" : "registerPassword").caption;
var username = Engine.GetGUIObjectByName("connectUsername").caption;
var password = Engine.GetGUIObjectByName("connectPassword").caption;
}
else
{
var username = Engine.GetGUIObjectByName("registerUsername").caption;
var password = Engine.GetGUIObjectByName("registerPassword").caption;
}
var passwordAgain = Engine.GetGUIObjectByName("registerPasswordAgain").caption; var passwordAgain = Engine.GetGUIObjectByName("registerPasswordAgain").caption;
var agreeTerms = Engine.GetGUIObjectByName("registerAgreeTerms"); var agreeTerms = Engine.GetGUIObjectByName("registerAgreeTerms");
var feedback = Engine.GetGUIObjectByName("feedback"); var feedback = Engine.GetGUIObjectByName("feedback");
var continueButton = Engine.GetGUIObjectByName("continue"); var continueButton = Engine.GetGUIObjectByName("continue");
var sanitizedName = sanitizePlayerName(username, true, true);
// Do not change feedback while connecting. // Do not change feedback while connecting.
if (g_LobbyIsConnecting) {} if (g_LobbyIsConnecting) {}
@@ -99,7 +124,7 @@ function onTick()
feedback.caption = translate("Please enter your username"); feedback.caption = translate("Please enter your username");
} }
// Check that they are using a valid username. // Check that they are using a valid username.
else if (username != sanitizedName) else if (username != sanitizePlayerName(username, true, true))
{ {
continueButton.enabled = false; continueButton.enabled = false;
feedback.caption = translate("Usernames can't contain \\[, ], unicode, whitespace, or commas"); feedback.caption = translate("Usernames can't contain \\[, ], unicode, whitespace, or commas");
@@ -161,49 +186,20 @@ function onTick()
// The XmppClient has been created, we are waiting // The XmppClient has been created, we are waiting
// to be connected or to receive an error. // to be connected or to receive an error.
//Receive messages
while (true) while (true)
{ {
var message = Engine.LobbyGuiPollMessage(); let message = Engine.LobbyGuiPollMessage();
if (!message) if (!message)
break; break;
if (message.type == "system" && message.text == "connected") if (message.type != "system")
{ continue;
// We are connected, switch to the lobby page
Engine.PopGuiPage();
// Use username as nick.
var nick = sanitizePlayerName(username, true, true);
// Switch to lobby g_HasSystemMessage = true;
Engine.SwitchGuiPage("page_lobby.xml"); g_LobbyIsConnecting = false;
// Store nick, login, and password
Engine.ConfigDB_CreateValue("user", "playername", nick); if (g_SystemMessageTypes[message.level])
Engine.ConfigDB_CreateValue("user", "lobby.login", username); g_SystemMessageTypes[message.level](message, username, password);
// We only store the encrypted password, so make sure to re-encrypt it if changed before saving.
if (password != g_EncrytedPassword.substring(0, 10))
g_EncrytedPassword = Engine.EncryptPassword(password, username);
Engine.ConfigDB_CreateValue("user", "lobby.password", g_EncrytedPassword);
Engine.ConfigDB_WriteFile("user", "config/user.cfg");
}
else if (message.type == "system" && message.text == "registered")
{
// Great, we are registered. Switch to the connection window.
feedback.caption = translate("Registered");
Engine.StopXmppClient();
g_LobbyIsConnecting = false;
Engine.GetGUIObjectByName("connectUsername").caption = username;
Engine.GetGUIObjectByName("connectPassword").caption = password;
switchPage("connect");
}
else if(message.type == "system" && (message.level == "error" || message.text == "disconnected"))
{
g_HasSystemMessage = true;
feedback.caption = message.text == "disconnected" ? translate("Disconnected") : message.text;
Engine.StopXmppClient();
g_LobbyIsConnecting = false;
}
} }
} }
+27 -29
View File
@@ -189,7 +189,7 @@ void XmppClient::onConnect()
{ {
if (m_mucRoom) if (m_mucRoom)
{ {
CreateSimpleMessage("system", "connected"); CreateGUIMessage("system", "connected");
m_mucRoom->join(); m_mucRoom->join();
} }
@@ -220,9 +220,9 @@ void XmppClient::onDisconnect(gloox::ConnectionError error)
m_Profile.clear(); m_Profile.clear();
if (error == gloox::ConnAuthenticationFailed) if (error == gloox::ConnAuthenticationFailed)
CreateSimpleMessage("system", g_L10n.Translate("Authentication failed"), "error"); CreateGUIMessage("system", "login-failed");
else else
CreateSimpleMessage("system", "disconnected"); CreateGUIMessage("system", "disconnected");
} }
/** /**
@@ -249,7 +249,7 @@ bool XmppClient::onTLSConnect(const glooxwrapper::CertInfo& info)
void XmppClient::handleMUCError(glooxwrapper::MUCRoom*, gloox::StanzaError err) void XmppClient::handleMUCError(glooxwrapper::MUCRoom*, gloox::StanzaError err)
{ {
std::string msg = StanzaErrorToString(err); std::string msg = StanzaErrorToString(err);
CreateSimpleMessage("system", msg, "error"); CreateGUIMessage("system", "error", msg);
} }
/***************************************************** /*****************************************************
@@ -445,9 +445,7 @@ void XmppClient::handleRegistrationFields(const glooxwrapper::JID&, int fields,
void XmppClient::handleRegistrationResult(const glooxwrapper::JID&, gloox::RegistrationResult result) void XmppClient::handleRegistrationResult(const glooxwrapper::JID&, gloox::RegistrationResult result)
{ {
if (result == gloox::RegistrationSuccess) if (result == gloox::RegistrationSuccess)
{ CreateGUIMessage("system", "registered");
CreateSimpleMessage("system", "registered");
}
else else
{ {
std::string msg; std::string msg;
@@ -465,7 +463,7 @@ void XmppClient::handleRegistrationResult(const glooxwrapper::JID&, gloox::Regis
default: msg = g_L10n.Translate("Registration unknown error"); default: msg = g_L10n.Translate("Registration unknown error");
} }
#undef CASE #undef CASE
CreateSimpleMessage("system", msg, "error"); CreateGUIMessage("system", "error", msg);
} }
disconnect(); disconnect();
} }
@@ -613,8 +611,6 @@ void XmppClient::GuiPollMessage(ScriptInterface& scriptInterface, JS::MutableHan
scriptInterface.SetProperty(ret, "text", message.text); scriptInterface.SetProperty(ret, "text", message.text);
if (!message.level.empty()) if (!message.level.empty())
scriptInterface.SetProperty(ret, "level", message.level); scriptInterface.SetProperty(ret, "level", message.level);
if (!message.message.empty())
scriptInterface.SetProperty(ret, "message", message.message);
if (!message.data.empty()) if (!message.data.empty())
scriptInterface.SetProperty(ret, "data", message.data); scriptInterface.SetProperty(ret, "data", message.data);
if (!message.datetime.empty()) if (!message.datetime.empty())
@@ -651,7 +647,7 @@ void XmppClient::ClearPresenceUpdates()
std::remove_if(m_GuiMessageQueue.begin(), m_GuiMessageQueue.end(), std::remove_if(m_GuiMessageQueue.begin(), m_GuiMessageQueue.end(),
[](XmppClient::GUIMessage& message) [](XmppClient::GUIMessage& message)
{ {
return message.type == L"muc" && message.level == L"presence"; return message.type == L"chat" && message.level == L"presence";
} }
), m_GuiMessageQueue.end()); ), m_GuiMessageQueue.end());
} }
@@ -664,19 +660,20 @@ int XmppClient::GetMucMessageCount()
return std::count_if(m_GuiMessageQueue.begin(), m_GuiMessageQueue.end(), return std::count_if(m_GuiMessageQueue.begin(), m_GuiMessageQueue.end(),
[](XmppClient::GUIMessage& message) [](XmppClient::GUIMessage& message)
{ {
return message.type == L"muc"; return message.type == L"chat";
}); });
} }
/** /**
* Handle a standard MUC textual message. * Handle a room message.
*/ */
void XmppClient::handleMUCMessage(glooxwrapper::MUCRoom*, const glooxwrapper::Message& msg, bool) void XmppClient::handleMUCMessage(glooxwrapper::MUCRoom*, const glooxwrapper::Message& msg, bool)
{ {
DbgXMPP(msg.from().resource() << " said " << msg.body()); DbgXMPP(msg.from().resource() << " said " << msg.body());
GUIMessage message; GUIMessage message;
message.type = L"mucmessage"; message.type = L"chat";
message.level = L"room-message";
message.from = wstring_from_utf8(msg.from().resource().to_string()); message.from = wstring_from_utf8(msg.from().resource().to_string());
message.text = wstring_from_utf8(msg.body().to_string()); message.text = wstring_from_utf8(msg.body().to_string());
if (msg.when()) if (msg.when())
@@ -686,7 +683,7 @@ void XmppClient::handleMUCMessage(glooxwrapper::MUCRoom*, const glooxwrapper::Me
} }
/** /**
* Handle a standard textual message. * Handle a private message.
*/ */
void XmppClient::handleMessage(const glooxwrapper::Message& msg, glooxwrapper::MessageSession *) void XmppClient::handleMessage(const glooxwrapper::Message& msg, glooxwrapper::MessageSession *)
{ {
@@ -694,8 +691,10 @@ void XmppClient::handleMessage(const glooxwrapper::Message& msg, glooxwrapper::M
<< ", message " << msg.body() << ", thread id " << msg.thread()); << ", message " << msg.body() << ", thread id " << msg.thread());
GUIMessage message; GUIMessage message;
message.type = L"chat";
message.level = L"private-message";
message.from = wstring_from_utf8(msg.from().username().to_string()); message.from = wstring_from_utf8(msg.from().username().to_string());
message.message = wstring_from_utf8(msg.body().to_string()); message.text = wstring_from_utf8(msg.body().to_string());
if (msg.when()) if (msg.when())
//See http://xmpp.org/extensions/xep-0082.html#sect-idp285136 for format //See http://xmpp.org/extensions/xep-0082.html#sect-idp285136 for format
message.datetime = msg.when()->stamp().to_string(); message.datetime = msg.when()->stamp().to_string();
@@ -723,7 +722,7 @@ bool XmppClient::handleIq(const glooxwrapper::IQ& iq)
for (const glooxwrapper::Tag* const& t : gq->m_GameList) for (const glooxwrapper::Tag* const& t : gq->m_GameList)
m_GameList.emplace_back(t->clone()); m_GameList.emplace_back(t->clone());
CreateSimpleMessage("system", "gamelist updated", "internal"); CreateGUIMessage("game", "gamelist");
} }
if (bq) if (bq)
{ {
@@ -736,7 +735,7 @@ bool XmppClient::handleIq(const glooxwrapper::IQ& iq)
for (const glooxwrapper::Tag* const& t : bq->m_StanzaBoardList) for (const glooxwrapper::Tag* const& t : bq->m_StanzaBoardList)
m_BoardList.emplace_back(t->clone()); m_BoardList.emplace_back(t->clone());
CreateSimpleMessage("system", "boardlist updated", "internal"); CreateGUIMessage("game", "leaderboard");
} }
else if (bq->m_Command == "ratinglist") else if (bq->m_Command == "ratinglist")
{ {
@@ -747,7 +746,7 @@ bool XmppClient::handleIq(const glooxwrapper::IQ& iq)
m_PlayerMap[name][1] = t->findAttribute("rating").to_string(); m_PlayerMap[name][1] = t->findAttribute("rating").to_string();
} }
CreateSimpleMessage("system", "ratinglist updated", "internal"); CreateGUIMessage("game", "ratinglist");
} }
} }
if (pq) if (pq)
@@ -759,22 +758,21 @@ bool XmppClient::handleIq(const glooxwrapper::IQ& iq)
for (const glooxwrapper::Tag* const& t : pq->m_StanzaProfile) for (const glooxwrapper::Tag* const& t : pq->m_StanzaProfile)
m_Profile.emplace_back(t->clone()); m_Profile.emplace_back(t->clone());
CreateSimpleMessage("system", "profile updated", "internal"); CreateGUIMessage("game", "profile");
} }
} }
else if (iq.subtype() == gloox::IQ::Error) else if (iq.subtype() == gloox::IQ::Error)
{ {
gloox::StanzaError err = iq.error_error(); gloox::StanzaError err = iq.error_error();
std::string msg = StanzaErrorToString(err); std::string msg = StanzaErrorToString(err);
CreateSimpleMessage("system", msg, "error"); CreateGUIMessage("system", "error", msg);
} }
else else
{ {
CreateSimpleMessage("system", g_L10n.Translate("unknown subtype (see logs)"), "error"); CreateGUIMessage("system", "error", g_L10n.Translate("unknown subtype (see logs)"));
std::string tag = tag_name(iq); std::string tag = tag_name(iq);
LOGMESSAGE("unknown subtype '%s'", tag.c_str()); LOGMESSAGE("unknown subtype '%s'", tag.c_str());
} }
return true; return true;
} }
@@ -786,7 +784,7 @@ bool XmppClient::handleIq(const glooxwrapper::IQ& iq)
* @param text Body of the message * @param text Body of the message
* @param data Optional field, used for auxiliary data * @param data Optional field, used for auxiliary data
*/ */
void XmppClient::CreateSimpleMessage(const std::string& type, const std::string& text, const std::string& level, const std::string& data) void XmppClient::CreateGUIMessage(const std::string& type, const std::string& level, const std::string& text, const std::string& data)
{ {
GUIMessage message; GUIMessage message;
message.type = wstring_from_utf8(type); message.type = wstring_from_utf8(type);
@@ -820,10 +818,10 @@ void XmppClient::handleMUCParticipantPresence(glooxwrapper::MUCRoom*, const gloo
m_PlayerMap[newNick].resize(3); m_PlayerMap[newNick].resize(3);
m_PlayerMap[newNick][0] = presenceString; m_PlayerMap[newNick][0] = presenceString;
m_PlayerMap[newNick][2] = roleString; m_PlayerMap[newNick][2] = roleString;
CreateSimpleMessage("muc", nick, "nick", participant.newNick.to_string()); CreateGUIMessage("chat", "nick", nick, participant.newNick.to_string());
} }
else else
CreateSimpleMessage("muc", nick, "leave"); CreateGUIMessage("chat", "leave", nick);
DbgXMPP(nick << " left the room"); DbgXMPP(nick << " left the room");
m_PlayerMap.erase(nick); m_PlayerMap.erase(nick);
@@ -840,9 +838,9 @@ void XmppClient::handleMUCParticipantPresence(glooxwrapper::MUCRoom*, const gloo
m_initialLoadComplete = true; m_initialLoadComplete = true;
} }
else if (m_PlayerMap.find(nick) == m_PlayerMap.end()) else if (m_PlayerMap.find(nick) == m_PlayerMap.end())
CreateSimpleMessage("muc", nick, "join"); CreateGUIMessage("chat", "join", nick);
else else
CreateSimpleMessage("muc", nick, "presence"); CreateGUIMessage("chat", "presence", nick);
DbgXMPP(nick << " is in the room, presence : " << (int)presenceType); DbgXMPP(nick << " is in the room, presence : " << (int)presenceType);
m_PlayerMap[nick].resize(3); m_PlayerMap[nick].resize(3);
@@ -857,7 +855,7 @@ void XmppClient::handleMUCParticipantPresence(glooxwrapper::MUCRoom*, const gloo
void XmppClient::handleMUCSubject(glooxwrapper::MUCRoom*, const glooxwrapper::string& UNUSED(nick), const glooxwrapper::string& subject) void XmppClient::handleMUCSubject(glooxwrapper::MUCRoom*, const glooxwrapper::string& UNUSED(nick), const glooxwrapper::string& subject)
{ {
m_Subject = subject.c_str(); m_Subject = subject.c_str();
CreateSimpleMessage("muc", m_Subject, "subject"); CreateGUIMessage("chat", "subject", m_Subject);
} }
/** /**
+1 -1
View File
@@ -144,7 +144,7 @@ public:
int GetMucMessageCount(); int GetMucMessageCount();
protected: protected:
void PushGuiMessage(XmppClient::GUIMessage message); void PushGuiMessage(XmppClient::GUIMessage message);
void CreateSimpleMessage(const std::string& type, const std::string& text, const std::string& level = "standard", const std::string& data = ""); void CreateGUIMessage(const std::string& type, const std::string& level, const std::string& text = "", const std::string& data = "");
private: private:
/// Map of players /// Map of players