More consistent context menus by Seth Chaiklin <seth@psy.au.dk>

svn path=/trunk/kdenetwork/kmail/; revision=88299
wilder-work
Michael Haeckel 25 years ago
parent 3e56c09d07
commit 77228c928e
  1. 48
      kmheaders.cpp
  2. 3
      kmheaders.h
  3. 46
      kmmainwin.cpp
  4. 6
      kmmainwin.h

@ -592,6 +592,9 @@ void KMHeaders::setFolder (KMFolder *aFolder)
mFolder = aFolder;
mOwner->editAction->setEnabled(mFolder ? ( (mFolder == kernel->draftsFolder()) || (mFolder == kernel->outboxFolder()) ): false );
if (mFolder)
{
connect(mFolder, SIGNAL(msgHeaderChanged(int)),
@ -653,13 +656,7 @@ void KMHeaders::setFolder (KMFolder *aFolder)
}
if (mFolder)
{
str = i18n("%1 Messages, %2 unread.")
.arg(mFolder->count())
.arg(mFolder->countUnread());
if (mFolder->isReadOnly()) str += i18n("Folder is read-only.");
mOwner->statusMsg(str);
}
setFolderInfoStatus();
QString colText = i18n( "Sender" );
if (mFolder && (qstricmp(mFolder->whoField(), "To")==0))
@ -851,6 +848,17 @@ int KMHeaders::slotFilterMsg(KMMessage *msg)
}
//-----------------------------------------------------------------------------
void KMHeaders::setFolderInfoStatus ()
{
QString str;
str = i18n("%1 Messages, %2 unread.")
.arg(mFolder->count())
.arg(mFolder->countUnread());
if (mFolder->isReadOnly()) str += i18n("Folder is read-only.");
mOwner->statusMsg(str);
}
//-----------------------------------------------------------------------------
void KMHeaders::applyFiltersOnMsg(int /*msgId*/)
{
@ -1483,6 +1491,7 @@ void KMHeaders::setCurrentMsg(int cur)
setSelected( mItems[cur], TRUE );
}
makeHeaderVisible();
setFolderInfoStatus();
}
@ -1589,6 +1598,7 @@ void KMHeaders::nextMessage()
setSelected( lvi->itemBelow(), TRUE );
setCurrentItem(lvi->itemBelow());
makeHeaderVisible();
setFolderInfoStatus();
}
}
@ -1609,6 +1619,7 @@ void KMHeaders::prevMessage()
setSelected( lvi->itemAbove(), TRUE );
setCurrentItem(lvi->itemAbove());
makeHeaderVisible();
setFolderInfoStatus();
}
}
@ -1766,6 +1777,7 @@ void KMHeaders::highlightMessage(QListViewItem* lvi)
mPrevCurrent = item;
}
emit selected(mFolder->getMsg(idx));
setFolderInfoStatus();
}
@ -2188,15 +2200,20 @@ void KMHeaders::slotRMB()
mOwner->folderToPopupMenu( dir, FALSE, this, &mMenuToFolder, msgCopyMenu );
QPopupMenu *setStatusMenu = new QPopupMenu();
mOwner->replyAction->plug(menu);
mOwner->replyAllAction->plug(menu);
mOwner->forwardAction->plug(menu);
mOwner->bounceAction->plug(menu);
if ((mFolder == kernel->outboxFolder()) || (mFolder == kernel->draftsFolder()))
mOwner->editAction->plug(menu);
else {
mOwner->replyAction->plug(menu);
mOwner->replyAllAction->plug(menu);
mOwner->forwardAction->plug(menu);
mOwner->redirectAction->plug(menu);
mOwner->bounceAction->plug(menu);
}
menu->insertSeparator();
mOwner->saveAsAction->plug(menu);
mOwner->editAction->plug(menu);
menu->insertItem(i18n("&Move to"), msgMoveMenu);
menu->insertItem(i18n("&Copy to"), msgCopyMenu);
if ((mFolder != kernel->outboxFolder()) && (mFolder != kernel->draftsFolder()))
{
menu->insertItem(i18n("&Set Status"), setStatusMenu);
mOwner->newAction->plug(setStatusMenu);
mOwner->unreadAction->plug(setStatusMenu);
@ -2204,6 +2221,11 @@ void KMHeaders::slotRMB()
mOwner->repliedAction->plug(setStatusMenu);
mOwner->queueAction->plug(setStatusMenu);
mOwner->sentAction->plug(setStatusMenu);
}
menu->insertSeparator();
mOwner->printAction->plug(menu);
mOwner->saveAsAction->plug(menu);
menu->insertSeparator();
mOwner->deleteAction->plug(menu);
menu->exec (QCursor::pos(), 0);
delete menu;

