Diffstat (limited to 'noncore/net/mail/libmailwrapper/genericwrapper.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/net/mail/libmailwrapper/genericwrapper.cpp | 90 |
1 files changed, 45 insertions, 45 deletions
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 @@ -13,100 +13,100 @@ Genericwrapper::Genericwrapper() Genericwrapper::~Genericwrapper() { if (m_folder) { mailfolder_free(m_folder); } if (m_storage) { mailstorage_free(m_storage); } cleanMimeCache(); } -void Genericwrapper::fillSingleBody(RecPart&target,mailmessage*,mailmime*mime) +void Genericwrapper::fillSingleBody(RecPartP&target,mailmessage*,mailmime*mime) { if (!mime) { return; } mailmime_field*field = 0; mailmime_single_fields fields; memset(&fields, 0, sizeof(struct mailmime_single_fields)); if (mime->mm_mime_fields != NULL) { mailmime_single_fields_init(&fields, mime->mm_mime_fields, mime->mm_content_type); } mailmime_content*type = fields.fld_content; 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; } if (type->ct_parameters) { fillParameters(target,type->ct_parameters); } } if (mime->mm_mime_fields && mime->mm_mime_fields->fld_list) { for (current=clist_begin(mime->mm_mime_fields->fld_list);current!=0;current=clist_next(current)) { field = (mailmime_field*)current->data; 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: break; } } } } -void Genericwrapper::fillParameters(RecPart&target,clist*parameters) +void Genericwrapper::fillParameters(RecPartP&target,clist*parameters) { if (!parameters) {return;} clistcell*current=0; mailmime_parameter*param; for (current=clist_begin(parameters);current!=0;current=clist_next(current)) { 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)); } } } QString Genericwrapper::getencoding(mailmime_mechanism*aEnc) { QString enc="7bit"; if (!aEnc) return enc; switch(aEnc->enc_type) { case MAILMIME_MECHANISM_7BIT: enc = "7bit"; break; @@ -123,124 +123,124 @@ QString Genericwrapper::getencoding(mailmime_mechanism*aEnc) enc = "base64"; break; case MAILMIME_MECHANISM_TOKEN: default: if (aEnc->enc_token) { enc = QString(aEnc->enc_token); } break; } return enc; } -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) { qDebug("too deep recursion!"); } if (!message || !mime) { return; } int r; char*data = 0; size_t len; clistiter * cur = 0; QString b; - RecPart part; + RecPartP part = new RecPart(); switch (mime->mm_type) { case MAILMIME_SINGLE: { QValueList<int>countlist = recList; 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; } 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); } } break; case MAILMIME_MULTIPLE: { unsigned int ccount = 1; mailmime*cbody=0; QValueList<int>countlist = recList; for (cur = clist_begin(mime->mm_data.mm_multipart.mm_mp_list) ; cur != NULL ; cur = clist_next(cur)) { 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); if (cbody->mm_type==MAILMIME_MULTIPLE) { countlist = recList; } ++ccount; } } break; case MAILMIME_MESSAGE: { QValueList<int>countlist = recList; countlist.append(current_count); /* 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) { traverseBody(target,message,mime->mm_data.mm_message.mm_msg_mime,countlist,current_rec+1); } } break; } } -RecBody Genericwrapper::parseMail( mailmessage * msg ) +RecBodyP Genericwrapper::parseMail( mailmessage * msg ) { int err = MAILIMF_NO_ERROR; mailmime_single_fields fields; /* 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); QValueList<int>recList; traverseBody(body,msg,mime,recList); return body; } QString Genericwrapper::parseDateTime( mailimf_date_time *date ) { char tmp[23]; snprintf( tmp, 23, "%02i.%02i.%04i %02i:%02i:%02i %+05i", @@ -323,41 +323,41 @@ QString Genericwrapper::parseMailboxList( mailimf_mailbox_list *list ) if ( !first ) { result.append( "," ); } else { first = false; } result.append( parseMailbox( box ) ); } return result; } -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(); return t; } -QString Genericwrapper::fetchTextPart(const RecMailP&mail,const RecPart&part) +QString Genericwrapper::fetchTextPart(const RecMailP&mail,const RecPartP&part) { encodedString*t = fetchDecodedPart(mail,part); QString text=t->Content(); delete t; return text; } void Genericwrapper::cleanMimeCache() { QMap<QString,encodedString*>::Iterator it = bodyCache.begin(); for (;it!=bodyCache.end();++it) { encodedString*t = it.data(); |