summaryrefslogtreecommitdiff
path: root/noncore/net/mail/libmailwrapper
authoralwin <alwin>2004-03-18 18:00:18 (UTC)
committer alwin <alwin>2004-03-18 18:00:18 (UTC)
commitfef9cec046fcf21a4f762c36454b8f253dd3e25e (patch) (side-by-side diff)
treeb87ee38164e1e9ce635dde34c13677f09388c058 /noncore/net/mail/libmailwrapper
parent69fa0e7b5cab5f4cdfdac736e31ff0fd0fbf4312 (diff)
downloadopie-fef9cec046fcf21a4f762c36454b8f253dd3e25e.zip
opie-fef9cec046fcf21a4f762c36454b8f253dd3e25e.tar.gz
opie-fef9cec046fcf21a4f762c36454b8f253dd3e25e.tar.bz2
some (hopeful) improvements
Diffstat (limited to 'noncore/net/mail/libmailwrapper') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.h8
-rw-r--r--noncore/net/mail/libmailwrapper/genericwrapper.cpp90
-rw-r--r--noncore/net/mail/libmailwrapper/genericwrapper.h14
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.cpp86
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.h22
-rw-r--r--noncore/net/mail/libmailwrapper/mailtypes.cpp40
-rw-r--r--noncore/net/mail/libmailwrapper/mailtypes.h24
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.cpp4
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.h2
-rw-r--r--noncore/net/mail/libmailwrapper/mhwrapper.cpp4
-rw-r--r--noncore/net/mail/libmailwrapper/mhwrapper.h2
-rw-r--r--noncore/net/mail/libmailwrapper/nntpwrapper.cpp6
-rw-r--r--noncore/net/mail/libmailwrapper/nntpwrapper.h2
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.cpp7
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.h2
15 files changed, 173 insertions, 140 deletions
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.h b/noncore/net/mail/libmailwrapper/abstractmail.h
index 2d55c83..e5d64a6 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.h
+++ b/noncore/net/mail/libmailwrapper/abstractmail.h
@@ -25,8 +25,8 @@ public:
virtual void listMessages(const QString & mailbox,QValueList<RecMailP>&target )=0;
virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX")=0;
- virtual RecBody fetchBody(const RecMailP&mail)=0;
- virtual QString fetchTextPart(const RecMailP&mail,const RecPart&part)=0;
- virtual encodedString* fetchDecodedPart(const RecMailP&mail,const RecPart&part)=0;
- virtual encodedString* fetchRawPart(const RecMailP&mail,const RecPart&part)=0;
+ virtual RecBodyP fetchBody(const RecMailP&mail)=0;
+ virtual QString fetchTextPart(const RecMailP&mail,const RecPartP&part)=0;
+ virtual encodedString* fetchDecodedPart(const RecMailP&mail,const RecPartP&part)=0;
+ virtual encodedString* fetchRawPart(const RecMailP&mail,const RecPartP&part)=0;
virtual encodedString* fetchRawBody(const RecMailP&mail)=0;
diff --git a/noncore/net/mail/libmailwrapper/genericwrapper.cpp b/noncore/net/mail/libmailwrapper/genericwrapper.cpp
index f428415..0c68280 100644
--- a/noncore/net/mail/libmailwrapper/genericwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/genericwrapper.cpp
@@ -23,5 +23,5 @@ Genericwrapper::~Genericwrapper()
}
-void Genericwrapper::fillSingleBody(RecPart&target,mailmessage*,mailmime*mime)
+void Genericwrapper::fillSingleBody(RecPartP&target,mailmessage*,mailmime*mime)
{
if (!mime) {
@@ -39,28 +39,28 @@ void Genericwrapper::fillSingleBody(RecPart&target,mailmessage*,mailmime*mime)
clistcell*current;
if (!type) {
- target.setType("text");
- target.setSubtype("plain");
+ target->setType("text");
+ target->setSubtype("plain");
} else {
- target.setSubtype(type->ct_subtype);
+ target->setSubtype(type->ct_subtype);
switch(type->ct_type->tp_data.tp_discrete_type->dt_type) {
case MAILMIME_DISCRETE_TYPE_TEXT:
- target.setType("text");
+ target->setType("text");
break;
case MAILMIME_DISCRETE_TYPE_IMAGE:
- target.setType("image");
+ target->setType("image");
break;
case MAILMIME_DISCRETE_TYPE_AUDIO:
- target.setType("audio");
+ target->setType("audio");
break;
case MAILMIME_DISCRETE_TYPE_VIDEO:
- target.setType("video");
+ target->setType("video");
break;
case MAILMIME_DISCRETE_TYPE_APPLICATION:
- target.setType("application");
+ target->setType("application");
break;
case MAILMIME_DISCRETE_TYPE_EXTENSION:
default:
if (type->ct_type->tp_data.tp_discrete_type->dt_extension) {
- target.setType(type->ct_type->tp_data.tp_discrete_type->dt_extension);
+ target->setType(type->ct_type->tp_data.tp_discrete_type->dt_extension);
}
break;
@@ -75,11 +75,11 @@ void Genericwrapper::fillSingleBody(RecPart&target,mailmessage*,mailmime*mime)
switch(field->fld_type) {
case MAILMIME_FIELD_TRANSFER_ENCODING:
- target.setEncoding(getencoding(field->fld_data.fld_encoding));
+ target->setEncoding(getencoding(field->fld_data.fld_encoding));
break;
case MAILMIME_FIELD_ID:
- target.setIdentifier(field->fld_data.fld_id);
+ target->setIdentifier(field->fld_data.fld_id);
break;
case MAILMIME_FIELD_DESCRIPTION:
- target.setDescription(field->fld_data.fld_description);
+ target->setDescription(field->fld_data.fld_description);
break;
default:
@@ -90,5 +90,5 @@ void Genericwrapper::fillSingleBody(RecPart&target,mailmessage*,mailmime*mime)
}
-void Genericwrapper::fillParameters(RecPart&target,clist*parameters)
+void Genericwrapper::fillParameters(RecPartP&target,clist*parameters)
{
if (!parameters) {return;}
@@ -98,5 +98,5 @@ void Genericwrapper::fillParameters(RecPart&target,clist*parameters)
param = (mailmime_parameter*)current->data;
if (param) {
- target.addParameter(QString(param->pa_name).lower(),QString(param->pa_value));
+ target->addParameter(QString(param->pa_name).lower(),QString(param->pa_value));
}
}
@@ -133,5 +133,5 @@ QString Genericwrapper::getencoding(mailmime_mechanism*aEnc)
}
-void Genericwrapper::traverseBody(RecBody&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rec,int current_count)
+void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rec,int current_count)
{
if (current_rec >= 10) {
@@ -146,5 +146,5 @@ void Genericwrapper::traverseBody(RecBody&target,mailmessage*message,mailmime*mi
clistiter * cur = 0;
QString b;
- RecPart part;
+ RecPartP part = new RecPart();
switch (mime->mm_type) {
@@ -154,16 +154,16 @@ void Genericwrapper::traverseBody(RecBody&target,mailmessage*message,mailmime*mi
countlist.append(current_count);
r = mailmessage_fetch_section(message,mime,&data,&len);
- part.setSize(len);
- part.setPositionlist(countlist);
+ part->setSize(len);
+ part->setPositionlist(countlist);
b = gen_attachment_id();
- part.setIdentifier(b);
+ part->setIdentifier(b);
fillSingleBody(part,message,mime);
- if (part.Type()=="text" && target.Bodytext().isNull()) {
+ if (part->Type()=="text" && target->Bodytext().isNull()) {
encodedString*rs = new encodedString();
rs->setContent(data,len);
- encodedString*res = decode_String(rs,part.Encoding());
+ encodedString*res = decode_String(rs,part->Encoding());
if (countlist.count()>2) {
bodyCache[b]=rs;
- target.addPart(part);
+ target->addPart(part);
} else {
delete rs;
@@ -171,9 +171,9 @@ void Genericwrapper::traverseBody(RecBody&target,mailmessage*message,mailmime*mi
b = QString(res->Content());
delete res;
- target.setBodytext(b);
- target.setDescription(part);
+ target->setBodytext(b);
+ target->setDescription(part);
} else {
bodyCache[b]=new encodedString(data,len);
- target.addPart(part);
+ target->addPart(part);
}
}
@@ -187,9 +187,9 @@ void Genericwrapper::traverseBody(RecBody&target,mailmessage*message,mailmime*mi
cbody = (mailmime*)clist_content(cur);
if (cbody->mm_type==MAILMIME_MULTIPLE) {
- RecPart targetPart;
- targetPart.setType("multipart");
+ RecPartP targetPart = new RecPart();
+ targetPart->setType("multipart");
countlist.append(current_count);
- targetPart.setPositionlist(countlist);
- target.addPart(targetPart);
+ targetPart->setPositionlist(countlist);
+ target->addPart(targetPart);
}
traverseBody(target,message, cbody,countlist,current_rec+1,ccount);
@@ -207,14 +207,14 @@ void Genericwrapper::traverseBody(RecBody&target,mailmessage*message,mailmime*mi
/* the own header is always at recursion 0 - we don't need that */
if (current_rec > 0) {
- part.setPositionlist(countlist);
+ part->setPositionlist(countlist);
r = mailmessage_fetch_section(message,mime,&data,&len);
- part.setSize(len);
- part.setPositionlist(countlist);
+ part->setSize(len);
+ part->setPositionlist(countlist);
b = gen_attachment_id();
- part.setIdentifier(b);
- part.setType("message");
- part.setSubtype("rfc822");
+ part->setIdentifier(b);
+ part->setType("message");
+ part->setSubtype("rfc822");
bodyCache[b]=new encodedString(data,len);
- target.addPart(part);
+ target->addPart(part);
}
if (mime->mm_data.mm_message.mm_msg_mime != NULL) {
@@ -226,5 +226,5 @@ void Genericwrapper::traverseBody(RecBody&target,mailmessage*message,mailmime*mi
}
-RecBody Genericwrapper::parseMail( mailmessage * msg )
+RecBodyP Genericwrapper::parseMail( mailmessage * msg )
{
int err = MAILIMF_NO_ERROR;
@@ -232,5 +232,5 @@ RecBody Genericwrapper::parseMail( mailmessage * msg )
/* is bound to msg and will be freed there */
mailmime * mime=0;
- RecBody body;
+ RecBodyP body = new RecBody();
memset(&fields, 0, sizeof(struct mailmime_single_fields));
err = mailmessage_get_bodystructure(msg,&mime);
@@ -333,15 +333,15 @@ QString Genericwrapper::parseMailboxList( mailimf_mailbox_list *list )
}
-encodedString* Genericwrapper::fetchDecodedPart(const RecMailP&,const RecPart&part)
+encodedString* Genericwrapper::fetchDecodedPart(const RecMailP&,const RecPartP&part)
{
- QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part.Identifier());
+ QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part->Identifier());
if (it==bodyCache.end()) return new encodedString();
- encodedString*t = decode_String(it.data(),part.Encoding());
+ encodedString*t = decode_String(it.data(),part->Encoding());
return t;
}
-encodedString* Genericwrapper::fetchRawPart(const RecMailP&mail,const RecPart&part)
+encodedString* Genericwrapper::fetchRawPart(const RecMailP&,const RecPartP&part)
{
- QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part.Identifier());
+ QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part->Identifier());
if (it==bodyCache.end()) return new encodedString();
encodedString*t = it.data();
@@ -349,5 +349,5 @@ encodedString* Genericwrapper::fetchRawPart(const RecMailP&mail,const RecPart&pa
}
-QString Genericwrapper::fetchTextPart(const RecMailP&mail,const RecPart&part)
+QString Genericwrapper::fetchTextPart(const RecMailP&mail,const RecPartP&part)
{
encodedString*t = fetchDecodedPart(mail,part);
diff --git a/noncore/net/mail/libmailwrapper/genericwrapper.h b/noncore/net/mail/libmailwrapper/genericwrapper.h
index f5b9504..8be9212 100644
--- a/noncore/net/mail/libmailwrapper/genericwrapper.h
+++ b/noncore/net/mail/libmailwrapper/genericwrapper.h
@@ -35,7 +35,7 @@ public:
virtual ~Genericwrapper();
- virtual encodedString* fetchDecodedPart(const RecMailP&mail,const RecPart&part);
- virtual encodedString* fetchRawPart(const RecMailP&mail,const RecPart&part);
- virtual QString fetchTextPart(const RecMailP&mail,const RecPart&part);
+ virtual encodedString* fetchDecodedPart(const RecMailP&mail,const RecPartP&part);
+ virtual encodedString* fetchRawPart(const RecMailP&mail,const RecPartP&part);
+ virtual QString fetchTextPart(const RecMailP&mail,const RecPartP&part);
virtual void cleanMimeCache();
virtual int deleteMbox(const Opie::Core::OSmartPointer<Folder>&){return 1;}
@@ -44,5 +44,5 @@ public:
protected:
- RecBody parseMail( mailmessage * msg );
+ RecBodyP parseMail( mailmessage * msg );
QString parseMailboxList( mailimf_mailbox_list *list );
QString parseMailbox( mailimf_mailbox *box );
@@ -51,7 +51,7 @@ protected:
QString parseDateTime( mailimf_date_time *date );
- void traverseBody(RecBody&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rek=0,int current_count=1);
- static void fillSingleBody(RecPart&target,mailmessage*message,mailmime*mime);
- static void fillParameters(RecPart&target,clist*parameters);
+ void traverseBody(RecBodyP&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rek=0,int current_count=1);
+ static void fillSingleBody(RecPartP&target,mailmessage*message,mailmime*mime);
+ static void fillParameters(RecPartP&target,clist*parameters);
static QString getencoding(mailmime_mechanism*aEnc);
virtual void parseList(QValueList<Opie::Core::OSmartPointer<RecMail> > &target,mailsession*session,const QString&mailbox,bool mbox_as_to=false);
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
index 56e7df9..230cf53 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
@@ -484,7 +484,7 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att)
}
-RecBody IMAPwrapper::fetchBody(const RecMailP&mail)
+RecBodyP IMAPwrapper::fetchBody(const RecMailP&mail)
{
- RecBody body;
+ RecBodyP body = new RecBody();
const char *mb;
int err = MAILIMAP_NO_ERROR;
@@ -643,5 +643,5 @@ encodedString*IMAPwrapper::fetchRawPart(const RecMailP&mail,const QValueList<int
/* current_recursion is for recursive calls.
current_count means the position inside the internal loop! */
-void IMAPwrapper::traverseBody(const RecMailP&mail,mailimap_body*body,RecBody&target_body,
+void IMAPwrapper::traverseBody(const RecMailP&mail,mailimap_body*body,RecBodyP&target_body,
int current_recursion,QValueList<int>recList,int current_count)
{
@@ -654,8 +654,8 @@ void IMAPwrapper::traverseBody(const RecMailP&mail,mailimap_body*body,RecBody&ta
QValueList<int>countlist = recList;
countlist.append(current_count);
- RecPart currentPart;
+ RecPartP currentPart = new RecPart();
mailimap_body_type_1part*part1 = body->bd_data.bd_body_1part;
QString id("");
- currentPart.setPositionlist(countlist);
+ currentPart->setPositionlist(countlist);
for (unsigned int j = 0; j < countlist.count();++j) {
id+=(j>0?" ":"");
@@ -663,17 +663,17 @@ void IMAPwrapper::traverseBody(const RecMailP&mail,mailimap_body*body,RecBody&ta
}
qDebug("ID = %s",id.latin1());
- currentPart.setIdentifier(id);
+ currentPart->setIdentifier(id);
fillSinglePart(currentPart,part1);
/* important: Check for is NULL 'cause a body can be empty!
And we put it only into the mail if it is the FIRST part */
- if (part1->bd_type==MAILIMAP_BODY_TYPE_1PART_TEXT && target_body.Bodytext().isNull() && countlist[0]==1) {
- QString body_text = fetchTextPart(mail,countlist,true,currentPart.Encoding());
- target_body.setDescription(currentPart);
- target_body.setBodytext(body_text);
+ if (part1->bd_type==MAILIMAP_BODY_TYPE_1PART_TEXT && target_body->Bodytext().isNull() && countlist[0]==1) {
+ QString body_text = fetchTextPart(mail,countlist,true,currentPart->Encoding());
+ target_body->setDescription(currentPart);
+ target_body->setBodytext(body_text);
if (countlist.count()>1) {
- target_body.addPart(currentPart);
+ target_body->addPart(currentPart);
}
} else {
- target_body.addPart(currentPart);
+ target_body->addPart(currentPart);
}
if (part1->bd_type==MAILIMAP_BODY_TYPE_1PART_MSG) {
@@ -692,10 +692,10 @@ void IMAPwrapper::traverseBody(const RecMailP&mail,mailimap_body*body,RecBody&ta
current_body = (mailimap_body*)current->data;
if (current_body->bd_type==MAILIMAP_BODY_MPART) {
- RecPart targetPart;
- targetPart.setType("multipart");
+ RecPartP targetPart = new RecPart();
+ targetPart->setType("multipart");
fillMultiPart(targetPart,mailDescription);
countlist.append(current_count);
- targetPart.setPositionlist(countlist);
- target_body.addPart(targetPart);
+ targetPart->setPositionlist(countlist);
+ target_body->addPart(targetPart);
QString id("");
for (unsigned int j = 0; j < countlist.count();++j) {
@@ -718,5 +718,5 @@ void IMAPwrapper::traverseBody(const RecMailP&mail,mailimap_body*body,RecBody&ta
}
-void IMAPwrapper::fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description)
+void IMAPwrapper::fillSinglePart(RecPartP&target_part,mailimap_body_type_1part*Description)
{
if (!Description) {
@@ -725,5 +725,5 @@ void IMAPwrapper::fillSinglePart(RecPart&target_part,mailimap_body_type_1part*De
switch (Description->bd_type) {
case MAILIMAP_BODY_TYPE_1PART_TEXT:
- target_part.setType("text");
+ target_part->setType("text");
fillSingleTextPart(target_part,Description->bd_data.bd_type_text);
break;
@@ -732,5 +732,5 @@ void IMAPwrapper::fillSinglePart(RecPart&target_part,mailimap_body_type_1part*De
break;
case MAILIMAP_BODY_TYPE_1PART_MSG:
- target_part.setType("message");
+ target_part->setType("message");
fillSingleMsgPart(target_part,Description->bd_data.bd_type_msg);
break;
@@ -740,5 +740,5 @@ void IMAPwrapper::fillSinglePart(RecPart&target_part,mailimap_body_type_1part*De
}
-void IMAPwrapper::fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which)
+void IMAPwrapper::fillSingleTextPart(RecPartP&target_part,mailimap_body_type_text*which)
{
if (!which) {
@@ -748,26 +748,26 @@ void IMAPwrapper::fillSingleTextPart(RecPart&target_part,mailimap_body_type_text
sub = which->bd_media_text;
qDebug("Type= text/%s",which->bd_media_text);
- target_part.setSubtype(sub.lower());
- target_part.setLines(which->bd_lines);
+ target_part->setSubtype(sub.lower());
+ target_part->setLines(which->bd_lines);
fillBodyFields(target_part,which->bd_fields);
}
-void IMAPwrapper::fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which)
+void IMAPwrapper::fillSingleMsgPart(RecPartP&target_part,mailimap_body_type_msg*which)
{
if (!which) {
return;
}
- target_part.setSubtype("rfc822");
+ target_part->setSubtype("rfc822");
qDebug("Message part");
/* we set this type to text/plain */
- target_part.setLines(which->bd_lines);
+ target_part->setLines(which->bd_lines);
fillBodyFields(target_part,which->bd_fields);
}
-void IMAPwrapper::fillMultiPart(RecPart&target_part,mailimap_body_type_mpart*which)
+void IMAPwrapper::fillMultiPart(RecPartP&target_part,mailimap_body_type_mpart*which)
{
if (!which) return;
QString sub = which->bd_media_subtype;
- target_part.setSubtype(sub.lower());
+ target_part->setSubtype(sub.lower());
if (which->bd_ext_mpart && which->bd_ext_mpart->bd_parameter && which->bd_ext_mpart->bd_parameter->pa_list) {
clistcell*cur = 0;
@@ -776,5 +776,5 @@ void IMAPwrapper::fillMultiPart(RecPart&target_part,mailimap_body_type_mpart*whi
param = (mailimap_single_body_fld_param*)cur->data;
if (param) {
- target_part.addParameter(QString(param->pa_name).lower(),QString(param->pa_value));
+ target_part->addParameter(QString(param->pa_name).lower(),QString(param->pa_value));
}
}
@@ -782,5 +782,5 @@ void IMAPwrapper::fillMultiPart(RecPart&target_part,mailimap_body_type_mpart*whi
}
-void IMAPwrapper::fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which)
+void IMAPwrapper::fillSingleBasicPart(RecPartP&target_part,mailimap_body_type_basic*which)
{
if (!which) {
@@ -819,10 +819,10 @@ void IMAPwrapper::fillSingleBasicPart(RecPart&target_part,mailimap_body_type_bas
}
qDebug("Type = %s/%s",type.latin1(),sub.latin1());
- target_part.setType(type.lower());
- target_part.setSubtype(sub.lower());
+ target_part->setType(type.lower());
+ target_part->setSubtype(sub.lower());
fillBodyFields(target_part,which->bd_fields);
}
-void IMAPwrapper::fillBodyFields(RecPart&target_part,mailimap_body_fields*which)
+void IMAPwrapper::fillBodyFields(RecPartP&target_part,mailimap_body_fields*which)
{
if (!which) return;
@@ -833,5 +833,5 @@ void IMAPwrapper::fillBodyFields(RecPart&target_part,mailimap_body_fields*which)
param = (mailimap_single_body_fld_param*)cur->data;
if (param) {
- target_part.addParameter(QString(param->pa_name).lower(),QString(param->pa_value));
+ target_part->addParameter(QString(param->pa_name).lower(),QString(param->pa_value));
}
}
@@ -865,8 +865,8 @@ void IMAPwrapper::fillBodyFields(RecPart&target_part,mailimap_body_fields*which)
}
if (which->bd_description) {
- target_part.setDescription(QString(which->bd_description));
+ target_part->setDescription(QString(which->bd_description));
}
- target_part.setEncoding(encoding);
- target_part.setSize(which->bd_size);
+ target_part->setEncoding(encoding);
+ target_part->setSize(which->bd_size);
}
@@ -949,20 +949,20 @@ QString IMAPwrapper::fetchTextPart(const RecMailP&mail,const QValueList<int>&pat
}
-QString IMAPwrapper::fetchTextPart(const RecMailP&mail,const RecPart&part)
+QString IMAPwrapper::fetchTextPart(const RecMailP&mail,const RecPartP&part)
{
- return fetchTextPart(mail,part.Positionlist(),false,part.Encoding());
+ return fetchTextPart(mail,part->Positionlist(),false,part->Encoding());
}
-encodedString* IMAPwrapper::fetchDecodedPart(const RecMailP&mail,const RecPart&part)
+encodedString* IMAPwrapper::fetchDecodedPart(const RecMailP&mail,const RecPartP&part)
{
- encodedString*res = fetchRawPart(mail,part.Positionlist(),false);
- encodedString*r = decode_String(res,part.Encoding());
+ encodedString*res = fetchRawPart(mail,part->Positionlist(),false);
+ encodedString*r = decode_String(res,part->Encoding());
delete res;
return r;
}
-encodedString* IMAPwrapper::fetchRawPart(const RecMailP&mail,const RecPart&part)
+encodedString* IMAPwrapper::fetchRawPart(const RecMailP&mail,const RecPartP&part)
{
- return fetchRawPart(mail,part.Positionlist(),false);
+ return fetchRawPart(mail,part->Positionlist(),false);
}
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.h b/noncore/net/mail/libmailwrapper/imapwrapper.h
index 7448acb..e56605a 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.h
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.h
@@ -36,8 +36,8 @@ public:
virtual void mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
- virtual RecBody fetchBody(const RecMailP&mail);
- virtual QString fetchTextPart(const RecMailP&mail,const RecPart&part);
- virtual encodedString* fetchDecodedPart(const RecMailP&mail,const RecPart&part);
- virtual encodedString* fetchRawPart(const RecMailP&mail,const RecPart&part);
+ virtual RecBodyP fetchBody(const RecMailP&mail);
+ virtual QString fetchTextPart(const RecMailP&mail,const RecPartP&part);
+ virtual encodedString* fetchDecodedPart(const RecMailP&mail,const RecPartP&part);
+ virtual encodedString* fetchRawPart(const RecMailP&mail,const RecPartP&part);
virtual encodedString* fetchRawBody(const RecMailP&mail);
@@ -61,13 +61,13 @@ protected:
int selectMbox(const QString&mbox);
- void fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description);
- void fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which);
- void fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which);
- void fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which);
- void fillMultiPart(RecPart&target_part,mailimap_body_type_mpart*which);
- void traverseBody(const RecMailP&mail,mailimap_body*body,RecBody&target_body,int current_recursion,QValueList<int>recList,int current_count=1);
+ void fillSinglePart(RecPartP&target_part,mailimap_body_type_1part*Description);
+ void fillSingleTextPart(RecPartP&target_part,mailimap_body_type_text*which);
+ void fillSingleBasicPart(RecPartP&target_part,mailimap_body_type_basic*which);
+ void fillSingleMsgPart(RecPartP&target_part,mailimap_body_type_msg*which);
+ void fillMultiPart(RecPartP&target_part,mailimap_body_type_mpart*which);
+ void traverseBody(const RecMailP&mail,mailimap_body*body,RecBodyP&target_body,int current_recursion,QValueList<int>recList,int current_count=1);
/* just helpers */
- static void fillBodyFields(RecPart&target_part,mailimap_body_fields*which);
+ static void fillBodyFields(RecPartP&target_part,mailimap_body_fields*which);
static QStringList address_list_to_stringlist(clist*list);
diff --git a/noncore/net/mail/libmailwrapper/mailtypes.cpp b/noncore/net/mail/libmailwrapper/mailtypes.cpp
index fd91fe5..90b8865 100644
--- a/noncore/net/mail/libmailwrapper/mailtypes.cpp
+++ b/noncore/net/mail/libmailwrapper/mailtypes.cpp
@@ -112,5 +112,6 @@ const QStringList& RecMail::References()const
RecPart::RecPart()
- : m_type(""),m_subtype(""),m_identifier(""),m_encoding(""),m_description(""),m_lines(0),m_size(0)
+ : Opie::Core::ORefCount(),
+ m_type(""),m_subtype(""),m_identifier(""),m_encoding(""),m_description(""),m_lines(0),m_size(0)
{
m_Parameters.clear();
@@ -118,4 +119,20 @@ RecPart::RecPart()
}
+RecPart::RecPart(const RecPart&old)
+ : Opie::Core::ORefCount(),
+ m_type(""),m_subtype(""),m_identifier(""),m_encoding(""),m_description(""),m_lines(0),m_size(0)
+{
+ m_type = old.m_type;
+ m_subtype = old.m_subtype;
+ m_identifier = old.m_identifier;
+ m_encoding = old.m_encoding;
+ m_description = old.m_description;
+ m_lines = old.m_lines;
+ m_size = old.m_size;
+ m_Parameters = old.m_Parameters;
+ m_poslist = old.m_poslist;
+ qDebug("RecPart copy constructor");
+}
+
RecPart::~RecPart()
{
@@ -228,9 +245,18 @@ const QValueList<int>& RecPart::Positionlist()const
RecBody::RecBody()
- : m_BodyText(),m_PartsList(),m_description()
+ : Opie::Core::ORefCount(),m_BodyText(),m_description(new RecPart())
{
m_PartsList.clear();
}
+RecBody::RecBody(const RecBody&old)
+ :Opie::Core::ORefCount(),m_BodyText(),m_PartsList(),m_description(new RecPart())
+{
+ m_BodyText = old.m_BodyText;
+ m_PartsList = old.m_PartsList;
+ m_description = old.m_description;
+ qDebug("Recbody copy constructor");
+}
+
RecBody::~RecBody()
{
@@ -247,5 +273,5 @@ const QString& RecBody::Bodytext()const
}
-void RecBody::setParts(const QValueList<RecPart>&parts)
+void RecBody::setParts(const QValueList<RecPartP>&parts)
{
m_PartsList.clear();
@@ -253,20 +279,20 @@ void RecBody::setParts(const QValueList<RecPart>&parts)
}
-const QValueList<RecPart>& RecBody::Parts()const
+const QValueList<RecPartP>& RecBody::Parts()const
{
return m_PartsList;
}
-void RecBody::addPart(const RecPart& part)
+void RecBody::addPart(const RecPartP& part)
{
m_PartsList.append(part);
}
-void RecBody::setDescription(const RecPart&des)
+void RecBody::setDescription(const RecPartP&des)
{
m_description = des;
}
-const RecPart& RecBody::Description()const
+const RecPartP& RecBody::Description()const
{
return m_description;
diff --git a/noncore/net/mail/libmailwrapper/mailtypes.h b/noncore/net/mail/libmailwrapper/mailtypes.h
index 941556a..c317880 100644
--- a/noncore/net/mail/libmailwrapper/mailtypes.h
+++ b/noncore/net/mail/libmailwrapper/mailtypes.h
@@ -85,5 +85,5 @@ typedef Opie::Core::OSmartPointer<RecMail> RecMailP;
typedef QMap<QString,QString> part_plist_t;
-class RecPart
+class RecPart:public Opie::Core::ORefCount
{
protected:
@@ -96,4 +96,5 @@ protected:
public:
RecPart();
+ RecPart(const RecPart&);
virtual ~RecPart();
@@ -122,25 +123,30 @@ public:
};
-class RecBody
+typedef Opie::Core::OSmartPointer<RecPart> RecPartP;
+
+class RecBody:public Opie::Core::ORefCount
{
protected:
QString m_BodyText;
- QValueList<RecPart> m_PartsList;
- RecPart m_description;
+ QValueList<RecPartP> m_PartsList;
+ RecPartP m_description;
public:
RecBody();
+ RecBody(const RecBody&old);
virtual ~RecBody();
void setBodytext(const QString&);
const QString& Bodytext()const;
- void setDescription(const RecPart&des);
- const RecPart& Description()const;
+ void setDescription(const RecPartP&des);
+ const RecPartP& Description()const;
- void setParts(const QValueList<RecPart>&parts);
- const QValueList<RecPart>& Parts()const;
- void addPart(const RecPart&part);
+ void setParts(const QValueList<RecPartP>&parts);
+ const QValueList<RecPartP>& Parts()const;
+ void addPart(const RecPartP&part);
};
+typedef Opie::Core::OSmartPointer<RecBody> RecBodyP;
+
class encodedString
{
diff --git a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
index 4aee0be..e3c75f3 100644
--- a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
@@ -88,7 +88,7 @@ void MBOXwrapper::answeredMail(const RecMailP&)
}
-RecBody MBOXwrapper::fetchBody( const RecMailP &mail )
+RecBodyP MBOXwrapper::fetchBody( const RecMailP &mail )
{
- RecBody body;
+ RecBodyP body = new RecBody();
mailstorage*storage = mailstorage_new(NULL);
QString p = MBOXPath+"/";
diff --git a/noncore/net/mail/libmailwrapper/mboxwrapper.h b/noncore/net/mail/libmailwrapper/mboxwrapper.h
index a2ecfee..9731b85 100644
--- a/noncore/net/mail/libmailwrapper/mboxwrapper.h
+++ b/noncore/net/mail/libmailwrapper/mboxwrapper.h
@@ -29,5 +29,5 @@ public:
virtual void storeMessage(const char*msg,size_t length, const QString&folder);
- virtual RecBody fetchBody( const RecMailP &mail );
+ virtual RecBodyP fetchBody( const RecMailP &mail );
static void mbox_progress( size_t current, size_t maximum );
diff --git a/noncore/net/mail/libmailwrapper/mhwrapper.cpp b/noncore/net/mail/libmailwrapper/mhwrapper.cpp
index 5eae31f..12472e9 100644
--- a/noncore/net/mail/libmailwrapper/mhwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/mhwrapper.cpp
@@ -124,7 +124,7 @@ void MHwrapper::answeredMail(const RecMailP&)
}
-RecBody MHwrapper::fetchBody( const RecMailP &mail )
+RecBodyP MHwrapper::fetchBody( const RecMailP &mail )
{
- RecBody body;
+ RecBodyP body = new RecBody();
init_storage();
if (!m_storage) {
diff --git a/noncore/net/mail/libmailwrapper/mhwrapper.h b/noncore/net/mail/libmailwrapper/mhwrapper.h
index 0846ec3..4310c84 100644
--- a/noncore/net/mail/libmailwrapper/mhwrapper.h
+++ b/noncore/net/mail/libmailwrapper/mhwrapper.h
@@ -34,5 +34,5 @@ public:
virtual void storeMessage(const char*msg,size_t length, const QString&folder);
- virtual RecBody fetchBody( const RecMailP &mail );
+ virtual RecBodyP fetchBody( const RecMailP &mail );
static void mbox_progress( size_t current, size_t maximum );
diff --git a/noncore/net/mail/libmailwrapper/nntpwrapper.cpp b/noncore/net/mail/libmailwrapper/nntpwrapper.cpp
index 9de958d..cc36f32 100644
--- a/noncore/net/mail/libmailwrapper/nntpwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/nntpwrapper.cpp
@@ -34,15 +34,15 @@ void NNTPwrapper::nntp_progress( size_t current, size_t maximum ) {
-RecBody NNTPwrapper::fetchBody( const RecMailP &mail ) {
+RecBodyP NNTPwrapper::fetchBody( const RecMailP &mail ) {
int err = NEWSNNTP_NO_ERROR;
char *message = 0;
size_t length = 0;
+ RecBodyP body = new RecBody();
login();
if ( !m_nntp ) {
- return RecBody();
+ return body;
}
- RecBody body;
mailmessage * mailmsg;
if (mail->Msgsize()>HARD_MSG_SIZE_LIMIT) {
diff --git a/noncore/net/mail/libmailwrapper/nntpwrapper.h b/noncore/net/mail/libmailwrapper/nntpwrapper.h
index a87a8e8..2fb82f2 100644
--- a/noncore/net/mail/libmailwrapper/nntpwrapper.h
+++ b/noncore/net/mail/libmailwrapper/nntpwrapper.h
@@ -31,5 +31,5 @@ public:
virtual int deleteAllMail(const Opie::Core::OSmartPointer<Folder>&);
- virtual RecBody fetchBody( const RecMailP &mail );
+ virtual RecBodyP fetchBody( const RecMailP &mail );
virtual encodedString* fetchRawBody(const RecMailP&mail);
virtual void logout();
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
index f5694fe..1b7a1b4 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
@@ -32,15 +32,16 @@ void POP3wrapper::pop3_progress( size_t current, size_t maximum ) {
}
-RecBody POP3wrapper::fetchBody( const RecMailP &mail ) {
+RecBodyP POP3wrapper::fetchBody( const RecMailP &mail ) {
int err = MAILPOP3_NO_ERROR;
char *message = 0;
size_t length = 0;
+ RecBodyP body = new RecBody();
+
login();
if ( !m_pop3 ) {
- return RecBody();
+ return body;
}
- RecBody body;
mailmessage * mailmsg;
if (mail->Msgsize()>HARD_MSG_SIZE_LIMIT) {
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.h b/noncore/net/mail/libmailwrapper/pop3wrapper.h
index c46b941..5101fa5 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.h
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.h
@@ -27,5 +27,5 @@ public:
virtual int deleteAllMail(const Opie::Core::OSmartPointer<Folder>&);
- virtual RecBody fetchBody( const RecMailP &mail );
+ virtual RecBodyP fetchBody( const RecMailP &mail );
virtual encodedString* fetchRawBody(const RecMailP&mail);
virtual void logout();