[smuxi: 2/8] Engine-XMPP: refactored CreateMessage to get rid of multiple boolean parameters
- From: Mirco M. M. Bauer <mmmbauer src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [smuxi: 2/8] Engine-XMPP: refactored CreateMessage to get rid of multiple boolean parameters
- Date: Sat, 12 Jul 2014 09:58:30 +0000 (UTC)
commit 14b6c8f6378da9d4a3ed66a4f94eeee32bc99ae5
Author: Oliver Schneider <mail oli-obk de>
Date: Mon Jul 7 18:43:40 2014 +0200
Engine-XMPP: refactored CreateMessage to get rid of multiple boolean parameters
.../Protocols/Xmpp/XmppProtocolManager.cs | 83 ++++++++++++++++++--
1 files changed, 75 insertions(+), 8 deletions(-)
---
diff --git a/src/Engine-XMPP/Protocols/Xmpp/XmppProtocolManager.cs
b/src/Engine-XMPP/Protocols/Xmpp/XmppProtocolManager.cs
index 553fa77..a5f1e25 100644
--- a/src/Engine-XMPP/Protocols/Xmpp/XmppProtocolManager.cs
+++ b/src/Engine-XMPP/Protocols/Xmpp/XmppProtocolManager.cs
@@ -2079,8 +2079,12 @@ namespace Smuxi.Engine
}
// mark highlights only for received messages
- bool hilight = person.ID != groupChat.OwnNickname;
- var message = CreateMessage(person, msg, hilight, false);
+ MessageModel message;
+ if (person.ID == groupChat.OwnNickname) {
+ message = CreateEchoGroupChatMessage(groupChat, msg);
+ } else {
+ message = CreateGroupChatMessage(groupChat, person, msg);
+ }
Session.AddMessageToChat(groupChat, message);
OnMessageReceived(
new MessageEventArgs(groupChat, message, msg.From, groupChat.ID)
@@ -2129,14 +2133,48 @@ namespace Smuxi.Engine
if (msg.Nickname != null) {
ProcessNickname(GetOrCreateContact(msg.From, msg.Nickname.Value), msg.Nickname);
}
- var message = CreateMessage(chat.Person, msg, true, true);
+ var message = CreatePrivateChatMessage(chat.Person, msg);
AddMessageToChatIfNotFiltered(message, chat, isNew);
OnMessageReceived(
new MessageEventArgs(chat, message, msg.From, null)
);
}
- MessageModel CreateMessage(PersonModel person, Message msg, bool mark_hilights, bool force_hilight)
+ MessageModel CreateEchoGroupChatMessage(XmppGroupChatModel groupChat, Message msg)
+ {
+ var builder = CreateMessageBuilder();
+ string msgstring;
+ if (msg.Html != null) {
+ msgstring = msg.Html.ToString();
+ } else {
+ msgstring = msg.Body.Trim();
+ }
+ var self = new PersonModel(
+ groupChat.OwnNickname,
+ groupChat.OwnNickname,
+ NetworkID, Protocol, this);
+ if (msgstring.StartsWith("/me ")) {
+ // leave the " " intact
+ msgstring = msgstring.Substring(3);
+ builder.AppendActionPrefix();
+ builder.AppendIdendityName(self);
+ } else {
+ builder.AppendSenderPrefix(self);
+ }
+
+ if (msg.Html != null) {
+ builder.AppendHtmlMessage(msgstring);
+ } else {
+ builder.AppendMessage(msgstring);
+ }
+
+ if (msg.XDelay != null) {
+ builder.TimeStamp = msg.XDelay.Stamp;
+ }
+ return builder.ToMessage();
+ }
+
+ MessageModel CreateGroupChatMessage(XmppGroupChatModel groupChat, PersonModel person, Message msg)
{
var builder = CreateMessageBuilder();
string msgstring;
@@ -2150,9 +2188,9 @@ namespace Smuxi.Engine
// leave the " " intact
msgstring = msgstring.Substring(3);
builder.AppendActionPrefix();
- builder.AppendIdendityName(person, force_hilight);
+ builder.AppendIdendityName(person);
} else {
- builder.AppendSenderPrefix(person, force_hilight);
+ builder.AppendSenderPrefix(person);
}
if (msg.Html != null) {
@@ -2160,8 +2198,37 @@ namespace Smuxi.Engine
} else {
builder.AppendMessage(msgstring);
}
- if (mark_hilights) {
- builder.MarkHighlights();
+ builder.MarkHighlights();
+
+ if (msg.XDelay != null) {
+ builder.TimeStamp = msg.XDelay.Stamp;
+ }
+ return builder.ToMessage();
+ }
+
+ MessageModel CreatePrivateChatMessage(PersonModel person, Message msg)
+ {
+ var builder = CreateMessageBuilder();
+ string msgstring;
+ if (msg.Html != null) {
+ msgstring = msg.Html.ToString();
+ } else {
+ msgstring = msg.Body.Trim();
+ }
+
+ if (msgstring.StartsWith("/me ")) {
+ // leave the " " intact
+ msgstring = msgstring.Substring(3);
+ builder.AppendActionPrefix();
+ builder.AppendIdendityName(person, true);
+ } else {
+ builder.AppendSenderPrefix(person, true);
+ }
+
+ if (msg.Html != null) {
+ builder.AppendHtmlMessage(msgstring);
+ } else {
+ builder.AppendMessage(msgstring);
}
if (msg.XDelay != null) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]