[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kmail-devel
Subject:    Re: patch for Right Mouse popup in Message and Headers Window
From:       Seth Chaiklin <seth () psy ! au ! dk>
Date:       2001-03-23 3:03:26
[Download RAW message or body]

Here is the next version of this patch.  I think it is done.

Special features:

1.  Edit is greyed out in the Menu, expect for draft and outbox folder, and 
is only shown in the RMB for those folders (therefore it is possible to remove
the error message in slotEditMsg).

2. I added "Send Queued" to RMB for  the outbox

3. No one ever responded to my proposal about how to contextualize the RMB in 
the drafts and outbox folders.  I interpreted that to mean agreement and 
implemented it as proposed.


-- 
seth@psy.au.dk
seth@schutz.psy.au.dk
["rmb3.patch" (text/x-c++)]

--- kmmainwin.cpp.orig	Mon Mar  5 13:36:24 2001
+++ kmmainwin.cpp	Fri Mar 23 03:47:51 2001
@@ -880,13 +886,6 @@
   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)))
@@ -1350,7 +1358,11 @@
 //-----------------------------------------------------------------------------
 void KMMainWin::slotMsgPopup(const KURL &aUrl, const QPoint& aPoint)
 {
+
   KPopupMenu* menu = new KPopupMenu;
+  KPopupMenu *setStatusMenu = new KPopupMenu();
+  (void) KMMainWin::updateMessageMenu();
+
 
   mUrlCurrent = aUrl;
 
@@ -1384,23 +1396,42 @@
   }
   else
   {
-    // popup somewhere else on the document
+    // popup somewhere else (i.e., not a URL) on the message
+
+
+    if ((mFolder == kernel->outboxFolder())) 
+       sendQueuedAction->plug(menu);
+    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 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();
-    menu->insertItem(i18n("&Move..."), this,
-                     SLOT(slotMoveMsg()), Key_M);
-    menu->insertItem(i18n("&Copy..."), this,
-                     SLOT(slotCopyMsg()), Key_C);
+    printAction->plug(menu);
+    saveAsAction->plug(menu);
     menu->insertSeparator();
     deleteAction->plug(menu);
     menu->popup(aPoint, 0);
   }
 }
 
-
 //-----------------------------------------------------------------------------
 void KMMainWin::getAccountMenu()
 {
@@ -1426,7 +1457,7 @@
     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()),
@@ -1447,8 +1478,8 @@
   connect(actMenu,SIGNAL(activated(int)),this,SLOT(slotCheckOneAccount(int)));
   connect(actMenu,SIGNAL(aboutToShow()),this,SLOT(getAccountMenu()));
 
-  (void) new KAction( i18n("&Send Queued"), 0, this,
-		      SLOT(slotSendQueued()), actionCollection(), "send_queued");
+  sendQueuedAction = new KAction( i18n("&Send Queued"), 0, this,
+		     SLOT(slotSendQueued()), actionCollection(), "send_queued");
 
   (void) new KAction( i18n("Address &Book..."), "contents", 0, this,
 		      SLOT(slotAddrBook()), actionCollection(), "addressbook" );
@@ -1549,7 +1588,7 @@
       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

--- kmmainwin.h.orig	Wed Mar  7 02:19:00 2001
+++ kmmainwin.h	Sun Mar 18 00:16:28 2001
@@ -76,9 +76,10 @@
 
   static void cleanup();
   KAction *replyAction, *replyAllAction, *replyListAction,
-      *forwardAction, *redirectAction,
+      *forwardAction, *redirectAction, *sendQueuedAction, 
     *deleteAction, *saveAsAction, *bounceAction, *editAction,
-    *newAction,*unreadAction,*readAction,*repliedAction,*queueAction,*sentAction;
+    *newAction,*unreadAction,*readAction,*repliedAction,*queueAction,*sentAction,
+    *printAction;
 
 public slots:
   virtual void show();


--- kmheaders.cpp.orig	Mon Mar  5 13:36:14 2001
+++ kmheaders.cpp	Fri Mar 23 03:24:20 2001
@@ -599,6 +600,9 @@
 
     mFolder = aFolder;
 
+    mOwner->editAction->setEnabled(mFolder ?  ( (mFolder == kernel->draftsFolder()) \
|| (mFolder == kernel->outboxFolder()) ): false ); +
+
     if (mFolder)
     {
       connect(mFolder, SIGNAL(msgHeaderChanged(int)),
@@ -2138,15 +2158,22 @@
   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()))
+       mOwner->sendQueuedAction->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);
@@ -2154,6 +2181,11 @@
    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;


_______________________________________________
Kmail Developers mailing list
Kmail@master.kde.org
http://master.kde.org/mailman/listinfo/kmail


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic