Branch: master

c0e79390 2019-05-02 11:18:05 Luke Dashjr
KMail: Menu options to toggle "Show Message Structure"

Subtly different from the same feature in KDE:
KDE's menu items toggle the default behaviour between always/never, and the menu item is disabled if smart is set.
For Trinity, the option is always available, and only toggles visibility of the structure for the current session.

Signed-off-by: Luke Dashjr <luke-jr+git@...>
M kmail/kmmainwidget.cpp
M kmail/kmreadermainwin.cpp
M kmail/kmreaderwin.cpp
M kmail/kmreaderwin.h

kmail/kmmainwidget.cpp

diff --git a/kmail/kmmainwidget.cpp b/kmail/kmmainwidget.cpp
index 0d84522..1d2661f 100644
--- a/kmail/kmmainwidget.cpp
+++ b/kmail/kmmainwidget.cpp
@@ -2438,6 +2438,7 @@
     viewSourceAction()->plug(menu);
     if(mMsgView) {
       mMsgView->toggleFixFontAction()->plug(menu);
+      mMsgView->toggleMimePartTreeAction()->plug(menu);
     }
     menu->insertSeparator();
     mPrintAction->plug( menu );

kmail/kmreadermainwin.cpp

diff --git a/kmail/kmreadermainwin.cpp b/kmail/kmreadermainwin.cpp
index 6694ba3..6257ba9 100644
--- a/kmail/kmreadermainwin.cpp
+++ b/kmail/kmreadermainwin.cpp
@@ -509,6 +509,7 @@
     menu->insertSeparator();
     mViewSourceAction->plug( menu );
     mReaderWin->toggleFixFontAction()->plug( menu );
+	mReaderWin->toggleMimePartTreeAction()->plug( menu );
     menu->insertSeparator();
     mPrintAction->plug( menu );
     mSaveAsAction->plug( menu );

kmail/kmreaderwin.cpp

diff --git a/kmail/kmreaderwin.cpp b/kmail/kmreaderwin.cpp
index b3c4357..1b6ca48 100644
--- a/kmail/kmreaderwin.cpp
+++ b/kmail/kmreaderwin.cpp
@@ -618,6 +618,11 @@
                                             Key_X, TQT_TQOBJECT(this), TQT_SLOT(slotToggleFixedFont()),
                                             ac, "toggle_fixedfont" );
 
+  mToggleMimePartTreeAction = new TDEToggleAction( i18n("Show Message Structure"),
+                                            0, ac, "toggle_mimeparttree" );
+  connect(mToggleMimePartTreeAction, TQT_SIGNAL(toggled(bool)),
+          TQT_TQOBJECT(this), TQT_SLOT(slotToggleMimePartTree()));
+
   mStartIMChatAction = new TDEAction( i18n("Chat &With..."), 0, TQT_TQOBJECT(this),
 				    TQT_SLOT(slotIMChat()), ac, "start_im_chat" );
 }
@@ -1444,6 +1449,7 @@
 
 //-----------------------------------------------------------------------------
 void KMReaderWin::showHideMimeTree( bool isPlainTextTopLevel ) {
+  mIsPlainText = isPlainTextTopLevel;
   if ( mMimeTreeMode == 2 ||
        ( mMimeTreeMode == 1 && !isPlainTextTopLevel ) )
     mMimePartTree->show();
@@ -1452,6 +1458,9 @@
     TDEConfigGroup reader( KMKernel::config(), "Reader" );
     saveSplitterSizes( reader );
     mMimePartTree->hide();
+  }
+  if ( mToggleMimePartTreeAction->isChecked() != mMimePartTree->isVisible() ) {
+    mToggleMimePartTreeAction->setChecked( mMimePartTree->isVisible() );
   }
 }
 
@@ -2135,6 +2144,17 @@
 
 
 //-----------------------------------------------------------------------------
