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); }
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); }
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); }
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); }
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); }