protected override List <ExportError> ExportConversationAttachments(IConversation conversation, string exportFilename, out IAttachmentExportLocator exportLocator)
        {
            List <ExportError>      exportErrors            = new List <ExportError>();
            string                  exportBasePath          = Path.GetDirectoryName(exportFilename);
            AttachmentExportLocator attachmentExportLocator = new AttachmentExportLocator(exportBasePath);
            string                  attachmentDirectoryPath = null;
            bool exportedVideoAttachment = false;
            bool exportedAudioAttachment = false;

            foreach (IConversationMessage message in conversation)
            {
                if (!message.HasAttachments())
                {
                    continue;
                }

                if (attachmentDirectoryPath == null)
                {
                    string attachmentDirectoryName = GenerateAttachmentExportDirectoryName(exportFilename);
                    attachmentDirectoryPath = Path.Combine(exportBasePath, attachmentDirectoryName);
                    attachmentDirectoryPath = FileCreator.CreateNewDirectoryWithRenameAttempts(attachmentDirectoryPath, _exportFileSystem, MaxRenameAttempts);
                }

                foreach (IMessageAttachment attachment in message.Attachments)
                {
                    try
                    {
                        string exportedPath = ExportMessageAttachment(attachment, attachmentDirectoryPath);
                        attachmentExportLocator.AddAttachmentExportLocation(attachment, exportedPath);

                        if (attachment.Type == AttachmentType.Video)
                        {
                            exportedVideoAttachment = true;
                        }
                        else if (attachment.Type == AttachmentType.Audio)
                        {
                            exportedAudioAttachment = true;
                        }
                    }
                    catch (Exception ex)
                    {
                        exportErrors.Add(new ExportError(conversation, ex));
                    }
                }
            }

            if (exportedVideoAttachment)
            {
                string videoIconPath = PlaceVideoIconFile(attachmentDirectoryPath);
                attachmentExportLocator.AddFileExportLocation(VideoIconOutputFilename, videoIconPath);
            }
            if (exportedAudioAttachment)
            {
                string audioIconPath = PlaceAudioIconFile(attachmentDirectoryPath);
                attachmentExportLocator.AddFileExportLocation(AudioIconOutputFilename, audioIconPath);
            }

            exportLocator = attachmentExportLocator;
            return(exportErrors);
        }
        private List <ExportError> DoAttachmentExport(IConversation conversation, IDisplayOptionsReadOnly displayOptions, string exportFilename, out IAttachmentExportLocator exportLocator)
        {
            List <ExportError> exportErrors;

            if (displayOptions.LoadMmsAttachments)
            {
                exportErrors = ExportConversationAttachments(conversation, exportFilename, out exportLocator);
            }
            else
            {
                exportErrors  = new List <ExportError>();
                exportLocator = new AttachmentExportLocator(null);
            }

            return(exportErrors);
        }
        public void RenderMessageWithAttachmentTest()
        {
            string renderedExpected = @"<p>
<span class=""date"">Sunday, Sep 9, 2012</span><br />
<span style=""color:rgb(0,0,210);""><span class=""senderName"">Frankie Coolpics</span> <span class=""timestamp"">(<span dir=""ltr"" lang=""en"">8:34:15 PM</span>)</span>: </span>Check this shit out!<br />
<a href=""FrankieCoolpics_attachments\IMG_0036.JPG"" target=""_blank""><img class=""attachmentImage"" src=""FrankieCoolpics_attachments\IMG_0036.JPG"" /></a><br />
<span style=""color:rgb(210,0,0);""><span class=""senderName"">Me</span> <span class=""timestamp"">(<span dir=""ltr"" lang=""en"">8:34:30 PM</span>)</span>: </span>Crazy!
</p>
";
            IDisplayOptionsReadOnly displayOptions          = new MockDisplayOptions();
            AttachmentExportLocator attachmentExportLocator = new AttachmentExportLocator(@"C:\backup\export");

            attachmentExportLocator.AddFileExportLocation(@"C:\fakepath\backup\082308302382", @"C:\backup\export\FrankieCoolpics_attachments\IMG_0036.JPG");
            IConversation         conversation = DummyConversationDataGenerator.GetSingleConversation(DummyPhoneNumberId.FrankieCoolPicsCell);
            IConversationRenderer renderer     = new ConversationRendererHtml(displayOptions, conversation, attachmentExportLocator);

            string renderedActual = renderer.RenderMessagesAsString(ConversationRendererBase.RenderAllMessages);

            Assert.AreEqual(renderedExpected, renderedActual);
        }
 protected override List <ExportError> ExportConversationAttachments(IConversation conversation, string attachmentExportDirectory, out IAttachmentExportLocator exportLocator)
 {
     exportLocator = new AttachmentExportLocator(null);
     return(new List <ExportError>());
 }