+void KMReaderWin::slotToggleMimePartTree()
+{
+  if ( mToggleMimePartTreeAction->isChecked() ) {
+    mMimeTreeMode = 2;  // always
+  } else {
+    mMimeTreeMode = 0;  // never
+  }
+  showHideMimeTree();
+}
+
+//-----------------------------------------------------------------------------
 void KMReaderWin::slotCopySelectedText()
 {
   kapp->clipboard()->setText( mViewer->selectedText() );

kmail/kmreaderwin.h

diff --git a/kmail/kmreaderwin.h b/kmail/kmreaderwin.h
index 81256e8..0495041 100644
--- a/kmail/kmreaderwin.h
+++ b/kmail/kmreaderwin.h
@@ -5,6 +5,7 @@
 #ifndef KMREADERWIN_H
 #define KMREADERWIN_H
 
+#include <tdeactionclasses.h>
 #include <tqwidget.h>
 #include <tqtimer.h>
 #include <tqstringlist.h>
@@ -256,6 +257,7 @@
   TDEAction *urlOpenAction() { return mUrlOpenAction; }
   TDEAction *urlSaveAsAction() { return mUrlSaveAsAction; }
   TDEAction *addBookmarksAction() { return mAddBookmarksAction;}
+  TDEAction *toggleMimePartTreeAction() { return mToggleMimePartTreeAction; }
   TDEAction *startImChatAction() { return mStartIMChatAction; }
   // This function returns the complete data that were in this
   // message parts - *after* all encryption has been removed that
@@ -397,6 +399,8 @@
 
   /** The user toggled the "Fixed Font" flag from the view menu. */
   void slotToggleFixedFont();
+
+  void slotToggleMimePartTree();
 
   /** Copy the selected text to the clipboard */
   void slotCopySelectedText();
@@ -594,6 +598,7 @@
   TDEToggleAction *mHeaderOnlyAttachmentsAction;
   TDESelectAction *mSelectEncodingAction;
   TDEToggleAction *mToggleFixFontAction;
+  TDEToggleAction *mToggleMimePartTreeAction;
 
   KURL mHoveredUrl;
   KURL mClickedUrl;
70cc9c74 2019-05-02 11:18:05 Michele Calgaro
Improvements on previous commit and other commits published in #19. This removes the need for mIsPlainText caching and also avoid to reread the configuration every time a message is changed.

Signed-off-by: Michele Calgaro <michele.calgaro@...>
M kmail/kmreadermainwin.cpp
M kmail/kmreaderwin.cpp
M kmail/kmreaderwin.h

kmail/kmreadermainwin.cpp

diff --git a/kmail/kmreadermainwin.cpp b/kmail/kmreadermainwin.cpp
index 6257ba9..336d4c1 100644
--- a/kmail/kmreadermainwin.cpp
+++ b/kmail/kmreadermainwin.cpp
@@ -509,7 +509,7 @@
     menu->insertSeparator();
     mViewSourceAction->plug( menu );
     mReaderWin->toggleFixFontAction()->plug( menu );
-	mReaderWin->toggleMimePartTreeAction()->plug( menu );
+    mReaderWin->toggleMimePartTreeAction()->plug( menu );
     menu->insertSeparator();
     mPrintAction->plug( menu );
     mSaveAsAction->plug( menu );

kmail/kmreaderwin.cpp

diff --git a/kmail/kmreaderwin.cpp b/kmail/kmreaderwin.cpp
index 1b6ca48..76b2571 100644
--- a/kmail/kmreaderwin.cpp
+++ b/kmail/kmreaderwin.cpp
@@ -447,6 +447,7 @@
   mExternalWindow  = (aParent == mainWindow );
   mSplitterSizes << 180 << 100;
   mMimeTreeMode = 1;
+	mMimeTreeModeOverride = -1;
   mMimeTreeAtBottom = true;
   mAutoDelete = false;
   mLastSerNum = 0;
@@ -1449,10 +1450,11 @@
 
 //-----------------------------------------------------------------------------
 void KMReaderWin::showHideMimeTree( bool isPlainTextTopLevel ) {
-  mIsPlainText = isPlainTextTopLevel;
-  if ( mMimeTreeMode == 2 ||
-       ( mMimeTreeMode == 1 && !isPlainTextTopLevel ) )
+  if ( mMimeTreeModeOverride == 2 ||
+      ( mMimeTreeModeOverride != 0 && (mMimeTreeMode == 2 ||
+      ( mMimeTreeMode == 1 && !isPlainTextTopLevel ) ) ) ) {
     mMimePartTree->show();
+  }
   else {
     // don't rely on TQSplitter maintaining sizes for hidden widgets:
     TDEConfigGroup reader( KMKernel::config(), "Reader" );
@@ -1468,6 +1470,7 @@
   KMMessage * msg = message();
 
   mMimePartTree->clear();
+  mMimeTreeModeOverride = -1; // clear any previous manual overiding
   showHideMimeTree( !msg || // treat no message as "text/plain"
 		    ( msg->type() == DwMime::kTypeText
 		      && msg->subtype() == DwMime::kSubtypePlain ) );
@@ -2147,11 +2150,11 @@
 void KMReaderWin::slotToggleMimePartTree()
 {
   if ( mToggleMimePartTreeAction->isChecked() ) {
-    mMimeTreeMode = 2;  // always
+    mMimeTreeModeOverride = 2;  // always
   } else {
-    mMimeTreeMode = 0;  // never
+    mMimeTreeModeOverride = 0;  // never
   }
-  showHideMimeTree();
+  showHideMimeTree(false);
 }
 
 //-----------------------------------------------------------------------------

kmail/kmreaderwin.h

diff --git a/kmail/kmreaderwin.h b/kmail/kmreaderwin.h
index 0495041..c9f78ae 100644
--- a/kmail/kmreaderwin.h
+++ b/kmail/kmreaderwin.h
@@ -5,7 +5,6 @@
 #ifndef KMREADERWIN_H
 #define KMREADERWIN_H
 
-#include <tdeactionclasses.h>
 #include <tqwidget.h>
 #include <tqtimer.h>
 #include <tqstringlist.h>
@@ -246,6 +245,7 @@
   // Action to reply to a message
   // but action( "some_name" ) some name could be used instead.
   TDEToggleAction *toggleFixFontAction() { return mToggleFixFontAction; }
+  TDEToggleAction *toggleMimePartTreeAction() { return mToggleMimePartTreeAction; }
   TDEAction *mailToComposeAction() { return mMailToComposeAction; }
   TDEAction *mailToReplyAction() { return mMailToReplyAction; }
   TDEAction *mailToForwardAction() { return mMailToForwardAction; }
@@ -257,7 +257,6 @@
   TDEAction *urlOpenAction() { return mUrlOpenAction; }
   TDEAction *urlSaveAsAction() { return mUrlSaveAsAction; }
   TDEAction *addBookmarksAction() { return mAddBookmarksAction;}
-  TDEAction *toggleMimePartTreeAction() { return mToggleMimePartTreeAction; }
   TDEAction *startImChatAction() { return mStartIMChatAction; }
   // This function returns the complete data that were in this
   // message parts - *after* all encryption has been removed that
@@ -400,12 +399,13 @@
   /** The user toggled the "Fixed Font" flag from the view menu. */
   void slotToggleFixedFont();
 
+  /** Show or hide the Mime Tree Viewer */
   void slotToggleMimePartTree();
 
   /** Copy the selected text to the clipboard */
   void slotCopySelectedText();
 
-   void slotUrlClicked();
+  void slotUrlClicked();
 
   /** Operations on mailto: URLs. */
   void slotMailtoReply();
@@ -586,6 +586,7 @@
   TQStringList mTempFiles;
   TQStringList mTempDirs;
   int mMimeTreeMode;
+  int mMimeTreeModeOverride;
   bool mMimeTreeAtBottom;
   TQValueList<int> mSplitterSizes;
   partNode* mRootNode;