summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/accountitem.cpp240
-rw-r--r--noncore/net/mail/accountitem.h50
-rw-r--r--noncore/net/mail/accountview.cpp29
-rw-r--r--noncore/net/mail/accountview.h8
-rw-r--r--noncore/net/mail/mainwindow.cpp23
-rw-r--r--noncore/net/mail/mainwindow.h12
-rw-r--r--noncore/net/mail/opiemail.cpp41
-rw-r--r--noncore/net/mail/opiemail.h8
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();