summaryrefslogtreecommitdiff
path: root/noncore
authoralwin <alwin>2005-03-12 22:14:03 (UTC)
committer alwin <alwin>2005-03-12 22:14:03 (UTC)
commit3cb4c3983ee738f3221ecb4cb154ea1252d69d64 (patch) (side-by-side diff)
tree13357c046fd618b10546ad6d21992826eab3ad01 /noncore
parent9dddeb81d7db5da718f3f467bb1511b7e72b9caa (diff)
downloadopie-3cb4c3983ee738f3221ecb4cb154ea1252d69d64.zip
opie-3cb4c3983ee738f3221ecb4cb154ea1252d69d64.tar.gz
opie-3cb4c3983ee738f3221ecb4cb154ea1252d69d64.tar.bz2
rework of the structure of the main menues, them depends now on state of current selected folder/server
on small screens some "Folder" and "Server" menu will get submenus of the menu-item "Mail" cause lack of space on screen - have no other idea.
Diffstat (limited to 'noncore') (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
@@ -80,28 +80,22 @@ void POP3viewItem::refresh()
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()
{
QListViewItem *child = firstChild();
while ( child )
@@ -122,23 +116,24 @@ void POP3viewItem::setOnOffline()
account->setOffline(!account->getOffline());
account->save();
SETPIX(PIXMAP_POP3FOLDER);
refresh();
}
-void POP3viewItem::contextMenuSelected(int which)
+bool POP3viewItem::contextMenuSelected(int which)
{
switch (which)
{
case SERVER_MENU_DISCONNECT:
disconnect();
break;
case SERVER_MENU_OFFLINE:
setOnOffline();
break;
}
+ return false;
}
POP3folderItem::~POP3folderItem()
{}
POP3folderItem::POP3folderItem( const FolderP&folderInit, POP3viewItem *parent , QListViewItem*after )
@@ -164,32 +159,29 @@ void POP3folderItem::refresh(QValueList<RecMailP>&target)
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()
{
AccountView*bl = pop3->accountView();
if (!bl) return;
bl->downloadMails(folder,pop3->getWrapper());
}
-void POP3folderItem::contextMenuSelected(int which)
+bool POP3folderItem::contextMenuSelected(int which)
{
AccountView * view = (AccountView*)listView();
switch (which)
{
case FOLDER_MENU_REFRESH_HEADER:
/* must be 'cause pop3 lists are cached */
@@ -202,12 +194,13 @@ void POP3folderItem::contextMenuSelected(int which)
case FOLDER_MENU_MOVE_MAILS:
downloadMails();
break;
default:
break;
}
+ return false;
}
/**
* NNTP Account stuff
*/
NNTPviewItem::NNTPviewItem( NNTPaccount *a, AccountView *parent )
@@ -271,29 +264,24 @@ void NNTPviewItem::refresh()
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()
{
NNTPGroupsDlg dlg(account);
if (QPEApplication::execDialog(&dlg)== QDialog::Accepted ){
@@ -323,13 +311,13 @@ void NNTPviewItem::setOnOffline()
account->save();
//FIXME
SETPIX(PIXMAP_POP3FOLDER);
refresh();
}
-void NNTPviewItem::contextMenuSelected(int which)
+bool NNTPviewItem::contextMenuSelected(int which)
{
switch (which)
{
case SERVER_MENU_DISCONNECT:
disconnect();
break;
@@ -337,12 +325,13 @@ void NNTPviewItem::contextMenuSelected(int which)
setOnOffline();
break;
case SERVER_MENU_SUBSCRIBE:
subscribeGroups();
break;
}
+ return false;
}
NNTPfolderItem::~NNTPfolderItem()
{}
NNTPfolderItem::NNTPfolderItem( const FolderP &folderInit, NNTPviewItem *parent , QListViewItem*after )
@@ -368,31 +357,28 @@ void NNTPfolderItem::refresh(QValueList<RecMailP>&target)
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()
{
AccountView*bl = nntp->accountView();
if (!bl) return;
bl->downloadMails(folder,nntp->getWrapper());
}
-void NNTPfolderItem::contextMenuSelected(int which)
+bool NNTPfolderItem::contextMenuSelected(int which)
{
AccountView * view = (AccountView*)listView();
switch (which)
{
case FOLDER_MENU_REFRESH_HEADER:
/* must be 'cause nntp lists are cached */
@@ -402,12 +388,13 @@ void NNTPfolderItem::contextMenuSelected(int which)
case FOLDER_MENU_MOVE_MAILS:
downloadMails();
break;
default:
break;
}
+ return false;
}
/**
* IMAP Account stuff
*/
IMAPviewItem::IMAPviewItem( IMAPaccount *a, AccountView *parent )
@@ -488,31 +475,24 @@ void IMAPviewItem::refreshFolders(bool force)
item = new IMAPfolderItem( (*it), this , item );
}
}
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()
{
Newmdirdlg ndirdlg;
if ( QPEApplication::execDialog( &ndirdlg ))
@@ -529,13 +509,13 @@ void IMAPviewItem::createNewFolder()
{
refreshFolders(true);
}
}
}
-void IMAPviewItem::contextMenuSelected(int id)
+bool IMAPviewItem::contextMenuSelected(int id)
{
odebug << "Id selected: " << id << "" << oendl;
switch (id)
{
case SERVER_MENU_REFRESH_FOLDER:
refreshFolders(true);
@@ -558,12 +538,13 @@ void IMAPviewItem::contextMenuSelected(int id)
SETPIX(PIXMAP_IMAPFOLDER);
refreshFolders(false);
break;
default:
break;
}
+ return false;
}
RECBODYP IMAPviewItem::fetchBody(const RecMailP&)
{
return new RecBody();
}
@@ -625,33 +606,27 @@ void IMAPfolderItem::refresh(QValueList<RecMailP>&target)
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()
{
Newmdirdlg ndirdlg;
if ( QPEApplication::execDialog( &ndirdlg ) )
@@ -663,13 +638,13 @@ void IMAPfolderItem::createNewFolder()
{
imap->refreshFolders(true);
}
}
}
-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),
QObject::tr("No",contextName),QString::null,1,1);
odebug << "Auswahl: " << yesno << "" << oendl;
@@ -683,24 +658,26 @@ void IMAPfolderItem::deleteFolder()
* any member of it after that call!!*/
imap->refreshFolders(true);
if (v)
{
v->setSelected(box,true);
}
+ return true;
}
}
+ return false;
}
void IMAPfolderItem::downloadMails()
{
AccountView*bl = imap->accountView();
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)
{
case FOLDER_MENU_REFRESH_HEADER:
@@ -713,21 +690,22 @@ void IMAPfolderItem::contextMenuSelected(int id)
if (folder->no_inferior()==false) {
createNewFolder();
}
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
*/
/* MH is a little bit different - the top folder can contains messages other than in IMAP and
@@ -809,23 +787,27 @@ void MHviewItem::refresh(bool force)
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()
{
Newmdirdlg ndirdlg(0,0,true);
if ( QPEApplication::execDialog( &ndirdlg ) )
@@ -847,13 +829,13 @@ void MHviewItem::downloadMails()
QStringList MHviewItem::subFolders()
{
return currentFolders;
}
-void MHviewItem::contextMenuSelected(int which)
+bool MHviewItem::contextMenuSelected(int which)
{
AccountView*view = 0;
switch (which)
{
case SERVER_MENU_REFRESH_FOLDER:
@@ -872,12 +854,13 @@ void MHviewItem::contextMenuSelected(int which)
view = (AccountView*)listView();
if (view) view->refreshCurrent();
break;
default:
break;
}
+ return false;
}
MHfolderItem::~MHfolderItem()
{}
MHfolderItem::MHfolderItem( const FolderP &folderInit, MHviewItem *parent , QListViewItem*after )
@@ -935,13 +918,13 @@ void MHfolderItem::refresh(QValueList<RecMailP>&target)
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),
QObject::tr("No",contextName),QString::null,1,1);
odebug << "Auswahl: " << yesno << "" << oendl;
@@ -955,28 +938,27 @@ void MHfolderItem::deleteFolder()
* any member of it after that call!!*/
mbox->refresh(true);
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()
{
AccountView*bl = mbox->accountView();
if (!bl) return;
@@ -1001,22 +983,22 @@ void MHfolderItem::createFolder()
v->setSelected(box,true);
}
}
}
}
-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;
case FOLDER_MENU_NEW_SUBFOLDER:
createFolder();
@@ -1025,12 +1007,13 @@ void MHfolderItem::contextMenuSelected(int which)
view = (AccountView*)listView();
if (view) view->refreshCurrent();
break;
default:
break;
}
+ return false;
}
bool MHfolderItem::isDraftfolder()
{
if (folder && folder->getName()==AbstractMail::defaultLocalfolder()+"/"+AbstractMail::draftFolder()) return true;
return false;
@@ -1147,6 +1130,35 @@ 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,12 +1,14 @@
#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;
class QPopupMenu;
class Selectstore;
@@ -28,22 +30,24 @@ public:
AccountViewItem( QListViewItem *parent , QListViewItem*after );
AccountViewItem( const Opie::Core::OSmartPointer<Folder>&folderInit,QListViewItem *parent , QListViewItem*after );
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();
virtual void removeChilds();
virtual void deleteAllMail(AbstractMail*wrapper,const Opie::Core::OSmartPointer<Folder>&f);
@@ -58,15 +62,15 @@ class POP3viewItem : public AccountViewItem
public:
POP3viewItem( POP3account *a, AccountView *parent );
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();
AbstractMail *wrapper;
void disconnect();
@@ -78,15 +82,15 @@ class POP3folderItem : public AccountViewItem
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;
};
@@ -97,15 +101,15 @@ class NNTPviewItem : public AccountViewItem
public:
NNTPviewItem( NNTPaccount *a, AccountView *parent );
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();
AbstractMail *wrapper;
void disconnect();
@@ -118,16 +122,15 @@ class NNTPfolderItem : public AccountViewItem
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;
};
@@ -138,18 +141,18 @@ class IMAPviewItem : public AccountViewItem
public:
IMAPviewItem( IMAPaccount *a, AccountView *parent );
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;
AbstractMail *wrapper;
QStringList currentFolders;
@@ -161,19 +164,19 @@ class IMAPfolderItem : public AccountViewItem
public:
IMAPfolderItem( const Opie::Core::OSmartPointer<Folder>&folder, IMAPviewItem *parent , QListViewItem*after );
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;
};
class MHviewItem : public AccountViewItem
{
@@ -182,17 +185,18 @@ class MHviewItem : public AccountViewItem
public:
MHviewItem( const QString&aMboxPath, AccountView *parent );
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();
QString m_Path;
AbstractMail *wrapper;
@@ -205,21 +209,21 @@ class MHfolderItem : public AccountViewItem
public:
MHfolderItem( const Opie::Core::OSmartPointer<Folder>&folder, MHviewItem *parent , QListViewItem*after );
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;
};
#endif
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
@@ -38,43 +38,62 @@ AccountView::~AccountView()
imapAccounts.clear();
mhAccounts.clear();
}
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);
QPopupMenu*m = view->getContextMenu();
if (!m) return;
connect(m,SIGNAL(activated(int)),this,SLOT(slotContextMenu(int)));
m->setFocus();
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;
}
void AccountView::slotMouseClicked(QListViewItem*item)
{
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,13 +1,14 @@
#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;
class Account;
class IMAPviewItem;
@@ -21,24 +22,27 @@ public:
AccountView( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 );
virtual ~AccountView();
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);
virtual void refreshCurrent();
virtual void slotContextMenu(int id);
void setupFolderselect(Selectstore*sels);
signals:
void refreshMailview(const QValueList<RecMailP>& );
void serverSelected(int);
+ void refreshMenues(int);
protected:
QListViewItem* m_currentItem;
QValueList<IMAPviewItem*> imapAccounts;
QValueList<MHviewItem*> mhAccounts;
bool m_rightPressed:1;
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
@@ -18,39 +18,44 @@ 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 );
toolBar->setHorizontalStretchable( true );
@@ -170,17 +175,15 @@ 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 )
{
int _newrotation;
QDataStream stream( data, IO_ReadOnly );
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,20 +1,20 @@
#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;
class MainWindow : public QMainWindow
{
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
@@ -105,12 +105,13 @@ void ValueExplode::splitit()
OpieMail::OpieMail( QWidget *parent, const char *name, WFlags )
: MainWindow( parent, name, WStyle_ContextHelp )
{
setup_signalblocking();
settings = new Settings();
folderView->populate( settings->getAccounts() );
+ connect(folderView,SIGNAL(refreshMenues(int)),this,SLOT(refreshMenu(int)));
}
OpieMail::~OpieMail()
{
if (settings) delete settings;
}
@@ -383,6 +384,46 @@ void OpieMail::reEditMail()
ComposeMail compose( settings, this, 0, true , WStyle_ContextHelp );
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
@@ -1,14 +1,16 @@
#ifndef OPIEMAIL_H
#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
public:
@@ -18,13 +20,13 @@ public:
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();
virtual void slotEditAccounts();
virtual void displayMail();
@@ -32,12 +34,14 @@ protected slots:
virtual void mailHold(int, QListViewItem *,const QPoint&,int);
virtual void slotShowFolders( bool show );
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();
private:
Settings *settings;