private void ExecuteImpl() { bool wasChanges = false; IEMessage message = OpenMessage(ref wasChanges); if (message == null) { return; } using ( message ) { SetPriority(message, ref wasChanges); SetSubject(message, ref wasChanges); SetDescription(message, ref wasChanges); SetDueDate(message, ref wasChanges); SetStartDate(message, ref wasChanges); SetRemindDate(message, ref wasChanges); SetRemindActive(message, ref wasChanges); SetStatus(message, ref wasChanges); if (Settings.SyncTaskCategory) { SetCategories(message, ref wasChanges); } SetOMTaskID(message, ref wasChanges); if (wasChanges) { OutlookSession.SaveChanges(_created, "Export task resource id = " + _task.Id, message, message.GetBinProp(MAPIConst.PR_ENTRYID)); } } }
private void DoMoveBetweenStorages(IResource resMail, IEMessage message, PairIDs messageIDs, PairIDs selectedFolderIDs) { using ( message ) { IEFolder folder = OutlookSession.OpenFolder(selectedFolderIDs.EntryId, selectedFolderIDs.StoreId); if (folder == null) { return; } using ( folder ) { IEMessage newMessage = folder.CreateMessage("IPM.note"); using ( newMessage ) { message.CopyTo(newMessage); string entryID = newMessage.GetBinProp(MAPIConst.PR_ENTRYID); OutlookSession.SaveChanges(true, "Save mail for moving between storages resource id = " + resMail.Id, newMessage, entryID); if (_copy) { return; } if (!string.IsNullOrEmpty(entryID) && !resMail.HasProp(-PROP.Attachment)) { new ResourceProxy(resMail).SetProp(PROP.EntryID, entryID); } OutlookSession.DeleteMessage(messageIDs.StoreId, messageIDs.EntryId, false); } } } }
protected override void ExecuteAction(IResource resource, PairIDs pairIDs) { Tracer._Trace("Execute action: UnDeleteIMAPMessageAction"); Trace.WriteLine(">>> UnDeleteIMAPMessageAction.ExecuteAction"); if (pairIDs == null) { return; } IResource folder = resource.GetLinkProp(PROP.MAPIFolder); if (!Folder.IsIMAPFolder(folder)) { return; } IEMessage message = OutlookSession.OpenMessage(pairIDs.EntryId, pairIDs.StoreId); if (message == null) { return; } using ( message ) { int tag = message.GetIDsFromNames(ref GUID.set1, lID.msgDeletedInIMAP, PropType.PT_LONG); message.DeleteProp(tag); OutlookSession.SaveChanges("Undelete message resource id = " + resource.Id, message, pairIDs.EntryId); } Trace.WriteLine("<<< UnDeleteIMAPMessageAction.ExecuteAction"); }
private void OnImportanceMailChangedImpl(IResource emailResource) { if (emailResource != null && emailResource.Type == STR.Email) { if (Mail.MailInIMAP(emailResource)) { return; } int importance = emailResource.GetIntProp(PROP.Importance); PairIDs messageIDs = PairIDs.Get(emailResource); if (messageIDs == null) { return; } IEMessage message = OutlookSession.OpenMessage(messageIDs.EntryId, messageIDs.StoreId); if (message != null) { using ( message ) { message.SetLongProp(MAPIConst.PR_IMPORTANCE, importance + 1); OutlookSession.SaveChanges("Export importance flag for resource id = " + emailResource.Id, message, messageIDs.EntryId); } } } }
protected override void Execute() { if (Settings.TraceContactChanges) { Trace("Try to export contact"); _resTracer.Trace(_contact); } IEMAPIProp message = OpenMessage(_contact, _createNew, true, true); if (message == null) { if (_newCreated) { _tracer.Trace("Cannot Export NEW contact for resource id = " + _contact.Id); } _tracer.Trace("Cannot Export contact for resource id = " + _contact.Id); return; } using ( message ) { IContact contactBO = Core.ContactManager.GetContact(_contact); ExportProperties(message, contactBO); ExportPhones(contactBO, message); SetEmailAddress(message); if (Settings.SyncContactCategory) { SetCategories(message); } _lastContact = _contact; OutlookSession.SaveChanges(_newCreated, "Export contact for resource id = " + _contact.Id, message, message.GetBinProp(MAPIConst.PR_ENTRYID)); } }
private void OnUnreadItemChangedImpl(IResource emailResource) { Guard.NullArgument(emailResource, "emailResource"); if (emailResource.Type != STR.Email) { return; } PairIDs messageIDs = PairIDs.Get(emailResource); if (messageIDs == null) { return; } IResource folder = Mail.GetParentFolder(emailResource); if (folder != null && Folder.IsIMAPFolder(folder)) { PairIDs folderIDs = PairIDs.Get(folder); if (folderIDs != null) { IEFolder mapiFolder = OutlookSession.OpenFolder(folderIDs.EntryId, folderIDs.StoreId); if (mapiFolder != null) { using ( mapiFolder ) { try { mapiFolder.SetReadFlags(messageIDs.EntryId, emailResource.HasProp(Core.Props.IsUnread)); return; } catch (COMException exception) { if (exception.ErrorCode == (unchecked ((int)0x80040604))) { StandartJobs.MessageBox("Unspecified error. Can't change unread flag for email.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Core.ReportException(exception, ExceptionReportFlags.AttachLog); } } } } } IEMessage message = OutlookSession.OpenMessage(messageIDs.EntryId, messageIDs.StoreId); if (message != null) { using ( message ) { bool unread = emailResource.HasProp(Core.Props.IsUnread); message.SetUnRead(unread); OutlookSession.SaveChanges("Export Read/Unread flag" + emailResource.Id, message, messageIDs.EntryId); } } }
protected override void Execute() { IEMessage message = OutlookSession.OpenMessage(_entryId, _storeId); if (message == null) { return; } using ( message ) { if (ProcessCategories(message, _mail)) { OutlookSession.SaveChanges("Export categoryies for resource id = " + _mail.Id, message, _entryId); } } }
private static void ExportAnnotationImpl(IResource emailResource) { Guard.NullArgument(emailResource, "emailResource"); if (emailResource.Type != STR.Email) { throw new ArgumentException("Expected 'Email' resource but was " + emailResource.Type); } if (Mail.MailInIMAP(emailResource)) { return; } PairIDs messageIDs = PairIDs.Get(emailResource); if (messageIDs == null) { return; } IEMessage message = OutlookSession.OpenMessage(messageIDs.EntryId, messageIDs.StoreId); if (message == null) { return; } using ( message ) { string annotation = emailResource.GetPropText(Core.Props.Annotation); int tag = message.GetIDsFromNames(ref GUID.set1, lID.msgFlagAnnotation, PropType.PT_STRING8); string oldAnnotation = message.GetStringProp(tag); if (oldAnnotation == null) { oldAnnotation = string.Empty; } if (!oldAnnotation.Equals(annotation)) { if (annotation.Length == 0) { message.DeleteProp(tag); } else { message.SetStringProp(tag, annotation); } OutlookSession.SaveChanges("ExportAnnotation for resource id = " + emailResource.Id, message, messageIDs.EntryId); } } }
protected override void Execute() { IEMAPIProp message = OpenMessage(_contact, false, true, true); if (message == null) { if (_newCreated) { _tracer.Trace("Cannot Export NEW contact for resource id = " + _contact.Id); } _tracer.Trace("Cannot Export contact for resource id = " + _contact.Id); return; } using ( message ) { ExportCategories.ProcessCategories(message, _contact); OutlookSession.SaveChanges(_newCreated, "Export contact for resource id = " + _contact.Id, message, message.GetBinProp(MAPIConst.PR_ENTRYID)); } }
private void ExportFlag(IEMessage message, int flagStatus, int flagColor) { bool wasChanges = false; if (_flagged) { if (_completed) { SetCompleteFlag(message, flagStatus, flagColor, ref wasChanges); } else { SetColorFlag(message, flagStatus, flagColor, ref wasChanges); } } else { ClearFlag(message, flagStatus, flagColor, ref wasChanges); } if (wasChanges) { OutlookSession.SaveChanges("Export email flag for resource id = " + _emailResource.Id, message, message.GetBinProp(MAPIConst.PR_ENTRYID)); } }