Ejemplo n.º 1
0
        public ConversationRendererBase(IDisplayOptionsReadOnly displayOptions, IConversation conversation)
        {
            _displayOptions = displayOptions;

            _conversation = conversation;

            _lastMessageDate = DateTime.MinValue;

            _lastMessageReadIndex = -1;

            _renderedEmptyMessage = false;

            _remoteContacts = new List <IContact>();

            _localSenderColor = Color.FromRgb(210, 0, 0);

            _remoteSenderColors    = new Color[6];
            _remoteSenderColors[0] = Color.FromRgb(0, 0, 210);
            _remoteSenderColors[1] = Color.FromRgb(114, 159, 0);
            _remoteSenderColors[2] = Color.FromRgb(186, 124, 30);
            _remoteSenderColors[3] = Color.FromRgb(0, 210, 210);
            _remoteSenderColors[4] = Color.FromRgb(143, 2, 128);
            _remoteSenderColors[5] = Color.FromRgb(52, 143, 156);

            ClearRenderingBuffer();
        }
        public ConversationRendererRichText(IDisplayOptionsReadOnly displayOptions, IConversation conversation)
            : base(displayOptions, conversation)
        {
            _currentParagraph = null;

            _fileSystem = new OsFileSystem();
        }
        public ConversationRendererRichText(IDisplayOptionsReadOnly displayOptions, IConversation conversation)
            : base(displayOptions, conversation)
        {
            _currentParagraph = null;

            _fileSystem = new OsFileSystem();
        }
        public ConversationRendererBase(IDisplayOptionsReadOnly displayOptions, IConversation conversation)
        {
            _displayOptions = displayOptions;

            _conversation = conversation;

            _lastMessageDate = DateTime.MinValue;

            _lastMessageReadIndex = -1;

            _renderedEmptyMessage = false;

            _remoteContacts = new List<IContact>();

            _localSenderColor = Color.FromRgb(210, 0, 0);

            _remoteSenderColors = new Color[6];
            _remoteSenderColors[0] = Color.FromRgb(0, 0, 210);
            _remoteSenderColors[1] = Color.FromRgb(114, 159, 0);
            _remoteSenderColors[2] = Color.FromRgb(186, 124, 30);
            _remoteSenderColors[3] = Color.FromRgb(0, 210, 210);
            _remoteSenderColors[4] = Color.FromRgb(143, 2, 128);
            _remoteSenderColors[5] = Color.FromRgb(52, 143, 156);

            ClearRenderingBuffer();
        }
