aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/abstract
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/abstract')
-rw-r--r--src/core/abstract/MCAbstractMessage.cc12
-rw-r--r--src/core/abstract/MCAbstractMessage.h4
-rw-r--r--src/core/abstract/MCAbstractMessagePart.cc10
-rw-r--r--src/core/abstract/MCAbstractMessagePart.h3
-rw-r--r--src/core/abstract/MCAbstractMultipart.cc24
-rw-r--r--src/core/abstract/MCAbstractMultipart.h3
-rw-r--r--src/core/abstract/MCAbstractPart.cc21
-rw-r--r--src/core/abstract/MCAbstractPart.h9
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;