[Bug 259724] Opening template description label leads to crash

Tobias Koenig tokoe at kde.org
Fri Jan 14 11:14:51 GMT 2011


https://bugs.kde.org/show_bug.cgi?id=259724





--- Comment #5 from Tobias Koenig <tokoe kde org>  2011-01-14 12:14:47 ---

    A     mobile/mail/docs/en/templateshelp.html     [License: Trivialfile.]


    A     mobile/mail/docs/CMakeLists.txt     [License: Trivialfile.]

commit 3651a1e9b5e7565e1a192f4f3f4cec4f3c7b7a07
Author: Tobias Koenig <tokoe at kde.org>
Date:   Fri Jan 14 12:08:46 2011 +0100

    Show templates info in external viewer

    On WinCE we can't put a large HTML document into a QLabel,
    this will crash the application. So we take the general approach
    of opening the HTML document in an external viewer.

    CCBUG: 259724

diff --git a/mobile/lib/kdeclarativemainview.cpp
b/mobile/lib/kdeclarativemainview.cpp
index 053d403..15f4bad 100644
--- a/mobile/lib/kdeclarativemainview.cpp
+++ b/mobile/lib/kdeclarativemainview.cpp
@@ -699,13 +699,24 @@ void KDeclarativeMainView::openManual()
                         i18n( "Manual not found" ) );
     return;
   }
-#ifdef Q_WS_MAEMO_5
-  // opening the browser with a website via desktop file is defect on maemo5
-  // try to call the bowser directly
-  KProcess::startDetached( QLatin1String("/usr/bin/browser"), QStringList() <<
QLatin1String("--url") << path );
-#else
-  openAttachment( path, QLatin1String( "text/html" ) );
-#endif
+
+  d->openHtml( path );
+}
+
+void KDeclarativeMainView::openDocumentation( const QString &relativePath )
+{
+  const QString path = lookupDocumentation( relativePath );
+  const KUrl url = path;
+  const bool isValid = url.isValid();
+
+  if ( !isValid ) {
+    KMessageBox::error( this,
+                        i18n( "The documentation could not be found on your
system." ),
+                        i18n( "Documentation not found" ) );
+    return;
+  }
+
+  d->openHtml( path );
 }

 void KDeclarativeMainView::openLicenses()
diff --git a/mobile/lib/kdeclarativemainview.h
b/mobile/lib/kdeclarativemainview.h
index 152a846..7f8bd34 100644
--- a/mobile/lib/kdeclarativemainview.h
+++ b/mobile/lib/kdeclarativemainview.h
@@ -171,6 +171,11 @@ class MOBILEUI_EXPORT KDeclarativeMainView : public
KDeclarativeFullScreenView
      */
     void openManual();

+    /**
+     * Opens the HTML based documentation located at the given relative @p
path.
+     */
+    void openDocumentation( const QString &path );
+
     void openAttachment( const QString &url, const QString &mimeType );
     void saveAttachment( const QString &url, const QString &defaultFileName =
QString() );

diff --git a/mobile/lib/kdeclarativemainview_p.cpp
b/mobile/lib/kdeclarativemainview_p.cpp
index 6d937d4..38bb2a6 100644
--- a/mobile/lib/kdeclarativemainview_p.cpp
+++ b/mobile/lib/kdeclarativemainview_p.cpp
@@ -132,3 +132,15 @@ void KDeclarativeMainViewPrivate::guiStateChanged( int
oldState, int newState )
     }
   }
 }
