Esempio n. 1
0
        public void RenderSingleMessage24HourTimeTest()
        {
            IConversation        conversation   = DummyConversationDataGenerator.GetSingleConversation(DummyPhoneNumberId.UnknownEagle);
            IConversationMessage message        = conversation.GetMessage(0);
            MockDisplayOptions   displayOptions = new MockDisplayOptions();

            displayOptions.TimeDisplayFormat = TimeDisplayFormat.HourMinSec24h;

            ConversationRendererRichText_Accessor renderer = new ConversationRendererRichText_Accessor(displayOptions, conversation);

            List <Inline> inlineListExpected = new List <Inline>();
            Span          messagePrefix      = new Span();

            messagePrefix.Inlines.Add(new Bold(new Run("Unknown Sender")));
            messagePrefix.Inlines.Add(new Run(" (\u200E20:38:17\u202C)"));
            messagePrefix.Inlines.Add(new Run(": "));
            inlineListExpected.Add(messagePrefix);
            inlineListExpected.Add(new ConversationContentRun(message.MessageContents));

            List <Inline> inlineListActual = new List <Inline>();

            inlineListActual.AddRange(renderer.ConversationMessageToInlines(message));

            VerifyInlineListsMatch(inlineListExpected, inlineListActual);
        }
        private IEnumerable <Inline> ConversationMessageToInlines(IConversationMessage message)
        {
            string senderNameString;
            string timestampString;
            string messageContents = message.MessageContents;

            List <Inline>   messageInlines = new List <Inline>();
            SolidColorBrush senderBrush;

            Span messagePrefixSpan = new Span();

            senderNameString = GetSenderDisplayName(message);
            senderBrush      = GetSenderBrush(message);

            Bold senderName = new Bold(new Run(senderNameString));

            messagePrefixSpan.Foreground = senderBrush;
            messagePrefixSpan.Inlines.Add(senderName);

            timestampString = FormatTimeForConversation(message.Timestamp);
            if (timestampString != null)
            {
                string formattedTimestamp = string.Format(" (" + '\u200E' + "{0}" + '\u202C' + ")", timestampString);
                Run    timestampRun       = new Run(formattedTimestamp);
                messagePrefixSpan.Inlines.Add(timestampRun);
            }

            messagePrefixSpan.Inlines.Add(new Run(": "));

            messageInlines.Add(messagePrefixSpan);

            messageInlines.Add(new ConversationContentRun(messageContents));

            return(messageInlines);
        }
Esempio n. 3
0
        public void AddMessage(IConversationMessage message)
        {
            if ((message.MessageContents == null) && !message.HasAttachments())
            {
                return;
            }

            _messagesSorted = false;
            _messages.Add(message);
        }
Esempio n. 4
0
        public void AddMessage(IConversationMessage message)
        {
            if ((message.MessageContents == null) && !message.HasAttachments())
            {
                return;
            }

            _messagesSorted = false;
            _messages.Add(message);
        }
Esempio n. 5
0
        protected override void AddMessageLine(IConversationMessage message)
        {
            string messageLineFormat = "{0} (" + '\u200E' + "{1}" + '\u202C' + "): {2}";

            string contactName = GetSenderDisplayName(message);

            string timestamp       = FormatTimeForConversation(message.Timestamp);
            string messageContents = message.MessageContents;

            _renderBuffer.AppendFormat(messageLineFormat, contactName, timestamp, messageContents);
        }
Esempio n. 6
0
        private void VerifyMessagesMatch(IConversation conversation, TextMessage[] messagesExpected)
        {
            Assert.AreEqual(messagesExpected.Length, conversation.MessageCount);

            for (int messageIndex = 0; messageIndex < conversation.MessageCount; messageIndex++)
            {
                IConversationMessage conversationMessageCurrent = conversation.GetMessage(messageIndex);
                TextMessage          textMessageExpected        = messagesExpected[messageIndex];
                VerifyTextMessageMatchesConversationMessage(textMessageExpected, conversationMessageCurrent);
            }
        }
        protected override void AddMessageLine(IConversationMessage message)
        {
            string messageLineFormat = "{0} (" + '\u200E' + "{1}" + '\u202C' + "): {2}";

            string contactName = GetSenderDisplayName(message);

            string timestamp = FormatTimeForConversation(message.Timestamp);
            string messageContents = message.MessageContents;

            _renderBuffer.AppendFormat(messageLineFormat, contactName, timestamp, messageContents);
        }
Esempio n. 8
0
 protected static string GetSenderDisplayName(IConversationMessage message)
 {
     if (message.IsOutgoing)
     {
         return(_localName);
     }
     else
     {
         return(message.Contact.DisplayName);
     }
 }
Esempio n. 9
0
        public void GetSenderColorUnknownContactTest()
        {
            IConversation        conversation    = DummyConversationDataGenerator.GetSingleConversation(DummyPhoneNumberId.UnknownEagle);
            IConversationMessage incomingMessage = conversation.GetMessage(0);
            MockDisplayOptions   displayOptions  = new MockDisplayOptions();

            ConversationRendererRichText_Accessor renderer = new ConversationRendererRichText_Accessor(displayOptions, conversation);

            System.Windows.Media.Color incomingMessageColor = renderer.GetSenderDisplayColor(incomingMessage);

            Assert.IsNotNull(incomingMessageColor);
        }
Esempio n. 10
0
        public void GetSenderColorMergedConversationTest()
        {
            IConversation        conversation          = DummyConversationDataGenerator.GetMergedConversation(DummyContactId.Davola);
            IConversationMessage cellIncomingMessage   = conversation.GetMessage(0);
            IConversationMessage iPhoneIncomingMessage = conversation.GetMessage(11);
            MockDisplayOptions   displayOptions        = new MockDisplayOptions();

            ConversationRendererRichText_Accessor renderer = new ConversationRendererRichText_Accessor(displayOptions, conversation);

            System.Windows.Media.Color cellColor   = renderer.GetSenderDisplayColor(cellIncomingMessage);
            System.Windows.Media.Color iPhoneColor = renderer.GetSenderDisplayColor(iPhoneIncomingMessage);

            Assert.AreEqual(cellColor, iPhoneColor);
        }
        protected override void AddMessageLine(IConversationMessage message)
        {
            const string MessageLineFormat = "<span style=\"color:{0};\"><span class=\"senderName\">{1}</span> <span class=\"timestamp\">(<span dir=\"ltr\" lang=\"en\">{2}</span>)</span>: </span>{3}";

            string prefixColor;
            string contactName;

            prefixColor = GetMessagePrefixColor(message);

            contactName = EscapeHtml(GetSenderDisplayName(message));

            string timestamp       = FormatTimeForConversation(message.Timestamp);
            string messageContents = EscapeHtml(message.MessageContents);

            _htmlBuffer.AppendFormat(MessageLineFormat, prefixColor, contactName, timestamp, messageContents);
        }
        protected override void AddMessageLine(IConversationMessage message)
        {
            const string MessageLineFormat = "<span style=\"color:{0};\"><span class=\"senderName\">{1}</span> <span class=\"timestamp\">(<span dir=\"ltr\" lang=\"en\">{2}</span>)</span>: </span>{3}";

            string prefixColor;
            string contactName;

            prefixColor = GetMessagePrefixColor(message);

            contactName = EscapeHtml(GetSenderDisplayName(message));

            string timestamp = FormatTimeForConversation(message.Timestamp);
            string messageContents = EscapeHtml(message.MessageContents);

            _htmlBuffer.AppendFormat(MessageLineFormat, prefixColor, contactName, timestamp, messageContents);
        }
Esempio n. 13
0
        public async Task <T> Request <T>(IConversationMessage <T> message)
        {
            LastRequestType = message.Type;

            using (var p = new Packet(SendPacketOperations.ScriptMessage))
            {
                message.Encode(p);
                await Socket.SendPacket(p);
            }

            var response = (T)await _responses.DequeueAsync(TokenSource.Token);

            if (!message.Validate(response))
            {
                throw new InvalidDataException("Invalid response value");
            }

            return(response);
        }
