Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        public virtual IList<TextMessagePartModel> CreateSenderPrefix(ContactModel contact)
        {
            if (contact == null) {
                throw new ArgumentNullException("contact");
            }

            var sender = CreateNick(contact);
            sender.Add(CreateSpace());
            return sender;
        }
Ejemplo n.º 4
0
        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;
        }
Ejemplo n.º 5
0
        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;
        }
Ejemplo n.º 6
0
 public MessageBuilder AppendSenderPrefix(ContactModel sender)
 {
     return AppendSenderPrefix(sender, false);
 }
Ejemplo n.º 7
0
        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;
        }
Ejemplo n.º 8
0
        public virtual MessageBuilder AppendNick(ContactModel contact)
        {
            if (contact == null) {
                throw new ArgumentNullException("contact");
            }

            return AppendText(CreateNick(contact));
        }
Ejemplo n.º 9
0
 public MessageBuilder AppendMessage(ContactModel sender, string msg)
 {
     if (sender != null) {
         AppendSenderPrefix(sender);
     }
     return AppendMessage(msg);
 }
Ejemplo n.º 10
0
 public MessageBuilder AppendIdendityName(ContactModel identity)
 {
     return AppendIdendityName(identity, false);
 }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
 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;
 }
Ejemplo n.º 14
0
 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;
 }
Ejemplo n.º 15
0
        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());
        }
Ejemplo n.º 16
0
 public TwitterMessageBuilder Append(TwitterStatus status, ContactModel sender)
 {
     return Append(status, sender, false);
 }