public TwitterMessageBuilder Append(TwitterDirectMessage status, ContactModel sender, bool isHighlight) { if (status == null) { throw new ArgumentNullException("status"); } if (sender == null) { throw new ArgumentNullException("sender"); } // MessageModel serializer expects UTC values TimeStamp = status.CreatedDate.ToUniversalTime(); AppendSenderPrefix(sender, isHighlight); AppendMessage(status.Text); return this; }
public TwitterMessageBuilder Append(TwitterStatus status, ContactModel sender, bool isHighlight) { if (status == null) { throw new ArgumentNullException("status"); } if (sender == null) { throw new ArgumentNullException("sender"); } // MessageModel serializer expects UTC values TimeStamp = status.CreatedDate.ToUniversalTime(); ID = status.StringId; AppendSenderPrefix(sender, isHighlight); if (status.RetweetedStatus == null && status.QuotedStatus == null) { AppendMessage(status.Text); } if (status.RetweetedStatus != null) { var rtMsg = String.Format( "RT @{0}: {1}", status.RetweetedStatus.User.ScreenName, status.RetweetedStatus.Text ); AppendMessage(rtMsg); } if (status.QuotedStatus != null) { var qtMsg = String.Format( "QT @{0}: {1}", status.QuotedStatus.User.ScreenName, status.QuotedStatus.Text ); AppendMessage(status.Text); AppendSpace(); AppendMessage(qtMsg); } return this; }
public virtual IList<TextMessagePartModel> CreateSenderPrefix(ContactModel contact) { if (contact == null) { throw new ArgumentNullException("contact"); } var sender = CreateNick(contact); sender.Add(CreateSpace()); return sender; }
public virtual IList<TextMessagePartModel> CreateNick(ContactModel contact) { if (contact == null) { throw new ArgumentNullException("contact"); } var prefix = CreateText("<"); var suffix = CreateText(">"); var nick = CreateIdendityName(contact); if (NickColors) { // using bg colors for the nick texts are too intrusive, thus // map the bg color to the fg color of the surrounding tags var senderBgColor = contact.IdentityNameColored.BackgroundColor; if (senderBgColor != TextColor.None) { prefix.ForegroundColor = senderBgColor; suffix.ForegroundColor = senderBgColor; nick.BackgroundColor = TextColor.None; } } var senderMsg = new List<TextMessagePartModel>(3); senderMsg.Add(prefix); senderMsg.Add(nick); senderMsg.Add(suffix); return senderMsg; }
public virtual TextMessagePartModel CreateIdendityName(ContactModel identity) { if (identity == null) { throw new ArgumentNullException("identity"); } if (!NickColors) { return CreateText(identity.IdentityName); } var identityName = CreateText(identity.IdentityNameColored); // don't clutter with the bg color identityName.BackgroundColor = TextColor.None; return identityName; }
public MessageBuilder AppendSenderPrefix(ContactModel sender) { return AppendSenderPrefix(sender, false); }
public virtual MessageBuilder AppendSenderPrefix(ContactModel contact, bool isHighlight) { if (contact == null) { throw new ArgumentNullException("sender"); } var senderMsg = CreateSenderPrefix(contact); /* // 1st element is prefix // 3rdt element is prefix if (isHighlight) { // HACK: reset fg color of prefix and suffix so highlight color // will be applied instead senderMsg[0].ForegroundColor = TextColor.None; senderMsg[2].ForegroundColor = TextColor.None; } */ // 2nd element is the nick senderMsg[1].IsHighlight = isHighlight; foreach (var senderPart in senderMsg) { AppendText(senderPart); } return this; }
public virtual MessageBuilder AppendNick(ContactModel contact) { if (contact == null) { throw new ArgumentNullException("contact"); } return AppendText(CreateNick(contact)); }
public MessageBuilder AppendMessage(ContactModel sender, string msg) { if (sender != null) { AppendSenderPrefix(sender); } return AppendMessage(msg); }
public MessageBuilder AppendIdendityName(ContactModel identity) { return AppendIdendityName(identity, false); }
public virtual MessageBuilder AppendIdendityName(ContactModel identity, bool isHighlight) { if (identity == null) { throw new ArgumentNullException("identity"); } var identityName = CreateIdendityName(identity); identityName.IsHighlight = isHighlight; return AppendText(identityName); }
public override int CompareTo(ContactModel contact) { var ircContact = contact as IrcGroupPersonModel; if (ircContact == null) { return 1; } int status1 = 0; if (IsOp) { status1 += 2; } else if (IsVoice) { status1 += 1; } int status2 = 0; if (ircContact.IsOp) { status2 += 2; } else if (ircContact.IsVoice) { status2 += 1; } int res = status2.CompareTo(status1); if (res != 0 ) { return res; } // the status is equal, so the name decides return base.CompareTo(contact); }
public virtual MessageBuilder AppendPresenceState(ContactModel contact, MessageType state) { switch (state) { case MessageType.PresenceStateAway: if (Message.IsEmpty) { AppendActionPrefix(); AppendFormat(_("{0} is away"), contact); } break; case MessageType.PresenceStateOffline: if (Message.IsEmpty) { AppendActionPrefix(); AppendFormat(_("{0} is offline"), contact); } break; case MessageType.PresenceStateOnline: if (Message.IsEmpty) { AppendActionPrefix(); AppendFormat(_("{0} is online"), contact); } break; default: throw new ArgumentException("state is not a PresenceState", "state"); } MessageType = state; return this; }
public virtual MessageBuilder AppendChatState(ContactModel contact, MessageType state) { switch (state) { case MessageType.ChatStateComposing: if (Message.IsEmpty) { AppendActionPrefix(); AppendFormat(_("{0} is typing..."), contact); } break; case MessageType.ChatStatePaused: if (Message.IsEmpty) { AppendActionPrefix(); AppendFormat(_("{0} has stopped typing..."), contact); } break; case MessageType.ChatStateReset: break; default: throw new ArgumentException("state is not a ChatState", "state"); } MessageType = state; return this; }
public void CommandGenerateMessages(CommandModel cmd, IChatView chat) { Trace.Call(cmd, chat); var count = 0; Int32.TryParse(cmd.Parameter, out count); var builder = new MessageBuilder(); var sender = new ContactModel("msg-tester", "msg-tester", "test", "test"); builder.AppendMessage(sender, "time for a messsage generator command so I can test speed and memory usage"); var text = builder.CreateText(" *formatted text* "); text.Bold = true; builder.Append(text); builder.AppendUrl("https://www.smuxi.org/"); var msgs = new List<MessageModel>(count); for (var i = 0; i < count; i++) { var msg = builder.ToMessage(); msgs.Add(msg); } DateTime start, stop; start = DateTime.UtcNow; foreach (var msg in msgs) { chat.AddMessage(msg); } stop = DateTime.UtcNow; builder = new MessageBuilder(); builder.AppendText( "IChatView.AddMessage(): count: {0} took: {1:0} ms avg: {2:0.00} ms", count, (stop - start).TotalMilliseconds, (stop - start).TotalMilliseconds / count ); chat.AddMessage(builder.ToMessage()); }
public TwitterMessageBuilder Append(TwitterStatus status, ContactModel sender) { return Append(status, sender, false); }