Exemple #1
0
        internal static fMailboxProperties Differences(cListFlags pOld, cListFlags pNew)
        {
            if (pNew == null)
            {
                throw new ArgumentNullException(nameof(pNew));
            }

            if (pOld == null)
            {
                return(0);
            }
            if (pOld.Flags == pNew.Flags)
            {
                return(0);
            }

            fMailboxProperties lProperties = 0;

            lProperties |= ZPropertyIfDifferent(pOld, pNew, fListFlags.noinferiors, fMailboxProperties.canhavechildren);
            lProperties |= ZPropertyIfDifferent(pOld, pNew, fListFlags.noselect, fMailboxProperties.canselect);
            lProperties |= ZPropertyIfDifferent(pOld, pNew, fListFlags.marked | fListFlags.unmarked, fMailboxProperties.ismarked);
            lProperties |= ZPropertyIfDifferent(pOld, pNew, fListFlags.nonexistent, fMailboxProperties.exists);
            lProperties |= ZPropertyIfDifferent(pOld, pNew, fListFlags.remote, fMailboxProperties.isremote);
            lProperties |= ZPropertyIfDifferent(pOld, pNew, fListFlags.haschildren | fListFlags.hasnochildren, fMailboxProperties.haschildren);
            lProperties |= ZPropertyIfDifferent(pOld, pNew, fListFlags.all, fMailboxProperties.containsall);
            lProperties |= ZPropertyIfDifferent(pOld, pNew, fListFlags.archive, fMailboxProperties.isarchive);
            lProperties |= ZPropertyIfDifferent(pOld, pNew, fListFlags.drafts, fMailboxProperties.containsdrafts);
            lProperties |= ZPropertyIfDifferent(pOld, pNew, fListFlags.flagged, fMailboxProperties.containsflagged);
            lProperties |= ZPropertyIfDifferent(pOld, pNew, fListFlags.junk, fMailboxProperties.containsjunk);
            lProperties |= ZPropertyIfDifferent(pOld, pNew, fListFlags.sent, fMailboxProperties.containssent);
            lProperties |= ZPropertyIfDifferent(pOld, pNew, fListFlags.trash, fMailboxProperties.containstrash);

            return(lProperties);
        }
Exemple #2
0
                public void Unselect(cTrace.cContext pParentContext)
                {
                    var lContext = pParentContext.NewMethod(nameof(cMailboxCache), nameof(Unselect));

                    if (mSelectedMailbox == null)
                    {
                        return;
                    }

                    var lMailboxHandle = mSelectedMailbox.MailboxHandle;

                    fMailboxProperties lProperties = fMailboxProperties.isselected;

                    if (mSelectedMailbox.SelectedForUpdate)
                    {
                        lProperties |= fMailboxProperties.isselectedforupdate;
                    }
                    if (mSelectedMailbox.AccessReadOnly)
                    {
                        lProperties |= fMailboxProperties.isaccessreadonly;
                    }

                    mSelectedMailbox = null;

                    mSetState(eConnectionState.notselected, lContext);
                    mSynchroniser.InvokeMailboxPropertiesChanged(lMailboxHandle, lProperties, lContext);
                    mSynchroniser.InvokePropertyChanged(nameof(cIMAPClient.SelectedMailbox), lContext);
                }
                private void ZSetSelectedProperties(cMailboxSelectedProperties pSelectedProperties, cTrace.cContext pParentContext)
                {
                    var lContext = pParentContext.NewMethod(nameof(cMailboxCacheItem), nameof(ZSetSelectedProperties), pSelectedProperties);

                    if (pSelectedProperties == null)
                    {
                        throw new ArgumentNullException(nameof(pSelectedProperties));
                    }
                    fMailboxProperties lDifferences = ZSetExists(true) | cMailboxSelectedProperties.Differences(mSelectedProperties, pSelectedProperties);

                    mSelectedProperties = pSelectedProperties;
                    mSynchroniser.InvokeMailboxPropertiesChanged(this, lDifferences, lContext);
                }
                public void SetMailboxStatus(cMailboxStatus pMailboxStatus, cTrace.cContext pParentContext)
                {
                    var lContext = pParentContext.NewMethod(nameof(cMailboxCacheItem), nameof(SetMailboxStatus), pMailboxStatus);

                    if (pMailboxStatus == null)
                    {
                        throw new ArgumentNullException(nameof(pMailboxStatus));
                    }
                    fMailboxProperties lDifferences = ZSetExists(true) | cMailboxStatus.Differences(mMailboxStatus, pMailboxStatus);

                    mMailboxStatus = pMailboxStatus;
                    mSynchroniser.InvokeMailboxPropertiesChanged(this, lDifferences, lContext);
                }