Ejemplo n.º 5
0
 public ExportMultipleDialogModel(IConversationManager conversationManager, IDisplayOptionsReadOnly displayOptions, IFileSystem exportFileSystem,
                                  ExportErrorFormatter exportErrorFormatter)
 {
     _conversationManager  = conversationManager;
     _displayOptions       = displayOptions;
     _exportFileSystem     = exportFileSystem;
     _exportErrorFormatter = exportErrorFormatter;
 }
 public ExportMultipleDialogModel(IConversationManager conversationManager, IDisplayOptionsReadOnly displayOptions, IFileSystem exportFileSystem,
     ExportErrorFormatter exportErrorFormatter)
 {
     _conversationManager = conversationManager;
     _displayOptions = displayOptions;
     _exportFileSystem = exportFileSystem;
     _exportErrorFormatter = exportErrorFormatter;
 }
        public List<ExportError> Export(IConversation conversation, IDisplayOptionsReadOnly displayOptions, string exportFilename)
        {
            IAttachmentExportLocator exportLocator;
            List<ExportError> attachmentExportErrors = DoAttachmentExport(conversation, displayOptions, exportFilename, out exportLocator);
            List<ExportError> conversationTextExportErrors = DoConversationTextExport(conversation, displayOptions, exportFilename, exportLocator);

            List<ExportError> exportErrors = new List<ExportError>();
            exportErrors.AddRange(attachmentExportErrors);
            exportErrors.AddRange(conversationTextExportErrors);
            return exportErrors;
        }
        public List <ExportError> Export(IConversation conversation, IDisplayOptionsReadOnly displayOptions, string exportFilename)
        {
            IAttachmentExportLocator exportLocator;
            List <ExportError>       attachmentExportErrors       = DoAttachmentExport(conversation, displayOptions, exportFilename, out exportLocator);
            List <ExportError>       conversationTextExportErrors = DoConversationTextExport(conversation, displayOptions, exportFilename, exportLocator);

            List <ExportError> exportErrors = new List <ExportError>();

            exportErrors.AddRange(attachmentExportErrors);
            exportErrors.AddRange(conversationTextExportErrors);
            return(exportErrors);
        }
        public ExportMultipleDialogView(IConversationManager conversationManager, IDisplayOptionsReadOnly displayOptions)
        {
            InitializeComponent();

            IFileSystem exportFileSystem = new OsFileSystem();

            ExportErrorFormatter exportErrorFormatter = new ExportErrorFormatter();

            _model = new ExportMultipleDialogModel(conversationManager, displayOptions, exportFileSystem, exportErrorFormatter);
            _progressCallback = null;

            Loaded += delegate
            {
                folderPathTextBox.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            };
        }
        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 ExportMultipleDialogView(IConversationManager conversationManager, IDisplayOptionsReadOnly displayOptions)
        {
            InitializeComponent();

            IFileSystem exportFileSystem = new OsFileSystem();

            ExportErrorFormatter exportErrorFormatter = new ExportErrorFormatter();

            _model            = new ExportMultipleDialogModel(conversationManager, displayOptions, exportFileSystem, exportErrorFormatter);
            _progressCallback = null;

            Loaded += delegate
            {
                folderPathTextBox.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            };
        }
        public List<ExportError> ExportMultipleConversations(IEnumerable<IConversation> conversations, IDisplayOptionsReadOnly displayOptions, string exportPath, IProgressCallback progressCallback)
        {
            List<ExportError> exportErrors = new List<ExportError>();
            string createdFolderPath = FileCreator.CreateNewDirectoryWithRenameAttempts(exportPath, _exportFileSystem, MaxRenameAttempts);

            ExportedFilenameGenerator filenameGenerator = new ExportedFilenameGenerator();

            foreach (IConversation conversation in conversations)
            {
                CheckForCancel(progressCallback);

                //
                // Don't export empty conversations
                //

                if (conversation.MessageCount == 0)
                {
                    IncrementProgress(progressCallback);
                    continue;
                }

                try
                {
                    string filename = filenameGenerator.CreateExportFilenameSuggestion(conversation) + "." + GetExportFileExtension();
                    string exportFilename = Path.Combine(createdFolderPath, filename);

                    List<ExportError> currentErrors = Export(conversation, displayOptions, exportFilename);
                    exportErrors.AddRange(currentErrors);
                }
                catch (Exception ex)
                {
                    exportErrors.Add(new ExportError(conversation, ex));
                }

                IncrementProgress(progressCallback);
            }

            return exportErrors;
        }
 protected abstract IConversationRenderer GetRenderer(IConversation conversation, IDisplayOptionsReadOnly displayOptions, IAttachmentExportLocator attachmentExportLocator);
        public List <ExportError> ExportMultipleConversations(IEnumerable <IConversation> conversations, IDisplayOptionsReadOnly displayOptions, string exportPath, IProgressCallback progressCallback)
        {
            List <ExportError> exportErrors      = new List <ExportError>();
            string             createdFolderPath = FileCreator.CreateNewDirectoryWithRenameAttempts(exportPath, _exportFileSystem, MaxRenameAttempts);

            ExportedFilenameGenerator filenameGenerator = new ExportedFilenameGenerator();

            foreach (IConversation conversation in conversations)
            {
                CheckForCancel(progressCallback);

                //
                // Don't export empty conversations
                //

                if (conversation.MessageCount == 0)
                {
                    IncrementProgress(progressCallback);
                    continue;
                }

                try
                {
                    string filename       = filenameGenerator.CreateExportFilenameSuggestion(conversation) + "." + GetExportFileExtension();
                    string exportFilename = Path.Combine(createdFolderPath, filename);

                    List <ExportError> currentErrors = Export(conversation, displayOptions, exportFilename);
                    exportErrors.AddRange(currentErrors);
                }
                catch (Exception ex)
                {
                    exportErrors.Add(new ExportError(conversation, ex));
                }

                IncrementProgress(progressCallback);
            }

            return(exportErrors);
        }
        protected void WriteConversationContents(StreamWriter writer, IConversation conversation, IDisplayOptionsReadOnly displayOptions, IAttachmentExportLocator attachmentExportLocator)
        {
            IConversationRenderer renderer = GetRenderer(conversation, displayOptions, attachmentExportLocator);

            while (renderer.HasUnprocessedMessages)
            {
                const int RenderBufferSize = 5000;
                string    exportableString = renderer.RenderMessagesAsString(RenderBufferSize);
                writer.Write(exportableString);
            }
        }
        protected void WriteConversationContents(StreamWriter writer, IConversation conversation, IDisplayOptionsReadOnly displayOptions, IAttachmentExportLocator attachmentExportLocator)
        {
            IConversationRenderer renderer = GetRenderer(conversation, displayOptions, attachmentExportLocator);

            while (renderer.HasUnprocessedMessages)
            {
                const int RenderBufferSize = 5000;
                string exportableString = renderer.RenderMessagesAsString(RenderBufferSize);
                writer.Write(exportableString);
            }
        }