@ -73,6 +73,9 @@ public:
if id>count() the last message is shown. */
virtual void setCurrentMsg(int msgId);
// Provide information about number of messages in a folder
void setFolderInfoStatus();
/** The following methods process the message in the folder with
the given msgId, or if no msgId is given all selected
messages are processed. */

@ -875,13 +875,6 @@ void KMMainWin::slotEditMsg()
KMMessage *msg;
int aIdx;
if((mFolder != kernel->outboxFolder()) && (mFolder != kernel->draftsFolder()))
{
KMessageBox::sorry(0,
i18n("Sorry, only messages in the outbox folder and drafts folder can be edited."));
return;
}
if((aIdx = mHeaders->currentItemIndex()) <= -1)
return;
if(!(msg = mHeaders->getMsg(aIdx)))
@ -1354,7 +1347,11 @@ void KMMainWin::slotUrlOpen()
//-----------------------------------------------------------------------------
void KMMainWin::slotMsgPopup(const KURL &aUrl, const QPoint& aPoint)
{
KPopupMenu* menu = new KPopupMenu;
KPopupMenu *setStatusMenu = new KPopupMenu();
(void) KMMainWin::updateMessageMenu();
mUrlCurrent = aUrl;
@ -1388,23 +1385,40 @@ void KMMainWin::slotMsgPopup(const KURL &aUrl, const QPoint& aPoint)
}
else
{
// popup somewhere else on the document
// popup somewhere else (i.e., not a URL) on the message
if ((mFolder == kernel->outboxFolder()) || (mFolder == kernel->draftsFolder()))
editAction->plug(menu);
else {
replyAction->plug(menu);
replyAllAction->plug(menu);
forwardAction->plug(menu);
redirectAction->plug(menu);
bounceAction->plug(menu);
}
menu->insertSeparator();
menu->insertItem(i18n("&Move..."), this,
SLOT(slotMoveMsg()), Key_M);
menu->insertItem(i18n("&Copy..."), this,
SLOT(slotCopyMsg()), Key_C);
menu->insertItem(i18n("&Move to"), moveMenu);
menu->insertItem(i18n("&Copy to"), copyMenu);
if ((mFolder != kernel->outboxFolder()) && (mFolder != kernel->draftsFolder()))
{
menu->insertItem(i18n("&Set Status"), setStatusMenu);
newAction->plug(setStatusMenu);
unreadAction->plug(setStatusMenu);
readAction->plug(setStatusMenu);
repliedAction->plug(setStatusMenu);
queueAction->plug(setStatusMenu);
sentAction->plug(setStatusMenu);
}
menu->insertSeparator();
printAction->plug(menu);
saveAsAction->plug(menu);
menu->insertSeparator();
deleteAction->plug(menu);
menu->popup(aPoint, 0);
}
}
//-----------------------------------------------------------------------------
void KMMainWin::getAccountMenu()
{
@ -1430,7 +1444,7 @@ void KMMainWin::setupMenuBar()
KStdAccel::key(KStdAccel::Save),
this, SLOT(slotSaveMsg()), actionCollection(), "save_as" );
KStdAction::print (this, SLOT(slotPrintMsg()), actionCollection());
printAction = KStdAction::print (this, SLOT(slotPrintMsg()), actionCollection());
(void) new KAction( i18n("Compact all &folders"), 0,
kernel->folderMgr(), SLOT(compactAll()),
@ -1452,7 +1466,7 @@ void KMMainWin::setupMenuBar()
connect(actMenu,SIGNAL(aboutToShow()),this,SLOT(getAccountMenu()));
(void) new KAction( i18n("&Send Queued"), 0, this,
SLOT(slotSendQueued()), actionCollection(), "send_queued");
SLOT(slotSendQueued()), actionCollection(), "send_queued");
(void) new KAction( i18n("Address &Book..."), "contents", 0, this,
SLOT(slotAddrBook()), actionCollection(), "addressbook" );
@ -1559,7 +1573,7 @@ void KMMainWin::setupMenuBar()
i++;
}
editAction = new KAction( i18n("Edi&t..."), Key_T, this,
editAction = new KAction( i18n("Edi&t"), Key_T, this,
SLOT(slotEditMsg()), actionCollection(), "edit" );
//----- Set status submenu

@ -76,10 +76,10 @@ public:
static void cleanup();
KAction *replyAction, *noQuoteReplyAction, *replyAllAction, *replyListAction,
*forwardAction, *redirectAction,
*forwardAction, *redirectAction,
*deleteAction, *saveAsAction, *bounceAction, *editAction,
*newAction,*unreadAction,*readAction,*repliedAction,*queueAction,*sentAction,
*printAction;
*newAction, *unreadAction, *readAction, *repliedAction, *queueAction,
*sentAction, *printAction;
public slots:
virtual void show();

Loading…
Cancel
Save