Esempio n. 14
0
        protected Color GetSenderDisplayColor(IConversationMessage message)
        {
            if (message.IsOutgoing)
            {
                return(_localSenderColor);
            }

            int brushIndex;

            int phoneNumberIndex = _remoteContacts.IndexOf(message.Contact);

            if (phoneNumberIndex < 0)
            {
                _remoteContacts.Add(message.Contact);
                brushIndex = (_remoteContacts.Count - 1) % _remoteSenderColors.Length;
            }
            else
            {
                brushIndex = phoneNumberIndex % _remoteSenderColors.Length;
            }

            return(_remoteSenderColors[brushIndex]);
        }
Esempio n. 15
0
        public void SingleMessageConversationTest()
        {
            IConversation   conversation   = DummyConversationDataGenerator.GetSingleConversation(DummyPhoneNumberId.UnknownEagle);
            IDisplayOptions displayOptions = new MockDisplayOptions();

            ConversationRendererRichText_Accessor renderer = new ConversationRendererRichText_Accessor(displayOptions, conversation);

            List <Paragraph> paragraphsActual = renderer.RenderMessagesAsParagraphs(ConversationRendererRichText.RenderAllMessages);

            Assert.AreEqual(1, paragraphsActual.Count);

            IConversationMessage message = conversation.GetMessage(0);

            Paragraph paragraphExpected = new Paragraph();

            paragraphExpected.Inlines.Add(ConversationRendererRichText_Accessor.DateAsInline(message.Timestamp));
            paragraphExpected.Inlines.Add(new LineBreak());
            paragraphExpected.Inlines.AddRange(renderer.ConversationMessageToInlines(message));

            VerifyParagraphsEqual(paragraphExpected, paragraphsActual[0]);

            paragraphsActual = renderer.RenderMessagesAsParagraphs(ConversationRendererRichText.RenderAllMessages);
            Assert.AreEqual(0, paragraphsActual.Count);
        }
Esempio n. 16
0
        private void ProcessMessage(int messageIndex)
        {
            IConversationMessage message = _conversation.GetMessage(messageIndex);

            if (message.Timestamp.Date != _lastMessageDate)
            {
                StartNewParagraph();

                AddDateLine(message.Timestamp);

                _lastMessageDate = message.Timestamp.Date;
            }

            AddLineBreak();

            AddMessageLine(message);

            if (_displayOptions.LoadMmsAttachments && message.HasAttachments())
            {
                foreach (IMessageAttachment attachment in message.Attachments)
                {
                    AddLineBreak();

                    try
                    {
                        AddAttachment(attachment);
                    }
                    catch
                    {
                        // Ignore attachment errors
                    }
                }
            }

            _lastMessageReadIndex = messageIndex;
        }
 private SolidColorBrush GetSenderBrush(IConversationMessage message)
 {
     return new SolidColorBrush(GetSenderDisplayColor(message));
 }
        private IEnumerable<Inline> ConversationMessageToInlines(IConversationMessage message)
        {
            string senderNameString;
            string timestampString;
            string messageContents = message.MessageContents;

            List<Inline> messageInlines = new List<Inline>();
            SolidColorBrush senderBrush;

            Span messagePrefixSpan = new Span();

            senderNameString = GetSenderDisplayName(message);
            senderBrush = GetSenderBrush(message);

            Bold senderName = new Bold(new Run(senderNameString));
            messagePrefixSpan.Foreground = senderBrush;
            messagePrefixSpan.Inlines.Add(senderName);

            timestampString = FormatTimeForConversation(message.Timestamp);
            if (timestampString != null)
            {
                string formattedTimestamp = string.Format(" (" + '\u200E' + "{0}" + '\u202C' + ")", timestampString);
                Run timestampRun = new Run(formattedTimestamp);
                messagePrefixSpan.Inlines.Add(timestampRun);
            }

            messagePrefixSpan.Inlines.Add(new Run(": "));

            messageInlines.Add(messagePrefixSpan);

            messageInlines.Add(new ConversationContentRun(messageContents));

            return messageInlines;
        }
        private string GetMessagePrefixColor(IConversationMessage message)
        {
            Color displayColor = GetSenderDisplayColor(message);

            return ColorToCssAttribute(displayColor);
        }
 public void AddMessage(IConversationMessage message)
 {
     throw new NotImplementedException();
 }