Ejemplo n.º 17
0
        private static bool IsOutOfDateWarningNeeded(DateTime currentDate, DateTime? lastSyncDate, IDisplayOptionsReadOnly displayOptions)
        {
            const int OldAgeTimeInDays = 30;
            DateTime oldAgeDate = currentDate.Subtract(new TimeSpan(OldAgeTimeInDays, 0, 0, 0));
            if (lastSyncDate.HasValue && (lastSyncDate < oldAgeDate))
            {
                return displayOptions.PromptForSyncTroubleshooting;
            }

            return false;
        }
Ejemplo n.º 18
0
        private static bool IsOutOfDateWarningNeeded(DateTime currentDate, DateTime?lastSyncDate, IDisplayOptionsReadOnly displayOptions)
        {
            const int OldAgeTimeInDays = 30;
            DateTime  oldAgeDate       = currentDate.Subtract(new TimeSpan(OldAgeTimeInDays, 0, 0, 0));

            if (lastSyncDate.HasValue && (lastSyncDate < oldAgeDate))
            {
                return(displayOptions.PromptForSyncTroubleshooting);
            }

            return(false);
        }
 public ConversationRendererPlaintext(IDisplayOptionsReadOnly displayOptions, IConversation conversation)
     : base(displayOptions, conversation)
 {
     ;
 }
 protected override IConversationRenderer GetRenderer(IConversation conversation, IDisplayOptionsReadOnly displayOptions, IAttachmentExportLocator attachmentExportLocator)
 {
     return new ConversationRendererHtml(displayOptions, conversation, attachmentExportLocator);
 }
        private List<ExportError> DoConversationTextExport(IConversation conversation, IDisplayOptionsReadOnly displayOptions, string exportFilename, IAttachmentExportLocator exportLocator)
        {
            List<ExportError> exportErrors = new List<ExportError>();
            string finalExportFilename;
            try
            {
                using (Stream exportFileStream = FileCreator.CreateNewFileWithRenameAttempts(exportFilename, _exportFileSystem, MaxRenameAttempts, out finalExportFilename))
                {
                    using (StreamWriter exportStreamWriter = new StreamWriter(exportFileStream, Encoding.UTF8))
                    {
                        WriteHeader(exportStreamWriter, conversation);
                        WriteConversationContents(exportStreamWriter, conversation, displayOptions, exportLocator);
                        WriteFooter(exportStreamWriter);
                    }
                }
            }
            catch (Exception ex)
            {
                exportErrors.Add(new ExportError(conversation, ex));
            }

            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;
        }
        private List <ExportError> DoConversationTextExport(IConversation conversation, IDisplayOptionsReadOnly displayOptions, string exportFilename, IAttachmentExportLocator exportLocator)
        {
            List <ExportError> exportErrors = new List <ExportError>();
            string             finalExportFilename;

            try
            {
                using (Stream exportFileStream = FileCreator.CreateNewFileWithRenameAttempts(exportFilename, _exportFileSystem, MaxRenameAttempts, out finalExportFilename))
                {
                    using (StreamWriter exportStreamWriter = new StreamWriter(exportFileStream, Encoding.UTF8))
                    {
                        WriteHeader(exportStreamWriter, conversation);
                        WriteConversationContents(exportStreamWriter, conversation, displayOptions, exportLocator);
                        WriteFooter(exportStreamWriter);
                    }
                }
            }
            catch (Exception ex)
            {
                exportErrors.Add(new ExportError(conversation, ex));
            }

            return(exportErrors);
        }
 public ConversationRendererHtml(IDisplayOptionsReadOnly displayOptions, IConversation conversation, IAttachmentExportLocator attachmentExportLocator)
     : base(displayOptions, conversation)
 {
     _attachmentExportLocator = attachmentExportLocator;
 }
 protected override IConversationRenderer GetRenderer(IConversation conversation, IDisplayOptionsReadOnly displayOptions, IAttachmentExportLocator attachmentExportLocator)
 {
     return(new ConversationRendererHtml(displayOptions, conversation, attachmentExportLocator));
 }
 public ConversationRendererHtml(IDisplayOptionsReadOnly displayOptions, IConversation conversation, IAttachmentExportLocator attachmentExportLocator)
     : base(displayOptions, conversation)
 {
     _attachmentExportLocator = attachmentExportLocator;
 }
Ejemplo n.º 27
0
 public ConversationRendererPlaintext(IDisplayOptionsReadOnly displayOptions, IConversation conversation)
     : base(displayOptions, conversation)
 {
     ;
 }
 protected abstract IConversationRenderer GetRenderer(IConversation conversation, IDisplayOptionsReadOnly displayOptions, IAttachmentExportLocator attachmentExportLocator);