-rw-r--r-- | noncore/net/mail/accountitem.cpp | 240 | ||||
-rw-r--r-- | noncore/net/mail/accountitem.h | 50 | ||||
-rw-r--r-- | noncore/net/mail/accountview.cpp | 29 | ||||
-rw-r--r-- | noncore/net/mail/accountview.h | 8 | ||||
-rw-r--r-- | noncore/net/mail/mainwindow.cpp | 23 | ||||
-rw-r--r-- | noncore/net/mail/mainwindow.h | 12 | ||||
-rw-r--r-- | noncore/net/mail/opiemail.cpp | 41 | ||||
-rw-r--r-- | noncore/net/mail/opiemail.h | 8 |
8 files changed, 249 insertions, 162 deletions
diff --git a/noncore/net/mail/accountitem.cpp b/noncore/net/mail/accountitem.cpp index 10db2c6..f7fdccd 100644 --- a/noncore/net/mail/accountitem.cpp +++ b/noncore/net/mail/accountitem.cpp @@ -82,24 +82,18 @@ RECBODYP POP3viewItem::fetchBody( const RecMailP &mail ) odebug << "POP3 fetchBody" << oendl; return wrapper->fetchBody( mail ); } -QPopupMenu * POP3viewItem::getContextMenu() +QMap<int,QString> POP3viewItem::serverMenu() { - QPopupMenu *m = new QPopupMenu(0); - if (m) - { - if (!account->getOffline()) - { - m->insertItem(QObject::tr("Disconnect",contextName),SERVER_MENU_DISCONNECT); - m->insertItem(QObject::tr("Set offline",contextName),SERVER_MENU_OFFLINE); - } - else - { - m->insertItem(QObject::tr("Set online",contextName),SERVER_MENU_OFFLINE); - } + QMap<int,QString> _entries; + if (!account->getOffline()) { + _entries[SERVER_MENU_DISCONNECT]=QObject::tr("Disconnect",contextName); + _entries[SERVER_MENU_OFFLINE]=QObject::tr("Set offline",contextName); + } else { + _entries[SERVER_MENU_OFFLINE]=QObject::tr("Set online",contextName); } - return m; + return _entries; } void POP3viewItem::disconnect() { @@ -124,9 +118,9 @@ void POP3viewItem::setOnOffline() SETPIX(PIXMAP_POP3FOLDER); refresh(); } -void POP3viewItem::contextMenuSelected(int which) +bool POP3viewItem::contextMenuSelected(int which) { switch (which) { case SERVER_MENU_DISCONNECT: @@ -135,8 +129,9 @@ void POP3viewItem::contextMenuSelected(int which) case SERVER_MENU_OFFLINE: setOnOffline(); break; } + return false; } POP3folderItem::~POP3folderItem() {} @@ -166,18 +161,15 @@ RECBODYP POP3folderItem::fetchBody(const RecMailP&aMail) { return pop3->getWrapper()->fetchBody(aMail); } -QPopupMenu * POP3folderItem::getContextMenu() +QMap<int,QString> POP3folderItem::folderMenu() { - QPopupMenu *m = new QPopupMenu(0); - if (m) - { - m->insertItem(QObject::tr("Refresh header list",contextName),FOLDER_MENU_REFRESH_HEADER); - m->insertItem(QObject::tr("Delete all mails",contextName),FOLDER_MENU_DELETE_ALL_MAILS); - m->insertItem(QObject::tr("Move/Copie all mails",contextName),FOLDER_MENU_MOVE_MAILS); - } - return m; + QMap<int,QString> _entries; + _entries[FOLDER_MENU_REFRESH_HEADER]=QObject::tr("Refresh header list",contextName); + _entries[FOLDER_MENU_DELETE_ALL_MAILS]=QObject::tr("Delete all mails",contextName); + _entries[FOLDER_MENU_MOVE_MAILS]=QObject::tr("Move/Copie all mails",contextName); + return _entries; } void POP3folderItem::downloadMails() { @@ -185,9 +177,9 @@ void POP3folderItem::downloadMails() if (!bl) return; bl->downloadMails(folder,pop3->getWrapper()); } -void POP3folderItem::contextMenuSelected(int which) +bool POP3folderItem::contextMenuSelected(int which) { AccountView * view = (AccountView*)listView(); switch (which) { @@ -204,8 +196,9 @@ void POP3folderItem::contextMenuSelected(int which) break; default: break; } + return false; } /** * NNTP Account stuff @@ -273,25 +266,20 @@ RECBODYP NNTPviewItem::fetchBody( const RecMailP &mail ) odebug << "NNTP fetchBody" << oendl; return wrapper->fetchBody( mail ); } -QPopupMenu * NNTPviewItem::getContextMenu() +QMap<int,QString> NNTPviewItem::serverMenu() { - QPopupMenu *m = new QPopupMenu(0); - if (m) + QMap<int,QString> _entries; + if (!account->getOffline()) { - if (!account->getOffline()) - { - m->insertItem(QObject::tr("Disconnect",contextName),SERVER_MENU_DISCONNECT); - m->insertItem(QObject::tr("Set offline",contextName),SERVER_MENU_OFFLINE); - m->insertItem(QObject::tr("(Un-)Subscribe groups",contextName),SERVER_MENU_SUBSCRIBE); - } - else - { - m->insertItem(QObject::tr("Set online",contextName),SERVER_MENU_OFFLINE); - } + _entries[SERVER_MENU_DISCONNECT]=QObject::tr("Disconnect",contextName); + _entries[SERVER_MENU_OFFLINE]=QObject::tr("Set offline",contextName); + _entries[SERVER_MENU_SUBSCRIBE]=QObject::tr("(Un-)Subscribe groups",contextName); + } else { + _entries[SERVER_MENU_OFFLINE]=QObject::tr("Set online",contextName); } - return m; + return _entries; } void NNTPviewItem::subscribeGroups() { @@ -325,9 +313,9 @@ void NNTPviewItem::setOnOffline() SETPIX(PIXMAP_POP3FOLDER); refresh(); } -void NNTPviewItem::contextMenuSelected(int which) +bool NNTPviewItem::contextMenuSelected(int which) { switch (which) { case SERVER_MENU_DISCONNECT: @@ -339,8 +327,9 @@ void NNTPviewItem::contextMenuSelected(int which) case SERVER_MENU_SUBSCRIBE: subscribeGroups(); break; } + return false; } NNTPfolderItem::~NNTPfolderItem() {} @@ -370,17 +359,14 @@ RECBODYP NNTPfolderItem::fetchBody(const RecMailP&aMail) { return nntp->getWrapper()->fetchBody(aMail); } -QPopupMenu * NNTPfolderItem::getContextMenu() +QMap<int,QString> NNTPfolderItem::folderMenu() { - QPopupMenu *m = new QPopupMenu(0); - if (m) - { - m->insertItem(QObject::tr("Refresh header list",contextName),FOLDER_MENU_REFRESH_HEADER); - m->insertItem(QObject::tr("Copy all postings",contextName),FOLDER_MENU_MOVE_MAILS); - } - return m; + QMap<int,QString> _entries; + _entries[FOLDER_MENU_REFRESH_HEADER]=QObject::tr("Refresh header list",contextName); + _entries[FOLDER_MENU_MOVE_MAILS]=QObject::tr("Copy all postings",contextName); + return _entries; } void NNTPfolderItem::downloadMails() { @@ -388,9 +374,9 @@ void NNTPfolderItem::downloadMails() if (!bl) return; bl->downloadMails(folder,nntp->getWrapper()); } -void NNTPfolderItem::contextMenuSelected(int which) +bool NNTPfolderItem::contextMenuSelected(int which) { AccountView * view = (AccountView*)listView(); switch (which) { @@ -404,8 +390,9 @@ void NNTPfolderItem::contextMenuSelected(int which) break; default: break; } + return false; } /** * IMAP Account stuff @@ -490,27 +477,20 @@ void IMAPviewItem::refreshFolders(bool force) } delete folders; } -QPopupMenu * IMAPviewItem::getContextMenu() +QMap<int,QString> IMAPviewItem::serverMenu() { - QPopupMenu *m = new QPopupMenu(0); - if (m) - { - if (!account->getOffline()) - { - m->insertItem(QObject::tr("Disconnect",contextName),SERVER_MENU_DISCONNECT); - m->insertItem(QObject::tr("Set offline",contextName),SERVER_MENU_OFFLINE); - m->insertSeparator(); - m->insertItem(QObject::tr("Refresh folder list",contextName),SERVER_MENU_REFRESH_FOLDER); - m->insertItem(QObject::tr("Create new folder",contextName),SERVER_MENU_CREATE_FOLDER); - } - else - { - m->insertItem(QObject::tr("Set online",contextName),SERVER_MENU_OFFLINE); - } + QMap<int,QString> e; + if (!account->getOffline()) { + e[SERVER_MENU_DISCONNECT]=QObject::tr("Disconnect",contextName); + e[SERVER_MENU_OFFLINE]=QObject::tr("Set offline",contextName); + e[SERVER_MENU_REFRESH_FOLDER]=QObject::tr("Refresh folder list",contextName); + e[SERVER_MENU_CREATE_FOLDER]=QObject::tr("Create new folder",contextName); + } else { + e[SERVER_MENU_OFFLINE]=QObject::tr("Set online",contextName); } - return m; + return e; } void IMAPviewItem::createNewFolder() { @@ -531,9 +511,9 @@ void IMAPviewItem::createNewFolder() } } } -void IMAPviewItem::contextMenuSelected(int id) +bool IMAPviewItem::contextMenuSelected(int id) { odebug << "Id selected: " << id << "" << oendl; switch (id) { @@ -560,8 +540,9 @@ void IMAPviewItem::contextMenuSelected(int id) break; default: break; } + return false; } RECBODYP IMAPviewItem::fetchBody(const RecMailP&) { @@ -627,29 +608,23 @@ RECBODYP IMAPfolderItem::fetchBody(const RecMailP&aMail) { return imap->getWrapper()->fetchBody(aMail); } -QPopupMenu * IMAPfolderItem::getContextMenu() +QMap<int,QString> IMAPfolderItem::folderMenu() { - QPopupMenu *m = new QPopupMenu(0); - if (m) - { - if (folder->may_select()) - { - m->insertItem(QObject::tr("Refresh header list",contextName),FOLDER_MENU_REFRESH_HEADER); - m->insertItem(QObject::tr("Move/Copy all mails",contextName),FOLDER_MENU_MOVE_MAILS); - m->insertItem(QObject::tr("Delete all mails",contextName),FOLDER_MENU_DELETE_ALL_MAILS); - } - if (folder->no_inferior()==false) - { - m->insertItem(QObject::tr("Create new subfolder",contextName),FOLDER_MENU_NEW_SUBFOLDER); - } - if (folder->getDisplayName().lower()!="inbox") - { - m->insertItem(QObject::tr("Delete folder",contextName),FOLDER_MENU_DELETE_FOLDER); - } + QMap<int,QString> e; + if (folder->may_select()) { + e[FOLDER_MENU_REFRESH_HEADER]=QObject::tr("Refresh header list",contextName); + e[FOLDER_MENU_MOVE_MAILS]=QObject::tr("Move/Copy all mails",contextName); + e[FOLDER_MENU_DELETE_ALL_MAILS]=QObject::tr("Delete all mails",contextName); } - return m; + if (folder->no_inferior()==false) { + e[FOLDER_MENU_NEW_SUBFOLDER]=QObject::tr("Create new subfolder",contextName); + } + if (folder->getDisplayName().lower()!="inbox") { + e[FOLDER_MENU_DELETE_FOLDER]=QObject::tr("Delete folder",contextName); + } + return e; } void IMAPfolderItem::createNewFolder() { @@ -665,9 +640,9 @@ void IMAPfolderItem::createNewFolder() } } } -void IMAPfolderItem::deleteFolder() +bool IMAPfolderItem::deleteFolder() { int yesno = QMessageBox::warning(0,QObject::tr("Delete folder",contextName), QObject::tr("<center>Realy delete folder <br><b>%1</b><br>and all if it content?</center>",contextName).arg(folder->getDisplayName()), QObject::tr("Yes",contextName), @@ -685,10 +660,12 @@ void IMAPfolderItem::deleteFolder() if (v) { v->setSelected(box,true); } + return true; } } + return false; } void IMAPfolderItem::downloadMails() { @@ -696,9 +673,9 @@ void IMAPfolderItem::downloadMails() if (!bl) return; bl->downloadMails(folder,imap->getWrapper()); } -void IMAPfolderItem::contextMenuSelected(int id) +bool IMAPfolderItem::contextMenuSelected(int id) { odebug << "Selected id: " << id << "" << oendl; AccountView * view = (AccountView*)listView(); switch(id) @@ -715,17 +692,18 @@ void IMAPfolderItem::contextMenuSelected(int id) } break; case FOLDER_MENU_DELETE_FOLDER: if (folder->getDisplayName().lower()!="inbox") { - deleteFolder(); + return deleteFolder(); } break; case FOLDER_MENU_MOVE_MAILS: downloadMails(); break; default: break; } + return false; } /** * MH Account stuff @@ -811,19 +789,23 @@ RECBODYP MHviewItem::fetchBody( const RecMailP &mail ) odebug << "MH fetchBody" << oendl; return wrapper->fetchBody( mail ); } -QPopupMenu * MHviewItem::getContextMenu() +QMap<int,QString> MHviewItem::serverMenu() { - QPopupMenu *m = new QPopupMenu(0); - if (m) - { - m->insertItem(QObject::tr("Refresh folder list",contextName),SERVER_MENU_REFRESH_FOLDER); - m->insertItem(QObject::tr("Create new folder",contextName),FOLDER_MENU_NEW_SUBFOLDER); - m->insertItem(QObject::tr("Delete all mails",contextName),FOLDER_MENU_DELETE_ALL_MAILS); - m->insertItem(QObject::tr("Move/Copie all mails",contextName),FOLDER_MENU_MOVE_MAILS); - } - return m; + QMap<int,QString> e; + e[SERVER_MENU_REFRESH_FOLDER]=QObject::tr("Refresh folder list",contextName); + return e; +} + +QMap<int,QString> MHviewItem::folderMenu() +{ + QMap<int,QString> e; + e[FOLDER_MENU_REFRESH_HEADER]=QObject::tr("Refresh header list",contextName); + e[FOLDER_MENU_NEW_SUBFOLDER]=QObject::tr("Create new folder",contextName); + e[FOLDER_MENU_DELETE_ALL_MAILS]=QObject::tr("Delete all mails",contextName); + e[FOLDER_MENU_MOVE_MAILS]=QObject::tr("Move/Copie all mails",contextName); + return e; } void MHviewItem::createFolder() { @@ -849,9 +831,9 @@ QStringList MHviewItem::subFolders() { return currentFolders; } -void MHviewItem::contextMenuSelected(int which) +bool MHviewItem::contextMenuSelected(int which) { AccountView*view = 0; switch (which) @@ -874,8 +856,9 @@ void MHviewItem::contextMenuSelected(int which) break; default: break; } + return false; } MHfolderItem::~MHfolderItem() {} @@ -937,9 +920,9 @@ RECBODYP MHfolderItem::fetchBody(const RecMailP&aMail) { return mbox->getWrapper()->fetchBody(aMail); } -void MHfolderItem::deleteFolder() +bool MHfolderItem::deleteFolder() { int yesno = QMessageBox::warning(0,QObject::tr("Delete folder",contextName), QObject::tr("<center>Realy delete folder <br><b>%1</b><br>and all if it content?</center>",contextName).arg(folder->getDisplayName()), QObject::tr("Yes",contextName), @@ -957,24 +940,23 @@ void MHfolderItem::deleteFolder() if (v) { v->setSelected(box,true); } + return true; } } + return false; } -QPopupMenu * MHfolderItem::getContextMenu() +QMap<int,QString> MHfolderItem::folderMenu() { - QPopupMenu *m = new QPopupMenu(0); - if (m) - { - m->insertItem(QObject::tr("Create new subfolder",contextName),FOLDER_MENU_NEW_SUBFOLDER); - m->insertItem(QObject::tr("Refresh header list",contextName),FOLDER_MENU_REFRESH_HEADER); - m->insertItem(QObject::tr("Move/Copie all mails",contextName),FOLDER_MENU_MOVE_MAILS); - m->insertItem(QObject::tr("Delete all mails",contextName),FOLDER_MENU_DELETE_ALL_MAILS); - m->insertItem(QObject::tr("Delete folder",contextName),FOLDER_MENU_DELETE_FOLDER); - } - return m; + QMap<int,QString> e; + e[FOLDER_MENU_NEW_SUBFOLDER]=QObject::tr("Create new subfolder",contextName); + e[FOLDER_MENU_REFRESH_HEADER]=QObject::tr("Refresh header list",contextName); + e[FOLDER_MENU_MOVE_MAILS]=QObject::tr("Move/Copie all mails",contextName); + e[FOLDER_MENU_DELETE_ALL_MAILS]=QObject::tr("Delete all mails",contextName); + e[FOLDER_MENU_DELETE_FOLDER]=QObject::tr("Delete folder",contextName); + return e; } void MHfolderItem::downloadMails() { @@ -1003,18 +985,18 @@ void MHfolderItem::createFolder() } } } -void MHfolderItem::contextMenuSelected(int which) +bool MHfolderItem::contextMenuSelected(int which) { AccountView*view = 0; switch(which) { case FOLDER_MENU_DELETE_ALL_MAILS: deleteAllMail(mbox->getWrapper(),folder); break; case FOLDER_MENU_DELETE_FOLDER: - deleteFolder(); + return deleteFolder(); break; case FOLDER_MENU_MOVE_MAILS: downloadMails(); break; @@ -1027,8 +1009,9 @@ void MHfolderItem::contextMenuSelected(int which) break; default: break; } + return false; } bool MHfolderItem::isDraftfolder() { @@ -1149,4 +1132,33 @@ AccountViewItem*AccountViewItem::findSubItem(const QString&path,AccountViewItem* bool AccountViewItem::isDraftfolder() { return false; } + +QMap<int,QString> AccountViewItem::serverMenu() +{ + return QMap<int,QString>(); +} + +QMap<int,QString> AccountViewItem::folderMenu() +{ + return QMap<int,QString>(); +} + +QPopupMenu * AccountViewItem::getContextMenu() +{ + QPopupMenu *m = new QPopupMenu(0); + if (m) + { + QMap<int,QString> entries; + entries = folderMenu(); + QMap<int,QString>::Iterator it; + for (it=entries.begin();it!=entries.end();++it) { + m->insertItem(it.data(),it.key()); + } + entries = serverMenu(); + for (it=entries.begin();it!=entries.end();++it) { + m->insertItem(it.data(),it.key()); + } + } + return m; +} diff --git a/noncore/net/mail/accountitem.h b/noncore/net/mail/accountitem.h index b2c50a1..6518899 100644 --- a/noncore/net/mail/accountitem.h +++ b/noncore/net/mail/accountitem.h @@ -1,10 +1,12 @@ #ifndef __ACCOUNT_ITEM #define __ACCOUNT_ITEM +#include <opie2/osmartpointer.h> + #include <qlistview.h> #include <qlist.h> -#include <opie2/osmartpointer.h> +#include <qmap.h> class POP3wrapper; class RecMail; class RecBody; @@ -30,18 +32,20 @@ public: virtual ~AccountViewItem(); virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&)=0; virtual RECBODYP fetchBody(const Opie::Core::OSmartPointer<RecMail>&)=0; - virtual QPopupMenu * getContextMenu(){return 0;}; - virtual void contextMenuSelected(int){} + virtual QPopupMenu * getContextMenu(); + virtual bool contextMenuSelected(int){return false;} virtual AccountView*accountView(); virtual bool matchName(const QString&name)const; virtual bool isDraftfolder(); /* 1 - server * 2 - folder - * 3 - beides + * 3 - both */ virtual int isServer()const=0; + virtual QMap<int,QString> serverMenu(); + virtual QMap<int,QString> folderMenu(); protected: AccountViewItem*findSubItem(const QString&path,AccountViewItem*start=0); virtual void init(); @@ -60,11 +64,11 @@ public: virtual ~POP3viewItem(); virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&target ); virtual RECBODYP fetchBody( const Opie::Core::OSmartPointer<RecMail> &mail ); AbstractMail *getWrapper(); - virtual QPopupMenu * getContextMenu(); - virtual void contextMenuSelected(int); + virtual bool contextMenuSelected(int); virtual int isServer()const{return 1;} + virtual QMap<int,QString> serverMenu(); protected: POP3account *account; virtual void refresh(); @@ -80,11 +84,11 @@ public: POP3folderItem( const Opie::Core::OSmartPointer<Folder>&folder, POP3viewItem *parent , QListViewItem*after ); virtual ~POP3folderItem(); virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&); virtual RECBODYP fetchBody(const Opie::Core::OSmartPointer<RecMail>&); - virtual QPopupMenu * getContextMenu(); - virtual void contextMenuSelected(int); + virtual bool contextMenuSelected(int); virtual int isServer()const{return 2;} + virtual QMap<int,QString> folderMenu(); protected: void downloadMails(); POP3viewItem *pop3; @@ -99,11 +103,11 @@ public: virtual ~NNTPviewItem(); virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&target ); virtual RECBODYP fetchBody( const Opie::Core::OSmartPointer<RecMail> &mail ); AbstractMail *getWrapper(); - virtual QPopupMenu * getContextMenu(); - virtual void contextMenuSelected(int); + virtual bool contextMenuSelected(int); virtual int isServer()const{return 1;} + virtual QMap<int,QString> serverMenu(); protected: NNTPaccount *account; virtual void refresh(); @@ -120,12 +124,11 @@ public: NNTPfolderItem(const Opie::Core::OSmartPointer<Folder>&folder, NNTPviewItem *parent , QListViewItem*after ); virtual ~NNTPfolderItem(); virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&); virtual RECBODYP fetchBody(const Opie::Core::OSmartPointer<RecMail>&); - virtual QPopupMenu * getContextMenu(); - virtual void contextMenuSelected(int); + virtual bool contextMenuSelected(int); virtual int isServer()const{return 2;} - + virtual QMap<int,QString> folderMenu(); protected: void downloadMails(); NNTPviewItem *nntp; }; @@ -140,14 +143,14 @@ public: virtual ~IMAPviewItem(); virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&); virtual RECBODYP fetchBody(const Opie::Core::OSmartPointer<RecMail>&); AbstractMail *getWrapper(); - virtual QPopupMenu * getContextMenu(); - virtual void contextMenuSelected(int); + virtual bool contextMenuSelected(int); const QStringList&subFolders(); virtual void refreshFolders(bool force=false); virtual int isServer()const{return 1;} bool offline(); + virtual QMap<int,QString> serverMenu(); protected: virtual void createNewFolder(); IMAPaccount *account; @@ -163,15 +166,15 @@ public: IMAPfolderItem( const Opie::Core::OSmartPointer<Folder>&folder, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master ); virtual ~IMAPfolderItem(); virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&); virtual RECBODYP fetchBody(const Opie::Core::OSmartPointer<RecMail>&); - virtual QPopupMenu * getContextMenu(); - virtual void contextMenuSelected(int); + virtual bool contextMenuSelected(int); virtual const QString& Delemiter()const; virtual int isServer()const{return 2;} + virtual QMap<int,QString> folderMenu(); protected: virtual void createNewFolder(); - virtual void deleteFolder(); + virtual bool deleteFolder(); virtual void downloadMails(); IMAPviewItem *imap; }; @@ -184,13 +187,14 @@ public: virtual ~MHviewItem(); virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&target ); virtual RECBODYP fetchBody( const Opie::Core::OSmartPointer<RecMail> &mail ); AbstractMail *getWrapper(); - virtual QPopupMenu * getContextMenu(); - virtual void contextMenuSelected(int); + virtual bool contextMenuSelected(int); QStringList subFolders(); virtual void refresh(bool force=false); virtual int isServer()const{return 3;} + virtual QMap<int,QString> serverMenu(); + virtual QMap<int,QString> folderMenu(); protected: void downloadMails(); virtual void createFolder(); @@ -207,18 +211,18 @@ public: MHfolderItem( const Opie::Core::OSmartPointer<Folder>&folder, MHfolderItem *parent, QListViewItem*after, MHviewItem*master); virtual ~MHfolderItem(); virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&); virtual RECBODYP fetchBody(const Opie::Core::OSmartPointer<RecMail>&); - virtual QPopupMenu * getContextMenu(); - virtual void contextMenuSelected(int); + virtual bool contextMenuSelected(int); virtual const Opie::Core::OSmartPointer<Folder>&getFolder()const; virtual bool isDraftfolder(); virtual int isServer()const{return 2;} + virtual QMap<int,QString> folderMenu(); protected: void downloadMails(); virtual void createFolder(); - virtual void deleteFolder(); + virtual bool deleteFolder(); void initName(); MHviewItem *mbox; }; diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp index faa42c3..1183704 100644 --- a/noncore/net/mail/accountview.cpp +++ b/noncore/net/mail/accountview.cpp @@ -40,26 +40,45 @@ AccountView::~AccountView() } void AccountView::slotSelectionChanged(QListViewItem*item) { - odebug << "AccountView: Selection changed" << oendl; if (!item) { emit serverSelected(0); return; } AccountViewItem *view = static_cast<AccountViewItem *>(item); - emit serverSelected(view->isServer()); } +QMap<int,QString> AccountView::currentServerMenu()const +{ + QMap<int,QString> smap; + AccountViewItem *view = static_cast<AccountViewItem *>(currentItem()); + if (!view)return smap; + smap = view->serverMenu(); + return smap; +} + +QMap<int,QString> AccountView::currentFolderMenu()const +{ + QMap<int,QString> fmap; + AccountViewItem *view = static_cast<AccountViewItem *>(currentItem()); + if (!view)return fmap; + fmap = view->folderMenu(); + return fmap; +} + void AccountView::slotContextMenu(int id) { AccountViewItem *view = static_cast<AccountViewItem *>(currentItem()); if (!view) return; - view->contextMenuSelected(id); + bool del = view->contextMenuSelected(id); + if (!del && view->isServer()!=2) { + emit refreshMenues(view->isServer()); + } } -void AccountView::slotRightButton(int button, QListViewItem * item,const QPoint&,int) +void AccountView::slotRightButton(int, QListViewItem * item,const QPoint&,int) { m_rightPressed = true; if (!item) return; AccountViewItem *view = static_cast<AccountViewItem *>(item); @@ -70,9 +89,9 @@ void AccountView::slotRightButton(int button, QListViewItem * item,const QPoint& m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) ); delete m; } -void AccountView::slotLeftButton(int button, QListViewItem * item,const QPoint&,int) +void AccountView::slotLeftButton(int, QListViewItem *,const QPoint&,int) { m_rightPressed = false; } diff --git a/noncore/net/mail/accountview.h b/noncore/net/mail/accountview.h index ae24dce..5c4b559 100644 --- a/noncore/net/mail/accountview.h +++ b/noncore/net/mail/accountview.h @@ -1,11 +1,12 @@ #ifndef ACCOUNTVIEW_H #define ACCOUNTVIEW_H +#include <libmailwrapper/mailtypes.h> +#include <opie2/osmartpointer.h> #include <qlistview.h> #include <qlist.h> -#include <opie2/osmartpointer.h> -#include <libmailwrapper/mailtypes.h> +#include <qmap.h> class Selectstore; class Folder; class AbstractMail; @@ -23,8 +24,10 @@ public: virtual void populate( QList<Account> list ); virtual RecBodyP fetchBody(const Opie::Core::OSmartPointer<RecMail>&aMail); virtual void downloadMails(const Opie::Core::OSmartPointer<Folder>&fromFolder,AbstractMail*fromWrapper); virtual bool currentisDraft(); + QMap<int,QString> currentServerMenu()const; + QMap<int,QString> currentFolderMenu()const; public slots: virtual void refreshAll(); virtual void refresh(QListViewItem *item); @@ -35,8 +38,9 @@ public slots: signals: void refreshMailview(const QValueList<RecMailP>& ); void serverSelected(int); + void refreshMenues(int); protected: QListViewItem* m_currentItem; QValueList<IMAPviewItem*> imapAccounts; diff --git a/noncore/net/mail/mainwindow.cpp b/noncore/net/mail/mainwindow.cpp index 81c8fee..3689352 100644 --- a/noncore/net/mail/mainwindow.cpp +++ b/noncore/net/mail/mainwindow.cpp @@ -20,35 +20,40 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) setCaption( tr( "Mail" ) ); setToolBarsMovable( false ); toolBar = new QToolBar( this ); - menuBar = new QMenuBar( toolBar ); mailMenu = new QPopupMenu( menuBar ); menuBar->insertItem( tr( "Mail" ), mailMenu ); settingsMenu = new QPopupMenu( menuBar ); menuBar->insertItem( tr( "Settings" ), settingsMenu ); - serverMenu = new QPopupMenu( menuBar ); - m_ServerMenuId = menuBar->insertItem( tr( "Server" ), serverMenu ); + if (QApplication::desktop()->width()<330) { + serverMenu = new QPopupMenu( mailMenu ); + folderMenu = new QPopupMenu( mailMenu ); + m_ServerMenuId = mailMenu->insertItem( tr( "Server" ), serverMenu ); + m_FolderMenuId = mailMenu->insertItem( tr( "Folder" ), folderMenu ); + } else { + serverMenu = new QPopupMenu( menuBar ); + folderMenu = new QPopupMenu( menuBar ); + m_FolderMenuId = menuBar->insertItem( tr( "Folder" ), folderMenu ); + m_ServerMenuId = menuBar->insertItem( tr( "Server" ), serverMenu ); + } serverMenu->insertItem(tr("Disconnect"),SERVER_MENU_DISCONNECT); serverMenu->insertItem(tr("Set on/offline"),SERVER_MENU_OFFLINE); serverMenu->insertSeparator(); serverMenu->insertItem(tr("Refresh folder list"),SERVER_MENU_REFRESH_FOLDER); serverMenu->insertItem(tr("Create new folder"),SERVER_MENU_CREATE_FOLDER); serverMenu->insertSeparator(); serverMenu->insertItem(tr("(Un-)Subscribe groups"),SERVER_MENU_SUBSCRIBE); - folderMenu = new QPopupMenu( menuBar ); - m_FolderMenuId = menuBar->insertItem( tr( "Folder" ), folderMenu ); folderMenu->insertItem(tr("Refresh headerlist"),FOLDER_MENU_REFRESH_HEADER); folderMenu->insertItem(tr("Delete all mails"),FOLDER_MENU_DELETE_ALL_MAILS); folderMenu->insertItem(tr("New subfolder"),FOLDER_MENU_NEW_SUBFOLDER); folderMenu->insertItem(tr("Delete folder"),FOLDER_MENU_DELETE_FOLDER); folderMenu->insertItem(tr("Move/Copie all mails"),FOLDER_MENU_MOVE_MAILS); - menuBar->setItemEnabled(m_ServerMenuId,false); menuBar->setItemEnabled(m_FolderMenuId,false); addToolBar( toolBar ); @@ -172,13 +177,11 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) MainWindow::~MainWindow() { } -void MainWindow::serverSelected(int m_isFolder) +void MainWindow::serverSelected(int) { - mailView->clear(); - menuBar->setItemEnabled(m_ServerMenuId,m_isFolder&1); - menuBar->setItemEnabled(m_FolderMenuId,m_isFolder&2); + odebug << "slotShowFolders not reached" << oendl; } void MainWindow::systemMessage( const QCString& msg, const QByteArray& data ) { diff --git a/noncore/net/mail/mainwindow.h b/noncore/net/mail/mainwindow.h index 409f160..b781d62 100644 --- a/noncore/net/mail/mainwindow.h +++ b/noncore/net/mail/mainwindow.h @@ -1,18 +1,18 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H +#include "accountview.h" +#include <libmailwrapper/mailtypes.h> + +#include <opie2/osmartpointer.h> + #include <qmainwindow.h> #include <qlistview.h> #include <qaction.h> - #include <qtoolbar.h> #include <qmenubar.h> - -#include "accountview.h" - -#include <libmailwrapper/mailtypes.h> -#include <opie2/osmartpointer.h> +#include <qmap.h> class RecMail; class QCopChannel; diff --git a/noncore/net/mail/opiemail.cpp b/noncore/net/mail/opiemail.cpp index 7c6d314..1bc81e4 100644 --- a/noncore/net/mail/opiemail.cpp +++ b/noncore/net/mail/opiemail.cpp @@ -107,8 +107,9 @@ OpieMail::OpieMail( QWidget *parent, const char *name, WFlags ) { setup_signalblocking(); settings = new Settings(); folderView->populate( settings->getAccounts() ); + connect(folderView,SIGNAL(refreshMenues(int)),this,SLOT(refreshMenu(int))); } OpieMail::~OpieMail() { @@ -385,4 +386,44 @@ void OpieMail::reEditMail() compose.reEditMail(((MailListViewItem*)mailView->currentItem() )->data()); compose.slotAdjustColumns(); QPEApplication::execDialog( &compose ); } + +void OpieMail::refreshMenu(int m_isFolder) +{ + if (QApplication::desktop()->width()<330) { + mailMenu->setItemEnabled(m_ServerMenuId,m_isFolder&1); + mailMenu->setItemEnabled(m_FolderMenuId,m_isFolder&2); + } else { + menuBar->setItemEnabled(m_ServerMenuId,m_isFolder&1); + menuBar->setItemEnabled(m_FolderMenuId,m_isFolder&2); + } + + QMap<int,QString>::ConstIterator it; + QMap<int,QString> server_entries=folderView->currentServerMenu(); + QMap<int,QString> folder_entries=folderView->currentFolderMenu(); + + int id; + unsigned int i; + for (i=0; i<folderMenu->count();++i) { + id = folderMenu->idAt(i); + folderMenu->setItemEnabled(id,false); + } + for (it=folder_entries.begin();it!=folder_entries.end();++it) { + folderMenu->changeItem(it.key(),it.data()); + folderMenu->setItemEnabled(it.key(),true); + } + for (i=0; i<serverMenu->count();++i) { + id = serverMenu->idAt(i); + serverMenu->setItemEnabled(id,false); + } + for (it=server_entries.begin();it!=server_entries.end();++it) { + serverMenu->changeItem(it.key(),it.data()); + serverMenu->setItemEnabled(it.key(),true); + } +} + +void OpieMail::serverSelected(int m_isFolder) +{ + mailView->clear(); + refreshMenu(m_isFolder); +} diff --git a/noncore/net/mail/opiemail.h b/noncore/net/mail/opiemail.h index c9d758d..75a0b2d 100644 --- a/noncore/net/mail/opiemail.h +++ b/noncore/net/mail/opiemail.h @@ -2,11 +2,13 @@ #define OPIEMAIL_H #include "mainwindow.h" #include <libmailwrapper/settings.h> +#include <libmailwrapper/mailtypes.h> #include <opie2/osmartpointer.h> -#include <libmailwrapper/mailtypes.h> + +#include <qmap.h> class OpieMail : public MainWindow { Q_OBJECT @@ -20,9 +22,9 @@ public slots: virtual void slotwriteMail(const QString&name,const QString&email); virtual void slotComposeMail(); virtual void appMessage(const QCString &msg, const QByteArray &data); void setDocument(const QString&); - + protected slots: virtual void slotSendQueued(); virtual void slotSearchMails(); virtual void slotEditSettings(); @@ -34,8 +36,10 @@ protected slots: virtual void refreshMailView(const QValueList<RecMailP>&); virtual void mailLeftClicked( int, QListViewItem *,const QPoint&,int ); virtual void slotMoveCopyMail(); virtual void reEditMail(); + virtual void serverSelected(int); + virtual void refreshMenu(int); protected: void setup_signalblocking(); |