Exemple #5
0
        internal static fMailboxProperties Differences(cMailboxStatus pOld, cMailboxStatus pNew)
        {
            if (pNew == null)
            {
                throw new ArgumentNullException(nameof(pNew));
            }

            if (pOld == null)
            {
                return(0);
            }

            fMailboxProperties lProperties = 0;

            if (pOld.MessageCount != pNew.MessageCount)
            {
                lProperties |= fMailboxProperties.messagecount;
            }
            if (pOld.RecentCount != pNew.RecentCount)
            {
                lProperties |= fMailboxProperties.recentcount;
            }
            if (pOld.UIDNext != pNew.UIDNext)
            {
                lProperties |= fMailboxProperties.uidnext;
            }
            if (pOld.UIDNextUnknownCount != pNew.UIDNextUnknownCount)
            {
                lProperties |= fMailboxProperties.uidnextunknowncount;
            }
            if (pOld.UIDValidity != pNew.UIDValidity)
            {
                lProperties |= fMailboxProperties.uidvalidity;
            }
            if (pOld.UnseenCount != pNew.UnseenCount)
            {
                lProperties |= fMailboxProperties.unseencount;
            }
            if (pOld.UnseenUnknownCount != pNew.UnseenUnknownCount)
            {
                lProperties |= fMailboxProperties.unseenunknowncount;
            }
            if (pOld.HighestModSeq != pNew.HighestModSeq)
            {
                lProperties |= fMailboxProperties.highestmodseq;
            }

            return(lProperties);
        }
                public void SetListFlags(cListFlags pListFlags, cTrace.cContext pParentContext)
                {
                    var lContext = pParentContext.NewMethod(nameof(cMailboxCacheItem), nameof(SetListFlags), pListFlags);

                    if (pListFlags == null)
                    {
                        throw new ArgumentNullException(nameof(pListFlags));
                    }

                    fMailboxProperties lDifferences = ZSetExists((pListFlags.Flags & fListFlags.nonexistent) == 0) | cListFlags.Differences(mListFlags, pListFlags);

                    mListFlags = pListFlags;

                    mSynchroniser.InvokeMailboxPropertiesChanged(this, lDifferences, lContext);
                }
Exemple #7
0
                public void Select(iMailboxHandle pMailboxHandle, bool pForUpdate, bool pAccessReadOnly, bool pUIDNotSticky, cFetchableFlags pFlags, cPermanentFlags pPermanentFlags, int pExists, int pRecent, uint pUIDNext, uint pUIDValidity, uint pHighestModSeq, cTrace.cContext pParentContext)
                {
                    var lContext = pParentContext.NewMethod(nameof(cMailboxCache), nameof(Select), pMailboxHandle, pForUpdate, pAccessReadOnly, pUIDNotSticky, pFlags, pPermanentFlags, pExists, pRecent, pUIDNext, pUIDValidity, pHighestModSeq);

                    if (mSelectedMailbox != null)
                    {
                        throw new InvalidOperationException();
                    }

                    if (pMailboxHandle == null)
                    {
                        throw new ArgumentNullException(nameof(pMailboxHandle));
                    }
                    if (pFlags == null)
                    {
                        throw new ArgumentNullException(nameof(pFlags));
                    }

                    var lItem = CheckHandle(pMailboxHandle);

                    if (pExists < 0)
                    {
                        throw new ArgumentOutOfRangeException(nameof(pExists));
                    }
                    if (pRecent < 0)
                    {
                        throw new ArgumentOutOfRangeException(nameof(pRecent));
                    }

                    mSelectedMailbox = new cSelectedMailbox(mSynchroniser, lItem, pForUpdate, pAccessReadOnly, pExists, pRecent, pUIDNext, pUIDValidity, pHighestModSeq, lContext);

                    lItem.SetSelectedProperties(pUIDNotSticky, pFlags, pForUpdate, pPermanentFlags, lContext);

                    fMailboxProperties lProperties = fMailboxProperties.isselected;

                    if (pForUpdate)
                    {
                        lProperties |= fMailboxProperties.isselectedforupdate;
                    }
                    if (pAccessReadOnly)
                    {
                        lProperties |= fMailboxProperties.isaccessreadonly;
                    }

                    mSetState(eConnectionState.selected, lContext);
                    mSynchroniser.InvokeMailboxPropertiesChanged(pMailboxHandle, lProperties, lContext);
                    mSynchroniser.InvokePropertyChanged(nameof(cIMAPClient.SelectedMailbox), lContext);
                }
        internal static fMailboxProperties Differences(cMailboxSelectedProperties pOld, cMailboxSelectedProperties pNew)
        {
            if (pOld == null)
            {
                throw new ArgumentNullException(nameof(pOld));
            }
            if (pNew == null)
            {
                throw new ArgumentNullException(nameof(pNew));
            }

            fMailboxProperties lProperties = 0;

            if (pOld.mBeenSelected != pNew.mBeenSelected)
            {
                lProperties |= fMailboxProperties.hasbeenselected;
            }
            if (pOld.mBeenSelectedForUpdate != pNew.mBeenSelectedForUpdate)
            {
                lProperties |= fMailboxProperties.hasbeenselectedforupdate;
            }
            if (pOld.mBeenSelectedReadOnly != pNew.mBeenSelectedReadOnly)
            {
                lProperties |= fMailboxProperties.hasbeenselectedreadonly;
            }
            if (pOld.mUIDNotSticky != pNew.mUIDNotSticky)
            {
                lProperties |= fMailboxProperties.uidnotsticky;
            }
            if (pOld.mMessageFlags != pNew.mMessageFlags)
            {
                lProperties |= fMailboxProperties.messageflags;
            }
            if (pOld.ForUpdatePermanentFlags != pNew.ForUpdatePermanentFlags)
            {
                lProperties |= fMailboxProperties.forupdatepermanentflags;
            }
            if (pOld.ReadOnlyPermanentFlags != pNew.ReadOnlyPermanentFlags)
            {
                lProperties |= fMailboxProperties.readonlypermanentflags;
            }

            return(lProperties);
        }
