author | alwin <alwin> | 2004-01-08 19:15:10 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-01-08 19:15:10 (UTC) |
commit | 6287f011db0a566d17ae1614d8129f421125d934 (patch) (side-by-side diff) | |
tree | 8c449974e9b577fe8dcc5348c4d109e82659b218 | |
parent | 44443aec5d4b8f974b30b1e9b4ea920d6582add1 (diff) | |
download | opie-6287f011db0a566d17ae1614d8129f421125d934.zip opie-6287f011db0a566d17ae1614d8129f421125d934.tar.gz opie-6287f011db0a566d17ae1614d8129f421125d934.tar.bz2 |
MH storage implemented
local folders will be type of MH not MBOX
-rw-r--r-- | noncore/net/mail/accountview.cpp | 64 | ||||
-rw-r--r-- | noncore/net/mail/accountview.h | 18 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/abstractmail.cpp | 3 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/genericwrapper.cpp | 8 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/genericwrapper.h | 4 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/libmailwrapper.pro | 6 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mailwrapper.cpp | 18 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mailwrapper.h | 11 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mboxwrapper.h | 1 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mhwrapper.cpp | 330 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mhwrapper.h | 50 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/smtpwrapper.cpp | 3 |
12 files changed, 468 insertions, 48 deletions
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp index 9f4f358..62cbf62 100644 --- a/noncore/net/mail/accountview.cpp +++ b/noncore/net/mail/accountview.cpp @@ -579,3 +579,3 @@ AccountView::~AccountView() imapAccounts.clear(); - mboxAccounts.clear(); + mhAccounts.clear(); } @@ -607,5 +607,5 @@ void AccountView::populate( QList<Account> list ) imapAccounts.clear(); - mboxAccounts.clear(); + mhAccounts.clear(); - mboxAccounts.append(new MBOXviewItem(AbstractMail::defaultLocalfolder(),this)); + mhAccounts.append(new MHviewItem(AbstractMail::defaultLocalfolder(),this)); @@ -668,6 +668,6 @@ void AccountView::setupFolderselect(Selectstore*sels) unsigned int i = 0; - for (i=0; i < mboxAccounts.count();++i) { - mboxAccounts[i]->refresh(false); - sFolders = mboxAccounts[i]->subFolders(); - sels->addAccounts(mboxAccounts[i]->getWrapper(),sFolders); + for (i=0; i < mhAccounts.count();++i) { + mhAccounts[i]->refresh(false); + sFolders = mhAccounts[i]->subFolders(); + sels->addAccounts(mhAccounts[i]->getWrapper(),sFolders); } @@ -706,6 +706,6 @@ void AccountView::downloadMails(Folder*fromFolder,AbstractMail*fromWrapper) /** - * MBOX Account stuff + * MH Account stuff */ -MBOXviewItem::MBOXviewItem( const QString&aPath, AccountView *parent ) +MHviewItem::MHviewItem( const QString&aPath, AccountView *parent ) : AccountViewItem( parent ) @@ -720,3 +720,3 @@ MBOXviewItem::MBOXviewItem( const QString&aPath, AccountView *parent ) -MBOXviewItem::~MBOXviewItem() +MHviewItem::~MHviewItem() { @@ -725,3 +725,3 @@ MBOXviewItem::~MBOXviewItem() -AbstractMail *MBOXviewItem::getWrapper() +AbstractMail *MHviewItem::getWrapper() { @@ -730,3 +730,3 @@ AbstractMail *MBOXviewItem::getWrapper() -void MBOXviewItem::refresh( QList<RecMail> & ) +void MHviewItem::refresh( QList<RecMail> & ) { @@ -735,3 +735,3 @@ void MBOXviewItem::refresh( QList<RecMail> & ) -void MBOXviewItem::refresh(bool force) +void MHviewItem::refresh(bool force) { @@ -748,3 +748,3 @@ void MBOXviewItem::refresh(bool force) for ( it = folders->first(); it; it = folders->next() ) { - item = new MBOXfolderItem( it, this , item ); + item = new MHfolderItem( it, this , item ); item->setSelectable(it->may_select()); @@ -756,5 +756,5 @@ void MBOXviewItem::refresh(bool force) -RecBody MBOXviewItem::fetchBody( const RecMail &mail ) +RecBody MHviewItem::fetchBody( const RecMail &mail ) { - qDebug( "MBOX fetchBody" ); + qDebug( "MH fetchBody" ); return wrapper->fetchBody( mail ); @@ -762,3 +762,3 @@ RecBody MBOXviewItem::fetchBody( const RecMail &mail ) -QPopupMenu * MBOXviewItem::getContextMenu() +QPopupMenu * MHviewItem::getContextMenu() { @@ -772,3 +772,3 @@ QPopupMenu * MBOXviewItem::getContextMenu() -void MBOXviewItem::createFolder() +void MHviewItem::createFolder() { @@ -784,3 +784,3 @@ void MBOXviewItem::createFolder() -QStringList MBOXviewItem::subFolders() +QStringList MHviewItem::subFolders() { @@ -789,5 +789,5 @@ QStringList MBOXviewItem::subFolders() while ( child ) { - MBOXfolderItem *tmp = (MBOXfolderItem*)child; + MHfolderItem *tmp = (MHfolderItem*)child; child = child->nextSibling(); - result.append(tmp->getFolder()->getName()); + result.append(tmp->getFolder()->getDisplayName()); } @@ -797,3 +797,3 @@ QStringList MBOXviewItem::subFolders() -void MBOXviewItem::contextMenuSelected(int which) +void MHviewItem::contextMenuSelected(int which) { @@ -811,3 +811,3 @@ void MBOXviewItem::contextMenuSelected(int which) -MBOXfolderItem::~MBOXfolderItem() +MHfolderItem::~MHfolderItem() { @@ -816,3 +816,3 @@ MBOXfolderItem::~MBOXfolderItem() -MBOXfolderItem::MBOXfolderItem( Folder *folderInit, MBOXviewItem *parent , QListViewItem*after ) +MHfolderItem::MHfolderItem( Folder *folderInit, MHviewItem *parent , QListViewItem*after ) : AccountViewItem( parent,after ) @@ -831,3 +831,3 @@ MBOXfolderItem::MBOXfolderItem( Folder *folderInit, MBOXviewItem *parent , QList -Folder*MBOXfolderItem::getFolder() +Folder*MHfolderItem::getFolder() { @@ -836,3 +836,3 @@ Folder*MBOXfolderItem::getFolder() -void MBOXfolderItem::refresh(QList<RecMail>&target) +void MHfolderItem::refresh(QList<RecMail>&target) { @@ -842,3 +842,3 @@ void MBOXfolderItem::refresh(QList<RecMail>&target) -RecBody MBOXfolderItem::fetchBody(const RecMail&aMail) +RecBody MHfolderItem::fetchBody(const RecMail&aMail) { @@ -847,3 +847,3 @@ RecBody MBOXfolderItem::fetchBody(const RecMail&aMail) -void MBOXfolderItem::deleteFolder() +void MHfolderItem::deleteFolder() { @@ -857,3 +857,3 @@ void MBOXfolderItem::deleteFolder() QListView*v=listView(); - MBOXviewItem * box = mbox; + MHviewItem * box = mbox; /* be carefull - after that this object is destroyd so don't use @@ -868,3 +868,3 @@ void MBOXfolderItem::deleteFolder() -QPopupMenu * MBOXfolderItem::getContextMenu() +QPopupMenu * MHfolderItem::getContextMenu() { @@ -879,3 +879,3 @@ QPopupMenu * MBOXfolderItem::getContextMenu() -void MBOXfolderItem::downloadMails() +void MHfolderItem::downloadMails() { @@ -886,3 +886,3 @@ void MBOXfolderItem::downloadMails() -void MBOXfolderItem::contextMenuSelected(int which) +void MHfolderItem::contextMenuSelected(int which) { diff --git a/noncore/net/mail/accountview.h b/noncore/net/mail/accountview.h index d9b5558..f5a2973 100644 --- a/noncore/net/mail/accountview.h +++ b/noncore/net/mail/accountview.h @@ -120,9 +120,9 @@ protected: -class MBOXviewItem : public AccountViewItem +class MHviewItem : public AccountViewItem { - friend class MBOXfolderItem; + friend class MHfolderItem; public: - MBOXviewItem( const QString&aMboxPath, AccountView *parent ); - virtual ~MBOXviewItem(); + MHviewItem( const QString&aMboxPath, AccountView *parent ); + virtual ~MHviewItem(); virtual void refresh( QList<RecMail> &target ); @@ -142,3 +142,3 @@ protected: -class MBOXfolderItem : public AccountViewItem +class MHfolderItem : public AccountViewItem { @@ -146,4 +146,4 @@ class MBOXfolderItem : public AccountViewItem public: - MBOXfolderItem( Folder *folder, MBOXviewItem *parent , QListViewItem*after ); - virtual ~MBOXfolderItem(); + MHfolderItem( Folder *folder, MHviewItem *parent , QListViewItem*after ); + virtual ~MHfolderItem(); virtual void refresh(QList<RecMail>&); @@ -158,3 +158,3 @@ protected: Folder *folder; - MBOXviewItem *mbox; + MHviewItem *mbox; }; @@ -186,3 +186,3 @@ protected: QValueList<IMAPviewItem*> imapAccounts; - QValueList<MBOXviewItem*> mboxAccounts; + QValueList<MHviewItem*> mhAccounts; }; diff --git a/noncore/net/mail/libmailwrapper/abstractmail.cpp b/noncore/net/mail/libmailwrapper/abstractmail.cpp index 0280803..592cd5e 100644 --- a/noncore/net/mail/libmailwrapper/abstractmail.cpp +++ b/noncore/net/mail/libmailwrapper/abstractmail.cpp @@ -3,2 +3,3 @@ #include "pop3wrapper.h" +#include "mhwrapper.h" #include "mboxwrapper.h" @@ -25,3 +26,3 @@ AbstractMail* AbstractMail::getWrapper(const QString&a,const QString&name) { - return new MBOXwrapper(a,name); + return new MHwrapper(a,name); } diff --git a/noncore/net/mail/libmailwrapper/genericwrapper.cpp b/noncore/net/mail/libmailwrapper/genericwrapper.cpp index 2d1596d..b1e4459 100644 --- a/noncore/net/mail/libmailwrapper/genericwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/genericwrapper.cpp @@ -8,2 +8,4 @@ Genericwrapper::Genericwrapper() bodyCache.clear(); + m_storage = 0; + m_folder = 0; } @@ -12,2 +14,8 @@ Genericwrapper::~Genericwrapper() { + if (m_folder) { + mailfolder_free(m_folder); + } + if (m_storage) { + mailstorage_free(m_storage); + } cleanMimeCache(); diff --git a/noncore/net/mail/libmailwrapper/genericwrapper.h b/noncore/net/mail/libmailwrapper/genericwrapper.h index 1d65c0a..e471dc8 100644 --- a/noncore/net/mail/libmailwrapper/genericwrapper.h +++ b/noncore/net/mail/libmailwrapper/genericwrapper.h @@ -21,2 +21,4 @@ struct mailimf_address_list; struct mailsession; +struct mailstorage; +struct mailfolder; @@ -59,2 +61,4 @@ protected: QMap<QString,encodedString*> bodyCache; + mailstorage * m_storage; + mailfolder*m_folder; }; diff --git a/noncore/net/mail/libmailwrapper/libmailwrapper.pro b/noncore/net/mail/libmailwrapper/libmailwrapper.pro index 18583bb..71f6cca 100644 --- a/noncore/net/mail/libmailwrapper/libmailwrapper.pro +++ b/noncore/net/mail/libmailwrapper/libmailwrapper.pro @@ -14,3 +14,4 @@ HEADERS = mailwrapper.h \ sendmailprogress.h \ - statusmail.h + statusmail.h \ + mhwrapper.h @@ -27,3 +28,4 @@ SOURCES = imapwrapper.cpp \ sendmailprogress.cpp \ - statusmail.cpp + statusmail.cpp \ + mhwrapper.cpp diff --git a/noncore/net/mail/libmailwrapper/mailwrapper.cpp b/noncore/net/mail/libmailwrapper/mailwrapper.cpp index 75b9343..ebdbf4b 100644 --- a/noncore/net/mail/libmailwrapper/mailwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/mailwrapper.cpp @@ -34,2 +34,3 @@ Folder::Folder(const QString&tmp_name, const QString&sep ) separator = sep; + prefix = ""; } @@ -41,3 +42,3 @@ const QString& Folder::Separator()const -IMAPFolder::IMAPFolder(const QString&name,const QString&sep, bool select,bool no_inf, const QString&prefix ) +IMAPFolder::IMAPFolder(const QString&name,const QString&sep, bool select,bool no_inf, const QString&aprefix ) : Folder( name,sep ),m_MaySelect(select),m_NoInferior(no_inf) @@ -47,2 +48,3 @@ IMAPFolder::IMAPFolder(const QString&name,const QString&sep, bool select,bool no qDebug( "folder " + name + " - displayed as " + nameDisplay ); + prefix = aprefix; @@ -148 +150,15 @@ Mail::Mail() } + +MHFolder::MHFolder(const QString&disp_name,const QString&mbox) + : Folder( disp_name,"/" ) +{ + separator = "/"; + name = mbox; + if (!disp_name.startsWith("/") && disp_name.length()>0) + name+="/"; + name+=disp_name; + if (disp_name.length()==0) { + nameDisplay = separator; + } + prefix = mbox; +} diff --git a/noncore/net/mail/libmailwrapper/mailwrapper.h b/noncore/net/mail/libmailwrapper/mailwrapper.h index a60777d..caaa3a2 100644 --- a/noncore/net/mail/libmailwrapper/mailwrapper.h +++ b/noncore/net/mail/libmailwrapper/mailwrapper.h @@ -71,2 +71,3 @@ public: const QString&getName()const { return name; } + const QString&getPrefix()const{return prefix; } virtual bool may_select()const{return true;} @@ -76,4 +77,10 @@ public: protected: - QString nameDisplay, name, separator; - + QString nameDisplay, name, separator,prefix; +}; + +class MHFolder : public Folder +{ + Q_OBJECT +public: + MHFolder(const QString&disp_name,const QString&mbox); }; diff --git a/noncore/net/mail/libmailwrapper/mboxwrapper.h b/noncore/net/mail/libmailwrapper/mboxwrapper.h index 194ff86..a579a3d 100644 --- a/noncore/net/mail/libmailwrapper/mboxwrapper.h +++ b/noncore/net/mail/libmailwrapper/mboxwrapper.h @@ -14,2 +14,3 @@ class MBOXwrapper : public Genericwrapper Q_OBJECT + public: diff --git a/noncore/net/mail/libmailwrapper/mhwrapper.cpp b/noncore/net/mail/libmailwrapper/mhwrapper.cpp new file mode 100644 index 0000000..85f9cf0 --- a/dev/null +++ b/noncore/net/mail/libmailwrapper/mhwrapper.cpp @@ -0,0 +1,330 @@ +#include "mhwrapper.h" +#include "mailtypes.h" +#include "mailwrapper.h" +#include <libetpan/libetpan.h> +#include <qdir.h> +#include <stdlib.h> +#include <qpe/global.h> + +const QString MHwrapper::wrapperType="MH"; + +MHwrapper::MHwrapper(const QString & mbox_dir,const QString&mbox_name) + : Genericwrapper(),MHPath(mbox_dir),MHName(mbox_name) +{ + if (MHPath.length()>0) { + if (MHPath[MHPath.length()-1]=='/') { + MHPath=MHPath.left(MHPath.length()-1); + } + qDebug(MHPath); + QDir dir(MHPath); + if (!dir.exists()) { + dir.mkdir(MHPath); + } + init_storage(); + } +} + +void MHwrapper::init_storage() +{ + int r; + QString pre = MHPath; + 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) { + qDebug("error initializing storage"); + mailstorage_free(m_storage); + m_storage = 0; + return; + } + } + r = mailstorage_connect(m_storage); + if (r!=MAIL_NO_ERROR) { + qDebug("error connecting storage"); + mailstorage_free(m_storage); + m_storage = 0; + } +} + +void MHwrapper::clean_storage() +{ + if (m_storage) { + mailstorage_disconnect(m_storage); + mailstorage_free(m_storage); + m_storage = 0; + } +} + +MHwrapper::~MHwrapper() +{ + clean_storage(); +} + +void MHwrapper::listMessages(const QString & mailbox, QList<RecMail> &target ) +{ + init_storage(); + if (!m_storage) { + return; + } + QString f = buildPath(mailbox); + int r = mailsession_select_folder(m_storage->sto_session,(char*)mailbox.latin1()); + if (r!=MAIL_NO_ERROR) { + qDebug("error selecting folder!"); + return; + } + parseList(target,m_storage->sto_session,f); + Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count())); +} + +QList<Folder>* MHwrapper::listFolders() +{ + QList<Folder> * folders = new QList<Folder>(); + folders->setAutoDelete( false ); + init_storage(); + if (!m_storage) { + return folders; + } + mail_list*flist = 0; + clistcell*current=0; + int r = mailsession_list_folders(m_storage->sto_session,NULL,&flist); + if (r != MAIL_NO_ERROR || !flist) { + qDebug("error getting folder list"); + return folders; + } + for (current=clist_begin(flist->mb_list);current!=0;current=clist_next(current)) { + QString t = (char*)current->data; + t.replace(0,MHPath.length(),""); + folders->append(new MHFolder(t,MHPath)); + } + mail_list_free(flist); + return folders; +} + +void MHwrapper::deleteMail(const RecMail&mail) +{ + init_storage(); + if (!m_storage) { + return; + } + int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1()); + if (r!=MAIL_NO_ERROR) { + qDebug("error selecting folder!"); + return; + } + r = mailsession_remove_message(m_storage->sto_session,mail.getNumber()); + if (r != MAIL_NO_ERROR) { + qDebug("error deleting mail"); + } +} + +void MHwrapper::answeredMail(const RecMail&) +{ +} + +RecBody MHwrapper::fetchBody( const RecMail &mail ) +{ + RecBody body; + init_storage(); + if (!m_storage) { + return body; + } + mailmessage * msg; + char*data=0; + size_t size; + + /* mail should hold the complete path! */ + int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1()); + if (r != MAIL_NO_ERROR) { + return body; + } + r = mailsession_get_message(m_storage->sto_session, mail.getNumber(), &msg); + if (r != MAIL_NO_ERROR) { + qDebug("Error fetching mail %i",mail.getNumber()); + return body; + } + body = parseMail(msg); + mailmessage_fetch_result_free(msg,data); + return body; +} + +void MHwrapper::mbox_progress( size_t current, size_t maximum ) +{ + qDebug("MH %i von %i",current,maximum); +} + +QString MHwrapper::buildPath(const QString&p) +{ + QString f=""; + if (p.length()==0||p=="/") + return MHPath; + if (!p.startsWith(MHPath)) { + f+=MHPath; + } + if (!p.startsWith("/")) { + f+="/"; + } + f+=p; + return f; +} + +int MHwrapper::createMbox(const QString&folder,const Folder*,const QString&,bool ) +{ + init_storage(); + if (!m_storage) { + return 0; + } + QString f = buildPath(folder); + int r = mailsession_create_folder(m_storage->sto_session,(char*)f.latin1()); + if (r != MAIL_NO_ERROR) { + qDebug("error creating folder"); + return 0; + } + qDebug("Folder created"); + mailstorage_disconnect(m_storage); + return 1; +} + +void MHwrapper::storeMessage(const char*msg,size_t length, const QString&Folder) +{ + init_storage(); + if (!m_storage) { + return; + } + QString f = buildPath(Folder); + int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); + if (r!=MAIL_NO_ERROR) { + qDebug("error selecting folder!"); + return; + } + r = mailsession_append_message(m_storage->sto_session,(char*)msg,length); + if (r!=MAIL_NO_ERROR) { + qDebug("error storing mail"); + } + return; +} + +encodedString* MHwrapper::fetchRawBody(const RecMail&mail) +{ + encodedString*result = 0; + init_storage(); + if (!m_storage) { + return result; + } + mailmessage * msg = 0; + char*data=0; + size_t size; + int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1()); + if (r!=MAIL_NO_ERROR) { + qDebug("error selecting folder!"); + return result; + } + r = mailsession_get_message(m_storage->sto_session, mail.getNumber(), &msg); + if (r != MAIL_NO_ERROR) { + Global::statusMessage(tr("Error fetching mail %i").arg(mail.getNumber())); + return 0; + } + r = mailmessage_fetch(msg,&data,&size); + if (r != MAIL_NO_ERROR) { + Global::statusMessage(tr("Error fetching mail %i").arg(mail.getNumber())); + if (msg) mailmessage_free(msg); + return 0; + } + result = new encodedString(data,size); + if (msg) mailmessage_free(msg); + return result; +} + +void MHwrapper::deleteMails(const QString & mailbox,QList<RecMail> &target) +{ +#if 0 + QString p = MHPath+"/"; + p+=mailbox; + mailmbox_folder*f = 0; + int r = mailmbox_init(p.latin1(),0,1,0,&f); + if (r != MAIL_NO_ERROR) { + qDebug("Error init folder"); + return; + } + deleteMails(f,target); + mailmbox_done(f); +#endif +} + +int MHwrapper::deleteAllMail(const Folder*tfolder) +{ + init_storage(); + if (!m_storage) { + return 0; + } + 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) { + qDebug("error selecting folder!"); + return 0; + } + mailmessage_list*l=0; + r = mailsession_get_messages_list(m_storage->sto_session,&l); + if (r != MAIL_NO_ERROR) { + qDebug("Error message list"); + res = 0; + } + unsigned j = 0; + for(unsigned int i = 0 ; l!= 0 && res==1 && i < carray_count(l->msg_tab) ; ++i) { + mailmessage * msg; + msg = (mailmessage*)carray_get(l->msg_tab, i); + j = msg->msg_index; + r = mailsession_remove_message(m_storage->sto_session,j); + if (r != MAIL_NO_ERROR) { + Global::statusMessage(tr("Error deleting mail %1").arg(i+1)); + res = 0; + break; + } + } + if (l) mailmessage_list_free(l); + return res; +} + +int MHwrapper::deleteMbox(const Folder*tfolder) +{ + init_storage(); + if (!m_storage) { + return 0; + } + if (!tfolder) return 0; + int r = mailsession_delete_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); + if (r != MAIL_NO_ERROR) { + qDebug("error deleting mail box"); + return 0; + } + qDebug("mail box deleted"); + mailstorage_disconnect(m_storage); + return 1; +} + +void MHwrapper::statusFolder(folderStat&target_stat,const QString & mailbox) +{ + init_storage(); + if (!m_storage) { + return; + } + target_stat.message_count = 0; + target_stat.message_unseen = 0; + target_stat.message_recent = 0; + QString f = buildPath(mailbox); + int r = mailsession_status_folder(m_storage->sto_session,(char*)f.latin1(),&target_stat.message_count, + &target_stat.message_recent,&target_stat.message_unseen); + if (r != MAIL_NO_ERROR) { + Global::statusMessage(tr("Error retrieving status")); + } +} + +const QString&MHwrapper::getType()const +{ + return wrapperType; +} + +const QString&MHwrapper::getName()const +{ + return MHName; +} diff --git a/noncore/net/mail/libmailwrapper/mhwrapper.h b/noncore/net/mail/libmailwrapper/mhwrapper.h new file mode 100644 index 0000000..7f028b4 --- a/dev/null +++ b/noncore/net/mail/libmailwrapper/mhwrapper.h @@ -0,0 +1,50 @@ +#ifndef __MH_WRAPPER_H +#define __MH_WRAPPER_H + +#include "genericwrapper.h" +#include <qstring.h> + +class RecMail; +class RecBody; +class encodedString; +struct mailmbox_folder; + +class MHwrapper : public Genericwrapper +{ + Q_OBJECT +public: + MHwrapper(const QString & dir,const QString&name); + virtual ~MHwrapper(); + + virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); + virtual QList<Folder>* listFolders(); + virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX"); + + virtual void deleteMail(const RecMail&mail); + virtual void answeredMail(const RecMail&mail); + + virtual int createMbox(const QString&folder,const Folder*f=0,const QString&d="",bool s=false); + virtual int deleteMbox(const Folder*); + + virtual void storeMessage(const char*msg,size_t length, const QString&folder); + + virtual RecBody fetchBody( const RecMail &mail ); + static void mbox_progress( size_t current, size_t maximum ); + + virtual encodedString* fetchRawBody(const RecMail&mail); + virtual void deleteMails(const QString & FolderName,QList<RecMail> &target); + virtual int deleteAllMail(const Folder*); + virtual const QString&getType()const; + virtual const QString&getName()const; + +protected: + QString buildPath(const QString&p); + QString MHPath; + QString MHName; + static const QString wrapperType; + + void init_storage(); + void clean_storage(); +}; + +#endif diff --git a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp index 281b88e..08f6bb7 100644 --- a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp @@ -16,3 +16,3 @@ #include "mailwrapper.h" -#include "mboxwrapper.h" +#include "abstractmail.h" #include "logindialog.h" @@ -492,2 +492,3 @@ void SMTPwrapper::storeMail(const char*mail, size_t length, const QString&box) AbstractMail*wrap = AbstractMail::getWrapper(localfolders); + wrap->createMbox(box); wrap->storeMessage(mail,length,box); |