aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/abstract
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/abstract')
-rw-r--r--src/core/abstract/MCAbstractMessage.cc19
-rw-r--r--src/core/abstract/MCAbstractMessage.h4
-rw-r--r--src/core/abstract/MCAbstractMessagePart.cc17
-rw-r--r--src/core/abstract/MCAbstractMessagePart.h3
-rw-r--r--src/core/abstract/MCAbstractMultipart.cc31
-rw-r--r--src/core/abstract/MCAbstractMultipart.h3
-rw-r--r--src/core/abstract/MCAbstractPart.cc41
-rw-r--r--src/core/abstract/MCAbstractPart.h13
-rw-r--r--src/core/abstract/MCAddress.cc7
-rw-r--r--src/core/abstract/MCMessageHeader.cc7
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);