diff options
Diffstat (limited to 'src/core/abstract')
-rw-r--r-- | src/core/abstract/MCAbstractMessage.cc | 12 | ||||
-rw-r--r-- | src/core/abstract/MCAbstractMessage.h | 4 | ||||
-rw-r--r-- | src/core/abstract/MCAbstractMessagePart.cc | 10 | ||||
-rw-r--r-- | src/core/abstract/MCAbstractMessagePart.h | 3 | ||||
-rw-r--r-- | src/core/abstract/MCAbstractMultipart.cc | 24 | ||||
-rw-r--r-- | src/core/abstract/MCAbstractMultipart.h | 3 | ||||
-rw-r--r-- | src/core/abstract/MCAbstractPart.cc | 21 | ||||
-rw-r--r-- | src/core/abstract/MCAbstractPart.h | 9 |
8 files changed, 84 insertions, 2 deletions
diff --git a/src/core/abstract/MCAbstractMessage.cc b/src/core/abstract/MCAbstractMessage.cc index f1768aec..b7d9b9af 100644 --- a/src/core/abstract/MCAbstractMessage.cc +++ b/src/core/abstract/MCAbstractMessage.cc @@ -56,3 +56,15 @@ void AbstractMessage::setHeader(MessageHeader * header) { MC_SAFE_REPLACE_RETAIN(MessageHeader, mHeader, header); } + +AbstractPart * AbstractMessage::partForContentID(String * contentID) +{ + MCAssert(0); + return NULL; +} + +AbstractPart * AbstractMessage::partForUniqueID(String * uniqueID) +{ + MCAssert(0); + return NULL; +} diff --git a/src/core/abstract/MCAbstractMessage.h b/src/core/abstract/MCAbstractMessage.h index 9f327cad..9dccdbb8 100644 --- a/src/core/abstract/MCAbstractMessage.h +++ b/src/core/abstract/MCAbstractMessage.h @@ -7,6 +7,7 @@ namespace mailcore { + class AbstractPart; class MessageHeader; class AbstractMessage : public Object { @@ -17,6 +18,9 @@ namespace mailcore { virtual MessageHeader * header(); virtual void setHeader(MessageHeader * header); + virtual AbstractPart * partForContentID(String * contentID); + virtual AbstractPart * partForUniqueID(String * uniqueID); + public: //subclass behavior AbstractMessage(AbstractMessage * other); virtual String * description(); diff --git a/src/core/abstract/MCAbstractMessagePart.cc b/src/core/abstract/MCAbstractMessagePart.cc index 98acec98..a52d2196 100644 --- a/src/core/abstract/MCAbstractMessagePart.cc +++ b/src/core/abstract/MCAbstractMessagePart.cc @@ -79,3 +79,13 @@ void AbstractMessagePart::setMessage(AbstractMessage * message) AbstractPart::setMessage(message); applyMessage(); } + +AbstractPart * AbstractMessagePart::partForContentID(String * contentID) +{ + return mainPart()->partForContentID(contentID); +} + +AbstractPart * AbstractMessagePart::partForUniqueID(String * contentID) +{ + return mainPart()->partForContentID(contentID); +} diff --git a/src/core/abstract/MCAbstractMessagePart.h b/src/core/abstract/MCAbstractMessagePart.h index bfbd00be..789f7676 100644 --- a/src/core/abstract/MCAbstractMessagePart.h +++ b/src/core/abstract/MCAbstractMessagePart.h @@ -24,6 +24,9 @@ namespace mailcore { virtual void setMessage(AbstractMessage * message); + virtual AbstractPart * partForContentID(String * contentID); + virtual AbstractPart * partForUniqueID(String * uniqueID); + public: //subclass behavior AbstractMessagePart(AbstractMessagePart * other); virtual String * description(); diff --git a/src/core/abstract/MCAbstractMultipart.cc b/src/core/abstract/MCAbstractMultipart.cc index 207b2962..2604bcac 100644 --- a/src/core/abstract/MCAbstractMultipart.cc +++ b/src/core/abstract/MCAbstractMultipart.cc @@ -86,3 +86,27 @@ void AbstractMultipart::setMessage(AbstractMessage * message) AbstractPart::setMessage(message); applyMessage(); } + +AbstractPart * AbstractMultipart::partForContentID(String * contentID) +{ + for(unsigned int i = 0 ; i < parts()->count() ; i ++) { + mailcore::AbstractPart * subpart = (mailcore::AbstractPart *) parts()->objectAtIndex(i); + mailcore::AbstractPart * result = subpart->partForContentID(contentID); + if (result != NULL) + return result; + } + return NULL; +} + + +AbstractPart * AbstractMultipart::partForUniqueID(String * uniqueID) +{ + for(unsigned int i = 0 ; i < parts()->count() ; i ++) { + mailcore::AbstractPart * subpart = (mailcore::AbstractPart *) parts()->objectAtIndex(i); + mailcore::AbstractPart * result = subpart->partForUniqueID(uniqueID); + if (result != NULL) + return result; + } + return NULL; +} + diff --git a/src/core/abstract/MCAbstractMultipart.h b/src/core/abstract/MCAbstractMultipart.h index 411e8af0..d5d5f343 100644 --- a/src/core/abstract/MCAbstractMultipart.h +++ b/src/core/abstract/MCAbstractMultipart.h @@ -19,6 +19,9 @@ namespace mailcore { virtual void setMessage(AbstractMessage * message); + virtual AbstractPart * partForContentID(String * contentID); + virtual AbstractPart * partForUniqueID(String * uniqueID); + public: //subclass behavior AbstractMultipart(AbstractMultipart * other); virtual String * description(); diff --git a/src/core/abstract/MCAbstractPart.cc b/src/core/abstract/MCAbstractPart.cc index b2e6281d..78e2e365 100644 --- a/src/core/abstract/MCAbstractPart.cc +++ b/src/core/abstract/MCAbstractPart.cc @@ -227,3 +227,24 @@ void AbstractPart::importIMAPFields(struct mailimap_body_fields * fields, } } } + +AbstractPart * AbstractPart::partForContentID(String * contentID) +{ + if (contentID->isEqual(mContentID)) { + return this; + } + else { + return NULL; + } +} + +AbstractPart * AbstractPart::partForUniqueID(String * uniqueID) +{ + if (uniqueID->isEqual(mUniqueID)) { + return this; + } + else { + return NULL; + } +} + diff --git a/src/core/abstract/MCAbstractPart.h b/src/core/abstract/MCAbstractPart.h index db034654..49360089 100644 --- a/src/core/abstract/MCAbstractPart.h +++ b/src/core/abstract/MCAbstractPart.h @@ -43,14 +43,19 @@ namespace mailcore { virtual AbstractMessage * message(); virtual void setMessage(AbstractMessage * message); - virtual void importIMAPFields(struct mailimap_body_fields * fields, - struct mailimap_body_ext_1part * extension); + virtual AbstractPart * partForContentID(String * contentID); + virtual AbstractPart * partForUniqueID(String * uniqueID); public: // subclass behavior AbstractPart(AbstractPart * other); virtual String * description(); virtual Object * copy(); + public: // private + virtual void importIMAPFields(struct mailimap_body_fields * fields, + struct mailimap_body_ext_1part * extension); + + private: String * mUniqueID; String * mFilename; |