+
+void KDeclarativeMainViewPrivate::openHtml( const QString &path )
+{
+#ifdef Q_WS_MAEMO_5
+  // opening the browser with a website via desktop file is defect on maemo5
+  // try to call the bowser directly
+  KProcess::startDetached( QLatin1String("/usr/bin/browser"), QStringList() <<
QLatin1String("--url") << path );
+#else
+  q->openAttachment( path, QLatin1String( "text/html" ) );
+#endif
+}
+
diff --git a/mobile/lib/kdeclarativemainview_p.h
b/mobile/lib/kdeclarativemainview_p.h
index 023107a..c50c71c 100644
--- a/mobile/lib/kdeclarativemainview_p.h
+++ b/mobile/lib/kdeclarativemainview_p.h
@@ -72,6 +72,8 @@ public: /// members
 public: /// Methods
   KDeclarativeMainViewPrivate( KDeclarativeMainView* );

+  void openHtml( const QString &path );
+
 public slots:
   void saveState();
   void restoreState();
diff --git a/mobile/mail/CMakeLists.txt b/mobile/mail/CMakeLists.txt
index 9d7451d..b6d8597 100644
--- a/mobile/mail/CMakeLists.txt
+++ b/mobile/mail/CMakeLists.txt
@@ -2,6 +2,7 @@ project( kmail-mobile )

 set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${KDE4_ENABLE_EXCEPTIONS}" )