Esempio n. 21
0
 public void AddMessage(IConversationMessage message)
 {
     _messages.Add(message);
 }
 private SolidColorBrush GetSenderBrush(IConversationMessage message)
 {
     return(new SolidColorBrush(GetSenderDisplayColor(message)));
 }
        protected Color GetSenderDisplayColor(IConversationMessage message)
        {
            if (message.IsOutgoing)
            {
                return _localSenderColor;
            }

            int brushIndex;

            int phoneNumberIndex = _remoteContacts.IndexOf(message.Contact);

            if (phoneNumberIndex < 0)
            {
                _remoteContacts.Add(message.Contact);
                brushIndex = (_remoteContacts.Count - 1) % _remoteSenderColors.Length;
            }
            else
            {
                brushIndex = phoneNumberIndex % _remoteSenderColors.Length;
            }

            return _remoteSenderColors[brushIndex];
        }
 protected abstract void AddMessageLine(IConversationMessage message);
Esempio n. 25
0
 private void VerifyTextMessageMatchesConversationMessage(TextMessage textMessage, IConversationMessage conversationMessage)
 {
     Assert.AreEqual(textMessage.Timestamp, conversationMessage.Timestamp);
     Assert.AreEqual(textMessage.MessageContents, conversationMessage.MessageContents);
     Assert.AreEqual(textMessage.IsOutgoing, conversationMessage.IsOutgoing);
 }
Esempio n. 26
0
 protected abstract void AddMessageLine(IConversationMessage message);
 protected override void AddMessageLine(IConversationMessage message)
 {
     IEnumerable<Inline> messageInlines = ConversationMessageToInlines(message);
     _currentParagraph.Inlines.AddRange(messageInlines);
 }
 public void AddMessage(IConversationMessage message)
 {
     throw new NotImplementedException();
 }
        private void VerifyMessageDisplayName(IConversationMessage message, string senderDisplayNameExpected)
        {
            string senderDisplayNameActual = ConversationRendererBase_Accessor.GetSenderDisplayName(message);

            Assert.AreEqual(senderDisplayNameExpected, senderDisplayNameActual);
        }
        protected override void AddMessageLine(IConversationMessage message)
        {
            IEnumerable <Inline> messageInlines = ConversationMessageToInlines(message);

            _currentParagraph.Inlines.AddRange(messageInlines);
        }
Esempio n. 31
0
 public void AddMessage(IConversationMessage message)
 {
     _messages.Add(message);
 }
        private string GetMessagePrefixColor(IConversationMessage message)
        {
            Color displayColor = GetSenderDisplayColor(message);

            return(ColorToCssAttribute(displayColor));
        }
 private void VerifyTextMessageMatchesConversationMessage(TextMessage textMessage, IConversationMessage conversationMessage)
 {
     Assert.AreEqual(textMessage.Timestamp, conversationMessage.Timestamp);
     Assert.AreEqual(textMessage.MessageContents, conversationMessage.MessageContents);
     Assert.AreEqual(textMessage.IsOutgoing, conversationMessage.IsOutgoing);
 }
 protected static string GetSenderDisplayName(IConversationMessage message)
 {
     if (message.IsOutgoing)
     {
         return _localName;
     }
     else
     {
         return message.Contact.DisplayName;
     }
 }
 private void VerifyMessageDisplayName(IConversationMessage message, string senderDisplayNameExpected)
 {
     string senderDisplayNameActual = ConversationRendererBase_Accessor.GetSenderDisplayName(message);
     Assert.AreEqual(senderDisplayNameExpected, senderDisplayNameActual);
 }