Diffstat (limited to 'noncore/net/mail/libmailwrapper') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/mail/libmailwrapper/genericwrapper.cpp | 13 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/imapwrapper.cpp | 86 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mhwrapper.cpp | 60 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/pop3wrapper.cpp | 21 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/pop3wrapper.h | 2 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/settings.cpp | 47 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/settings.h | 7 |
7 files changed, 144 insertions, 92 deletions
diff --git a/noncore/net/mail/libmailwrapper/genericwrapper.cpp b/noncore/net/mail/libmailwrapper/genericwrapper.cpp index 1caa375..5ec9415 100644 --- a/noncore/net/mail/libmailwrapper/genericwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/genericwrapper.cpp @@ -2,8 +2,10 @@ #include <libetpan/libetpan.h> #include "mailtypes.h" #include <opie2/odebug.h> +#include <qpe/timestring.h> +#include <qdatetime.h> using namespace Opie::Core; Genericwrapper::Genericwrapper() : AbstractMail() @@ -242,14 +244,13 @@ RecBodyP Genericwrapper::parseMail( mailmessage * msg ) } QString Genericwrapper::parseDateTime( mailimf_date_time *date ) { - char tmp[23]; - - snprintf( tmp, 23, "%02i.%02i.%04i %02i:%02i:%02i %+05i", - date->dt_day, date->dt_month, date->dt_year, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone ); - - return QString( tmp ); + QDateTime da(QDate(date->dt_year,date->dt_month,date->dt_day),QTime(date->dt_hour,date->dt_min,date->dt_sec)); + QString timestring = TimeString::numberDateString(QDate(date->dt_year,date->dt_month,date->dt_day))+" "; + timestring+=TimeString::timeString(QTime(date->dt_hour,date->dt_min,date->dt_sec))+" "; + timestring.sprintf(timestring+" %+05i",date->dt_zone); + return timestring; } QString Genericwrapper::parseAddressList( mailimf_address_list *list ) { diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp index 9b7c0e0..fe75a15 100644 --- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp @@ -30,9 +30,9 @@ int IMAPwrapper::selectMbox(const QString&mbox) return MAILIMAP_NO_ERROR; } int err = mailimap_select( m_imap, (char*)mbox.latin1()); if ( err != MAILIMAP_NO_ERROR ) { - odebug << "error selecting mailbox: " << m_imap->imap_response << "" << oendl; + odebug << "error selecting mailbox: " << m_imap->imap_response << "" << oendl; m_Lastmbox = ""; return err; } m_Lastmbox = mbox; @@ -41,9 +41,9 @@ int IMAPwrapper::selectMbox(const QString&mbox) void IMAPwrapper::imap_progress( size_t current, size_t maximum ) { qApp->processEvents(); - odebug << "IMAP: " << current << " of " << maximum << "" << oendl; + odebug << "IMAP: " << current << " of " << maximum << "" << oendl; } bool IMAPwrapper::start_tls(bool force_tls) { @@ -53,9 +53,9 @@ bool IMAPwrapper::start_tls(bool force_tls) err = mailimap_capability(m_imap,&cap_data); if (err != MAILIMAP_NO_ERROR) { Global::statusMessage("error getting capabilities!"); - odebug << "error getting capabilities!" << oendl; + odebug << "error getting capabilities!" << oendl; return false; } clistiter * cur; for(cur = clist_begin(cap_data->cap_list) ; cur != NULL;cur = clist_next(cur)) { @@ -74,9 +74,9 @@ bool IMAPwrapper::start_tls(bool force_tls) if (try_tls) { err = mailimap_starttls(m_imap); if (err != MAILIMAP_NO_ERROR && force_tls) { Global::statusMessage(tr("Server has no TLS support!")); - odebug << "Server has no TLS support!" << oendl; + odebug << "Server has no TLS support!" << oendl; try_tls = false; } else { mailstream_low * low; mailstream_low * new_low; @@ -125,9 +125,9 @@ void IMAPwrapper::login() user = login.getUser().latin1(); pass = login.getPassword().latin1(); } else { // cancel - odebug << "IMAP: Login canceled" << oendl; + odebug << "IMAP: Login canceled" << oendl; return; } } else { user = account->getUser().latin1(); @@ -148,9 +148,9 @@ void IMAPwrapper::login() force_tls = true; } if ( ssl ) { - odebug << "using ssl" << oendl; + odebug << "using ssl" << oendl; err = mailimap_ssl_connect( m_imap, (char*)server, port ); } else { err = mailimap_socket_connect( m_imap, (char*)server, port ); } @@ -176,9 +176,9 @@ void IMAPwrapper::login() bool ok = true; if (force_tls && !try_tls) { Global::statusMessage(tr("Server has no TLS support!")); - odebug << "Server has no TLS support!" << oendl; + odebug << "Server has no TLS support!" << oendl; ok = false; } @@ -236,14 +236,18 @@ void IMAPwrapper::listMessages(const QString&mailbox,QValueList<Opie::Core::OSma } /* the range has to start at 1!!! not with 0!!!! */ set = mailimap_set_new_interval( 1, last ); + + + fetchType = mailimap_fetch_type_new_all(); +/* fetchType = mailimap_fetch_type_new_fetch_att_list_empty(); mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_envelope()); mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_flags()); mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_internaldate()); mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_rfc822_size()); - +*/ err = mailimap_fetch( m_imap, set, fetchType, &result ); mailimap_set_free( set ); mailimap_fetch_type_free( fetchType ); @@ -317,9 +321,9 @@ QValueList<Opie::Core::OSmartPointer<Folder> >* IMAPwrapper::listFolders() } folders->append( new IMAPFolder(temp,del,selectable,no_inferiors,account->getPrefix())); } } else { - odebug << "error fetching folders: " << m_imap->imap_response << "" << oendl; + odebug << "error fetching folders: " << m_imap->imap_response << "" << oendl; } mailimap_list_result_free( result ); /* @@ -327,9 +331,9 @@ QValueList<Opie::Core::OSmartPointer<Folder> >* IMAPwrapper::listFolders() */ mask = "*" ; path = account->getPrefix().latin1(); if (!path) path = ""; - odebug << path << oendl; + odebug << path << oendl; err = mailimap_list( m_imap, (char*)path, (char*)mask, &result ); if ( err == MAILIMAP_NO_ERROR ) { current = result->first; for ( current=clist_begin(result);current!=NULL;current=clist_next(current)) { @@ -354,9 +358,9 @@ QValueList<Opie::Core::OSmartPointer<Folder> >* IMAPwrapper::listFolders() del = list->mb_delimiter; folders->append(new IMAPFolder(temp,del,selectable,no_inferiors,account->getPrefix())); } } else { - odebug << "error fetching folders " << m_imap->imap_response << "" << oendl; + odebug << "error fetching folders " << m_imap->imap_response << "" << oendl; } if (result) mailimap_list_result_free( result ); return folders; } @@ -374,12 +378,12 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att) if (!m_att) { return m; } + size = 0; m = new RecMail(); for (c = clist_begin(m_att->att_list); c!=NULL;c=clist_next(c) ) { current = c; - size = 0; item = (mailimap_msg_att_item*)current->data; if (item->att_type!=MAILIMAP_MSG_ATT_ITEM_STATIC) { flist = (mailimap_msg_att_dynamic*)item->att_data.att_dyn; if (!flist->att_list) { @@ -464,15 +468,22 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att) m->setMsgid(QString(head->env_message_id)); } } else if (item->att_data.att_static->att_type==MAILIMAP_MSG_ATT_INTERNALDATE) { #if 0 - mailimap_date_time*d = item->att_data.att_static->att_data.att_internal_date; + mailimap_date_time*date = item->att_data.att_static->att_data.att_internal_date; + if (date->dt_sec>60 || date->dt_sec<0) date->dt_sec=0; + //QDateTime da(QDate(d->dt_year,date->dt_month,date->dt_day),QTime(date->dt_hour,date->dt_min,date->dt_sec)); + QString timestring = TimeString::numberDateString(QDate(date->dt_year,date->dt_month,date->dt_day))+" "; + timestring+=TimeString::timeString(QTime(date->dt_hour,date->dt_min,date->dt_sec))+" "; + timestring.sprintf(timestring+" %+05i",date->dt_zone); + m->setDate(timestring); QDateTime da(QDate(d->dt_year,d->dt_month,d->dt_day),QTime(d->dt_hour,d->dt_min,d->dt_sec)); - odebug << "" << d->dt_year << " " << d->dt_month << " " << d->dt_day << " - " << d->dt_hour << " " << d->dt_min << " " << d->dt_sec << "" << oendl; - odebug << da.toString() << oendl; + odebug << "" << d->dt_year << " " << d->dt_month << " " << d->dt_day << " - " << d->dt_hour << " " << d->dt_min << " " << d->dt_sec << "" << oendl; + odebug << da.toString() << oendl; #endif } else if (item->att_data.att_static->att_type==MAILIMAP_MSG_ATT_RFC822_SIZE) { - size = item->att_data.att_static->att_data.att_rfc822_size; + //size = item->att_data.att_static->att_data.att_rfc822_size; + m->setMsgsize(item->att_data.att_static->att_data.att_rfc822_size); } } /* msg is already deleted */ if (mFlags.testBit(FLAG_DELETED) && m) { @@ -480,9 +491,8 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att) m = 0; } if (m) { m->setFlags(mFlags); - m->setMsgsize(size); } return m; } @@ -524,9 +534,9 @@ RecBodyP IMAPwrapper::fetchBody(const RecMailP&mail) QValueList<int> path; body_desc = item->att_data.att_static->att_data.att_body; traverseBody(mail,body_desc,body,0,path); } else { - odebug << "error fetching body: " << m_imap->imap_response << "" << oendl; + odebug << "error fetching body: " << m_imap->imap_response << "" << oendl; } if (result) mailimap_fetch_list_free(result); return body; } @@ -636,9 +646,9 @@ encodedString*IMAPwrapper::fetchRawPart(const RecMailP&mail,const QValueList<int } } } } else { - odebug << "error fetching text: " << m_imap->imap_response << "" << oendl; + odebug << "error fetching text: " << m_imap->imap_response << "" << oendl; } if (result) mailimap_fetch_list_free(result); return res; } @@ -663,9 +673,9 @@ void IMAPwrapper::traverseBody(const RecMailP&mail,mailimap_body*body,RecBodyP&t for (unsigned int j = 0; j < countlist.count();++j) { id+=(j>0?" ":""); id+=QString("%1").arg(countlist[j]); } - odebug << "ID = " << id.latin1() << "" << oendl; + odebug << "ID = " << id.latin1() << "" << oendl; 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 */ @@ -704,9 +714,9 @@ void IMAPwrapper::traverseBody(const RecMailP&mail,mailimap_body*body,RecBodyP&t for (unsigned int j = 0; j < countlist.count();++j) { id+=(j>0?" ":""); id+=QString("%1").arg(countlist[j]); } - odebug << "ID(mpart) = " << id.latin1() << "" << oendl; + odebug << "ID(mpart) = " << id.latin1() << "" << oendl; } traverseBody(mail,current_body,target_body,current_recursion+1,countlist,ccount); if (current_body->bd_type==MAILIMAP_BODY_MPART) { countlist = recList; @@ -748,9 +758,9 @@ void IMAPwrapper::fillSingleTextPart(RecPartP&target_part,mailimap_body_type_tex return; } QString sub; sub = which->bd_media_text; - odebug << "Type= text/" << which->bd_media_text << "" << oendl; + odebug << "Type= text/" << which->bd_media_text << "" << oendl; target_part->setSubtype(sub.lower()); target_part->setLines(which->bd_lines); fillBodyFields(target_part,which->bd_fields); } @@ -760,9 +770,9 @@ void IMAPwrapper::fillSingleMsgPart(RecPartP&target_part,mailimap_body_type_msg* if (!which) { return; } target_part->setSubtype("rfc822"); - odebug << "Message part" << oendl; + odebug << "Message part" << oendl; /* we set this type to text/plain */ target_part->setLines(which->bd_lines); fillBodyFields(target_part,which->bd_fields); } @@ -819,9 +829,9 @@ void IMAPwrapper::fillSingleBasicPart(RecPartP&target_part,mailimap_body_type_ba sub = which->bd_media_basic->med_subtype; } else { sub = ""; } - odebug << "Type = " << type.latin1() << "/" << sub.latin1() << "" << oendl; + odebug << "Type = " << type.latin1() << "/" << sub.latin1() << "" << oendl; target_part->setType(type.lower()); target_part->setSubtype(sub.lower()); fillBodyFields(target_part,which->bd_fields); } @@ -895,18 +905,18 @@ void IMAPwrapper::deleteMail(const RecMailP&mail) mailimap_set_free( set ); mailimap_store_att_flags_free(store_flags); if (err != MAILIMAP_NO_ERROR) { - odebug << "error deleting mail: " << m_imap->imap_response << "" << oendl; + odebug << "error deleting mail: " << m_imap->imap_response << "" << oendl; return; } - odebug << "deleting mail: " << m_imap->imap_response << "" << oendl; + odebug << "deleting mail: " << m_imap->imap_response << "" << oendl; /* should we realy do that at this moment? */ err = mailimap_expunge(m_imap); if (err != MAILIMAP_NO_ERROR) { - odebug << "error deleting mail: " << m_imap->imap_response << "" << oendl; + odebug << "error deleting mail: " << m_imap->imap_response << "" << oendl; } - odebug << "Delete successfull " << m_imap->imap_response << "" << oendl; + odebug << "Delete successfull " << m_imap->imap_response << "" << oendl; } void IMAPwrapper::answeredMail(const RecMailP&mail) { @@ -930,9 +940,9 @@ void IMAPwrapper::answeredMail(const RecMailP&mail) mailimap_set_free( set ); mailimap_store_att_flags_free(store_flags); if (err != MAILIMAP_NO_ERROR) { - odebug << "error marking mail: " << m_imap->imap_response << "" << oendl; + odebug << "error marking mail: " << m_imap->imap_response << "" << oendl; return; } } @@ -998,16 +1008,16 @@ int IMAPwrapper::deleteAllMail(const FolderP&folder) if (err != MAILIMAP_NO_ERROR) { Global::statusMessage(tr("error deleting mail: %s").arg(m_imap->imap_response)); return 0; } - odebug << "deleting mail: " << m_imap->imap_response << "" << oendl; + odebug << "deleting mail: " << m_imap->imap_response << "" << oendl; /* should we realy do that at this moment? */ err = mailimap_expunge(m_imap); if (err != MAILIMAP_NO_ERROR) { Global::statusMessage(tr("error deleting mail: %s").arg(m_imap->imap_response)); return 0; } - odebug << "Delete successfull " << m_imap->imap_response << "" << oendl; + odebug << "Delete successfull " << m_imap->imap_response << "" << oendl; return 1; } int IMAPwrapper::createMbox(const QString&folder,const FolderP&parentfolder,const QString& delemiter,bool getsubfolder) @@ -1030,9 +1040,9 @@ int IMAPwrapper::createMbox(const QString&folder,const FolderP&parentfolder,cons Global::statusMessage(tr("Cannot create folder %1 for holding subfolders").arg(pre)); return 0; } } - odebug << "Creating " << pre.latin1() << "" << oendl; + odebug << "Creating " << pre.latin1() << "" << oendl; int res = mailimap_create(m_imap,pre.latin1()); if (res != MAILIMAP_NO_ERROR) { Global::statusMessage(tr("%1").arg(m_imap->imap_response)); return 0; @@ -1089,9 +1099,9 @@ void IMAPwrapper::statusFolder(folderStat&target_stat,const QString & mailbox) break; } } } else { - odebug << "Error retrieving status" << oendl; + odebug << "Error retrieving status" << oendl; } if (status) mailimap_mailbox_data_status_free(status); if (att_list) mailimap_status_att_list_free(att_list); } @@ -1113,9 +1123,9 @@ MAILLIB::ATYPE IMAPwrapper::getType()const } const QString&IMAPwrapper::getName()const { - odebug << "Get name: " << account->getAccountName().latin1() << "" << oendl; + odebug << "Get name: " << account->getAccountName().latin1() << "" << oendl; return account->getAccountName(); } encodedString* IMAPwrapper::fetchRawBody(const RecMailP&mail) @@ -1129,9 +1139,9 @@ void IMAPwrapper::mvcpAllMails(const FolderP&fromFolder, const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) { if (targetWrapper != this) { AbstractMail::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit); - odebug << "Using generic" << oendl; + odebug << "Using generic" << oendl; return; } mailimap_set *set = 0; login(); @@ -1148,9 +1158,9 @@ void IMAPwrapper::mvcpAllMails(const FolderP&fromFolder, mailimap_set_free( set ); if ( err != MAILIMAP_NO_ERROR ) { QString error_msg = tr("error copy mails: %1").arg(m_imap->imap_response); Global::statusMessage(error_msg); - odebug << error_msg << oendl; + odebug << error_msg << oendl; return; } if (moveit) { deleteAllMail(fromFolder); @@ -1159,9 +1169,9 @@ void IMAPwrapper::mvcpAllMails(const FolderP&fromFolder, void IMAPwrapper::mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) { if (targetWrapper != this) { - odebug << "Using generic" << oendl; + odebug << "Using generic" << oendl; AbstractMail::mvcpMail(mail,targetFolder,targetWrapper,moveit); return; } mailimap_set *set = 0; @@ -1178,9 +1188,9 @@ void IMAPwrapper::mvcpMail(const RecMailP&mail,const QString&targetFolder,Abstra mailimap_set_free( set ); if ( err != MAILIMAP_NO_ERROR ) { QString error_msg = tr("error copy mail: %1").arg(m_imap->imap_response); Global::statusMessage(error_msg); - odebug << error_msg << oendl; + odebug << error_msg << oendl; return; } if (moveit) { deleteMail(mail); diff --git a/noncore/net/mail/libmailwrapper/mhwrapper.cpp b/noncore/net/mail/libmailwrapper/mhwrapper.cpp index 403afcf..765a21c 100644 --- a/noncore/net/mail/libmailwrapper/mhwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/mhwrapper.cpp @@ -16,9 +16,9 @@ MHwrapper::MHwrapper(const QString & mbox_dir,const QString&mbox_name) if (MHPath.length()>0) { if (MHPath[MHPath.length()-1]=='/') { MHPath=MHPath.left(MHPath.length()-1); } - odebug << MHPath << oendl; + odebug << MHPath << oendl; QDir dir(MHPath); if (!dir.exists()) { dir.mkdir(MHPath); } @@ -33,17 +33,17 @@ void MHwrapper::init_storage() if (!m_storage) { m_storage = mailstorage_new(NULL); r = mh_mailstorage_init(m_storage,(char*)pre.latin1(),0,0,0); if (r != MAIL_NO_ERROR) { - odebug << "error initializing storage" << oendl; + odebug << "error initializing storage" << oendl; mailstorage_free(m_storage); m_storage = 0; return; } } r = mailstorage_connect(m_storage); if (r!=MAIL_NO_ERROR) { - odebug << "error connecting storage" << oendl; + odebug << "error connecting storage" << oendl; mailstorage_free(m_storage); m_storage = 0; } } @@ -70,9 +70,9 @@ void MHwrapper::listMessages(const QString & mailbox, QValueList<Opie::Core::OSm } QString f = buildPath(mailbox); int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); if (r!=MAIL_NO_ERROR) { - odebug << "listMessages: error selecting folder!" << oendl; + odebug << "listMessages: error selecting folder!" << oendl; return; } parseList(target,m_storage->sto_session,f); Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count())); @@ -90,9 +90,9 @@ QValueList<Opie::Core::OSmartPointer<Folder> >* MHwrapper::listFolders() mail_list*flist = 0; clistcell*current=0; int r = mailsession_list_folders(m_storage->sto_session,NULL,&flist); if (r != MAIL_NO_ERROR || !flist) { - odebug << "error getting folder list" << oendl; + odebug << "error getting folder list" << oendl; return folders; } for (current=clist_begin(flist->mb_list);current!=0;current=clist_next(current)) { QString t = (char*)current->data; @@ -110,14 +110,14 @@ void MHwrapper::deleteMail(const RecMailP&mail) return; } int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1()); if (r!=MAIL_NO_ERROR) { - odebug << "error selecting folder!" << oendl; + odebug << "error selecting folder!" << oendl; return; } r = mailsession_remove_message(m_storage->sto_session,mail->getNumber()); if (r != MAIL_NO_ERROR) { - odebug << "error deleting mail" << oendl; + odebug << "error deleting mail" << oendl; } } void MHwrapper::answeredMail(const RecMailP&) @@ -140,9 +140,9 @@ RecBodyP MHwrapper::fetchBody( const RecMailP &mail ) return body; } r = mailsession_get_message(m_storage->sto_session, mail->getNumber(), &msg); if (r != MAIL_NO_ERROR) { - odebug << "Error fetching mail " << mail->getNumber() << "" << oendl; + odebug << "Error fetching mail " << mail->getNumber() << "" << oendl; return body; } body = parseMail(msg); mailmessage_fetch_result_free(msg,data); @@ -150,9 +150,9 @@ RecBodyP MHwrapper::fetchBody( const RecMailP &mail ) } void MHwrapper::mbox_progress( size_t current, size_t maximum ) { - odebug << "MH " << current << " von " << maximum << "" << oendl; + odebug << "MH " << current << " von " << maximum << "" << oendl; } QString MHwrapper::buildPath(const QString&p) { @@ -183,15 +183,15 @@ int MHwrapper::createMbox(const QString&folder,const FolderP&pfolder,const QStri f = pfolder->getName(); f+="/"; f+=folder; } - odebug << f << oendl; + odebug << f << oendl; int r = mailsession_create_folder(m_storage->sto_session,(char*)f.latin1()); if (r != MAIL_NO_ERROR) { - odebug << "error creating folder " << r << "" << oendl; + odebug << "error creating folder " << r << "" << oendl; return 0; } - odebug << "Folder created" << oendl; + odebug << "Folder created" << oendl; return 1; } void MHwrapper::storeMessage(const char*msg,size_t length, const QString&Folder) @@ -202,14 +202,14 @@ void MHwrapper::storeMessage(const char*msg,size_t length, const QString&Folder) } QString f = buildPath(Folder); int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); if (r!=MAIL_NO_ERROR) { - odebug << "error selecting folder!" << oendl; + odebug << "error selecting folder!" << oendl; return; } r = mailsession_append_message(m_storage->sto_session,(char*)msg,length); if (r!=MAIL_NO_ERROR) { - odebug << "error storing mail" << oendl; + odebug << "error storing mail" << oendl; } return; } @@ -224,9 +224,9 @@ encodedString* MHwrapper::fetchRawBody(const RecMailP&mail) char*data=0; size_t size; int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1()); if (r!=MAIL_NO_ERROR) { - odebug << "error selecting folder!" << oendl; + odebug << "error selecting folder!" << oendl; return result; } r = mailsession_get_message(m_storage->sto_session, mail->getNumber(), &msg); if (r != MAIL_NO_ERROR) { @@ -248,16 +248,16 @@ void MHwrapper::deleteMails(const QString & mailbox,const QValueList<RecMailP> & { QString f = buildPath(mailbox); int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); if (r!=MAIL_NO_ERROR) { - odebug << "deleteMails: error selecting folder!" << oendl; + odebug << "deleteMails: error selecting folder!" << oendl; return; } QValueList<RecMailP>::ConstIterator it; for (it=target.begin(); it!=target.end();++it) { r = mailsession_remove_message(m_storage->sto_session,(*it)->getNumber()); if (r != MAIL_NO_ERROR) { - odebug << "error deleting mail" << oendl; + odebug << "error deleting mail" << oendl; break; } } } @@ -271,15 +271,15 @@ int MHwrapper::deleteAllMail(const FolderP&tfolder) int res = 1; if (!tfolder) return 0; int r = mailsession_select_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); if (r!=MAIL_NO_ERROR) { - odebug << "error selecting folder!" << oendl; + odebug << "error selecting folder!" << oendl; return 0; } mailmessage_list*l=0; r = mailsession_get_messages_list(m_storage->sto_session,&l); if (r != MAIL_NO_ERROR) { - odebug << "Error message list" << oendl; + odebug << "Error message list" << oendl; res = 0; } unsigned j = 0; for(unsigned int i = 0 ; l!= 0 && res==1 && i < carray_count(l->msg_tab) ; ++i) { @@ -308,9 +308,9 @@ int MHwrapper::deleteMbox(const FolderP&tfolder) int r = mailsession_delete_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); if (r != MAIL_NO_ERROR) { - odebug << "error deleting mail box" << oendl; + odebug << "error deleting mail box" << oendl; return 0; } QString cmd = "rm -rf "+tfolder->getName(); QStringList command; @@ -326,12 +326,12 @@ int MHwrapper::deleteMbox(const FolderP&tfolder) *process << command; removeMboxfailed = false; if(!process->start(OProcess::Block, OProcess::All) ) { - odebug << "could not start process" << oendl; + odebug << "could not start process" << oendl; return 0; } - odebug << "mail box deleted" << oendl; + odebug << "mail box deleted" << oendl; return 1; } void MHwrapper::processEnded(OProcess *p) @@ -378,26 +378,26 @@ void MHwrapper::mvcpMail(const RecMailP&mail,const QString&targetFolder,Abstract if (!m_storage) { return; } if (targetWrapper != this) { - odebug << "Using generic" << oendl; + odebug << "Using generic" << oendl; Genericwrapper::mvcpMail(mail,targetFolder,targetWrapper,moveit); return; } - odebug << "Using internal routines for move/copy" << oendl; + odebug << "Using internal routines for move/copy" << oendl; QString tf = buildPath(targetFolder); int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1()); if (r != MAIL_NO_ERROR) { - odebug << "Error selecting source mailbox" << oendl; + odebug << "Error selecting source mailbox" << oendl; return; } if (moveit) { r = mailsession_move_message(m_storage->sto_session,mail->getNumber(),(char*)tf.latin1()); } else { r = mailsession_copy_message(m_storage->sto_session,mail->getNumber(),(char*)tf.latin1()); } if (r != MAIL_NO_ERROR) { - odebug << "Error copy/moving mail internal (" << r << ")" << oendl; + odebug << "Error copy/moving mail internal (" << r << ")" << oendl; } } void MHwrapper::mvcpAllMails(const FolderP&fromFolder, @@ -407,23 +407,23 @@ void MHwrapper::mvcpAllMails(const FolderP&fromFolder, if (!m_storage) { return; } if (targetWrapper != this) { - odebug << "Using generic" << oendl; + odebug << "Using generic" << oendl; Genericwrapper::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit); return; } if (!fromFolder) return; int r = mailsession_select_folder(m_storage->sto_session,(char*)fromFolder->getName().latin1()); if (r!=MAIL_NO_ERROR) { - odebug << "error selecting source folder!" << oendl; + odebug << "error selecting source folder!" << oendl; return; } QString tf = buildPath(targetFolder); mailmessage_list*l=0; r = mailsession_get_messages_list(m_storage->sto_session,&l); if (r != MAIL_NO_ERROR) { - odebug << "Error message list" << oendl; + odebug << "Error message list" << oendl; } unsigned j = 0; for(unsigned int i = 0 ; l!= 0 && i < carray_count(l->msg_tab) ; ++i) { mailmessage * msg; @@ -434,9 +434,9 @@ void MHwrapper::mvcpAllMails(const FolderP&fromFolder, } else { r = mailsession_copy_message(m_storage->sto_session,j,(char*)tf.latin1()); } if (r != MAIL_NO_ERROR) { - odebug << "Error copy/moving mail internal (" << r << ")" << oendl; + odebug << "Error copy/moving mail internal (" << r << ")" << oendl; break; } } if (l) mailmessage_list_free(l); diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp index 3cfd1ee..2d66fc9 100644 --- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp +++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp @@ -6,8 +6,9 @@ #include <opie2/odebug.h> #include <qpe/global.h> #include <qfile.h> +#include <qmessagebox.h> /* we don't fetch messages larger than 5 MB */ #define HARD_MSG_SIZE_LIMIT 5242880 @@ -17,8 +18,10 @@ POP3wrapper::POP3wrapper( POP3account *a ) account = a; m_pop3 = NULL; msgTempName = a->getFileName()+"_msg_cache"; last_msg_id = 0; + m_maxsize = account->getMaxSize(); + m_checksize = account->getCheckMaxSize(); } POP3wrapper::~POP3wrapper() { logout(); @@ -28,9 +31,9 @@ POP3wrapper::~POP3wrapper() { } } void POP3wrapper::pop3_progress( size_t current, size_t maximum ) { - odebug << "POP3: " << current << " of " << maximum << "" << oendl; + odebug << "POP3: " << current << " of " << maximum << "" << oendl; } RecBodyP POP3wrapper::fetchBody( const RecMailP &mail ) { int err = MAILPOP3_NO_ERROR; @@ -44,11 +47,15 @@ RecBodyP POP3wrapper::fetchBody( const RecMailP &mail ) { return body; } mailmessage * mailmsg; - if (mail->Msgsize()>HARD_MSG_SIZE_LIMIT) { - odebug << "Message to large: " << mail->Msgsize() << "" << oendl; - return body; + if (mail->Msgsize()/1024>m_maxsize && m_checksize && mail->getNumber()!=last_msg_id) { + QString quest = QString(tr("Download mail?\nIt is %1 kByte but your limit is %2 kByte")).arg(mail->Msgsize()/1024).arg(m_maxsize); + int yesno = QMessageBox::warning(0,tr("Download message"), + quest,tr("Yes"),tr("No"),QString::null,0,1); + odebug << "Message to large: " << mail->Msgsize() << "" << oendl; + if (yesno==1) + return body; } QFile msg_cache(msgTempName); @@ -130,9 +137,9 @@ void POP3wrapper::login() user = login.getUser().latin1(); pass = login.getPassword().latin1(); } else { // cancel - odebug << "POP3: Login canceled" << oendl; + odebug << "POP3: Login canceled" << oendl; return; } } else { user = account->getUser().latin1(); @@ -162,9 +169,9 @@ void POP3wrapper::login() err = mailstorage_connect(m_pop3); if (err != MAIL_NO_ERROR) { - odebug << QString( "FEHLERNUMMER %1" ).arg( err ) << oendl; + odebug << QString( "FEHLERNUMMER %1" ).arg( err ) << oendl; Global::statusMessage(tr("Error initializing folder")); mailstorage_free(m_pop3); m_pop3 = 0; } else { @@ -236,9 +243,9 @@ void POP3wrapper::statusFolder(folderStat&target_stat,const QString&) { return; int r = mailsession_status_folder(m_pop3->sto_session,0,&target_stat.message_count, &target_stat.message_recent,&target_stat.message_unseen); if (r != MAIL_NO_ERROR) { - odebug << "error getting folter status." << oendl; + odebug << "error getting folter status." << oendl; } } encodedString* POP3wrapper::fetchRawBody(const RecMailP&mail) { diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.h b/noncore/net/mail/libmailwrapper/pop3wrapper.h index 5101fa5..8c36cf9 100644 --- a/noncore/net/mail/libmailwrapper/pop3wrapper.h +++ b/noncore/net/mail/libmailwrapper/pop3wrapper.h @@ -36,7 +36,9 @@ public: protected: void login(); POP3account *account; mailstorage*m_pop3; + int m_maxsize; + bool m_checksize; }; #endif diff --git a/noncore/net/mail/libmailwrapper/settings.cpp b/noncore/net/mail/libmailwrapper/settings.cpp index 3c9b25c..09be91b 100644 --- a/noncore/net/mail/libmailwrapper/settings.cpp +++ b/noncore/net/mail/libmailwrapper/settings.cpp @@ -15,9 +15,8 @@ #define POP3_SSL_PORT "995" #define NNTP_PORT "119" #define NNTP_SSL_PORT "563" - Settings::Settings() : QObject() { updateAccounts(); @@ -26,9 +25,9 @@ Settings::Settings() void Settings::checkDirectory() { if ( !QDir( (QString) getenv( "HOME" ) + "/Applications/opiemail/" ).exists() ) { system( "mkdir -p $HOME/Applications/opiemail" ); - odebug << "$HOME/Applications/opiemail created" << oendl; + odebug << "$HOME/Applications/opiemail created" << oendl; } } QList<Account> Settings::getAccounts() @@ -54,30 +53,30 @@ void Settings::updateAccounts() QStringList::Iterator it; QStringList imap = dir.entryList( "imap-*" ); for ( it = imap.begin(); it != imap.end(); it++ ) { - odebug << "Added IMAP account" << oendl; + odebug << "Added IMAP account" << oendl; IMAPaccount *account = new IMAPaccount( (*it).replace(0, 5, "") ); accounts.append( account ); } QStringList pop3 = dir.entryList( "pop3-*" ); for ( it = pop3.begin(); it != pop3.end(); it++ ) { - odebug << "Added POP account" << oendl; + odebug << "Added POP account" << oendl; POP3account *account = new POP3account( (*it).replace(0, 5, "") ); accounts.append( account ); } QStringList smtp = dir.entryList( "smtp-*" ); for ( it = smtp.begin(); it != smtp.end(); it++ ) { - odebug << "Added SMTP account" << oendl; + odebug << "Added SMTP account" << oendl; SMTPaccount *account = new SMTPaccount( (*it).replace(0, 5, "") ); accounts.append( account ); } QStringList nntp = dir.entryList( "nntp-*" ); for ( it = nntp.begin(); it != nntp.end(); it++ ) { - odebug << "Added NNTP account" << oendl; + odebug << "Added NNTP account" << oendl; NNTPaccount *account = new NNTPaccount( (*it).replace(0, 5, "") ); accounts.append( account ); } @@ -179,9 +178,9 @@ void IMAPaccount::read() } void IMAPaccount::save() { - odebug << "saving " + getFileName() << oendl; + odebug << "saving " + getFileName() << oendl; Settings::checkDirectory(); Config *conf = new Config( getFileName(), Config::File ); conf->setGroup( "IMAP Account" ); @@ -212,8 +211,10 @@ POP3account::POP3account() ssl = false; connectionType = 1; type = MAILLIB::A_POP3; port = POP3_PORT; + m_CheckSize = true; + m_MaxSize = 1024; } POP3account::POP3account( QString filename ) : Account() @@ -223,8 +224,10 @@ POP3account::POP3account( QString filename ) ssl = false; connectionType = 1; type = MAILLIB::A_POP3; port = POP3_PORT; + m_CheckSize = true; + m_MaxSize = 1024; } QString POP3account::getUniqueFileName() { @@ -252,14 +255,16 @@ void POP3account::read() connectionType = conf->readNumEntry( "ConnectionType" ); user = conf->readEntry( "User" ); password = conf->readEntryCrypt( "Password" ); offline = conf->readBoolEntry("Offline",false); + m_CheckSize = conf->readBoolEntry("Checkmaxsize",true); + m_MaxSize = conf->readNumEntry("Maxsize",1024); delete conf; } void POP3account::save() { - odebug << "saving " + getFileName() << oendl; + odebug << "saving " + getFileName() << oendl; Settings::checkDirectory(); Config *conf = new Config( getFileName(), Config::File ); conf->setGroup( "POP3 Account" ); @@ -270,8 +275,10 @@ void POP3account::save() conf->writeEntry( "ConnectionType", connectionType ); conf->writeEntry( "User", user ); conf->writeEntryCrypt( "Password", password ); conf->writeEntry( "Offline",offline); + conf->writeEntry("Checkmaxsize",m_CheckSize); + conf->writeEntry("Maxsize",m_MaxSize); conf->write(); delete conf; } @@ -280,8 +287,28 @@ QString POP3account::getFileName() { return (QString) getenv( "HOME" ) + "/Applications/opiemail/pop3-" + file; } +bool POP3account::getCheckMaxSize()const +{ + return m_CheckSize; +} + +void POP3account::setCheckMaxSize(bool aValue) +{ + m_CheckSize = aValue; +} + +int POP3account::getMaxSize()const +{ + return m_MaxSize; +} + +void POP3account::setMaxSize(int aValue) +{ + m_MaxSize = aValue; +} + SMTPaccount::SMTPaccount() : Account() { file = SMTPaccount::getUniqueFileName(); @@ -339,9 +366,9 @@ void SMTPaccount::read() } void SMTPaccount::save() { - odebug << "saving " + getFileName() << oendl; + odebug << "saving " + getFileName() << oendl; Settings::checkDirectory(); Config *conf = new Config( getFileName(), Config::File ); conf->setGroup( "SMTP Account" ); @@ -416,9 +443,9 @@ void NNTPaccount::read() } void NNTPaccount::save() { - odebug << "saving " + getFileName() << oendl; + odebug << "saving " + getFileName() << oendl; Settings::checkDirectory(); Config *conf = new Config( getFileName(), Config::File ); conf->setGroup( "NNTP Account" ); diff --git a/noncore/net/mail/libmailwrapper/settings.h b/noncore/net/mail/libmailwrapper/settings.h index bf27b97..8683a05 100644 --- a/noncore/net/mail/libmailwrapper/settings.h +++ b/noncore/net/mail/libmailwrapper/settings.h @@ -88,12 +88,17 @@ public: virtual void read(); virtual void save(); virtual QString getFileName(); + virtual bool getCheckMaxSize()const; + virtual void setCheckMaxSize(bool); + virtual int getMaxSize()const; + virtual void setMaxSize(int); private: QString file; - + bool m_CheckSize; + int m_MaxSize; }; class SMTPaccount : public Account { |