+add_subdirectory(docs)
 add_subdirectory(tests)

 include_directories(
@@ -133,3 +134,4 @@ install(FILES
 )

 kde4_install_icons( ${ICON_INSTALL_DIR} )
+
diff --git a/mobile/mail/configwidget.cpp b/mobile/mail/configwidget.cpp
index c739fac..a309843 100644
--- a/mobile/mail/configwidget.cpp
+++ b/mobile/mail/configwidget.cpp
@@ -54,323 +54,9 @@ ConfigWidget::ConfigWidget( QWidget *parent )

   ui.howDoesThisWorkLabel->setText( i18n( "<a href=\"help\">How does this
work?</a>" ) );
   connect( ui.howDoesThisWorkLabel, SIGNAL( linkActivated( const QString& ) ),
-           this, SLOT( showTemplatesHelpClicked() ) );
+           this, SIGNAL( showTemplatesHelp() ) );

-  mHelpLabel = ui.helpLabel;
-  mHelpLabel->setVisible( false );
-
-  QString helpText;
-  helpText += i18n( "<p>Here you can create and manage templates to use
when<br/>"
-                    "composing new messages, replies or forwarded
messages.</p>"
-                    "<p>The message templates support substitution
commands,<br/>"
-                    "which can be used together with custom text inside the
above text fields.</p>" );
-
-  helpText += "<br/>";
-  helpText += "<table>";
-  helpText += "  <tr>";
-  helpText += "    <th align=\"left\" colspan=\"2\">" + i18n( "Original
Message" ) + "</th>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <th align=\"left\" colspan=\"2\"></th>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <th align=\"left\">" + i18n( "Command" ) + "</th>";
-  helpText += "    <th align=\"left\">" + i18n( "Description" ) + "</th>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%QUOTE</td>";
-  helpText += "    <td>" + i18n( "Quoted Message Text" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%TEXT</td>";
-  helpText += "    <td>" + i18n( "Message Text as Is" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OMSGID</td>";
-  helpText += "    <td>" + i18n( "Message Id" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%ODATE</td>";
-  helpText += "    <td>" + i18n( "Date" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%ODATESHORT</td>";
-  helpText += "    <td>" + i18n( "Date in Short Format" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%ODATEEN</td>";
-  helpText += "    <td>" + i18n( "Date in C Locale" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%ODOW</td>";
-  helpText += "    <td>" + i18n( "Day of Week" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OTIME</td>";
-  helpText += "    <td>" + i18n( "Time" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OTIMELONG</td>";
-  helpText += "    <td>" + i18n( "Time in Long Format" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OTIMELONGEN</td>";
-  helpText += "    <td>" + i18n( "Time in C Locale" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OTOADDR</td>";
-  helpText += "    <td>" + i18n( "To Field Address" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OTONAME</td>";
-  helpText += "    <td>" + i18n( "To Field Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OTOFNAME</td>";
-  helpText += "    <td>" + i18n( "To Field First Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OTOLNAME</td>";
-  helpText += "    <td>" + i18n( "To Field Last Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OCCADDR</td>";
-  helpText += "    <td>" + i18n( "CC Field Address" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OCCNAME</td>";
-  helpText += "    <td>" + i18n( "CC Field Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OCCFNAME</td>";
-  helpText += "    <td>" + i18n( "CC Field First Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OCCLNAME</td>";
-  helpText += "    <td>" + i18n( "CC Field Last Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OFROMADDR</td>";
-  helpText += "    <td>" + i18n( "From Field Address" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OFROMNAME</td>";
-  helpText += "    <td>" + i18n( "From Field Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OFROMFNAME</td>";
-  helpText += "    <td>" + i18n( "From Field First Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OFROMLNAME</td>";
-  helpText += "    <td>" + i18n( "From Field Last Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OADDRESSEESADDR</td>";
-  helpText += "    <td>" + i18n( "Addresses of all recipients" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OFULLSUBJECT</td>";
-  helpText += "    <td>" + i18n( "Subject" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%QHEADERS</td>";
-  helpText += "    <td>" + i18n( "Quoted Headers" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%HEADERS</td>";
-  helpText += "    <td>" + i18n( "Headers as Is" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%OHEADER=\"<i>header-name</i>\"</td>";
-  helpText += "    <td>" + i18n( "Header Content" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <th align=\"left\" colspan=\"2\"></th>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <th align=\"left\" colspan=\"2\">" + i18n( "Current
Message" ) + "</th>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <th align=\"left\" colspan=\"2\"></th>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <th align=\"left\">" + i18n( "Command" ) + "</th>";
-  helpText += "    <th align=\"left\">" + i18n( "Description" ) + "</th>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%MSGID</td>";
-  helpText += "    <td>" + i18n( "Message Id" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%DATE</td>";
-  helpText += "    <td>" + i18n( "Date" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%DATESHORT</td>";
-  helpText += "    <td>" + i18n( "Date in Short Format" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%DATEEN</td>";
-  helpText += "    <td>" + i18n( "Date in C Locale" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%DOW</td>";
-  helpText += "    <td>" + i18n( "Day of Week" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%TIME</td>";
-  helpText += "    <td>" + i18n( "Time" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%TIMELONG</td>";
-  helpText += "    <td>" + i18n( "Time in Long Format" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%TIMELONGEN</td>";
-  helpText += "    <td>" + i18n( "Time in C Locale" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%TOADDR</td>";
-  helpText += "    <td>" + i18n( "To Field Address" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%TONAME</td>";
-  helpText += "    <td>" + i18n( "To Field Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%TOFNAME</td>";
-  helpText += "    <td>" + i18n( "To Field First Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%TOLNAME</td>";
-  helpText += "    <td>" + i18n( "To Field Last Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%CCADDR</td>";
-  helpText += "    <td>" + i18n( "CC Field Address" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%CCNAME</td>";
-  helpText += "    <td>" + i18n( "CC Field Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%CCFNAME</td>";
-  helpText += "    <td>" + i18n( "CC Field First Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%CCLNAME</td>";
-  helpText += "    <td>" + i18n( "CC Field Last Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%FROMADDR</td>";
-  helpText += "    <td>" + i18n( "From Field Address" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%FROMNAME</td>";
-  helpText += "    <td>" + i18n( "From Field Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%FROMFNAME</td>";
-  helpText += "    <td>" + i18n( "From Field First Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%FROMLNAME</td>";
-  helpText += "    <td>" + i18n( "From Field Last Name" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%FULLSUBJECT</td>";
-  helpText += "    <td>" + i18n( "Subject" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%HEADER=\"<i>header-name</i>\"</td>";
-  helpText += "    <td>" + i18n( "Header Content" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <th align=\"left\" colspan=\"2\"></th>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <th align=\"left\" colspan=\"2\">" + i18n( "Process with
External Program" ) + "</th>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <th align=\"left\" colspan=\"2\"></th>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <th align=\"left\">" + i18n( "Command" ) + "</th>";
-  helpText += "    <th align=\"left\">" + i18n( "Description" ) + "</th>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%SYSTEM=\"<i>command</i>\"</td>";
-  helpText += "    <td>" + i18n( "Arbitrary Command" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%QUOTEPIPE=\"<i>command</i>\"</td>";
-  helpText += "    <td>" + i18n( "Pipe Original Message Body and Insert Result
as Quoted Text" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%TEXTPIPE=\"<i>command</i>\"</td>";
-  helpText += "    <td>" + i18n( "Pipe Original Message Body and Insert Result
as Is" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%MSGPIPE=\"<i>command</i>\"</td>";
-  helpText += "    <td>" + i18n( "Pipe Original Message with Headers and
Insert Result as Is" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%BODYPIPE=\"<i>command</i>\"</td>";
-  helpText += "    <td>" + i18n( "Pipe Current Message Body and Insert Result
as Is" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%CLEARPIPE=\"<i>command</i>\"</td>";
-  helpText += "    <td>" + i18n( "Pipe Current Message Body and Replace with
Result" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <th align=\"left\" colspan=\"2\"></th>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <th align=\"left\" colspan=\"2\">" + i18n( "Miscellaneous"
) + "</th>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <th align=\"left\" colspan=\"2\"></th>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <th align=\"left\">" + i18n( "Command" ) + "</th>";
-  helpText += "    <th align=\"left\">" + i18n( "Description" ) + "</th>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%SIGNATURE</td>"; 
-  helpText += "    <td>" + i18n( "Signature" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%INSERT=\"<i>file name</i>\"</td>";
-  helpText += "    <td>" + i18n( "Insert File Content" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%-</td>";
-  helpText += "    <td>" + i18n( "Discard to Next Line" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%REM=\"<i>comment</i>\"</td>";
-  helpText += "    <td>" + i18n( "Template Comment" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%NOP</td>";
-  helpText += "    <td>" + i18n( "No Operation" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%CLEAR</td>";
-  helpText += "    <td>" + i18n( "Clear Generated Message" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%DEBUG</td>";
-  helpText += "    <td>" + i18n( "Turn Debug On" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "  <tr>";
-  helpText += "    <td>%DEBUGOFF</td>";
-  helpText += "    <td>" + i18n( "Turn Debug Off" ) + "</td>";
-  helpText += "  </tr>";
-  helpText += "</table>";
-
-  mHelpLabel->setText( helpText );
+  ui.helpLabel->setVisible( false );
 }

 void ConfigWidget::load()
@@ -406,11 +92,6 @@ void ConfigWidget::editRecentAddresses()
   }
 }

-void ConfigWidget::showTemplatesHelpClicked()
-{
-  mHelpLabel->setVisible( !mHelpLabel->isVisible() );
-}
-
 void ConfigWidget::loadFromExternalSettings()
 {
   // Appearance
diff --git a/mobile/mail/configwidget.h b/mobile/mail/configwidget.h
index 0a4c1d1..7e6a2f6 100644
--- a/mobile/mail/configwidget.h
+++ b/mobile/mail/configwidget.h
@@ -42,17 +42,16 @@ class ConfigWidget : public QWidget
   private Q_SLOTS:
     void configureCompletionOrder();
     void editRecentAddresses();
-    void showTemplatesHelpClicked();

   Q_SIGNALS:
     void configChanged();
+    void showTemplatesHelp();

   private:
     void loadFromExternalSettings();
     void saveToExternalSettings();

     KConfigDialogManager *mManager;
-    QLabel *mHelpLabel;
 };

 class DeclarativeConfigWidget :
diff --git a/mobile/mail/docs/CMakeLists.txt b/mobile/mail/docs/CMakeLists.txt
new file mode 100644
index 0000000..ff81fb0
--- /dev/null
+++ b/mobile/mail/docs/CMakeLists.txt
@@ -0,0 +1 @@
+install(FILES en/templateshelp.html DESTINATION
${DATA_INSTALL_DIR}/kontact-touch/en/mail/)
diff --git a/mobile/mail/docs/en/templateshelp.html
b/mobile/mail/docs/en/templateshelp.html
new file mode 100644
index 0000000..a55fb33
--- /dev/null
+++ b/mobile/mail/docs/en/templateshelp.html
@@ -0,0 +1,313 @@
+<html>
+  <body>
+    <p>Here you can create and manage templates to use when<br/>
+       composing new messages, replies or forwarded messages.</p>
+    <p>The message templates support substitution commands,<br/>
+       which can be used together with custom text inside the above text
fields.</p>
+
+    <br/>
+    <table>
+      <tr>
+        <th align="left" colspan="2">Original Message</th>
+      </tr>
+      <tr>
+        <th align="left" colspan="2"></th>
+      </tr>
+      <tr>
+        <th align="left">Command</th>
+        <th align="left">Description</th>
+      </tr>
+      <tr>
+        <td>%QUOTE</td>
+        <td>Quoted Message Text</td>
+      </tr>
+      <tr>
+        <td>%TEXT</td>
+        <td>Message Text as Is</td>
+      </tr>
+      <tr>
+        <td>%OMSGID</td>
+        <td>Message Id</td>
+      </tr>
+      <tr>
+        <td>%ODATE</td>
+        <td>Date</td>
+      </tr>
+      <tr>
+        <td>%ODATESHORT</td>
+        <td>Date in Short Format</td>
+      </tr>
+      <tr>
+        <td>%ODATEEN</td>
+        <td>Date in C Locale</td>
+      </tr>
+      <tr>
+        <td>%ODOW</td>
+        <td>Day of Week</td>
+      </tr>
+      <tr>
+        <td>%OTIME</td>
+        <td>Time</td>
+      </tr>
+      <tr>
+        <td>%OTIMELONG</td>
+        <td>Time in Long Format</td>
+      </tr>
+      <tr>
+        <td>%OTIMELONGEN</td>
+        <td>Time in C Locale</td>
+      </tr>
+      <tr>
+        <td>%OTOADDR</td>
+        <td>To Field Address</td>
+      </tr>
+      <tr>
+        <td>%OTONAME</td>
+        <td>To Field Name</td>
+      </tr>
+      <tr>
+        <td>%OTOFNAME</td>
+        <td>To Field First Name</td>
+      </tr>
+      <tr>
+        <td>%OTOLNAME</td>
+        <td>To Field Last Name</td>
+      </tr>
+      <tr>
+        <td>%OCCADDR</td>
+        <td>CC Field Address</td>
+      </tr>
+      <tr>
+        <td>%OCCNAME</td>
+        <td>CC Field Name</td>
+      </tr>
+      <tr>
+        <td>%OCCFNAME</td>
+        <td>CC Field First Name</td>
+      </tr>
+      <tr>
+        <td>%OCCLNAME</td>
+        <td>CC Field Last Name</td>
+      </tr>
+      <tr>
+        <td>%OFROMADDR</td>
+        <td>From Field Address</td>
+      </tr>
+      <tr>
+        <td>%OFROMNAME</td>
+        <td>From Field Name</td>
+      </tr>
+      <tr>
+        <td>%OFROMFNAME</td>
+        <td>From Field First Name</td>
+      </tr>
+      <tr>
+        <td>%OFROMLNAME</td>
+        <td>From Field Last Name</td>
+      </tr>
+      <tr>
+        <td>%OADDRESSEESADDR</td>
+        <td>Addresses of all recipients</td>
+      </tr>
+      <tr>
+        <td>%OFULLSUBJECT</td>
+        <td>Subject</td>
+      </tr>
+      <tr>
+        <td>%QHEADERS</td>
+        <td>Quoted Headers</td>
+      </tr>
+      <tr>
+        <td>%HEADERS</td>
+        <td>Headers as Is</td>
+      </tr>
+      <tr>
+        <td>%OHEADER=<i>header-name</i></td>
+        <td>Header Content</td>
+      </tr>
+      <tr>
+        <th align="left" colspan="2"></th>
+      </tr>
+      <tr>
+        <th align="left" colspan="2">Current Message</th>
+      </tr>
+      <tr>
+        <th align="left" colspan="2"></th>
+      </tr>
+      <tr>
+        <th align="left">Command</th>
+        <th align="left">Description</th>
+      </tr>
+      <tr>
+        <td>%MSGID</td>
+        <td>Message Id</td>
+      </tr>
+      <tr>
+        <td>%DATE</td>
+        <td>Date</td>
+      </tr>
+      <tr>
+        <td>%DATESHORT</td>
+        <td>Date in Short Format</td>
+      </tr>
+      <tr>
+        <td>%DATEEN</td>
+        <td>Date in C Locale</td>
+      </tr>
+      <tr>
+        <td>%DOW</td>
+        <td>Day of Week</td>
+      </tr>
+      <tr>
+        <td>%TIME</td>
+        <td>Time</td>
+      </tr>
+      <tr>
+        <td>%TIMELONG</td>
+        <td>Time in Long Format</td>
+      </tr>
+      <tr>
+        <td>%TIMELONGEN</td>
+        <td>Time in C Locale</td>
+      </tr>
+      <tr>
+        <td>%TOADDR</td>
+        <td>To Field Address</td>
+      </tr>
+      <tr>
+        <td>%TONAME</td>
+        <td>To Field Name</td>
+      </tr>
+      <tr>
+        <td>%TOFNAME</td>
+        <td>To Field First Name</td>
+      </tr>
+      <tr>
+        <td>%TOLNAME</td>
+        <td>To Field Last Name</td>
+      </tr>
+      <tr>
+        <td>%CCADDR</td>
+        <td>CC Field Address</td>
+      </tr>
+      <tr>
+        <td>%CCNAME</td>
+        <td>CC Field Name</td>
+      </tr>
+      <tr>
+        <td>%CCFNAME</td>
+        <td>CC Field First Name</td>
+      </tr>
+      <tr>
+        <td>%CCLNAME</td>
+        <td>CC Field Last Name</td>
+      </tr>
+      <tr>
+        <td>%FROMADDR</td>
+        <td>From Field Address</td>
+      </tr>
+      <tr>
+        <td>%FROMNAME</td>
+        <td>From Field Name</td>
+      </tr>
+      <tr>
+        <td>%FROMFNAME</td>
+        <td>From Field First Name</td>
+      </tr>
+      <tr>
+        <td>%FROMLNAME</td>
+        <td>From Field Last Name</td>
+      </tr>
+      <tr>
+        <td>%FULLSUBJECT</td>
+        <td>Subject</td>
+      </tr>
+      <tr>
+        <td>%HEADER=<i>header-name</i></td>
+        <td>Header Content</td>
+      </tr>
+      <tr>
+        <th align="left" colspan="2"></th>
+      </tr>
+      <tr>
+        <th align="left" colspan="2">Process with External Program</th>
+      </tr>
+      <tr>
+        <th align="left" colspan="2"></th>
+      </tr>
+      <tr>
+        <th align="left">Command</th>
+        <th align="left">Description</th>
+      </tr>
+      <tr>
+        <td>%SYSTEM=<i>command</i></td>
+        <td>Arbitrary Command</td>
+      </tr>
+      <tr>
+        <td>%QUOTEPIPE=<i>command</i></td>
+        <td>Pipe Original Message Body and Insert Result as Quoted Text</td>
+      </tr>
+      <tr>
+        <td>%TEXTPIPE=<i>command</i></td>
+        <td>Pipe Original Message Body and Insert Result as Is</td>
+      </tr>
+      <tr>
+        <td>%MSGPIPE=<i>command</i></td>
+        <td>Pipe Original Message with Headers and Insert Result as Is</td>
+      </tr>
+      <tr>
+        <td>%BODYPIPE=<i>command</i></td>
+        <td>Pipe Current Message Body and Insert Result as Is</td>
+      </tr>
+      <tr>
+        <td>%CLEARPIPE=<i>command</i></td>
+        <td>Pipe Current Message Body and Replace with Result</td>
+      </tr>
+      <tr>
+        <th align="left" colspan="2"></th>
+      </tr>
+      <tr>
+        <th align="left" colspan="2">Miscellaneous</th>
+      </tr>
+      <tr>
+        <th align="left" colspan="2"></th>
+      </tr>
+      <tr>
+        <th align="left">Command</th>
+        <th align="left">Description</th>
+      </tr>
+      <tr>
+        <td>%SIGNATURE</td> 
+        <td>Signature</td>
+      </tr>
+      <tr>
+        <td>%INSERT=<i>file name</i></td>
+        <td>Insert File Content</td>
+      </tr>
+      <tr>
+        <td>%-</td>
+        <td>Discard to Next Line</td>
+      </tr>
+      <tr>
+        <td>%REM=<i>comment</i></td>
+        <td>Template Comment</td>
+      </tr>
+      <tr>
+        <td>%NOP</td>
+        <td>No Operation</td>
+      </tr>
+      <tr>
+        <td>%CLEAR</td>
+        <td>Clear Generated Message</td>
+      </tr>
+      <tr>
+        <td>%DEBUG</td>
+        <td>Turn Debug On</td>
+      </tr>
+      <tr>
+        <td>%DEBUGOFF</td>
+        <td>Turn Debug Off</td>
+      </tr>
+    </table>
+  </body>
+</html>
diff --git a/mobile/mail/mainview.cpp b/mobile/mail/mainview.cpp
index b7e93d8..ed865b9 100644
--- a/mobile/mail/mainview.cpp
+++ b/mobile/mail/mainview.cpp
@@ -183,6 +183,7 @@ void MainView::setConfigWidget( ConfigWidget *configWidget
)
 {
   Q_ASSERT( configWidget );
   connect( configWidget, SIGNAL( configChanged() ), this, SLOT( updateConfig()
) );
+  connect( configWidget, SIGNAL( showTemplatesHelp() ), this, SLOT(
showTemplatesHelp() ) );
 }

 bool MainView::collectionIsSentMail() const
@@ -1752,6 +1753,11 @@ void MainView::selectNextUnreadMessage()
   }
 }

+void MainView::showTemplatesHelp()
+{
+  openDocumentation( QLatin1String( "mail/templateshelp.html" ) );
+}
+
 void MainView::showMessageSource()
 {
   MessageViewer::MessageViewItem *item = messageViewerItem();
diff --git a/mobile/mail/mainview.h b/mobile/mail/mainview.h
index b4b4d2f..dacbe65 100644
--- a/mobile/mail/mainview.h
+++ b/mobile/mail/mainview.h
@@ -188,6 +188,7 @@ class MainView : public KDeclarativeMainView
     void toggleShowExtendedHeaders( bool );
     void messageListSettingsChanged( const MessageListSettings& );
     bool selectNextUnreadMessageInCurrentFolder();
+    void showTemplatesHelp();

   private:
     void reply( quint64 id, MessageComposer::ReplyStrategy replyStrategy, bool
quoteOriginal = true );

-- 
Configure bugmail: https://bugs.kde.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the Kdepim-bugs mailing list