Exemple #9
0
 private static fMailboxProperties ZPropertyIfDifferent(cListFlags pA, cListFlags pB, fListFlags pFlags, fMailboxProperties pProperty)
 {
     if ((pA.Flags & pFlags) == (pB.Flags & pFlags))
     {
         return(0);
     }
     return(pProperty);
 }
            public void InvokeMailboxPropertiesChanged(iMailboxHandle pMailboxHandle, fMailboxProperties pProperties, cTrace.cContext pParentContext)
            {
                if (MailboxPropertyChanged == null || pProperties == 0)
                {
                    return;                                                     // pre-checks for efficiency
                }
                var lContext = pParentContext.NewMethod(nameof(cCallbackSynchroniser), nameof(InvokeMailboxPropertiesChanged), pMailboxHandle, pProperties);

                if (mDisposed)
                {
                    throw new ObjectDisposedException(nameof(cCallbackSynchroniser));
                }

                if ((pProperties & fMailboxProperties.exists) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.Exists)));
                }

                if ((pProperties & fMailboxProperties.canhavechildren) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.CanHaveChildren)));
                }
                if ((pProperties & fMailboxProperties.canselect) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.CanSelect)));
                }
                if ((pProperties & fMailboxProperties.ismarked) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.IsMarked)));
                }
                if ((pProperties & fMailboxProperties.isremote) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.IsRemote)));
                }
                if ((pProperties & fMailboxProperties.haschildren) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.HasChildren)));
                }
                if ((pProperties & fMailboxProperties.containsall) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.ContainsAll)));
                }
                if ((pProperties & fMailboxProperties.isarchive) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.IsArchive)));
                }
                if ((pProperties & fMailboxProperties.containsdrafts) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.ContainsDrafts)));
                }
                if ((pProperties & fMailboxProperties.containsflagged) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.ContainsFlagged)));
                }
                if ((pProperties & fMailboxProperties.containsjunk) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.ContainsJunk)));
                }
                if ((pProperties & fMailboxProperties.containssent) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.ContainsSent)));
                }
                if ((pProperties & fMailboxProperties.containstrash) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.ContainsTrash)));
                }

                if ((pProperties & fMailboxProperties.issubscribed) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.IsSubscribed)));
                }

                if ((pProperties & fMailboxProperties.messagecount) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.MessageCount)));
                }
                if ((pProperties & fMailboxProperties.recentcount) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.RecentCount)));
                }
                if ((pProperties & fMailboxProperties.uidnext) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.UIDNext)));
                }
                if ((pProperties & fMailboxProperties.uidnextunknowncount) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.UIDNextUnknownCount)));
                }
                if ((pProperties & fMailboxProperties.uidvalidity) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.UIDValidity)));
                }
                if ((pProperties & fMailboxProperties.unseencount) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.UnseenCount)));
                }
                if ((pProperties & fMailboxProperties.unseenunknowncount) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.UnseenUnknownCount)));
                }
                if ((pProperties & fMailboxProperties.highestmodseq) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.HighestModSeq)));
                }

                if ((pProperties & fMailboxProperties.hasbeenselected) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.HasBeenSelected)));
                }
                if ((pProperties & fMailboxProperties.hasbeenselectedforupdate) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.HasBeenSelectedForUpdate)));
                }
                if ((pProperties & fMailboxProperties.hasbeenselectedreadonly) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.HasBeenSelectedReadOnly)));
                }
                if ((pProperties & fMailboxProperties.uidnotsticky) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.UIDNotSticky)));
                }
                if ((pProperties & fMailboxProperties.messageflags) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.MessageFlags)));
                }
                if ((pProperties & fMailboxProperties.forupdatepermanentflags) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.ForUpdatePermanentFlags)));
                }
                if ((pProperties & fMailboxProperties.readonlypermanentflags) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.ReadOnlyPermanentFlags)));
                }

                if ((pProperties & fMailboxProperties.isselected) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.IsSelected)));
                }
                if ((pProperties & fMailboxProperties.isselectedforupdate) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.IsSelectedForUpdate)));
                }
                if ((pProperties & fMailboxProperties.isaccessreadonly) != 0)
                {
                    ZInvokeAndForgetEnqueue(new cMailboxPropertyChangedEventArgs(pMailboxHandle, nameof(cMailbox.IsAccessReadOnly)));
                }

                ZInvokeAndForget(lContext);
            }