/// <summary> /// Initialises a new instance using the specified <see cref="cMessage"/> properties. /// </summary> /// <param name="pProperties">The message properties to cache the backing data for.</param> public cMessageCacheItems(fMessageProperties pProperties) { Attributes = 0; // see comments elsewhere as to why mdnsent is commented out if ((pProperties & (fMessageProperties.flags | fMessageProperties.answered | fMessageProperties.flagged | fMessageProperties.deleted | fMessageProperties.seen | fMessageProperties.draft | fMessageProperties.recent | /* fMessageProperties.mdnsent | */ fMessageProperties.forwarded | fMessageProperties.submitpending | fMessageProperties.submitted)) != 0) { Attributes |= fMessageCacheAttributes.flags; } if ((pProperties & (fMessageProperties.envelope | fMessageProperties.sent | fMessageProperties.subject | fMessageProperties.basesubject | fMessageProperties.from | fMessageProperties.sender | fMessageProperties.replyto | fMessageProperties.to | fMessageProperties.cc | fMessageProperties.bcc | fMessageProperties.inreplyto | fMessageProperties.messageid)) != 0) { Attributes |= fMessageCacheAttributes.envelope; } if ((pProperties & fMessageProperties.received) != 0) { Attributes |= fMessageCacheAttributes.received; } if ((pProperties & fMessageProperties.size) != 0) { Attributes |= fMessageCacheAttributes.size; } if ((pProperties & fMessageProperties.bodystructure | fMessageProperties.attachments | fMessageProperties.plaintextsizeinbytes) != 0) { Attributes |= fMessageCacheAttributes.bodystructure; } if ((pProperties & fMessageProperties.uid) != 0) { Attributes |= fMessageCacheAttributes.uid; } if ((pProperties & fMessageProperties.modseq) != 0) { Attributes |= fMessageCacheAttributes.modseq; } cHeaderFieldNameList lNames = new cHeaderFieldNameList(); if ((pProperties & fMessageProperties.references) != 0) { lNames.Add(kHeaderFieldName.References); } if ((pProperties & fMessageProperties.importance) != 0) { lNames.Add(kHeaderFieldName.Importance); } Names = new cHeaderFieldNames(lNames); }
public void InvokeMessagePropertiesChanged(iMessageHandle pMessageHandle, fMessageProperties pProperties, cTrace.cContext pParentContext) { if (MessagePropertyChanged == null || pProperties == 0) { return; // pre-checks for efficiency } var lContext = pParentContext.NewMethod(nameof(cCallbackSynchroniser), nameof(InvokeMessagePropertiesChanged), pMessageHandle, pProperties); if (mDisposed) { throw new ObjectDisposedException(nameof(cCallbackSynchroniser)); } if ((pProperties & fMessageProperties.flags) != 0) { ZInvokeAndForgetEnqueue(new cMessagePropertyChangedEventArgs(pMessageHandle, nameof(cMessage.Flags))); } if ((pProperties & fMessageProperties.answered) != 0) { ZInvokeAndForgetEnqueue(new cMessagePropertyChangedEventArgs(pMessageHandle, nameof(cMessage.Answered))); } if ((pProperties & fMessageProperties.flagged) != 0) { ZInvokeAndForgetEnqueue(new cMessagePropertyChangedEventArgs(pMessageHandle, nameof(cMessage.Flagged))); } if ((pProperties & fMessageProperties.deleted) != 0) { ZInvokeAndForgetEnqueue(new cMessagePropertyChangedEventArgs(pMessageHandle, nameof(cMessage.Deleted))); } if ((pProperties & fMessageProperties.seen) != 0) { ZInvokeAndForgetEnqueue(new cMessagePropertyChangedEventArgs(pMessageHandle, nameof(cMessage.Seen))); } if ((pProperties & fMessageProperties.draft) != 0) { ZInvokeAndForgetEnqueue(new cMessagePropertyChangedEventArgs(pMessageHandle, nameof(cMessage.Draft))); } if ((pProperties & fMessageProperties.recent) != 0) { ZInvokeAndForgetEnqueue(new cMessagePropertyChangedEventArgs(pMessageHandle, nameof(cMessage.Recent))); } // see comments elsewhere as to why this is commented out //if ((pProperties & fMessageProperties.mdnsent) != 0) ZInvokeAndForgetEnqueue(new cMessagePropertyChangedEventArgs(pHandle, nameof(cMessage.MDNSent))); if ((pProperties & fMessageProperties.forwarded) != 0) { ZInvokeAndForgetEnqueue(new cMessagePropertyChangedEventArgs(pMessageHandle, nameof(cMessage.Forwarded))); } if ((pProperties & fMessageProperties.submitpending) != 0) { ZInvokeAndForgetEnqueue(new cMessagePropertyChangedEventArgs(pMessageHandle, nameof(cMessage.SubmitPending))); } if ((pProperties & fMessageProperties.submitted) != 0) { ZInvokeAndForgetEnqueue(new cMessagePropertyChangedEventArgs(pMessageHandle, nameof(cMessage.Submitted))); } if (((pProperties & fMessageProperties.modseq) != 0)) { ZInvokeAndForgetEnqueue(new cMessagePropertyChangedEventArgs(pMessageHandle, nameof(cMessage.ModSeq))); } ZInvokeAndForget(lContext); }
private void cmdPSet_Click(object sender, EventArgs e) { fMessageProperties lProperties = 0; if (chkPEnvelope.Checked) { lProperties |= fMessageProperties.envelope; } if (chkPSent.Checked) { lProperties |= fMessageProperties.sent; } if (chkPSubject.Checked) { lProperties |= fMessageProperties.subject; } if (chkPMessageId.Checked) { lProperties |= fMessageProperties.messageid; } if (chkPFlags.Checked) { lProperties |= fMessageProperties.flags; } if (chkPAnswered.Checked) { lProperties |= fMessageProperties.answered; } if (chkPFlagged.Checked) { lProperties |= fMessageProperties.flagged; } if (chkPSubmitted.Checked) { lProperties |= fMessageProperties.submitted; } if (chkPReceived.Checked) { lProperties |= fMessageProperties.received; } if (chkPSize.Checked) { lProperties |= fMessageProperties.size; } if (chkPUID.Checked) { lProperties |= fMessageProperties.uid; } if (chkPModSeq.Checked) { lProperties |= fMessageProperties.modseq; } if (chkPBodyStructure.Checked) { lProperties |= fMessageProperties.bodystructure; } if (chkPAttachments.Checked) { lProperties |= fMessageProperties.attachments; } if (chkPPlainTextSize.Checked) { lProperties |= fMessageProperties.plaintextsizeinbytes; } if (chkPReferences.Checked) { lProperties |= fMessageProperties.references; } if (chkPImportance.Checked) { lProperties |= fMessageProperties.importance; } mClient.DefaultMessageCacheItems = lProperties; }
public void Update(cResponseDataFetch lFetch, out fMessageCacheAttributes rAttributesSet, out fMessageProperties rPropertiesChanged) { rAttributesSet = ~mAttributes & lFetch.Attributes; rPropertiesChanged = 0; if ((rAttributesSet & fMessageCacheAttributes.flags) != 0) { Flags = lFetch.Flags; } else if (lFetch.Flags != null) { foreach (var lFlag in Flags.SymmetricDifference(lFetch.Flags)) { rAttributesSet |= fMessageCacheAttributes.flags; rPropertiesChanged |= fMessageProperties.flags | LMessageProperty(lFlag); } Flags = lFetch.Flags; } if ((rAttributesSet & fMessageCacheAttributes.envelope) != 0) { Envelope = lFetch.Envelope; } if ((rAttributesSet & fMessageCacheAttributes.received) != 0) { Received = lFetch.Received; } if ((rAttributesSet & fMessageCacheAttributes.size) != 0) { Size = lFetch.Size; } if ((rAttributesSet & fMessageCacheAttributes.body) != 0) { mBody = lFetch.Body; } if ((rAttributesSet & fMessageCacheAttributes.bodystructure) != 0) { BodyStructure = lFetch.BodyStructure; } if ((rAttributesSet & fMessageCacheAttributes.uid) != 0 && mMessageCache.UIDValidity != 0) { UID = new cUID(mMessageCache.UIDValidity, lFetch.UID.Value); } if (!mMessageCache.NoModSeq) { if ((rAttributesSet & fMessageCacheAttributes.modseq) != 0) { mModSeq = lFetch.ModSeq; } else if (lFetch.ModSeq != null && lFetch.ModSeq != mModSeq) { rAttributesSet |= fMessageCacheAttributes.modseq; rPropertiesChanged |= fMessageProperties.modseq; mModSeq = lFetch.ModSeq; } } HeaderFields += lFetch.HeaderFields; BinarySizes += lFetch.BinarySizes; mAttributes |= lFetch.Attributes; fMessageProperties LMessageProperty(string pFlag) { if (pFlag.Equals(kMessageFlag.Answered, StringComparison.InvariantCultureIgnoreCase)) { return(fMessageProperties.answered); } if (pFlag.Equals(kMessageFlag.Flagged, StringComparison.InvariantCultureIgnoreCase)) { return(fMessageProperties.flagged); } if (pFlag.Equals(kMessageFlag.Deleted, StringComparison.InvariantCultureIgnoreCase)) { return(fMessageProperties.deleted); } if (pFlag.Equals(kMessageFlag.Seen, StringComparison.InvariantCultureIgnoreCase)) { return(fMessageProperties.seen); } if (pFlag.Equals(kMessageFlag.Draft, StringComparison.InvariantCultureIgnoreCase)) { return(fMessageProperties.draft); } if (pFlag.Equals(kMessageFlag.Recent, StringComparison.InvariantCultureIgnoreCase)) { return(fMessageProperties.recent); } // see comments elsewhere as to why this is commented out //if (pFlag.Equals(kMessageFlagName.MDNSent, StringComparison.InvariantCultureIgnoreCase)) return fMessageProperties.mdnsent; if (pFlag.Equals(kMessageFlag.Forwarded, StringComparison.InvariantCultureIgnoreCase)) { return(fMessageProperties.forwarded); } if (pFlag.Equals(kMessageFlag.SubmitPending, StringComparison.InvariantCultureIgnoreCase)) { return(fMessageProperties.submitpending); } if (pFlag.Equals(kMessageFlag.Submitted, StringComparison.InvariantCultureIgnoreCase)) { return(fMessageProperties.submitted); } return(0); } }