diff options
Diffstat (limited to 'src/core/abstract')
-rw-r--r-- | src/core/abstract/MCAbstractMessage.cc | 19 | ||||
-rw-r--r-- | src/core/abstract/MCAbstractMessage.h | 4 | ||||
-rw-r--r-- | src/core/abstract/MCAbstractMessagePart.cc | 17 | ||||
-rw-r--r-- | src/core/abstract/MCAbstractMessagePart.h | 3 | ||||
-rw-r--r-- | src/core/abstract/MCAbstractMultipart.cc | 31 | ||||
-rw-r--r-- | src/core/abstract/MCAbstractMultipart.h | 3 | ||||
-rw-r--r-- | src/core/abstract/MCAbstractPart.cc | 41 | ||||
-rw-r--r-- | src/core/abstract/MCAbstractPart.h | 13 | ||||
-rw-r--r-- | src/core/abstract/MCAddress.cc | 7 | ||||
-rw-r--r-- | src/core/abstract/MCMessageHeader.cc | 7 |
10 files changed, 101 insertions, 44 deletions
diff --git a/src/core/abstract/MCAbstractMessage.cc b/src/core/abstract/MCAbstractMessage.cc index 00a4b9b9..b7d9b9af 100644 --- a/src/core/abstract/MCAbstractMessage.cc +++ b/src/core/abstract/MCAbstractMessage.cc @@ -39,13 +39,6 @@ String * AbstractMessage::description() } } -#if 0 -String * AbstractMessage::className() -{ - return MCSTR("MessageHeader"); -} -#endif - Object * AbstractMessage::copy() { return new AbstractMessage(this); @@ -63,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 6939d060..a52d2196 100644 --- a/src/core/abstract/MCAbstractMessagePart.cc +++ b/src/core/abstract/MCAbstractMessagePart.cc @@ -37,13 +37,6 @@ String * AbstractMessagePart::description() return result; } -#if 0 -String * AbstractMessagePart::className() -{ - return MCSTR("AbstractMessagePart"); -} -#endif - Object * AbstractMessagePart::copy() { return new AbstractMessagePart(this); @@ -86,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 fa48d959..2604bcac 100644 --- a/src/core/abstract/MCAbstractMultipart.cc +++ b/src/core/abstract/MCAbstractMultipart.cc @@ -65,13 +65,6 @@ String * AbstractMultipart::description() return result; } -#if 0 -String * AbstractMultipart::className() -{ - return MCSTR("AbstractMultipart"); -} -#endif - Object * AbstractMultipart::copy() { return new AbstractMultipart(this); @@ -93,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 30c4c8f0..78e2e365 100644 --- a/src/core/abstract/MCAbstractPart.cc +++ b/src/core/abstract/MCAbstractPart.cc @@ -13,6 +13,7 @@ AbstractPart::AbstractPart() AbstractPart::AbstractPart(AbstractPart * other) { init(); + setUniqueID(other->mUniqueID); setFilename(other->mFilename); setMimeType(other->mMimeType); setCharset(other->mCharset); @@ -24,6 +25,7 @@ AbstractPart::AbstractPart(AbstractPart * other) void AbstractPart::init() { + mUniqueID = NULL; mFilename = NULL; mMimeType = NULL; mCharset = NULL; @@ -35,6 +37,7 @@ void AbstractPart::init() AbstractPart::~AbstractPart() { + MC_SAFE_RELEASE(mUniqueID); MC_SAFE_RELEASE(mFilename); MC_SAFE_RELEASE(mMimeType); MC_SAFE_RELEASE(mCharset); @@ -67,13 +70,6 @@ String * AbstractPart::description() return result; } -#if 0 -String * AbstractPart::className() -{ - return MCSTR("AbstractPart"); -} -#endif - Object * AbstractPart::copy() { return new AbstractPart(this); @@ -89,6 +85,16 @@ void AbstractPart::setPartType(PartType type) mPartType = type; } +String * AbstractPart::uniqueID() +{ + return mUniqueID; +} + +void AbstractPart::setUniqueID(String * uniqueID) +{ + MC_SAFE_REPLACE_COPY(String, mUniqueID, uniqueID); +} + String * AbstractPart::filename() { return mFilename; @@ -221,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 f7b29ced..49360089 100644 --- a/src/core/abstract/MCAbstractPart.h +++ b/src/core/abstract/MCAbstractPart.h @@ -28,6 +28,9 @@ namespace mailcore { virtual String * charset(); virtual void setCharset(String * charset); + virtual String * uniqueID(); + virtual void setUniqueID(String * uniqueID); + virtual String * contentID(); virtual void setContentID(String * contentID); @@ -40,15 +43,21 @@ 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; String * mMimeType; String * mCharset; diff --git a/src/core/abstract/MCAddress.cc b/src/core/abstract/MCAddress.cc index 25bed974..2ef1cd2b 100644 --- a/src/core/abstract/MCAddress.cc +++ b/src/core/abstract/MCAddress.cc @@ -177,13 +177,6 @@ String * Address::description() return result; } -#if 0 -String * Address::className() -{ - return MCSTR("Address"); -} -#endif - bool Address::isEqual(Object * otherObject) { Address * otherAddress = (Address *) otherObject; diff --git a/src/core/abstract/MCMessageHeader.cc b/src/core/abstract/MCMessageHeader.cc index 765bc085..b0574293 100644 --- a/src/core/abstract/MCMessageHeader.cc +++ b/src/core/abstract/MCMessageHeader.cc @@ -154,13 +154,6 @@ String * MessageHeader::description() return result; } -#if 0 -String * MessageHeader::className() -{ - return MCSTR("MessageHeader"); -} -#endif - Object * MessageHeader::copy() { return new MessageHeader(this); |