コード例 #1
0
ファイル: ExportDescriptors.cs プロジェクト: mo5h/omeo
        private bool IsClearNeededImpl(IResource contact)
        {
            IEFolder folder = GetContactFolder(contact, false);

            if (folder == null)
            {
                return(false);
            }

            bool       newCreated;
            IEMAPIProp message = OpenMessage(folder, contact, false, false, false, out newCreated);

            if (message == null)
            {
                return(true);
            }
            using ( message )
            {
                string           folderID         = message.GetBinProp(MAPIConst.PR_PARENT_ENTRYID);
                FolderDescriptor folderDescriptor = FolderDescriptor.Get(folderID, message.GetBinProp(MAPIConst.PR_STORE_ENTRYID));
                if (folderDescriptor == null || folderDescriptor.ContainerClass != FolderType.Contact)
                {
                    return(true);
                }
                return(false);
            }
        }
コード例 #2
0
ファイル: ExportCategories.cs プロジェクト: mo5h/omeo
 private static bool RemoveCategories(ArrayList storedCategories, IEMAPIProp message)
 {
     if (storedCategories != null)
     {
         OutlookSession.SetCategories(message, null);
         return(true);
     }
     return(false);
 }
コード例 #3
0
 public static void SaveChanges(bool newCreated, string trace, IEMAPIProp message, string entryId)
 {
     _tracer.Trace("MAPI.Message.SaveChanges");
     _tracer.Trace(trace);
     if (!newCreated)
     {
         BeginExportingMail(entryId);
     }
     message.SaveChanges();
 }
コード例 #4
0
        public static ArrayList GetCategories(IEMAPIProp message)
        {
            int       catTag           = message.GetIDsFromNames(ref GUID.set4, "Keywords", PropType.PT_MV_STRING8);
            ArrayList storedCategories = message.GetStringArray(catTag);

            if (storedCategories != null)
            {
                return(storedCategories);
            }
            return(null);
        }
コード例 #5
0
ファイル: ExportCategories.cs プロジェクト: mo5h/omeo
        static public bool ProcessCategories(IEMAPIProp message, ArrayList categories)
        {
            ArrayList storedCategories = OutlookSession.GetCategories(message);

            if (categories.Count > 0)
            {
                return(UpdateCategories(categories, storedCategories, message));
            }
            else
            {
                return(RemoveCategories(storedCategories, message));
            }
        }
コード例 #6
0
ファイル: ExportDescriptors.cs プロジェクト: mo5h/omeo
        private static IEMAPIProp OpenMessage(IResource contact, bool create, bool forceCreate, bool trace)
        {
            IEMAPIProp prop   = null;
            IEFolder   folder = ExportContactDescriptor.GetContactFolder(contact, false);

            if (folder != null)
            {
                bool foo, _newCreated;
                prop = ExportContactDescriptor.OpenMessage(folder, contact, create, forceCreate,
                                                           trace, out _newCreated, out foo);
            }
            return(prop);
        }
コード例 #7
0
ファイル: ExportDescriptors.cs プロジェクト: mo5h/omeo
        public IEMAPIProp OpenMessage(IEFolder folder, IResource contact, bool create, bool forceCreate, bool trace, out bool newCreated)
        {
            bool       createdAsMailUser;
            IEMAPIProp prop = OpenMessage(folder, contact, create, forceCreate,
                                          trace, out newCreated, out createdAsMailUser);

            //  "OpenMessage" set the value for "_createdAsMailUser" only in the case
            //  of succeed action, leaving the var unset in other case.
            if (createdAsMailUser)
            {
                _createdAsMailUser = createdAsMailUser;
            }
            return(prop);
        }
コード例 #8
0
ファイル: ExportDescriptors.cs プロジェクト: mo5h/omeo
        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));
            }
        }
コード例 #9
0
ファイル: ExportDescriptors.cs プロジェクト: mo5h/omeo
        private void SetEmailAddress(IEMAPIProp message)
        {
            IResourceList emails = _contact.GetLinksOfType("EmailAccount",
                                                           Core.ContactManager.Props.LinkEmailAcct);

            if (emails.Count > 0)
            {
                IResource email     = emails[0];
                string    emailText = email.GetPropText(Core.ContactManager.Props.EmailAddress);
                if (emailText.Length > 0)
                {
                    int tag = message.GetIDsFromNames(ref GUID.set3, lID.contactEmail, PropType.PT_STRING8);
                    message.SetStringProp(tag, emailText);
                    message.SetStringProp(MAPIConst.PR_EMAIL_ADDRESS, emailText);
                    message.SetStringProp(MAPIConst.PR_CONTACT_EMAIL_ADDRESS, emailText);
                    message.SetStringProp(MAPIConst.PR_CONTACT_EMAIL_ADDRESS1, emailText);
                }
            }
        }
コード例 #10
0
ファイル: ExportCategories.cs プロジェクト: mo5h/omeo
        private static bool UpdateCategories(ArrayList categories, ArrayList storedCategories, IEMAPIProp message)
        {
            bool changes = false;

            if (storedCategories == null && categories == null)
            {
                changes = false;
            }
            else if (storedCategories != null && categories != null && categories.Count != storedCategories.Count)
            {
                changes = true;
            }
            else if (storedCategories == null && categories != null && categories.Count > 0)
            {
                changes = true;
            }
            else if (categories == null && storedCategories != null && storedCategories.Count > 0)
            {
                changes = true;
            }
            if (storedCategories != null && !changes)
            {
                storedCategories.Sort();
                categories.Sort();
                for (int i = 0; i < categories.Count; i++)
                {
                    if ((string)categories[i] != (string)storedCategories[i])
                    {
                        changes = true;
                        break;
                    }
                }
            }
            if (changes)
            {
                _tracer.Trace("TO BE EXPORT FOR CATEGORIES");
                _tracer.Trace("Old categories:");
                if (storedCategories != null)
                {
                    foreach (string str in storedCategories)
                    {
                        _tracer.Trace(str);
                    }
                }
                _tracer.Trace("New categories:");
                if (categories != null)
                {
                    foreach (string str in categories)
                    {
                        _tracer.Trace(str);
                    }
                }
                _tracer.Trace("TO BE EXPORT FOR CATEGORIES END");
                OutlookSession.SetCategories(message, categories);
            }
            return(changes);
        }
コード例 #11
0
ファイル: ExportCategories.cs プロジェクト: mo5h/omeo
 static public bool ProcessCategories(IEMAPIProp message, IResource resource)
 {
     return(ProcessCategories(message, GetCategoriesList(resource)));
 }
コード例 #12
0
        public static void SetCategories(IEMAPIProp message, ArrayList categories)
        {
            int catTag = message.GetIDsFromNames(ref GUID.set4, "Keywords", PropType.PT_MV_STRING8);

            message.SetStringArray(catTag, categories);
        }
コード例 #13
0
ファイル: ExportDescriptors.cs プロジェクト: mo5h/omeo
 private void SetCategories(IEMAPIProp message)
 {
     ExportCategories.ProcessCategories(message, _contact);
 }