diff -Nru kf5-messagelib-17.12.3/CMakeLists.txt kf5-messagelib-18.04.3/CMakeLists.txt --- kf5-messagelib-17.12.3/CMakeLists.txt 2018-03-06 00:32:35.000000000 +0000 +++ kf5-messagelib-18.04.3/CMakeLists.txt 2018-07-10 00:16:00.000000000 +0000 @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.0) -set(PIM_VERSION "5.7.3") +set(PIM_VERSION "5.8.3") if (POLICY CMP0053) cmake_policy(SET CMP0053 NEW) @@ -11,36 +11,36 @@ option(KDEPIM_ENTERPRISE_BUILD "Enable features specific to the enterprise branch, which are normally disabled. Also, it disables many components not needed for Kontact such as the Kolab client." FALSE) -set(KF5_VERSION "5.39.0") - -find_package(ECM ${KF5_VERSION} CONFIG REQUIRED) +set(KF5_VERSION "5.44.0") set(MESSAGELIB_LIB_VERSION ${PIM_VERSION}) -set(AKONADIMIME_LIB_VERSION "5.7.3") +set(AKONADIMIME_LIB_VERSION "5.8.3") set(QT_REQUIRED_VERSION "5.8.0") -set(AKONADI_VERSION "5.7.3") -set(GRANTLEETHEME_LIB_VERSION "5.7.3") -set(GRAVATAR_LIB_VERSION "5.7.3") -set(IDENTITYMANAGEMENT_LIB_VERSION "5.7.3") -set(KCONTACTS_LIB_VERSION "5.7.3") -set(KDEPIM_APPS_LIB_VERSION "5.7.3") -set(KLDAP_LIB_VERSION "5.7.3") -set(KMAILTRANSPORT_LIB_VERSION "5.7.3") -set(KMBOX_LIB_VERSION "5.7.3") -set(KMIME_LIB_VERSION "5.7.3") -set(KPIMTEXTEDIT_LIB_VERSION "5.7.3") -set(LIBKDEPIM_LIB_VERSION "5.7.3") -set(LIBKLEO_LIB_VERSION "5.7.3") -set(PIMCOMMON_LIB_VERSION "5.7.3") +set(AKONADI_VERSION "5.8.3") +set(GRANTLEETHEME_LIB_VERSION "5.8.3") +set(GRAVATAR_LIB_VERSION "5.8.3") +set(IDENTITYMANAGEMENT_LIB_VERSION "5.8.3") +set(KCONTACTS_LIB_VERSION "5.8.3") +set(KDEPIM_APPS_LIB_VERSION "5.8.3") +set(KLDAP_LIB_VERSION "5.8.3") +set(KMAILTRANSPORT_LIB_VERSION "5.8.3") +set(KMBOX_LIB_VERSION "5.8.3") +set(KMIME_LIB_VERSION "5.8.3") +set(KPIMTEXTEDIT_LIB_VERSION "5.8.3") +set(LIBKDEPIM_LIB_VERSION "5.8.3") +set(LIBKLEO_LIB_VERSION "5.8.3") +set(PIMCOMMON_LIB_VERSION "5.8.3") set(GPGME_LIB_VERSION "1.8.0") -set(AKONADI_CONTACT_VERSION "5.7.3") +set(AKONADI_CONTACT_VERSION "5.8.3") if (${MIMETREEPARSER_ONLY_BUILD}) set(ECM_VERSION "5.26.0") set(KMIME_LIB_VERSION "5.1.40") +else() + set(ECM_VERSION ${KF5_VERSION}) endif() find_package(ECM ${ECM_VERSION} CONFIG REQUIRED) @@ -106,7 +106,7 @@ find_package(KF5PimTextEdit ${KPIMTEXTEDIT_LIB_VERSION} CONFIG REQUIRED) find_package(KF5SendLater ${KDEPIM_APPS_LIB_VERSION} CONFIG REQUIRED) - find_package(KF5AkonadiSearch "5.7.3" CONFIG REQUIRED) + find_package(KF5AkonadiSearch "5.8.3" CONFIG REQUIRED) set_package_properties(KF5AkonadiSearch PROPERTIES DESCRIPTION "The Akonadi Search libraries" URL "http://www.kde.org" TYPE REQUIRED PURPOSE "Provides search capabilities in KMail and Akonadi") endif() @@ -133,7 +133,7 @@ if(BUILD_TESTING) add_definitions(-DBUILD_TESTING) -endif(BUILD_TESTING) +endif() add_definitions(-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT) add_subdirectory(mimetreeparser) diff -Nru kf5-messagelib-17.12.3/debian/changelog kf5-messagelib-18.04.3/debian/changelog --- kf5-messagelib-17.12.3/debian/changelog 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/changelog 2018-08-26 12:21:48.000000000 +0000 @@ -1,3 +1,42 @@ +kf5-messagelib (4:18.04.3-0ubuntu3) cosmic; urgency=medium + + * Sync some debian unstable changes: + - Update watch file. + - Update lintian overrides. + - Update upstream metadata. + - Update debian/copyright. + + -- Rik Mills Sun, 26 Aug 2018 13:21:48 +0100 + +kf5-messagelib (4:18.04.3-0ubuntu2) cosmic; urgency=medium + + * Skip autotests for now. Upstream release tars and CI tests are + consistently broken, so running them here has little or no worth + unless that changes. + + -- Rik Mills Sat, 25 Aug 2018 14:28:32 +0100 + +kf5-messagelib (4:18.04.3-0ubuntu1) cosmic; urgency=medium + + [ Walter Lapchynski ] + * Removing MISSING symbols. + + [ Rik Mills ] + * New upstream release (18.03.80) + * debian/patches: Drop upstream applied patches + * Update symbols + * New upstream release (18.04.0) + * New upstream release (18.04.1) + * New upstream release (18.04.3) + + [ Simon Quigley ] + * Bump sonames with the Debian ABI Manager due to binary incompatible + changes: + - libkf5mimetreeparser5abi2 -> libkf5mimetreeparser5abi3 + - libkf5messageviewer5abi4 -> libkf5messageviewer5abi5 + + -- Rik Mills Tue, 21 Aug 2018 18:55:07 +0100 + kf5-messagelib (4:17.12.3-0ubuntu5) cosmic; urgency=medium * Add upstream patrch to fix build with Qt 5.11 diff -Nru kf5-messagelib-17.12.3/debian/control kf5-messagelib-18.04.3/debian/control --- kf5-messagelib-17.12.3/debian/control 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/control 2018-08-26 12:21:48.000000000 +0000 @@ -10,34 +10,34 @@ libgpgme-dev, libgpgmepp-dev (>= 1.7.1~), libgrantlee5-dev (>= 5.0~), - libkf5akonadi-dev (>= 4:17.12.3~), - libkf5akonadimime-dev (>= 4:17.12.3~), - libkf5akonadinotes-dev (>= 4:17.12.3~), - libkf5akonadisearch-dev (>= 4:17.12.3~), + libkf5akonadi-dev (>= 4:18.04.3~), + libkf5akonadimime-dev (>= 4:18.04.3~), + libkf5akonadinotes-dev (>= 4:18.04.3~), + libkf5akonadisearch-dev (>= 4:18.04.3~), libkf5archive-dev (>= 5.31.0~), libkf5codecs-dev (>= 5.31.0~), libkf5completion-dev (>= 5.31.0~), libkf5config-dev (>= 5.31.0~), - libkf5contacteditor-dev (>= 4:17.12.3~), - libkf5contacts-dev (>= 4:17.12.3~), - libkf5followupreminder-dev (>= 4:17.12.3~), - libkf5grantleetheme-dev (>= 17.12.3~), - libkf5gravatar-dev (>= 4:17.12.3~), + libkf5contacteditor-dev (>= 4:18.04.3~), + libkf5contacts-dev (>= 4:18.04.3~), + libkf5followupreminder-dev (>= 4:18.04.3~), + libkf5grantleetheme-dev (>= 18.04.3~), + libkf5gravatar-dev (>= 4:18.04.3~), libkf5i18n-dev (>= 5.31.0~), libkf5iconthemes-dev (>= 5.31.0~), - libkf5identitymanagement-dev (>= 17.12.3~), + libkf5identitymanagement-dev (>= 18.04.3~), libkf5itemviews-dev (>= 5.31.0~), - libkf5kaddressbookgrantlee-dev (>= 4:17.12.3~), - libkf5ldap-dev (>= 17.12.3~), - libkf5libkdepim-dev (>= 4:17.12.3~), - libkf5libkleo-dev (>= 4:17.12.3~), - libkf5mailtransport-dev (>= 17.12.3~), - libkf5mbox-dev (>= 17.12.3~), - libkf5mime-dev (>= 17.12.3~), + libkf5kaddressbookgrantlee-dev (>= 4:18.04.3~), + libkf5ldap-dev (>= 18.04.3~), + libkf5libkdepim-dev (>= 4:18.04.3~), + libkf5libkleo-dev (>= 4:18.04.3~), + libkf5mailtransport-dev (>= 18.04.3~), + libkf5mbox-dev (>= 18.04.3~), + libkf5mime-dev (>= 18.04.3~), libkf5newstuff-dev (>= 5.31.0~), - libkf5pimcommon-dev (>= 4:17.12.3~), - libkf5pimtextedit-dev (>= 17.12.3~), - libkf5sendlater-dev (>= 4:17.12.3~), + libkf5pimcommon-dev (>= 4:18.04.3~), + libkf5pimtextedit-dev (>= 18.04.3~), + libkf5sendlater-dev (>= 4:18.04.3~), libkf5syntaxhighlighting-dev (>= 5.31.0~), libkf5webkit-dev (>= 5.31.0~), libkf5windowsystem-dev (>= 5.31.0~), @@ -50,7 +50,7 @@ qtbase5-private-dev (>= 5.6.1~), qtpositioning5-dev (>= 5.6.1~), qttools5-dev (>= 5.6.1~), - qtwebengine5-dev (>= 5.6.1~) + qtwebengine5-dev (>= 5.6.1~), Standards-Version: 3.9.8 Homepage: http://pim.kde.org/ Vcs-Browser: https://code.launchpad.net/~kubuntu-packagers/kubuntu-packaging/+git/messagelib @@ -85,17 +85,17 @@ Section: libdevel Architecture: any Multi-Arch: same -Depends: libkf5akonadi-dev (>= 4:17.12.3~), - libkf5akonadimime-dev (>= 4:17.12.3~), - libkf5followupreminder-dev (>= 4:17.12.3~), - libkf5identitymanagement-dev (>= 17.12.3~), - libkf5libkdepim-dev (>= 4:17.12.3~), - libkf5libkleo-dev (>= 4:17.12.3~), +Depends: libkf5akonadi-dev (>= 4:18.04.3~), + libkf5akonadimime-dev (>= 4:18.04.3~), + libkf5followupreminder-dev (>= 4:18.04.3~), + libkf5identitymanagement-dev (>= 18.04.3~), + libkf5libkdepim-dev (>= 4:18.04.3~), + libkf5libkleo-dev (>= 4:18.04.3~), libkf5messagecomposer5abi2 (= ${binary:Version}), - libkf5mime-dev (>= 17.12.3~), - libkf5pimcommon-dev (>= 4:17.12.3~), + libkf5mime-dev (>= 18.04.3~), + libkf5pimcommon-dev (>= 4:18.04.3~), ${misc:Depends}, - ${shlibs:Depends} + ${shlibs:Depends}, Description: KDE PIM messaging library, composer devel files This package contains the development files for the message composer library. Which provides basic e-mail message composing facilities. @@ -122,7 +122,7 @@ Multi-Arch: same Depends: libkf5messagecore5abi2 (= ${binary:Version}), ${misc:Depends}, - ${shlibs:Depends} + ${shlibs:Depends}, Description: KDE PIM messaging library, core devel files This package contains the development files for the message core library. Which provides basic e-mail message handling facilities. @@ -151,7 +151,7 @@ Multi-Arch: same Depends: libkf5messagelist5abi1 (= ${binary:Version}), ${misc:Depends}, - ${shlibs:Depends} + ${shlibs:Depends}, Description: KDE PIM messaging library, message list devel files This package contains the development files for the message list library. Which provides a widget for the e-mail message lists with extensive filtering, @@ -171,8 +171,8 @@ . This package is part of the KDE PIM module. -Package: libkf5messageviewer5abi4 -X-Debian-ABI: 4 +Package: libkf5messageviewer5abi5 +X-Debian-ABI: 5 X-CMake-Target: KF5MessageViewer Architecture: any Multi-Arch: same @@ -191,10 +191,10 @@ Section: libdevel Architecture: any Multi-Arch: same -Depends: libkf5messageviewer5abi4 (= ${binary:Version}), - libgrantlee5-dev, +Depends: libgrantlee5-dev, + libkf5messageviewer5abi5 (= ${binary:Version}), ${misc:Depends}, - ${shlibs:Depends} + ${shlibs:Depends}, Description: KDE PIM messaging library, message viewer devel files This package contains the development files for the message viewer library. Which provides the implementation of a feature-rich and highly configurable @@ -223,7 +223,7 @@ Multi-Arch: same Depends: libkf5templateparser5abi2 (= ${binary:Version}), ${misc:Depends}, - ${shlibs:Depends} + ${shlibs:Depends}, Description: KDE PIM messaging library, template parser devel files This package contains the development files for the template parser library. Which provides the implementation of a parser for the mail templates which @@ -232,8 +232,8 @@ . This package is part of KDE PIM module. -Package: libkf5mimetreeparser5abi2 -X-Debian-ABI: 2 +Package: libkf5mimetreeparser5abi3 +X-Debian-ABI: 3 X-CMake-Target: KF5MimeTreeParser Architecture: any Multi-Arch: same @@ -249,9 +249,9 @@ Section: libdevel Architecture: any Multi-Arch: same -Depends: libkf5mimetreeparser5abi2 (= ${binary:Version}), +Depends: libkf5mimetreeparser5abi3 (= ${binary:Version}), ${misc:Depends}, - ${shlibs:Depends} + ${shlibs:Depends}, Description: KDE PIM Mime Tree parser library devel files This library implements a parser for the mime tree used by KMail. . @@ -277,7 +277,7 @@ Depends: libkf5webengineviewer5abi3 (= ${binary:Version}), qtwebengine5-dev, ${misc:Depends}, - ${shlibs:Depends} + ${shlibs:Depends}, Description: KDE's Qt Web Engine Viewer devel files This library implements view on Qt Web Engine used by KDE PIM. . diff -Nru kf5-messagelib-17.12.3/debian/copyright kf5-messagelib-18.04.3/debian/copyright --- kf5-messagelib-17.12.3/debian/copyright 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/copyright 2018-08-26 12:21:48.000000000 +0000 @@ -1,57 +1,85 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Files: * -Copyright: 2009, Andras Mantia - 2002-2003, Carsten Pfeiffer - 2005, David Faure - 2002, Ingo Kloecker - 2002-2003, Karl-Heinz Zimmer - 2002-2009, Klarälvdalens Datakonsult AB, a KDAB Group company - 2003-2004, Marc Mutz - 2011-2016, Montel Laurent - 2013, Sandro Knauß - 2014, Sandro Knauß - 2015, Sandro Knauß - 2009-2011, Torgny Nyblom - 2003, Zack Rusin -License: GPL-2 +Copyright: 2010, Casey Link + 2009, Constantin Berzan + 2004-2005, Cornelius Schumacher + 2007, David Faure + 1998-2010, Free Software Foundation, Inc + 2004, Jakob Schröter + 2000-2002, KDE e.v + 209-2016, Klaralvdalens Datakonsult AB, a KDAB Group company + 2009-2010, Leo Franchi + 2002-2004, Marc Mutz + 1997, Markus Wuebben + 2000-2003, Meni Livne + 2010-2017, Montel Laurent + 2010, Rosetta Contributors and Canonical Ltd 2010 + 2015-2017, Sandro Knauß + 1998-2017, This_file_is_part_of_KDE + 2010, Thomas McGuire + 2010, Torgny Nyblom + 2007-2017, Volker Krause + author Tobias Koenig +License: LGPL-2+ -Files: messagecomposer/src/attachment/attachmentcontrollerbase.cpp - messagecomposer/src/attachment/attachmentcontrollerbase.h - messagecomposer/src/attachment/attachmentmodel.cpp - messagecomposer/src/attachment/attachmentmodel.h +Files: messagecomposer/autotests/followupreminderselectdatedialogtest.cpp + messagecomposer/autotests/followupreminderselectdatedialogtest.h + messagecomposer/autotests/globalparttest.cpp + messagecomposer/autotests/globalparttest.h + messagecomposer/autotests/infoparttest.cpp + messagecomposer/autotests/infoparttest.h + messagecomposer/autotests/textparttest.cpp + messagecomposer/autotests/textparttest.h + messagecomposer/src/attachment/* + messagecomposer/src/composer-ng/autotests/richtextcomposerngtest.cpp + messagecomposer/src/composer-ng/autotests/richtextcomposerngtest.h + messagecomposer/src/composer-ng/richtextcomposerng.cpp + messagecomposer/src/composer-ng/richtextcomposerng.h + messagecomposer/src/composer-ng/richtextcomposersignatures.cpp + messagecomposer/src/composer-ng/richtextcomposersignatures.h messagecomposer/src/composer/composerlineedit.cpp messagecomposer/src/composer/composerlineedit.h messagecomposer/src/composer/keyresolver.cpp messagecomposer/src/composer/keyresolver.h messagecomposer/src/composer/signaturecontroller.cpp messagecomposer/src/composer/signaturecontroller.h - messagecomposer/src/helper/messagefactory.cpp - messagecomposer/src/helper/messagefactory.h + messagecomposer/src/followupreminder/* + messagecomposer/src/helper/messagefactoryng.cpp + messagecomposer/src/helper/messagefactoryng.h messagecomposer/src/helper/messagehelper.cpp messagecomposer/src/helper/messagehelper.h + messagecomposer/src/imagescaling/autotests/imagescalingtest.cpp + messagecomposer/src/imagescaling/autotests/imagescalingtest.h + messagecomposer/src/imagescaling/imagescaling.cpp + messagecomposer/src/imagescaling/imagescaling.h + messagecomposer/src/imagescaling/imagescalingselectformat.cpp + messagecomposer/src/imagescaling/imagescalingselectformat.h + messagecomposer/src/imagescaling/imagescalingutils.cpp + messagecomposer/src/imagescaling/imagescalingutils.h + messagecomposer/src/imagescaling/imagescalingwidget.cpp + messagecomposer/src/imagescaling/imagescalingwidget.h + messagecomposer/src/imagescaling/tests/imagescaling_gui.cpp + messagecomposer/src/imagescaling/tests/imagescaling_gui.h messagecomposer/src/job/aliasesexpandjob.cpp messagecomposer/src/job/aliasesexpandjob.h messagecomposer/src/job/distributionlistexpandjob.cpp messagecomposer/src/job/distributionlistexpandjob.h messagecomposer/src/job/emailaddressresolvejob.cpp messagecomposer/src/job/emailaddressresolvejob.h + messagecomposer/src/job/savecontactpreferencejob.cpp + messagecomposer/src/job/savecontactpreferencejob.h messagecomposer/src/messagecomposer-version.h.cmake messagecomposer/src/recipient/recipient.cpp messagecomposer/src/recipient/recipient.h - messagecomposer/src/sender/akonadisender.cpp - messagecomposer/src/sender/akonadisender.h - messagecomposer/src/sender/messagesender.h + messagecomposer/src/sender/* messagecomposer/tests/recipientseditortest.cpp messagecomposer/tests/recipientseditortest.h messagecore/src/attachment/attachmentfromfolderjob.cpp messagecore/src/attachment/attachmentfromfolderjob.h messagecore/src/attachment/attachmentfromurlbasejob.cpp messagecore/src/attachment/attachmentfromurlbasejob.h - messagecore/src/helpers/messagehelpers.cpp - messagecore/src/helpers/messagehelpers.h - messagecore/src/helpers/nodehelper.cpp - messagecore/src/helpers/nodehelper.h + messagecore/src/helpers/* messagelist/src/core/aggregation.cpp messagelist/src/core/aggregation.h messagelist/src/core/delegate.cpp @@ -90,67 +118,46 @@ messagelist/src/core/theme.h messagelist/src/core/themedelegate.cpp messagelist/src/core/themedelegate.h + messagelist/src/core/threadingcache.cpp + messagelist/src/core/threadingcache.h messagelist/src/core/view.cpp messagelist/src/core/view.h messagelist/src/core/widgetbase.cpp messagelist/src/core/widgetbase.h + messagelist/src/core/widgets/searchcollectionindexingwarning.cpp + messagelist/src/core/widgets/searchcollectionindexingwarning.h messagelist/src/pane.cpp messagelist/src/pane.h messagelist/src/storagemodel.cpp messagelist/src/storagemodel.h - messagelist/src/utils/aggregationeditor.cpp - messagelist/src/utils/aggregationeditor.h - messagelist/src/utils/comboboxutils.cpp - messagelist/src/utils/comboboxutils.h - messagelist/src/utils/configureaggregationsdialog.cpp - messagelist/src/utils/configureaggregationsdialog.h - messagelist/src/utils/configureaggregationsdialog_p.h - messagelist/src/utils/configurethemesdialog.cpp - messagelist/src/utils/configurethemesdialog.h - messagelist/src/utils/configurethemesdialog_p.h - messagelist/src/utils/optionseteditor.cpp - messagelist/src/utils/optionseteditor.h - messagelist/src/utils/themeeditor.cpp - messagelist/src/utils/themeeditor.h + messagelist/src/utils/* messagelist/src/widget.cpp messagelist/src/widget.h - messageviewer/src/antispam/antispamconfig.cpp - messageviewer/src/antispam/antispamconfig.h - messageviewer/src/antispam/spamheaderanalyzer.cpp - messageviewer/src/antispam/spamheaderanalyzer.h - messageviewer/src/interfaces/bodypart.h - messageviewer/src/interfaces/bodypartformatter.cpp - messageviewer/src/interfaces/bodypartformatter.h - messageviewer/src/interfaces/bodyparturlhandler.h - messageviewer/src/interfaces/htmlwriter.h - messageviewer/src/job/kleojobexecutor.cpp - messageviewer/src/job/kleojobexecutor.h - messageviewer/src/objecttreesourceif.h + messageviewer/src/antispam/* + messageviewer/src/interfaces/* + messageviewer/src/messagepartthemes/default/messagepartrenderbase.cpp + messageviewer/src/messagepartthemes/default/messagepartrendererbase.h + messageviewer/src/messagepartthemes/default/messagepartrendererfactory.cpp + messageviewer/src/messagepartthemes/default/messagepartrendererfactory.h + messageviewer/src/messagepartthemes/default/messagepartrendererfactory_p.h + messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstrategy.cpp + messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstrategy.h + messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleinterface.cpp + messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleinterface.h + messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleplugin.cpp + messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleplugin.h messageviewer/src/ui/settings.ui messageviewer/src/utils/messageviewerutil.cpp messageviewer/src/utils/messageviewerutil.h + messageviewer/src/utils/messageviewerutil_p.h messageviewer/src/utils/mimetype.cpp messageviewer/src/utils/mimetype.h - messageviewer/src/viewer/bodypartformatterbasefactory.cpp - messageviewer/src/viewer/bodypartformatterbasefactory.h - messageviewer/src/viewer/bodypartformatterbasefactory_p.h - messageviewer/src/viewer/bodypartformatterfactory.cpp - messageviewer/src/viewer/bodypartformatterfactory.h - messageviewer/src/viewer/bodypartformatterfactorysingleton.cpp - messageviewer/src/viewer/bodypartformatterfactorysingleton.h - messageviewer/src/viewer/cryptohelper.cpp - messageviewer/src/viewer/cryptohelper.h messageviewer/src/viewer/editorwatcher.cpp messageviewer/src/viewer/editorwatcher.h - messageviewer/src/viewer/enums.h - messageviewer/src/viewer/nodehelper.cpp - messageviewer/src/viewer/nodehelper.h messageviewer/src/viewer/objecttreeemptysource.cpp messageviewer/src/viewer/objecttreeemptysource.h messageviewer/src/viewer/objecttreeviewersource.cpp messageviewer/src/viewer/objecttreeviewersource.h - messageviewer/src/viewer/partnodebodypart.cpp - messageviewer/src/viewer/partnodebodypart.h messageviewer/src/viewer/viewer.cpp messageviewer/src/viewer/viewer.h messageviewer/src/viewer/viewer_p.cpp @@ -161,14 +168,31 @@ messageviewer/src/widgets/configurewidget.h messageviewer/src/widgets/vcardviewer.cpp messageviewer/src/widgets/vcardviewer.h + mimetreeparser/src/bodypartformatterfactory.cpp + mimetreeparser/src/bodypartformatterfactory.h + mimetreeparser/src/bodypartformatterfactory_p.h + mimetreeparser/src/cryptohelper.cpp + mimetreeparser/src/cryptohelper.h + mimetreeparser/src/enums.h + mimetreeparser/src/interfaces/bodypart.cpp + mimetreeparser/src/interfaces/bodypart.h + mimetreeparser/src/interfaces/bodypartformatter.cpp + mimetreeparser/src/interfaces/bodypartformatter.h + mimetreeparser/src/interfaces/htmlwriter.h + mimetreeparser/src/interfaces/objecttreesource.cpp + mimetreeparser/src/interfaces/objecttreesource.h + mimetreeparser/src/job/* + mimetreeparser/src/nodehelper.cpp + mimetreeparser/src/nodehelper.h + mimetreeparser/src/partnodebodypart.cpp + mimetreeparser/src/partnodebodypart.h + mimetreeparser/src/utils/* templateparser/src/customtemplates.cpp templateparser/src/customtemplates.h templateparser/src/customtemplatesmenu.cpp templateparser/src/customtemplatesmenu.h templateparser/src/defaulttemplates.cpp templateparser/src/defaulttemplates.h - templateparser/src/templateparser.cpp - templateparser/src/templateparser.h templateparser/src/templatesconfiguration.cpp templateparser/src/templatesconfiguration.h templateparser/src/templatesinsertcommand.cpp @@ -177,15 +201,17 @@ 2009, Constantin Berzan 2000-2004, Cornelius Schumacher 2002, Daniel Molkentin + 2016, Daniel Vrátil 2006, Dmitry Morozhnikov 2006, Dmitry Morozhnikov + 1989-1991, Free Software Foundation, Inc 2004, Ingo Kloecker 2010, KDAB 2009, Kevin Ottens 2004-2005, Klarälvdalens Datakonsult AB 2010, Klarälvdalens Datakonsult AB, a KDAB Group company - 2009, Klarälvdalens Datakonsult AB, a KDAB Group company - 2011-2016, Laurent Montel + 2009-2016, Klarälvdalens Datakonsult AB, a KDAB Group company + 2011-2017, Laurent Montel 2010, Leo Franchi 2003-2004, Marc Mutz 1997, Markus Wuebben @@ -194,193 +220,123 @@ 2004, Patrick Audley 1998-1999, Preston Brown 2015, Sandro Knauß - 2016, Sandro Knauß - 2011, Sudhendu Kumar + 2016-2017, Sandro Knauß 2008, Szymon Tomasz Stefanek 2009, Thomas McGuire 2005, Till Adam 2004, Till Adam < adam@kde.org > - 2005-2010, Till Adam + 2005, Till Adam 2010, Torgny Nyblom 2007-2010, Volker Krause 2001-2002, the KPGP authors License: GPL-2+ -Files: messagecomposer/autotests/attachmentjobtest.cpp - messagecomposer/autotests/attachmentjobtest.h - messagecomposer/autotests/attachmentvcardfromaddressbookjobtest.cpp - messagecomposer/autotests/attachmentvcardfromaddressbookjobtest.h - messagecomposer/autotests/composertest.cpp - messagecomposer/autotests/composertest.h - messagecomposer/autotests/cryptocomposertest.cpp - messagecomposer/autotests/cryptocomposertest.h - messagecomposer/autotests/cryptofunctions.cpp - messagecomposer/autotests/cryptofunctions.h - messagecomposer/autotests/encryptjobtest.cpp - messagecomposer/autotests/encryptjobtest.h - messagecomposer/autotests/maintextjobtest.cpp - messagecomposer/autotests/maintextjobtest.h - messagecomposer/autotests/messagefactorytest.cpp - messagecomposer/autotests/messagefactorytest.h - messagecomposer/autotests/multipartjobtest.cpp - messagecomposer/autotests/multipartjobtest.h - messagecomposer/autotests/setupenv.cpp - messagecomposer/autotests/setupenv.h - messagecomposer/autotests/signencrypttest.cpp - messagecomposer/autotests/signencrypttest.h - messagecomposer/autotests/signjobtest.cpp - messagecomposer/autotests/signjobtest.h - messagecomposer/autotests/singlepartjobtest.cpp - messagecomposer/autotests/singlepartjobtest.h - messagecomposer/autotests/skeletonmessagejobtest.cpp - messagecomposer/autotests/skeletonmessagejobtest.h - messagecomposer/autotests/testcsshelper.h - messagecomposer/autotests/testhtmlwriter.h - messagecomposer/autotests/utiltest.cpp - messagecomposer/autotests/utiltest.h - messagecomposer/src/composer/composer.cpp - messagecomposer/src/composer/composer.h - messagecomposer/src/composer/composerviewbase.cpp - messagecomposer/src/composer/composerviewbase.h - messagecomposer/src/job/abstractencryptjob.h - messagecomposer/src/job/attachmentjob.cpp - messagecomposer/src/job/attachmentjob.h - messagecomposer/src/job/contentjobbase.cpp - messagecomposer/src/job/contentjobbase.h - messagecomposer/src/job/contentjobbase_p.h - messagecomposer/src/job/encryptjob.cpp - messagecomposer/src/job/encryptjob.h - messagecomposer/src/job/jobbase.cpp - messagecomposer/src/job/jobbase.h - messagecomposer/src/job/jobbase_p.h - messagecomposer/src/job/maintextjob.cpp - messagecomposer/src/job/maintextjob.h - messagecomposer/src/job/multipartjob.cpp - messagecomposer/src/job/multipartjob.h - messagecomposer/src/job/signencryptjob.cpp - messagecomposer/src/job/signencryptjob.h - messagecomposer/src/job/signjob.cpp - messagecomposer/src/job/signjob.h - messagecomposer/src/job/singlepartjob.cpp - messagecomposer/src/job/singlepartjob.h - messagecomposer/src/job/skeletonmessagejob.cpp - messagecomposer/src/job/skeletonmessagejob.h - messagecomposer/src/job/transparentjob.cpp - messagecomposer/src/job/transparentjob.h - messagecomposer/src/part/globalpart.cpp - messagecomposer/src/part/globalpart.h - messagecomposer/src/part/infopart.cpp - messagecomposer/src/part/infopart.h - messagecomposer/src/part/messagepart.cpp - messagecomposer/src/part/messagepart.h - messagecomposer/src/part/textpart.cpp - messagecomposer/src/part/textpart.h - messagecomposer/src/recipient/distributionlistdialog.cpp - messagecomposer/src/recipient/distributionlistdialog.h - messagecomposer/src/recipient/kwindowpositioner.cpp - messagecomposer/src/recipient/kwindowpositioner.h - messagecomposer/src/recipient/recipientline.cpp - messagecomposer/src/recipient/recipientline.h - messagecomposer/src/recipient/recipientseditor.cpp - messagecomposer/src/recipient/recipientseditor.h - messagecomposer/src/recipient/recipientseditorsidewidget.cpp - messagecomposer/src/recipient/recipientseditorsidewidget.h - messagecomposer/src/recipient/recipientspicker.cpp - messagecomposer/src/recipient/recipientspicker.h - messagecomposer/src/utils/util.cpp - messagecomposer/src/utils/util.h - messagecomposer/tests/testcomposerlineedit.cpp - messagecore/autotests/attachmentcompressjobtest.cpp - messagecore/autotests/attachmentcompressjobtest.h - messagecore/autotests/attachmentfrommimecontentjobtest.cpp - messagecore/autotests/attachmentfrommimecontentjobtest.h - messagecore/autotests/attachmentfromurljobtest.cpp - messagecore/autotests/attachmentfromurljobtest.h - messagecore/autotests/attachmentparttest.cpp - messagecore/autotests/attachmentparttest.h - messagecore/autotests/attachmentpropertiesdialogtest.cpp - messagecore/autotests/attachmentpropertiesdialogtest.h - messagecore/src/attachment/attachmentcompressjob.cpp - messagecore/src/attachment/attachmentcompressjob.h - messagecore/src/attachment/attachmentfrommimecontentjob.cpp - messagecore/src/attachment/attachmentfrommimecontentjob.h - messagecore/src/attachment/attachmentfromurljob.cpp - messagecore/src/attachment/attachmentfromurljob.h - messagecore/src/attachment/attachmentloadjob.cpp - messagecore/src/attachment/attachmentloadjob.h - messagecore/src/attachment/attachmentpart.cpp - messagecore/src/attachment/attachmentpart.h - messagecore/src/attachment/attachmentpropertiesdialog.cpp - messagecore/src/attachment/attachmentpropertiesdialog.h - messagelist/autotests/itemsizetest.cpp - messagelist/src/core/widgets/quicksearchline.cpp - messagelist/src/core/widgets/quicksearchline.h - messageviewer/autotests/attachmenttest.cpp - messageviewer/autotests/converthtmltoplaintexttest.cpp - messageviewer/autotests/converthtmltoplaintexttest.h - messageviewer/autotests/csshelpertest.cpp - messageviewer/autotests/csshelpertest.h - messageviewer/autotests/messagedisplayformatattributetest.cpp - messageviewer/autotests/messagedisplayformatattributetest.h - messageviewer/autotests/rendertest.cpp - messageviewer/autotests/setupenv.cpp - messageviewer/autotests/setupenv.h - messageviewer/autotests/unencryptedmessagetest.cpp - messageviewer/autotests/util.cpp - messageviewer/autotests/util.h - messageviewer/src/findbar/findbarbase.cpp - messageviewer/src/findbar/findbarbase.h - messageviewer/src/findbar/findbarsourceview.cpp - messageviewer/src/findbar/findbarsourceview.h - messageviewer/src/findbar/findbarwebengineview.cpp - messageviewer/src/findbar/findbarwebengineview.h - messageviewer/src/findbar/findbarwebview.cpp - messageviewer/src/findbar/findbarwebview.h - messageviewer/src/header/contactdisplaymessagememento.cpp - messageviewer/src/header/contactdisplaymessagememento.h - messageviewer/src/header/kxface.cpp - messageviewer/src/header/kxface.h - messageviewer/src/htmlwriter/queuehtmlwriter.cpp - messageviewer/src/htmlwriter/queuehtmlwriter.h - messageviewer/src/scamdetection/autotests/scamattributetest.cpp - messageviewer/src/scamdetection/autotests/scamattributetest.h - messageviewer/src/utils/markmessagereadhandler.cpp - messageviewer/src/utils/markmessagereadhandler.h - messageviewer/src/viewer/converthtmltoplaintext.cpp - messageviewer/src/viewer/converthtmltoplaintext.h - messageviewer/src/viewer/messagedisplayformatattribute.cpp - messageviewer/src/viewer/messagedisplayformatattribute.h - messageviewer/src/viewer/messagepart.cpp - messageviewer/src/viewer/messagepart.h - messageviewer/src/viewer/mimeparttree/mimetreemodel.cpp - messageviewer/src/viewer/mimeparttree/mimetreemodel.h - messageviewer/src/viewer/pluginloader.h - messageviewer/src/viewer/pluginloaderbase.cpp - messageviewer/src/viewer/pluginloaderbase.h - templateparser/src/templatestextedit.cpp - templateparser/src/templatestextedit.h -Copyright: 2010, Casey Link - 2009, Constantin Berzan - 2004-2005, Cornelius Schumacher - 2004, Jakob Schröter - 2010, Klaralvdalens Datakonsult AB, a KDAB Group company - 2009-2010, Klaralvdalens Datakonsult AB, a KDAB Group company - 2010, Klarälvdalens Datakonsult AB - 2009-2010, Leo Franchi - 2002-2004, Marc Mutz - 1997, Markus Wuebben - 2010-2016, Montel Laurent - 2015-2016, Sandro Knauß - 2010, Thomas McGuire - 2010, Torgny Nyblom - 2007-2015, Volker Krause -License: LGPL-2+ +Files: messagecomposer/autotests/composerviewbasetest.cpp + messagecomposer/autotests/composerviewbasetest.h + messagecomposer/src/job/attachmentvcardfromaddressbookjob.cpp + messagecomposer/src/job/attachmentvcardfromaddressbookjob.h + messagecomposer/src/settings/messagecomposersettings.cpp + messagecomposer/src/settings/messagecomposersettings.h + messagecomposer/src/utils/kleo_util.h + messagecore/autotests/attachmentupdatejobtest.cpp + messagecore/autotests/attachmentupdatejobtest.h + messagecore/autotests/mailinglisttest.cpp + messagecore/autotests/mailinglisttest.h + messagecore/src/misc/imagecollector.cpp + messagecore/src/misc/imagecollector.h + messagelist/autotests/quicksearchwarningtest.cpp + messagelist/autotests/quicksearchwarningtest.h + messagelist/autotests/searchlinestatustest.cpp + messagelist/autotests/searchlinestatustest.h + messagelist/src/core/widgets/quicksearchwarning.cpp + messagelist/src/core/widgets/quicksearchwarning.h + messagelist/src/core/widgets/searchlinestatus.cpp + messagelist/src/core/widgets/searchlinestatus.h + messagelist/src/messagelistutil.cpp + messagelist/src/messagelistutil.h + messagelist/src/messagelistutil_p.h + messageviewer/autotests/mailsourceviewtextbrowserwidgettest.cpp + messageviewer/autotests/mailsourceviewtextbrowserwidgettest.h + messageviewer/autotests/viewergrantleethemesupporttest.cpp + messageviewer/autotests/viewergrantleethemesupporttest.h + messageviewer/autotests/viewertest.cpp + messageviewer/autotests/viewertest.h + messageviewer/autotests/zoomactionmenutest.cpp + messageviewer/autotests/zoomactionmenutest.h + messageviewer/src/header/headerstrategy.cpp + messageviewer/src/header/headerstrategy.h + messageviewer/src/header/headerstyle.cpp + messageviewer/src/header/headerstyle.h + messageviewer/src/header/richheaderstrategy.cpp + messageviewer/src/header/richheaderstrategy.h + messageviewer/src/htmlwriter/autotests/webengineembedparttest.cpp + messageviewer/src/htmlwriter/autotests/webengineembedparttest.h + messageviewer/src/htmlwriter/autotests/webengineparthtmlwritertest.cpp + messageviewer/src/htmlwriter/autotests/webengineparthtmlwritertest.h + messageviewer/src/htmlwriter/webengineembedpart.cpp + messageviewer/src/htmlwriter/webengineembedpart.h + messageviewer/src/htmlwriter/webengineparthtmlwriter.cpp + messageviewer/src/htmlwriter/webengineparthtmlwriter.h + messageviewer/src/interfaces/urlhandler.h + messageviewer/src/settings/messageviewersettings.cpp + messageviewer/src/settings/messageviewersettings.h + messageviewer/src/viewer/csshelper.cpp + messageviewer/src/viewer/csshelper.h + messageviewer/src/viewer/csshelperbase.cpp + messageviewer/src/viewer/csshelperbase.h + messageviewer/src/viewer/stl_util.h + messageviewer/src/viewer/urlhandlermanager.cpp + messageviewer/src/viewer/urlhandlermanager.h + messageviewer/src/widgets/htmlstatusbar.cpp + messageviewer/src/widgets/htmlstatusbar.h + messageviewer/src/widgets/mailsourceviewtextbrowserwidget.cpp + messageviewer/src/widgets/mailsourceviewtextbrowserwidget.h + messageviewer/src/widgets/printingsettings.cpp + messageviewer/src/widgets/printingsettings.h + mimetreeparser/autotests/testcsshelper.cpp + mimetreeparser/autotests/testcsshelper.h + mimetreeparser/src/attachmentstrategy.cpp + mimetreeparser/src/attachmentstrategy.h + mimetreeparser/src/bodypartformatter.cpp + mimetreeparser/src/htmlwriter/filehtmlwriter.cpp + mimetreeparser/src/htmlwriter/filehtmlwriter.h + mimetreeparser/src/memento/* + mimetreeparser/src/objecttreeparser.cpp + mimetreeparser/src/objecttreeparser.h + mimetreeparser/src/partmetadata.h + templateparser/autotests/customtemplatesmenutest.cpp + templateparser/autotests/customtemplatesmenutest.h + templateparser/src/templatestexteditor.cpp + templateparser/src/templatestexteditor.h + templateparser/src/templatesutil.cpp + templateparser/src/templatesutil.h + templateparser/src/templatesutil_p.h + templateparser/tests/templateconfigurewidget_gui.cpp + templateparser/tests/templateconfigurewidget_gui.h + templateparser/tests/templateeditor_gui.cpp + templateparser/tests/templateeditor_gui.h + templateparser/tests/templateparseremailrequester.cpp + templateparser/tests/templateparseremailrequester.h + webengineviewer/src/data/* +Copyright: 2011, AUTHORS.txt (http://jqueryui.com/about) + 2009, Andras Mantia + 2002-2003, Carsten Pfeiffer + 2005, David Faure + 2002, Ingo Kloecker + 2002-2003, Karl-Heinz Zimmer + 2002-2009, Klarälvdalens Datakonsult AB, a KDAB Group company + 2003-2004, Marc Mutz + 2011-2017, Montel Laurent + 2013, Sandro Knauß + 2015, Sandro Knauß + 2011, Torgny Nyblom + 2003, Zack Rusin +License: GPL-2 Files: messagecomposer/src/job/attachmentfrompublickeyjob.cpp messagecomposer/src/job/attachmentfrompublickeyjob.h messagecore/autotests/stringutiltest.h - messagecore/src/utils/stringutil.cpp - messagecore/src/utils/stringutil.h + messagecore/src/utils/* messagelist/src/utils/aggregationcombobox.cpp messagelist/src/utils/aggregationcombobox.h messagelist/src/utils/aggregationcombobox_p.h @@ -391,76 +347,41 @@ messagelist/src/utils/themecombobox_p.h messagelist/src/utils/themeconfigbutton.cpp messagelist/src/utils/themeconfigbutton.h - messageviewer/autotests/cryptohelpertest.cpp - messageviewer/autotests/cryptohelpertest.h - messageviewer/autotests/nodehelpertest.cpp - messageviewer/autotests/nodehelpertest.h - messageviewer/autotests/objecttreeparsertest.cpp - messageviewer/autotests/objecttreeparsertest.h - messageviewer/src/adblock/adblockelementhiding.cpp - messageviewer/src/adblock/adblockelementhiding.h - messageviewer/src/adblock/adblockmanager.cpp - messageviewer/src/adblock/adblockmanager.h - messageviewer/src/adblock/adblockrulefallbackimpl.cpp - messageviewer/src/adblock/adblockrulefallbackimpl.h - messageviewer/src/adblock/adblockruleimpl.h - messageviewer/src/adblock/common/adblocksettingwidget.cpp - messageviewer/src/adblock/common/adblocksettingwidget.h - messageviewer/src/adblock/common/matcher/adblockhostmatcher.cpp - messageviewer/src/adblock/common/matcher/adblockhostmatcher.h - messageviewer/src/adblock/common/matcher/adblockrule.cpp - messageviewer/src/adblock/common/matcher/adblockrule.h - messageviewer/src/adblock/common/matcher/adblockrulenullimpl.cpp - messageviewer/src/adblock/common/matcher/adblockrulenullimpl.h - messageviewer/src/adblock/common/matcher/adblockruletextmatchimpl.cpp - messageviewer/src/adblock/common/matcher/adblockruletextmatchimpl.h - messageviewer/src/viewer/webview/mailwebview.cpp - messageviewer/src/viewer/webview/mailwebview.h + messageviewer/src/messagepartthemes/default/autotests/objecttreeparsertest.cpp + messageviewer/src/messagepartthemes/default/autotests/objecttreeparsertest.h + messageviewer/src/messagepartthemes/default/autotests/quotehtmltest.cpp + messageviewer/src/messagepartthemes/default/autotests/quotehtmltest.h messageviewer/tests/viewertest_gui.cpp - templateparser/autotests/templateparsertest.cpp - templateparser/autotests/templateparsertest.h -Copyright: 2010-2013, Andrea Diamantini - 2009, Benjamin C. Meyer - 2010-2011, Benjamin Poulain - 2009, Constantin Berzan + mimetreeparser/autotests/cryptohelpertest.cpp + mimetreeparser/autotests/cryptohelpertest.h + mimetreeparser/autotests/nodehelpertest.cpp + mimetreeparser/autotests/nodehelpertest.h +Copyright: 2009, Constantin Berzan 2010, David Faure 2009, James Bendig - 2013-2016, Laurent Montel - 2013-2016, Montel Laurent - 2013, Paul Rohrbach + 2016-2017, Laurent Montel 2015, Sandro Knauß 2015, Sandro Knauß - 2011, Sudhendu Kumar - 2009-2010, Thomas McGuire - 2009, Zsombor Gegesy + 2016, Sandro Knauß + 2009, Thomas McGuire License: GPL-2+3+KDEeV - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License or (at your option) version 3 or any later version - accepted by the membership of KDE e.V. (or its successor approved - by the membership of KDE e.V.), which shall act as a proxy - defined in Section 14 of version 3 of the license. - . - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - . - The complete text of the GNU General Public License version 2 can be found in - `/usr/share/common-licenses/GPL-2', likewise, the complete text of the GNU - General Public License version 3 can be found in - `/usr/share/common-licenses/GPL-3'. + +Files: po/ca/libmessagecomposer.po + po/ca/libmessagecore.po + po/ca/libtemplateparser.po + po/ca@valencia/libmessagecomposer.po + po/ca@valencia/libmessagecore.po + po/ca@valencia/libtemplateparser.po + po/uk/* +Copyright: 2009-2017, This_file_is_part_of_KDE +License: LGPL-2.1+3+KDEeV Files: messagecomposer/src/job/inserttextfilejob.cpp messagecomposer/src/job/inserttextfilejob.h messagecore/src/messagecoreutil.cpp messagecore/src/messagecoreutil.h - messageviewer/src/viewer/webview/networkaccessmanager.cpp - messageviewer/src/viewer/webview/networkaccessmanager.h Copyright: 2015, Daniel Vrátil - 2009, Dawit Alemayehu - 2013-2016, Montel Laurent + 1991-1999, Free Software Foundation, Inc 2010, Thomas McGuire License: LGPL-2.1+ @@ -471,21 +392,13 @@ messageviewer/src/utils/iconnamecache.h Copyright: 2009-2010, Thomas McGuire License: LGPL-2+3+KDEeV - This library is free software; you can redistribute it and/or modify - it under the terms of the GNU Library General Public License as published - by the Free Software Foundation; either version 2 of the License or - ( at your option ) version 3 or, at the discretion of KDE e.V. - ( which shall act as a proxy as in section 14 of the GPLv3 ), any later version. - . - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - . - The complete text of the GNU Library General Public License version 2 can be - found in `/usr/share/common-licenses/LGPL-2', likewise, the complete text of - the GNU Lesser General Public License version 3 can be found in - `/usr/share/common-licenses/LGPL-3'. + +Files: messageviewer/src/messagepartthemes/default/autotests/rendertest.h + messageviewer/src/messagepartthemes/default/autotests/showonlymimeparttest.cpp + messageviewer/src/messagepartthemes/default/autotests/showonlymimeparttest.h +Copyright: 2016-2017, Sandro Knauß + 2010, Volker Krause +License: GPL-2+KDEeV Files: messagecomposer/autotests/qtest_messagecomposer.h messagecore/autotests/qtest_messagecore.h @@ -493,47 +406,50 @@ 2009, Volker Krause License: LGPL-2 -Files: cmake/modules/kdepim_add_gpg_crypto_test.cmake - cmake/modules/kdepim_generate_crypto_test_wrapper.cmake +Files: cmake/* Copyright: 2006, Alexander Neundorf 2013, Sandro Knauß License: BSD-3-clause -Files: messageviewer/src/webengine/webhittestresult.cpp - messageviewer/src/webengine/webhittestresult.h +Files: webengineviewer/src/webhittestresult.cpp + webengineviewer/src/webhittestresult.h Copyright: 2015, David Rosca - 2016, Montel Laurent -License: GPL-2_and_GPL-3+ - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License, version 2, as - published by the Free Software Foundation. - . - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - . - -- - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - . - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - . - -- - The complete text of the GNU General Public License version 2 can be found in - `/usr/share/common-licenses/GPL-2', likewise, the complete text of the GNU - General Public License version 3 can be found in - `/usr/share/common-licenses/GPL-3'. + 2016-2017, Laurent Montel +License: GPL-2+ or LGPL-2+ Files: messageviewer/src/widgets/invitationsettings.cpp messageviewer/src/widgets/invitationsettings.h -Copyright: no copyright claimed -License: BSL-1.0 +License: BSL-1 + +Files: debian/* +Copyright: 2016, Maximiliano Curia +License: LGPL-2+ + +License: BSD-3-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSL-1 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, @@ -556,32 +472,6 @@ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -Files: messageviewer/autotests/rendertest.h -Copyright: 2010, Volker Krause - 2016, sandro Knauß -License: GPL-2+KDEeV - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License or (at your option) any later version - accepted by the membership of KDE e.V. (or its successor approved - by the membership of KDE e.V.), which shall act as a proxy - defined in Section 14 of version 3 of the license. - . - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - . - The complete text of the GNU General Public License version 2 can be found in - `/usr/share/common-licenses/GPL-2', likewise, the complete text of the GNU - General Public License version 3 can be found in - `/usr/share/common-licenses/GPL-3'. - -Files: debian/* -Copyright: 2016, Maximiliano Curia -License: LGPL-2+ - License: GPL-2 This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -609,6 +499,42 @@ The complete text of the GNU General Public License version 2 can be found in `/usr/share/common-licenses/GPL-2'. +License: GPL-2+3+KDEeV + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + The complete text of the GNU General Public License version 2 + can be found in `/usr/share/common-licenses/GPL-2', likewise, + the complete text of the GNU General Public License version 3 + can be found in `/usr/share/common-licenses/GPL-3'. + +License: GPL-2+KDEeV + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + The complete text of the GNU General Public License version 2 + can be found in `/usr/share/common-licenses/GPL-2'. + License: LGPL-2 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -636,6 +562,23 @@ The complete text of the GNU Library General Public License version 2 can be found in `/usr/share/common-licenses/LGPL-2'. +License: LGPL-2+3+KDEeV + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2 of the License or + ( at your option ) version 3 or, at the discretion of KDE e.V. + ( which shall act as a proxy as in section 14 of the GPLv3 ), any later version + . + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + . + The complete text of the GNU Library General Public License version 2 + can be found in `/usr/share/common-licenses/LGPL-2', likewise, + the complete text of the GNU Lesser General Public License version 3 + can be found in `/usr/share/common-licenses/LGPL-3'. + License: LGPL-2.1+ This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -650,26 +593,11 @@ The complete text of the GNU Lesser General Public License version 2.1 can be found in `/usr/share/common-licenses/LGPL-2.1'. -License: BSD-3-clause - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: +License: LGPL-2.1+3+KDEeV + This file is distributed under the license LGPL version 2.1 or + version 3 or later versions approved by the membership of KDE e.V. . - 1. Redistributions of source code must retain the copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - . - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + The complete text of the GNU Lesser General Public License version 2.1 + can be found in `/usr/share/common-licenses/LGPL-2.1', likewise, + the complete text of the GNU Lesser General Public License version 3 + can be found in `/usr/share/common-licenses/LGPL-3'. diff -Nru kf5-messagelib-17.12.3/debian/libkf5messagecomposer5abi2.symbols kf5-messagelib-18.04.3/debian/libkf5messagecomposer5abi2.symbols --- kf5-messagelib-17.12.3/debian/libkf5messagecomposer5abi2.symbols 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/libkf5messagecomposer5abi2.symbols 2018-08-26 12:21:48.000000000 +0000 @@ -1,12 +1,8 @@ -# SymbolsHelper-Confirmed: 4:17.12.3 amd64 arm64 armhf i386 +# SymbolsHelper-Confirmed: 4:18.04.3 amd64 arm64 armhf i386 libKF5MessageComposer.so.5abi2 libkf5messagecomposer5abi2 #MINVER# ABI_5_2@ABI_5_2 4:16.12.3+git20170331 _ZN13MessageHelper10initHeaderERK14QSharedPointerIN5KMime7MessageEEPKN19KIdentityManagement15IdentityManagerEj@ABI_5_2 4:16.12.3+git20170331 _ZN13MessageHelper16extractAddrSpecsERK14QSharedPointerIN5KMime7MessageEERK10QByteArray@ABI_5_2 4:16.12.3+git20170331 - _ZN15MessageComposer10ActionTypeC1EP7QActionNS0_4TypeE@ABI_5_2 4:16.12.3+git20170331 - _ZN15MessageComposer10ActionTypeC1Ev@ABI_5_2 4:16.12.3+git20170331 - _ZN15MessageComposer10ActionTypeC2EP7QActionNS0_4TypeE@ABI_5_2 4:16.12.3+git20170331 - _ZN15MessageComposer10ActionTypeC2Ev@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer10EncryptJob10setContentEPN5KMime7ContentE@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer10EncryptJob11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer10EncryptJob11qt_metacastEPKc@ABI_5_2 4:16.12.3+git20170331 @@ -169,7 +165,7 @@ _ZN15MessageComposer15AttachmentModel14encryptEnabledEb@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer15AttachmentModel14setSignEnabledEb@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer15AttachmentModel15setSignSelectedEb@ABI_5_2 4:16.12.3+git20170331 - _ZN15MessageComposer15AttachmentModel16removeAttachmentE14QSharedPointerIN11MessageCore14AttachmentPartEE@ABI_5_2 4:16.12.3+git20170331 + _ZN15MessageComposer15AttachmentModel16removeAttachmentERK14QSharedPointerIN11MessageCore14AttachmentPartEE@ABI_5_2 4:18.03.60+git20171130 _ZN15MessageComposer15AttachmentModel16staticMetaObjectE@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer15AttachmentModel16updateAttachmentE14QSharedPointerIN11MessageCore14AttachmentPartEE@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer15AttachmentModel17attachmentRemovedE14QSharedPointerIN11MessageCore14AttachmentPartEE@ABI_5_2 4:16.12.3+git20170331 @@ -257,7 +253,7 @@ _ZN15MessageComposer16ComposerViewBase13clearFollowUpEv@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer16ComposerViewBase13collectImagesEPN5KMime7ContentE@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer16ComposerViewBase13identityComboEv@ABI_5_2 4:16.12.3+git20170331 - _ZN15MessageComposer16ComposerViewBase13setDictionaryEPN6Sonnet18DictionaryComboBoxE@ABI_5_2 4:16.12.3+git20170331 + _ZN15MessageComposer16ComposerViewBase13setDictionaryEPNS_18DictionaryComboBoxE@ABI_5_2 4:18.03.60+git20171231 _ZN15MessageComposer16ComposerViewBase14cleanEmailListERK11QStringList@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer16ComposerViewBase14fillGlobalPartEPNS_10GlobalPartE@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer16ComposerViewBase14updateAutoSaveEv@ABI_5_2 4:16.12.3+git20170331 @@ -362,6 +358,11 @@ _ZN15MessageComposer16MessageFactoryNGD0Ev@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer16MessageFactoryNGD1Ev@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer16MessageFactoryNGD2Ev@ABI_5_2 4:16.12.3+git20170331 + _ZN15MessageComposer16PluginActionType18actionXmlExtensionENS0_4TypeE@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer16PluginActionTypeC1EP7QActionNS0_4TypeE@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer16PluginActionTypeC1Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer16PluginActionTypeC2EP7QActionNS0_4TypeE@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer16PluginActionTypeC2Ev@ABI_5_2 4:18.03.80+git20180326 _ZN15MessageComposer16PluginEditorInit11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:17.07.70+git20170516 _ZN15MessageComposer16PluginEditorInit11qt_metacastEPKc@ABI_5_2 4:17.07.70+git20170516 _ZN15MessageComposer16PluginEditorInit12setIsEnabledEb@ABI_5_2 4:17.07.70+git20170516 @@ -417,6 +418,21 @@ _ZN15MessageComposer17RecipientLineEdit8deleteMeEv@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer17RecipientLineEditC1EP7QWidget@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer17RecipientLineEditC2EP7QWidget@ABI_5_2 4:16.12.3+git20170331 + _ZN15MessageComposer18DictionaryComboBox11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:18.03.60+git20171231 + _ZN15MessageComposer18DictionaryComboBox11qt_metacastEPKc@ABI_5_2 4:18.03.60+git20171231 + _ZN15MessageComposer18DictionaryComboBox11reloadComboEv@ABI_5_2 4:18.03.60+git20171231 + _ZN15MessageComposer18DictionaryComboBox16staticMetaObjectE@ABI_5_2 4:18.03.60+git20171231 + _ZN15MessageComposer18DictionaryComboBox17dictionaryChangedERK7QString@ABI_5_2 4:18.03.60+git20171231 + _ZN15MessageComposer18DictionaryComboBox19assignByDictionnaryERK7QString@ABI_5_2 4:18.03.60+git20171231 + _ZN15MessageComposer18DictionaryComboBox21assignDictionnaryNameERK7QString@ABI_5_2 4:18.03.60+git20171231 + _ZN15MessageComposer18DictionaryComboBox21dictionaryNameChangedERK7QString@ABI_5_2 4:18.03.60+git20171231 + _ZN15MessageComposer18DictionaryComboBox22setCurrentByDictionaryERK7QString@ABI_5_2 4:18.03.60+git20171231 + _ZN15MessageComposer18DictionaryComboBox26setCurrentByDictionaryNameERK7QString@ABI_5_2 4:18.03.60+git20171231 + _ZN15MessageComposer18DictionaryComboBoxC1EP7QWidget@ABI_5_2 4:18.03.60+git20171231 + _ZN15MessageComposer18DictionaryComboBoxC2EP7QWidget@ABI_5_2 4:18.03.60+git20171231 + _ZN15MessageComposer18DictionaryComboBoxD0Ev@ABI_5_2 4:18.03.60+git20171231 + _ZN15MessageComposer18DictionaryComboBoxD1Ev@ABI_5_2 4:18.03.60+git20171231 + _ZN15MessageComposer18DictionaryComboBoxD2Ev@ABI_5_2 4:18.03.60+git20171231 _ZN15MessageComposer18ImageScalingWidget10loadConfigEv@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer18ImageScalingWidget11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer18ImageScalingWidget11qt_metacastEPKc@ABI_5_2 4:16.12.3+git20170331 @@ -441,6 +457,7 @@ _ZN15MessageComposer18RichTextComposerNg11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer18RichTextComposerNg11qt_metacastEPKc@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer18RichTextComposerNg15insertSignatureERKN19KIdentityManagement9SignatureENS2_9PlacementE6QFlagsINS2_13AddedTextFlagEE@ABI_5_2 4:16.12.3+git20170331 + _ZN15MessageComposer18RichTextComposerNg16convertPlainTextEPNS_8TextPartE@ABI_5_2 4:18.03.80+git20180326 _ZN15MessageComposer18RichTextComposerNg16staticMetaObjectE@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer18RichTextComposerNg17setAutocorrectionEPN9PimCommon14AutoCorrectionE@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer18RichTextComposerNg19forceAutoCorrectionEb@ABI_5_2 4:16.12.3+git20170331 @@ -503,11 +520,11 @@ _ZN15MessageComposer20RecipientLineFactoryC2EP7QObject@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer21PluginEditorInterface11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer21PluginEditorInterface11qt_metacastEPKc@ABI_5_2 4:16.12.3+git20170331 - _ZN15MessageComposer21PluginEditorInterface13setActionTypeENS_10ActionTypeE@ABI_5_2 4:16.12.3+git20170331 + _ZN15MessageComposer21PluginEditorInterface13setActionTypeENS_16PluginActionTypeE@ABI_5_2 4:18.03.80+git20180326 _ZN15MessageComposer21PluginEditorInterface16staticMetaObjectE@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer21PluginEditorInterface17setRichTextEditorEPN12KPIMTextEdit14RichTextEditorE@ABI_5_2 4:16.12.3+git20170331 - _ZN15MessageComposer21PluginEditorInterface18actionXmlExtensionENS_10ActionType4TypeE@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer21PluginEditorInterface19emitPluginActivatedEPS0_@ABI_5_2 4:16.12.3+git20170331 + _ZN15MessageComposer21PluginEditorInterface19setNeedSelectedTextEb@ABI_5_2 4:18.03.60+git20171231 _ZN15MessageComposer21PluginEditorInterfaceC1EP7QObject@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer21PluginEditorInterfaceC2EP7QObject@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer21PluginEditorInterfaceD0Ev@ABI_5_2 4:16.12.3+git20170331 @@ -540,6 +557,18 @@ _ZN15MessageComposer23MessageComposerSettingsD0Ev@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer23MessageComposerSettingsD1Ev@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer23MessageComposerSettingsD2Ev@ABI_5_2 4:16.12.3+git20170331 + _ZN15MessageComposer23PluginEditorConvertText11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer23PluginEditorConvertText11qt_metacastEPKc@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer23PluginEditorConvertText12setIsEnabledEb@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer23PluginEditorConvertText13configChangedEv@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer23PluginEditorConvertText16staticMetaObjectE@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer23PluginEditorConvertText17emitConfigChangedEv@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer23PluginEditorConvertText19showConfigureDialogEP7QWidget@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer23PluginEditorConvertTextC1EP7QObject@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer23PluginEditorConvertTextC2EP7QObject@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer23PluginEditorConvertTextD0Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer23PluginEditorConvertTextD1Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer23PluginEditorConvertTextD2Ev@ABI_5_2 4:18.03.80+git20180326 _ZN15MessageComposer23PluginEditorInitManager11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:17.07.70+git20170516 _ZN15MessageComposer23PluginEditorInitManager11qt_metacastEPKc@ABI_5_2 4:17.07.70+git20170516 _ZN15MessageComposer23PluginEditorInitManager16staticMetaObjectE@ABI_5_2 4:17.07.70+git20170516 @@ -673,6 +702,16 @@ _ZN15MessageComposer27PluginEditorCheckBeforeSendD0Ev@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer27PluginEditorCheckBeforeSendD1Ev@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer27PluginEditorCheckBeforeSendD2Ev@ABI_5_2 4:16.12.3+git20170331 + _ZN15MessageComposer30PluginEditorConvertTextManager11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer30PluginEditorConvertTextManager11qt_metacastEPKc@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer30PluginEditorConvertTextManager16staticMetaObjectE@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer30PluginEditorConvertTextManager20pluginFromIdentifierERK7QString@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer30PluginEditorConvertTextManager4selfEv@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer30PluginEditorConvertTextManagerC1EP7QObject@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer30PluginEditorConvertTextManagerC2EP7QObject@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer30PluginEditorConvertTextManagerD0Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer30PluginEditorConvertTextManagerD1Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer30PluginEditorConvertTextManagerD2Ev@ABI_5_2 4:18.03.80+git20180326 _ZN15MessageComposer31PluginEditorInitConfigureWidget11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:17.07.70+git20170516 _ZN15MessageComposer31PluginEditorInitConfigureWidget11qt_metacastEPKc@ABI_5_2 4:17.07.70+git20170516 _ZN15MessageComposer31PluginEditorInitConfigureWidget16configureChangedEv@ABI_5_2 4:17.07.70+git20170516 @@ -693,6 +732,27 @@ _ZN15MessageComposer32FollowUpReminderSelectDateDialogD0Ev@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer32FollowUpReminderSelectDateDialogD1Ev@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer32FollowUpReminderSelectDateDialogD2Ev@ABI_5_2 4:16.12.3+git20170331 + _ZN15MessageComposer32PluginEditorConvertTextInterface11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterface11qt_metacastEPKc@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterface12createActionEP17KActionCollection@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterface12reformatTextEv@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterface12reloadConfigEv@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterface13setActionTypeENS_16PluginActionTypeE@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterface14setInitialDataERKNS_32PluginEditorConverterInitialDataE@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterface14textReformatedEv@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterface15setParentWidgetEP7QWidget@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterface16staticMetaObjectE@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterface17setRichTextEditorEPN12KPIMTextEdit16RichTextComposerE@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterface23setBeforeConvertingDataERKNS_41PluginEditorConverterBeforeConvertingDataE@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterfaceC1EP7QObject@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterfaceC2EP7QObject@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterfaceD0Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterfaceD1Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConvertTextInterfaceD2Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConverterInitialData13setNewMessageEb@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConverterInitialData9setMewMsgERK14QSharedPointerIN5KMime7MessageEE@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConverterInitialDataC1Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer32PluginEditorConverterInitialDataC2Ev@ABI_5_2 4:18.03.80+git20180326 _ZN15MessageComposer33AttachmentVcardFromAddressBookJob11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer33AttachmentVcardFromAddressBookJob11qt_metacastEPKc@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer33AttachmentVcardFromAddressBookJob13addAttachmentERK10QByteArrayRK7QString@ABI_5_2 4:16.12.3+git20170331 @@ -743,6 +803,19 @@ _ZN15MessageComposer36PluginEditorCheckBeforeSendInterfaceD0Ev@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer36PluginEditorCheckBeforeSendInterfaceD1Ev@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer36PluginEditorCheckBeforeSendInterfaceD2Ev@ABI_5_2 4:16.12.3+git20170331 + _ZN15MessageComposer38PluginEditorConvertTextConfigureWidget11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer38PluginEditorConvertTextConfigureWidget11qt_metacastEPKc@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer38PluginEditorConvertTextConfigureWidget16configureChangedEv@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer38PluginEditorConvertTextConfigureWidget16staticMetaObjectE@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer38PluginEditorConvertTextConfigureWidgetC1EP7QWidget@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer38PluginEditorConvertTextConfigureWidgetC2EP7QWidget@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer38PluginEditorConvertTextConfigureWidgetD0Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer38PluginEditorConvertTextConfigureWidgetD1Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer38PluginEditorConvertTextConfigureWidgetD2Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer41PluginEditorConverterBeforeConvertingData10setMessageERK14QSharedPointerIN5KMime7MessageEE@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer41PluginEditorConverterBeforeConvertingData13setNewMessageEb@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer41PluginEditorConverterBeforeConvertingDataC1Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN15MessageComposer41PluginEditorConverterBeforeConvertingDataC2Ev@ABI_5_2 4:18.03.80+git20180326 _ZN15MessageComposer42PluginEditorCheckBeforeSendConfigureWidget11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer42PluginEditorCheckBeforeSendConfigureWidget11qt_metacastEPKc@ABI_5_2 4:16.12.3+git20170331 _ZN15MessageComposer42PluginEditorCheckBeforeSendConfigureWidget16configureChangedEv@ABI_5_2 4:16.12.3+git20170331 @@ -863,8 +936,6 @@ (optional=templinst)_ZNK12KConfigGroup9readEntryI10QByteArrayEET_PKcRKS2_@ABI_5_2 4:16.12.3+git20170331 (optional=templinst)_ZNK12KConfigGroup9readEntryI5QSizeEET_PKcRKS2_@ABI_5_2 4:16.12.3+git20170331 (optional=templinst|arch=!amd64 !arm64)_ZNK12KConfigGroup9readEntryIiEET_PKcRKS1_@ABI_5_2 4:16.12.3+git20170331 - _ZNK15MessageComposer10ActionType4typeEv@ABI_5_2 4:16.12.3+git20170331 - _ZNK15MessageComposer10ActionType6actionEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer10EncryptJob10metaObjectEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer10EncryptJob10recipientsEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer10EncryptJob14encryptionKeysEv@ABI_5_2 4:16.12.3+git20170331 @@ -944,12 +1015,15 @@ _ZNK15MessageComposer16ComposerViewBase2ccEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer16ComposerViewBase2toEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer16ComposerViewBase3bccEv@ABI_5_2 4:16.12.3+git20170331 + _ZNK15MessageComposer16ComposerViewBase3msgEv@ABI_5_2 4:18.03.80+git20180326 _ZNK15MessageComposer16ComposerViewBase4fromEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer16ComposerViewBase6editorEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer16ComposerViewBase7replyToEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer16ComposerViewBase7subjectEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer16ComposerViewBase8fccComboEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer16MessageFactoryNG10metaObjectEv@ABI_5_2 4:16.12.3+git20170331 + _ZNK15MessageComposer16PluginActionType4typeEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer16PluginActionType6actionEv@ABI_5_2 4:18.03.80+git20180326 _ZNK15MessageComposer16PluginEditorInit10metaObjectEv@ABI_5_2 4:17.07.70+git20170516 _ZNK15MessageComposer16PluginEditorInit11descriptionEv@ABI_5_2 4:17.07.70+git20170516 _ZNK15MessageComposer16PluginEditorInit18hasConfigureDialogEv@ABI_5_2 4:17.07.70+git20170516 @@ -963,6 +1037,10 @@ _ZNK15MessageComposer16RecipientsEditor6pickerEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer17InsertTextFileJob10metaObjectEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer17RecipientLineEdit10metaObjectEv@ABI_5_2 4:16.12.3+git20170331 + _ZNK15MessageComposer18DictionaryComboBox10metaObjectEv@ABI_5_2 4:18.03.60+git20171231 + _ZNK15MessageComposer18DictionaryComboBox16autoDeleteStringEv@ABI_5_2 4:18.03.60+git20171231 + _ZNK15MessageComposer18DictionaryComboBox17currentDictionaryEv@ABI_5_2 4:18.03.60+git20171231 + _ZNK15MessageComposer18DictionaryComboBox21currentDictionaryNameEv@ABI_5_2 4:18.03.60+git20171231 _ZNK15MessageComposer18ImageScalingWidget10metaObjectEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer18RichTextComposerNg10metaObjectEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer18RichTextComposerNg11toCleanHtmlEv@ABI_5_2 4:16.12.3+git20170331 @@ -982,12 +1060,17 @@ _ZNK15MessageComposer21PluginEditorInterface10actionTypeEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer21PluginEditorInterface10metaObjectEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer21PluginEditorInterface14richTextEditorEv@ABI_5_2 4:16.12.3+git20170331 + _ZNK15MessageComposer21PluginEditorInterface16needSelectedTextEv@ABI_5_2 4:18.03.60+git20171231 _ZNK15MessageComposer22EmailAddressResolveJob10expandedCcEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer22EmailAddressResolveJob10expandedToEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer22EmailAddressResolveJob10metaObjectEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer22EmailAddressResolveJob11expandedBccEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer22EmailAddressResolveJob12expandedFromEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer23MessageComposerSettings10metaObjectEv@ABI_5_2 4:16.12.3+git20170331 + _ZNK15MessageComposer23PluginEditorConvertText10metaObjectEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer23PluginEditorConvertText11descriptionEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer23PluginEditorConvertText18hasConfigureDialogEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer23PluginEditorConvertText9isEnabledEv@ABI_5_2 4:18.03.80+git20180326 _ZNK15MessageComposer23PluginEditorInitManager10metaObjectEv@ABI_5_2 4:17.07.70+git20170516 _ZNK15MessageComposer23PluginEditorInitManager11pluginsListEv@ABI_5_2 4:17.07.70+git20170516 _ZNK15MessageComposer23PluginEditorInitManager15configGroupNameEv@ABI_5_2 4:17.07.70+git20170516 @@ -1007,11 +1090,24 @@ _ZNK15MessageComposer27PluginEditorCheckBeforeSend11descriptionEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer27PluginEditorCheckBeforeSend18hasConfigureDialogEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer27PluginEditorCheckBeforeSend9isEnabledEv@ABI_5_2 4:16.12.3+git20170331 + _ZNK15MessageComposer30PluginEditorConvertTextManager10metaObjectEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer30PluginEditorConvertTextManager11pluginsListEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer30PluginEditorConvertTextManager15configGroupNameEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer30PluginEditorConvertTextManager15pluginsDataListEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer30PluginEditorConvertTextManager22configPrefixSettingKeyEv@ABI_5_2 4:18.03.80+git20180326 _ZNK15MessageComposer31PluginEditorInitConfigureWidget10helpAnchorEv@ABI_5_2 4:17.07.70+git20170516 _ZNK15MessageComposer31PluginEditorInitConfigureWidget10metaObjectEv@ABI_5_2 4:17.07.70+git20170516 _ZNK15MessageComposer32FollowUpReminderSelectDateDialog10collectionEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer32FollowUpReminderSelectDateDialog10metaObjectEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer32FollowUpReminderSelectDateDialog12selectedDateEv@ABI_5_2 4:16.12.3+git20170331 + _ZNK15MessageComposer32PluginEditorConvertTextInterface10actionTypeEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer32PluginEditorConvertTextInterface10metaObjectEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer32PluginEditorConvertTextInterface11initialDataEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer32PluginEditorConvertTextInterface12parentWidgetEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer32PluginEditorConvertTextInterface14richTextEditorEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer32PluginEditorConvertTextInterface20beforeConvertingDataEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer32PluginEditorConverterInitialData10newMessageEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer32PluginEditorConverterInitialData6mewMsgEv@ABI_5_2 4:18.03.80+git20180326 _ZNK15MessageComposer33AttachmentVcardFromAddressBookJob10metaObjectEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer33PluginEditorCheckBeforeSendParams10isHtmlMailEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer33PluginEditorCheckBeforeSendParams11ccAddressesEv@ABI_5_2 4:16.12.3+git20170331 @@ -1032,6 +1128,10 @@ _ZNK15MessageComposer36PluginEditorCheckBeforeSendInterface10metaObjectEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer36PluginEditorCheckBeforeSendInterface10parametersEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer36PluginEditorCheckBeforeSendInterface12parentWidgetEv@ABI_5_2 4:16.12.3+git20170331 + _ZNK15MessageComposer38PluginEditorConvertTextConfigureWidget10helpAnchorEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer38PluginEditorConvertTextConfigureWidget10metaObjectEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer41PluginEditorConverterBeforeConvertingData10newMessageEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK15MessageComposer41PluginEditorConverterBeforeConvertingData7messageEv@ABI_5_2 4:18.03.80+git20180326 _ZNK15MessageComposer42PluginEditorCheckBeforeSendConfigureWidget10helpAnchorEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer42PluginEditorCheckBeforeSendConfigureWidget10metaObjectEv@ABI_5_2 4:16.12.3+git20170331 _ZNK15MessageComposer7JobBase10metaObjectEv@ABI_5_2 4:16.12.3+git20170331 @@ -1079,7 +1179,7 @@ (optional=templinst)_ZNK7Akonadi4Item11payloadImplIN9KContacts12ContactGroupEEENSt9enable_ifIXntsrNS_8Internal12PayloadTraitIT_EE13isPolymorphicES7_E4typeEv@ABI_5_2 4:16.12.3+git20170331 (optional=templinst)_ZNK7Akonadi4Item11payloadImplIN9KContacts9AddresseeEEENSt9enable_ifIXntsrNS_8Internal12PayloadTraitIT_EE13isPolymorphicES7_E4typeEv@ABI_5_2 4:16.12.3+git20170331 (optional=templinst)_ZNK7Akonadi4Item14tryToCloneImplI14QSharedPointerIN5KMime7MessageEESt10shared_ptrIS4_EEENSt9enable_ifIXntsrSt7is_sameIT_T0_E5valueEbE4typeEPSA_PKi@ABI_5_2 4:17.07.70+git20170608 - (optional=templinst)_ZNSt11__copy_moveILb1ELb0ESt26random_access_iterator_tagE8__copy_mIPN5GpgME3KeyES5_EET0_T_S7_S6_@ABI_5_2 4:17.04.3 + (optional=templinst|arch=arm64 armhf)_ZNSt11__copy_moveILb1ELb0ESt26random_access_iterator_tagE8__copy_mIPN5GpgME3KeyES5_EET0_T_S7_S6_@ABI_5_2 4:17.04.3 (optional=templinst)_ZNSt15_Sp_counted_ptrIDnLN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv@ABI_5_2 4:16.12.3+git20170331 (optional=templinst)_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv@ABI_5_2 4:16.12.3+git20170331 (optional=templinst)_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv@ABI_5_2 4:16.12.3+git20170331 @@ -1097,7 +1197,7 @@ (optional=templinst)_ZNSt6vectorIN5GpgME3KeyESaIS1_EED2Ev@ABI_5_2 4:16.12.3+git20170331 (optional=templinst)_ZNSt6vectorIN5GpgME3KeyESaIS1_EEaSERKS3_@ABI_5_2 4:16.12.3+git20170331 (optional=templinst)_ZNSt6vectorIN5GpgME6UserIDESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_@ABI_5_2 4:17.04.3 - (optional=templinst|subst)_ZNSt6vectorIN5GpgME6UserIDESaIS1_EE7reserveE{size_t}@ABI_5_2 4:17.04.3 + (optional=templinst|subst|arch=arm64 armhf)_ZNSt6vectorIN5GpgME6UserIDESaIS1_EE7reserveE{size_t}@ABI_5_2 4:17.04.3 (optional=templinst)_ZNSt6vectorIN5GpgME6UserIDESaIS1_EED1Ev@ABI_5_2 4:16.12.3+git20170331 (optional=templinst)_ZNSt6vectorIN5GpgME6UserIDESaIS1_EED2Ev@ABI_5_2 4:16.12.3+git20170331 (optional=templinst)_ZNSt8_Rb_treeI10QByteArrayS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE16_M_insert_uniqueIS0_EESt4pairISt17_Rb_tree_iteratorIS0_EbEOT_@ABI_5_2 4:16.12.3+git20170331 @@ -1124,6 +1224,7 @@ _ZTIN15MessageComposer16RecipientsEditorE@ABI_5_2 4:16.12.3+git20170331 _ZTIN15MessageComposer17InsertTextFileJobE@ABI_5_2 4:16.12.3+git20170331 _ZTIN15MessageComposer17RecipientLineEditE@ABI_5_2 4:16.12.3+git20170331 + _ZTIN15MessageComposer18DictionaryComboBoxE@ABI_5_2 4:18.03.60+git20171231 _ZTIN15MessageComposer18ImageScalingWidgetE@ABI_5_2 4:16.12.3+git20170331 _ZTIN15MessageComposer18RichTextComposerNgE@ABI_5_2 4:16.12.3+git20170331 _ZTIN15MessageComposer18SkeletonMessageJobE@ABI_5_2 4:16.12.3+git20170331 @@ -1133,6 +1234,7 @@ _ZTIN15MessageComposer21PluginEditorInterfaceE@ABI_5_2 4:16.12.3+git20170331 _ZTIN15MessageComposer22EmailAddressResolveJobE@ABI_5_2 4:16.12.3+git20170331 _ZTIN15MessageComposer23MessageComposerSettingsE@ABI_5_2 4:16.12.3+git20170331 + _ZTIN15MessageComposer23PluginEditorConvertTextE@ABI_5_2 4:18.03.80+git20180326 _ZTIN15MessageComposer23PluginEditorInitManagerE@ABI_5_2 4:17.07.70+git20170516 _ZTIN15MessageComposer23RecipientsEditorManagerE@ABI_5_2 4:16.12.3+git20170331 _ZTIN15MessageComposer24AttachmentControllerBaseE@ABI_5_2 4:16.12.3+git20170331 @@ -1142,11 +1244,14 @@ _ZTIN15MessageComposer26RichTextComposerSignaturesE@ABI_5_2 4:16.12.3+git20170331 _ZTIN15MessageComposer27MessageComposerSettingsBaseE@ABI_5_2 4:16.12.3+git20170331 _ZTIN15MessageComposer27PluginEditorCheckBeforeSendE@ABI_5_2 4:16.12.3+git20170331 + _ZTIN15MessageComposer30PluginEditorConvertTextManagerE@ABI_5_2 4:18.03.80+git20180326 _ZTIN15MessageComposer31PluginEditorInitConfigureWidgetE@ABI_5_2 4:17.07.70+git20170516 _ZTIN15MessageComposer32FollowUpReminderSelectDateDialogE@ABI_5_2 4:16.12.3+git20170331 + _ZTIN15MessageComposer32PluginEditorConvertTextInterfaceE@ABI_5_2 4:18.03.80+git20180326 _ZTIN15MessageComposer33AttachmentVcardFromAddressBookJobE@ABI_5_2 4:16.12.3+git20170331 _ZTIN15MessageComposer34PluginEditorCheckBeforeSendManagerE@ABI_5_2 4:16.12.3+git20170331 _ZTIN15MessageComposer36PluginEditorCheckBeforeSendInterfaceE@ABI_5_2 4:16.12.3+git20170331 + _ZTIN15MessageComposer38PluginEditorConvertTextConfigureWidgetE@ABI_5_2 4:18.03.80+git20180326 _ZTIN15MessageComposer42PluginEditorCheckBeforeSendConfigureWidgetE@ABI_5_2 4:16.12.3+git20170331 _ZTIN15MessageComposer7JobBaseE@ABI_5_2 4:16.12.3+git20170331 _ZTIN15MessageComposer7SignJobE@ABI_5_2 4:16.12.3+git20170331 @@ -1177,6 +1282,7 @@ _ZTSN15MessageComposer16RecipientsEditorE@ABI_5_2 4:16.12.3+git20170331 _ZTSN15MessageComposer17InsertTextFileJobE@ABI_5_2 4:16.12.3+git20170331 _ZTSN15MessageComposer17RecipientLineEditE@ABI_5_2 4:16.12.3+git20170331 + _ZTSN15MessageComposer18DictionaryComboBoxE@ABI_5_2 4:18.03.60+git20171231 _ZTSN15MessageComposer18ImageScalingWidgetE@ABI_5_2 4:16.12.3+git20170331 _ZTSN15MessageComposer18RichTextComposerNgE@ABI_5_2 4:16.12.3+git20170331 _ZTSN15MessageComposer18SkeletonMessageJobE@ABI_5_2 4:16.12.3+git20170331 @@ -1186,6 +1292,7 @@ _ZTSN15MessageComposer21PluginEditorInterfaceE@ABI_5_2 4:16.12.3+git20170331 _ZTSN15MessageComposer22EmailAddressResolveJobE@ABI_5_2 4:16.12.3+git20170331 _ZTSN15MessageComposer23MessageComposerSettingsE@ABI_5_2 4:16.12.3+git20170331 + _ZTSN15MessageComposer23PluginEditorConvertTextE@ABI_5_2 4:18.03.80+git20180326 _ZTSN15MessageComposer23PluginEditorInitManagerE@ABI_5_2 4:17.07.70+git20170516 _ZTSN15MessageComposer23RecipientsEditorManagerE@ABI_5_2 4:16.12.3+git20170331 _ZTSN15MessageComposer24AttachmentControllerBaseE@ABI_5_2 4:16.12.3+git20170331 @@ -1195,11 +1302,14 @@ _ZTSN15MessageComposer26RichTextComposerSignaturesE@ABI_5_2 4:16.12.3+git20170331 _ZTSN15MessageComposer27MessageComposerSettingsBaseE@ABI_5_2 4:16.12.3+git20170331 _ZTSN15MessageComposer27PluginEditorCheckBeforeSendE@ABI_5_2 4:16.12.3+git20170331 + _ZTSN15MessageComposer30PluginEditorConvertTextManagerE@ABI_5_2 4:18.03.80+git20180326 _ZTSN15MessageComposer31PluginEditorInitConfigureWidgetE@ABI_5_2 4:17.07.70+git20170516 _ZTSN15MessageComposer32FollowUpReminderSelectDateDialogE@ABI_5_2 4:16.12.3+git20170331 + _ZTSN15MessageComposer32PluginEditorConvertTextInterfaceE@ABI_5_2 4:18.03.80+git20180326 _ZTSN15MessageComposer33AttachmentVcardFromAddressBookJobE@ABI_5_2 4:16.12.3+git20170331 _ZTSN15MessageComposer34PluginEditorCheckBeforeSendManagerE@ABI_5_2 4:16.12.3+git20170331 _ZTSN15MessageComposer36PluginEditorCheckBeforeSendInterfaceE@ABI_5_2 4:16.12.3+git20170331 + _ZTSN15MessageComposer38PluginEditorConvertTextConfigureWidgetE@ABI_5_2 4:18.03.80+git20180326 _ZTSN15MessageComposer42PluginEditorCheckBeforeSendConfigureWidgetE@ABI_5_2 4:16.12.3+git20170331 _ZTSN15MessageComposer7JobBaseE@ABI_5_2 4:16.12.3+git20170331 _ZTSN15MessageComposer7SignJobE@ABI_5_2 4:16.12.3+git20170331 @@ -1230,6 +1340,7 @@ _ZTVN15MessageComposer16RecipientsEditorE@ABI_5_2 4:16.12.3+git20170331 _ZTVN15MessageComposer17InsertTextFileJobE@ABI_5_2 4:16.12.3+git20170331 _ZTVN15MessageComposer17RecipientLineEditE@ABI_5_2 4:16.12.3+git20170331 + _ZTVN15MessageComposer18DictionaryComboBoxE@ABI_5_2 4:18.03.60+git20171231 _ZTVN15MessageComposer18ImageScalingWidgetE@ABI_5_2 4:16.12.3+git20170331 _ZTVN15MessageComposer18RichTextComposerNgE@ABI_5_2 4:16.12.3+git20170331 _ZTVN15MessageComposer18SkeletonMessageJobE@ABI_5_2 4:16.12.3+git20170331 @@ -1239,6 +1350,7 @@ _ZTVN15MessageComposer21PluginEditorInterfaceE@ABI_5_2 4:16.12.3+git20170331 _ZTVN15MessageComposer22EmailAddressResolveJobE@ABI_5_2 4:16.12.3+git20170331 _ZTVN15MessageComposer23MessageComposerSettingsE@ABI_5_2 4:16.12.3+git20170331 + _ZTVN15MessageComposer23PluginEditorConvertTextE@ABI_5_2 4:18.03.80+git20180326 _ZTVN15MessageComposer23PluginEditorInitManagerE@ABI_5_2 4:17.07.70+git20170516 _ZTVN15MessageComposer23RecipientsEditorManagerE@ABI_5_2 4:16.12.3+git20170331 _ZTVN15MessageComposer24AttachmentControllerBaseE@ABI_5_2 4:16.12.3+git20170331 @@ -1248,11 +1360,14 @@ _ZTVN15MessageComposer26RichTextComposerSignaturesE@ABI_5_2 4:16.12.3+git20170331 _ZTVN15MessageComposer27MessageComposerSettingsBaseE@ABI_5_2 4:16.12.3+git20170331 _ZTVN15MessageComposer27PluginEditorCheckBeforeSendE@ABI_5_2 4:16.12.3+git20170331 + _ZTVN15MessageComposer30PluginEditorConvertTextManagerE@ABI_5_2 4:18.03.80+git20180326 _ZTVN15MessageComposer31PluginEditorInitConfigureWidgetE@ABI_5_2 4:17.07.70+git20170516 _ZTVN15MessageComposer32FollowUpReminderSelectDateDialogE@ABI_5_2 4:16.12.3+git20170331 + _ZTVN15MessageComposer32PluginEditorConvertTextInterfaceE@ABI_5_2 4:18.03.80+git20180326 _ZTVN15MessageComposer33AttachmentVcardFromAddressBookJobE@ABI_5_2 4:16.12.3+git20170331 _ZTVN15MessageComposer34PluginEditorCheckBeforeSendManagerE@ABI_5_2 4:16.12.3+git20170331 _ZTVN15MessageComposer36PluginEditorCheckBeforeSendInterfaceE@ABI_5_2 4:16.12.3+git20170331 + _ZTVN15MessageComposer38PluginEditorConvertTextConfigureWidgetE@ABI_5_2 4:18.03.80+git20180326 _ZTVN15MessageComposer42PluginEditorCheckBeforeSendConfigureWidgetE@ABI_5_2 4:16.12.3+git20170331 _ZTVN15MessageComposer7JobBaseE@ABI_5_2 4:16.12.3+git20170331 _ZTVN15MessageComposer7SignJobE@ABI_5_2 4:16.12.3+git20170331 @@ -1290,6 +1405,7 @@ (c++)"non-virtual thunk to MessageComposer::AkonadiSender::doSendQueued(int)@ABI_5_2" 4:16.12.3+git20170331 (c++)"non-virtual thunk to MessageComposer::AkonadiSender::~AkonadiSender()@ABI_5_2" 4:16.12.3+git20170331 (c++)"non-virtual thunk to MessageComposer::ComposerLineEdit::~ComposerLineEdit()@ABI_5_2" 4:16.12.3+git20170331 + (c++)"non-virtual thunk to MessageComposer::DictionaryComboBox::~DictionaryComboBox()@ABI_5_2" 4:18.03.60+git20171231 (c++)"non-virtual thunk to MessageComposer::EncryptJob::encryptionKeys() const@ABI_5_2" 4:16.12.3+git20170331 (c++)"non-virtual thunk to MessageComposer::EncryptJob::recipients() const@ABI_5_2" 4:16.12.3+git20170331 (c++)"non-virtual thunk to MessageComposer::EncryptJob::setEncryptionKeys(std::vector > const&)@ABI_5_2" 4:16.12.3+git20170331 @@ -1298,6 +1414,7 @@ (c++)"non-virtual thunk to MessageComposer::FollowUpReminderSelectDateDialog::~FollowUpReminderSelectDateDialog()@ABI_5_2" 4:16.12.3+git20170331 (c++)"non-virtual thunk to MessageComposer::ImageScalingWidget::~ImageScalingWidget()@ABI_5_2" 4:16.12.3+git20170331 (c++)"non-virtual thunk to MessageComposer::PluginEditorCheckBeforeSendConfigureWidget::~PluginEditorCheckBeforeSendConfigureWidget()@ABI_5_2" 4:16.12.3+git20170331 + (c++)"non-virtual thunk to MessageComposer::PluginEditorConvertTextConfigureWidget::~PluginEditorConvertTextConfigureWidget()@ABI_5_2" 4:18.03.80+git20180326 (c++)"non-virtual thunk to MessageComposer::PluginEditorInitConfigureWidget::~PluginEditorInitConfigureWidget()@ABI_5_2" 4:17.07.70+git20170516 (c++)"non-virtual thunk to MessageComposer::RecipientsEditor::~RecipientsEditor()@ABI_5_2" 4:16.12.3+git20170331 (c++)"non-virtual thunk to MessageComposer::RichTextComposerNg::~RichTextComposerNg()@ABI_5_2" 4:16.12.3+git20170331 diff -Nru kf5-messagelib-17.12.3/debian/libkf5messagelist5abi1.symbols kf5-messagelib-18.04.3/debian/libkf5messagelist5abi1.symbols --- kf5-messagelib-17.12.3/debian/libkf5messagelist5abi1.symbols 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/libkf5messagelist5abi1.symbols 2018-08-26 12:21:48.000000000 +0000 @@ -1,4 +1,4 @@ -# SymbolsHelper-Confirmed: 4:17.12.3 amd64 arm64 armhf i386 +# SymbolsHelper-Confirmed: 4:18.04.3 amd64 arm64 armhf i386 libKF5MessageList.so.5abi1 libkf5messagelist5abi1 #MINVER# ABI_5_1@ABI_5_1 4:16.12.2 (optional)_ZN10QByteArray7reserveEi@ABI_5_1 4:17.04.3 @@ -97,6 +97,7 @@ _ZN11MessageList4Core15QuickSearchLine11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_1 4:16.12.2 _ZN11MessageList4Core15QuickSearchLine11qt_metacastEPKc@ABI_5_1 4:16.12.2 _ZN11MessageList4Core15QuickSearchLine11resetFilterEv@ABI_5_1 4:16.12.2 + _ZN11MessageList4Core15QuickSearchLine14forceLostFocusEv@ABI_5_1 4:18.04.1 _ZN11MessageList4Core15QuickSearchLine16focusQuickSearchERK7QString@ABI_5_1 4:16.12.2 _ZN11MessageList4Core15QuickSearchLine16staticMetaObjectE@ABI_5_1 4:16.12.2 _ZN11MessageList4Core15QuickSearchLine17addCompletionItemERK7QString@ABI_5_1 4:17.07.70+git20170803 @@ -117,7 +118,9 @@ _ZN11MessageList4Core15QuickSearchLineD2Ev@ABI_5_1 4:16.12.2 _ZN11MessageList4Core16SearchLineStatus11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_1 4:16.12.2 _ZN11MessageList4Core16SearchLineStatus11qt_metacastEPKc@ABI_5_1 4:16.12.2 + _ZN11MessageList4Core16SearchLineStatus13keyPressEventEP9QKeyEvent@ABI_5_1 4:18.04.1 _ZN11MessageList4Core16SearchLineStatus13updateFiltersEv@ABI_5_1 4:16.12.2 + _ZN11MessageList4Core16SearchLineStatus14forceLostFocusEv@ABI_5_1 4:18.04.1 _ZN11MessageList4Core16SearchLineStatus16contextMenuEventEP17QContextMenuEvent@ABI_5_1 4:17.07.70+git20170803 _ZN11MessageList4Core16SearchLineStatus16createMenuSearchEv@ABI_5_1 4:16.12.2 _ZN11MessageList4Core16SearchLineStatus16slotClearHistoryEv@ABI_5_1 4:17.07.70+git20170803 @@ -210,6 +213,7 @@ _ZN11MessageList4Pane11writeConfigEb@ABI_5_1 4:16.12.2 _ZN11MessageList4Pane12createNewTabEv@ABI_5_1 4:16.12.2 _ZN11MessageList4Pane13statusMessageERK7QString@ABI_5_1 4:16.12.2 + _ZN11MessageList4Pane14forceLostFocusEv@ABI_5_1 4:18.04.1 _ZN11MessageList4Pane15messageSelectedERKN7Akonadi4ItemE@ABI_5_1 4:16.12.2 _ZN11MessageList4Pane15setXmlGuiClientEP13KXMLGUIClient@ABI_5_1 4:16.12.2 _ZN11MessageList4Pane16focusQuickSearchERK7QString@ABI_5_1 4:16.12.2 diff -Nru kf5-messagelib-17.12.3/debian/libkf5messageviewer5abi4.install kf5-messagelib-18.04.3/debian/libkf5messageviewer5abi4.install --- kf5-messagelib-17.12.3/debian/libkf5messageviewer5abi4.install 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/libkf5messageviewer5abi4.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -usr/lib/*/libKF5MessageViewer.so.5.* -usr/lib/*/libKF5MessageViewer.so.5abi4 diff -Nru kf5-messagelib-17.12.3/debian/libkf5messageviewer5abi4.lintian-overrides kf5-messagelib-18.04.3/debian/libkf5messageviewer5abi4.lintian-overrides --- kf5-messagelib-17.12.3/debian/libkf5messageviewer5abi4.lintian-overrides 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/libkf5messageviewer5abi4.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -libkf5messageviewer5abi4: symbols-declares-dependency-on-other-package libkf5messageviewer-plugins diff -Nru kf5-messagelib-17.12.3/debian/libkf5messageviewer5abi5.install kf5-messagelib-18.04.3/debian/libkf5messageviewer5abi5.install --- kf5-messagelib-17.12.3/debian/libkf5messageviewer5abi5.install 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/libkf5messageviewer5abi5.install 2018-08-26 12:21:48.000000000 +0000 @@ -0,0 +1,2 @@ +usr/lib/*/libKF5MessageViewer.so.5.* +usr/lib/*/libKF5MessageViewer.so.5abi5 diff -Nru kf5-messagelib-17.12.3/debian/libkf5messageviewer5abi5.lintian-overrides kf5-messagelib-18.04.3/debian/libkf5messageviewer5abi5.lintian-overrides --- kf5-messagelib-17.12.3/debian/libkf5messageviewer5abi5.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/libkf5messageviewer5abi5.lintian-overrides 2018-08-26 12:21:48.000000000 +0000 @@ -0,0 +1 @@ +libkf5messageviewer5abi5: symbols-declares-dependency-on-other-package libkf5messageviewer-plugins diff -Nru kf5-messagelib-17.12.3/debian/libkf5messageviewer5abi5.symbols kf5-messagelib-18.04.3/debian/libkf5messageviewer5abi5.symbols --- kf5-messagelib-17.12.3/debian/libkf5messageviewer5abi5.symbols 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/libkf5messageviewer5abi5.symbols 2018-08-26 12:21:48.000000000 +0000 @@ -0,0 +1,1295 @@ +# SymbolsHelper-Confirmed: 4:18.04.3 amd64 arm64 armhf i386 +libKF5MessageViewer.so.5abi5 libkf5messageviewer5abi5 #MINVER#, libkf5messageviewer-plugins + ABI_5_5@ABI_5_5 4:18.03.60+git20171121 + (optional)_ZN10QByteArray7reserveEi@ABI_5_5 4:18.04.1 + _ZN13MessageViewer10HtmlWriter3endEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer10HtmlWriter5beginEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer10HtmlWriter5resetEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer10HtmlWriter5writeERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer10HtmlWriterC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer10HtmlWriterC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer10HtmlWriterD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer10HtmlWriterD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer10HtmlWriterD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11EmptySource11setHtmlModeEN14MimeTreeParser4Util8HtmlModeERK5QListIS3_E@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11EmptySource13overrideCodecEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11EmptySource18setAllowDecryptionEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11EmptySource19createMessageHeaderEPN5KMime7MessageE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11EmptySource24bodyPartFormatterFactoryEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11EmptySource6renderERK14QSharedPointerIN14MimeTreeParser11MessagePartEEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11EmptySourceC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11EmptySourceC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11EmptySourceD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11EmptySourceD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11EmptySourceD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyle11setPrintingEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyle11setTopLevelEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyle12setVCardNameERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyle13setAllowAsyncEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyle13setNodeHelperEPN14MimeTreeParser10NodeHelperE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyle14setMessagePathERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyle15setSourceObjectEP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyle16setMessageStatusEN7Akonadi13MessageStatusE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyle16setShowEmoticonsEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyle17setAttachmentHtmlERK7QString@ABI_5_5 4:18.04.0+git20180429 + _ZN13MessageViewer11HeaderStyle17setCollectionNameERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyle17setHeaderStrategyEPKNS_14HeaderStrategyE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyle18setReadOnlyMessageEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyle8setThemeERKN13GrantleeTheme5ThemeE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyleC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyleC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyleD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyleD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer11HeaderStyleD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer12ViewerPlugin11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer12ViewerPlugin11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer12ViewerPlugin12setIsEnabledEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer12ViewerPlugin13configChangedEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer12ViewerPlugin16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer12ViewerPlugin19showConfigureDialogEP7QWidget@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer12ViewerPluginC1EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer12ViewerPluginC2EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer12ViewerPluginD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer12ViewerPluginD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer12ViewerPluginD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13CSSHelperBase11setBodyFontERK5QFont@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13CSSHelperBase12setPrintFontERK5QFont@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13CSSHelperBase20recalculatePGPColorsEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13CSSHelperBaseC1EPK12QPaintDevice@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13CSSHelperBaseC2EPK12QPaintDevice@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13CSSHelperBaseD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13CSSHelperBaseD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13CSSHelperBaseD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13EditorWatcher11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13EditorWatcher11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13EditorWatcher12editorExitedEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13EditorWatcher12inotifyEventEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13EditorWatcher13checkEditDoneEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13EditorWatcher16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13EditorWatcher5startEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13EditorWatcher8editDoneEPS0_@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13EditorWatcherC1ERK4QUrlRK7QStringNS0_14OpenWithOptionEP7QObjectP7QWidget@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13EditorWatcherC2ERK4QUrlRK7QStringNS0_14OpenWithOptionEP7QObjectP7QWidget@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13EditorWatcherD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13EditorWatcherD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13EditorWatcherD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13IconNameCache8instanceEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13RenderContextD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13RenderContextD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13RenderContextD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer13ViewerPrivate10atmViewMsgERK14QSharedPointerIN5KMime7MessageEE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate10readConfigEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate10setMessageERK14QSharedPointerIN5KMime7MessageEEN14MimeTreeParser10UpdateModeE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate10showReaderEPN5KMime7ContentEbRK7QString@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate10urlClickedERKN7Akonadi4ItemERK4QUrl@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate11itemRemovedEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate11setPrintingEb@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate11showMessageERK14QSharedPointerIN5KMime7MessageEERK7QString@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate11slotOpenUrlEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate11slotUrlCopyEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate11slotUrlOpenERK4QUrl@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate11writeConfigEb@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate12adjustLayoutEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate12codecForNameERK10QByteArray@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate12parseContentEPN5KMime7ContentE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate12printMessageERKN7Akonadi4ItemE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate12slotUrlPopupERKN15WebEngineViewer16WebHitTestResultE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate13createActionsEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate13createWidgetsEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate13executeRunnerERK4QUrl@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate13setPluginNameERK7QString@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate13setZoomFactorEd@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate13slotItemMovedERKN7Akonadi4ItemERKNS1_10CollectionES7_@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate13slotSpeakTextEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate14attachmentCopyERK7QVectorIPN5KMime7ContentEE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate14attachmentOpenEPN5KMime7ContentE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate14attachmentViewEPN5KMime7ContentE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate14displayMessageEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate14initHtmlWidgetEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate14openAttachmentEPN5KMime7ContentERK4QUrl@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate14replyMessageToERK14QSharedPointerIN5KMime7MessageEEb@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate14scrollToAnchorERK7QString@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate14setMessageItemERKN7Akonadi4ItemEN14MimeTreeParser10UpdateModeE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate14setMessagePartEPN5KMime7ContentE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate14slotLevelQuoteEi@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate15getServiceOfferEPN5KMime7ContentE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate15itemFetchResultEP4KJob@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate15setUseFixedFontEb@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate15showContextMenuEPN5KMime7ContentERK6QPoint@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate15slotItemChangedERKN7Akonadi4ItemERK4QSetI10QByteArrayE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate15slotSaveMessageEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate15slotSetEncodingEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate15updateReaderWinEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate16checkPhishingUrlEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate16deleteAttachmentEPN5KMime7ContentEb@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate16displayPopupMenuERKN7Akonadi4ItemERKN15WebEngineViewer16WebHitTestResultERK6QPoint@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate16goResourceOnlineEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate16printingFinishedEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate16selectedContentsEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate16showHideMimeTreeEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate16slotPrintMessageEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate16slotPrintPreviewEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate16slotStyleChangedEPNS_17HeaderStylePluginE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate16slotStyleUpdatedEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate17addHelpTextActionEP7QActionRK7QString@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate17changeDisplayMailENS_6Viewer20DisplayFormatMessageEb@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate17displaySplashPageERK7QString@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate17displaySplashPageERK7QStringRK5QHashIS1_8QVariantERK10QByteArray@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate17findContentByTypeEPN5KMime7ContentERK10QByteArray@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate17replyMessageToAllEPN5KMime7ContentE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate17requestConfigSyncEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate17slotDelayedResizeEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate17slotOpenInBrowserEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18attachmentOpenWithEPN5KMime7ContentERK28QExplicitlySharedDataPointerI8KServiceE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18createOpenWithMenuEP5QMenuRK7QStringb@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18itemModifiedResultEP4KJob@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18makeResourceOnlineENS_6Viewer18ResourceOnlineModeE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18moveMessageToTrashEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18readGravatarConfigEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18scrollToAttachmentEPN5KMime7ContentE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18setMessageInternalERK14QSharedPointerIN5KMime7MessageEEN14MimeTreeParser10UpdateModeE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18slotActivatePluginEPNS_21ViewerPluginInterfaceE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18slotAddToWhiteListEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18slotAttachmentCopyEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18slotAttachmentOpenEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18slotAttachmentViewEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18slotModifyItemDoneEP4KJob@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18slotOpenWithActionEP7QAction@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18slotOpenWithDialogEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18slotRefreshMessageERKN7Akonadi4ItemE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18slotToggleHtmlModeEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate18writeMessageHeaderEPN5KMime7MessageEPNS1_7ContentEb@ABI_5_5 4:18.03.80+git20180326 + _ZN13MessageViewer13ViewerPrivate19printPreviewMessageERKN7Akonadi4ItemE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate19setOverrideEncodingERK7QString@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate19showAttachmentPopupEPN5KMime7ContentERK7QStringRK6QPoint@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate19slotHideAttachmentsEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate19slotMessageRenderedEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate19slotSettingsChangedEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate19slotToggleEmoticonsEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate19slotToggleFixedFontEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate20attachmentPropertiesEPN5KMime7ContentE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate20enableMessageDisplayEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate20replyMessageToAuthorEPN5KMime7ContentE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate20saveRelativePositionEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate20showStatusBarMessageERK7QString@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate20slotAttachmentSaveAsEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate20slotCopySelectedTextEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate20slotHandleAttachmentEi@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate20slotMimePartSelectedERK11QModelIndex@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate20slotSmartAttachmentsEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate20slotWheelZoomChangedEi@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate21setAttachmentStrategyEPKNS_18AttachmentStrategyE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate21setHtmlLoadExtDefaultEb@ABI_5_5 4:18.04.0+git20180429 + _ZN13MessageViewer13ViewerPrivate21slotAttachmentSaveAllEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate21slotCopyImageLocationEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate21slotDelayPrintPreviewEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate21slotHandlePagePrintedEb@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate21slotIconicAttachmentsEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate21slotInlineAttachmentsEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate21slotMailTrackingFoundERKNS_31BlockMailTrackingUrlInterceptor20MailTrackerBlackListE@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer13ViewerPrivate21slotMessageIsNotAScamEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate21slotMessageMayBeAScamEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate21slotShowMessageSourceEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate22pageIsScrolledToBottomEb@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate22setHtmlLoadExtOverrideEb@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate22slotAttachmentOpenWithEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate22slotCheckedUrlFinishedERK4QUrlN15WebEngineViewer20CheckPhishingUrlUtil9UrlStatusE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate22slotGeneralFontChangedEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate22slotServiceUrlSelectedEN9PimCommon22ShareServiceUrlManager11ServiceTypeE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate22slotToggleMimePartTreeEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate22viewerPluginActionListE6QFlagsINS_21ViewerPluginInterface19SpecificFeatureTypeEE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate22viewerSelectionChangedEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate23prepareHandleAttachmentEPN5KMime7ContentE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate23readGlobalOverrideCodecEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate23resetStateForNewMessageEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate23setShowSignatureDetailsEb@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate24setHideEncryptionDetailsEb@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate24slotAttachmentPropertiesEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate24slotExportHtmlPageFailedEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate24urlIsAMalwareButContinueEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate25setPrintElementBackgroundEb@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate25slotExportHtmlPageSuccessERK7QString@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate25slotHeaderOnlyAttachmentsEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate25slotLoadExternalReferenceEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate26setDecryptMessageOverwriteEb@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate26slotFormSubmittedForbiddenEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate27actionForAttachmentStrategyEPKNS_18AttachmentStrategyE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate28slotSaveMessageDisplayFormatEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate29saveMainFrameScreenshotInFileERK7QString@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate29slotResetMessageDisplayFormatEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate30showOpenAttachmentFolderWidgetERK5QListI4QUrlE@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer13ViewerPrivate32executeCustomScriptsAfterLoadingEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate32setDisplayFormatMessageOverwriteENS_6Viewer20DisplayFormatMessageE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate32slotMimeTreeContextMenuRequestedERK6QPoint@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate32slotOpenWithActionCurrentContentEP7QAction@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate32slotOpenWithDialogCurrentContentEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate6updateEN14MimeTreeParser10UpdateModeE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate8goOnlineEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate8slotFindEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate9popupMenuERKN7Akonadi4ItemERK4QUrlS7_RK6QPoint@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate9selectAllEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate9showVCardEPN5KMime7ContentE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate9slotClearEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivate9slotUrlOnERK7QString@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivateC1EPNS_6ViewerEP7QWidgetP17KActionCollection@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivateC2EPNS_6ViewerEP7QWidgetP17KActionCollection@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivateD0Ev@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivateD1Ev@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer13ViewerPrivateD2Ev@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer14FileHtmlWriter3endEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer14FileHtmlWriter5beginEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer14FileHtmlWriter5resetEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer14FileHtmlWriter9embedPartERK10QByteArrayRK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer14FileHtmlWriter9extraHeadERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer14FileHtmlWriterC1ERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer14FileHtmlWriterC2ERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer14FileHtmlWriterD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer14FileHtmlWriterD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer14FileHtmlWriterD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer14HeaderStrategy10stringListEPKPKci@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer14HeaderStrategyC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer14HeaderStrategyC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer14HeaderStrategyD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer14HeaderStrategyD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer14HeaderStrategyD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer15ConfigureWidget10readConfigEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer15ConfigureWidget11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer15ConfigureWidget11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer15ConfigureWidget11writeConfigEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer15ConfigureWidget15settingsChangedEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer15ConfigureWidget16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer15ConfigureWidget24readCurrentOverrideCodecEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer15ConfigureWidgetC1EP7QWidget@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer15ConfigureWidgetC2EP7QWidget@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer15ConfigureWidgetD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer15ConfigureWidgetD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer15ConfigureWidgetD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer15HeaderStyleUtilC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer15HeaderStyleUtilC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PlainHeaderStyleC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PlainHeaderStyleC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PlainHeaderStyleD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PlainHeaderStyleD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PlainHeaderStyleD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PrintingSettings11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PrintingSettings11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PrintingSettings16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PrintingSettings22doResetToDefaultsOtherEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PrintingSettings24doLoadFromGlobalSettingsEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PrintingSettings4saveEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PrintingSettings7changedEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PrintingSettingsC1EP7QWidget@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PrintingSettingsC2EP7QWidget@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PrintingSettingsD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PrintingSettingsD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16PrintingSettingsD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16ScamExpandUrlJob11expandedUrlERK4QUrl@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16ScamExpandUrlJob11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16ScamExpandUrlJob11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16ScamExpandUrlJob11urlExpandedERK7QStringS3_@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16ScamExpandUrlJob14expandUrlErrorEN13QNetworkReply12NetworkErrorE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16ScamExpandUrlJob16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16ScamExpandUrlJob18slotExpandFinishedEP13QNetworkReply@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16ScamExpandUrlJob9slotErrorEN13QNetworkReply12NetworkErrorE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16ScamExpandUrlJobC1EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16ScamExpandUrlJobC2EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16ScamExpandUrlJobD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16ScamExpandUrlJobD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer16ScamExpandUrlJobD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17HeaderStylePlugin11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17HeaderStylePlugin11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17HeaderStylePlugin12setIsEnabledEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17HeaderStylePlugin16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17HeaderStylePlugin19showConfigureDialogEP7QWidget@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17HeaderStylePluginC1EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17HeaderStylePluginC2EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17HeaderStylePluginD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17HeaderStylePluginD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17HeaderStylePluginD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEnginePage10initializeEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEnginePage11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEnginePage11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEnginePage16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEnginePage25setPrintElementBackgroundEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEnginePage30slotFeaturePermissionRequestedERK4QUrlN14QWebEnginePage7FeatureE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEnginePageC1EP17QWebEngineProfileP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEnginePageC1EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEnginePageC2EP17QWebEngineProfileP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEnginePageC2EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEnginePageD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEnginePageD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEnginePageD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView10scrollDownEi@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView11resizeEventEP12QResizeEvent@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView12scrollPageUpEi@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView14hideAccessKeysEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView14markAttachmentERK7QStringS3_@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView14scrollPageDownEi@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView14scrollToAnchorERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView14setLinkHoveredERK4QUrl@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView14showAccessKeysEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView15slotShowDetailsEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView15slotZoomChangedEd@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView16contextMenuEventEP17QContextMenuEvent@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView16slotLoadFinishedEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView16wheelZoomChangedEi@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView17forwardWheelEventEP11QWheelEvent@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView17initializeScriptsEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView17mailTrackingFoundERKNS_31BlockMailTrackingUrlInterceptor20MailTrackerBlackListE@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer17MailWebEngineView17messageMayBeAScamEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView18isScrolledToBottomEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView18slotWebHitFinishedERKN15WebEngineViewer16WebHitTestResultE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView20execPrintPreviewPageEP8QPrinteri@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView20forwardKeyPressEventEP9QKeyEvent@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView20handleScrollToAnchorERK8QVariant@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView21forwardMouseMoveEventEP11QMouseEvent@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView21runJavaScriptInWordIdERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView21setElementByIdVisibleERK7QStringb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView22formSubmittedForbiddenEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView22forwardKeyReleaseEventEP9QKeyEvent@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView22forwardMousePressEventEP11QMouseEvent@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView22pageIsScrolledToBottomEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView23removeAttachmentMarkingERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView23setAllowExternalContentEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView24forwardMouseReleaseEventEP11QMouseEvent@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView24handleIsScrolledToBottomERK8QVariant@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView24scrollToRelativePositionEd@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView25setPrintElementBackgroundEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView29saveMainFrameScreenshotInFileERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView32executeHideShowEncryptionDetailsEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView7openUrlERK4QUrl@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView8scrollUpEi@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView9popupMenuERKN15WebEngineViewer16WebHitTestResultE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView9scamCheckEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView9selectAllEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineView9setViewerEPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineViewC1EP17KActionCollectionP7QWidget@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineViewC2EP17KActionCollectionP7QWidget@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineViewD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineViewD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17MailWebEngineViewD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17ScamCheckShortUrl10isShortUrlERK4QUrl@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17ScamCheckShortUrl11expandedUrlERK4QUrl@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17ScamCheckShortUrl11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17ScamCheckShortUrl11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17ScamCheckShortUrl16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17ScamCheckShortUrl18sSupportedServicesE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17ScamCheckShortUrl19loadLongUrlServicesEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17ScamCheckShortUrlC1EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17ScamCheckShortUrlC2EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17ScamCheckShortUrlD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17ScamCheckShortUrlD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17ScamCheckShortUrlD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer17URLHandlerManager15registerHandlerEPKN14MimeTreeParser10URLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer17URLHandlerManager15registerHandlerEPKNS_9Interface18BodyPartURLHandlerERK7QString@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer17URLHandlerManager17unregisterHandlerEPKN14MimeTreeParser10URLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer17URLHandlerManager17unregisterHandlerEPKNS_9Interface18BodyPartURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer17URLHandlerManager4selfE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer17URLHandlerManager8instanceEv@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer17URLHandlerManagerC1Ev@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer17URLHandlerManagerC2Ev@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer17URLHandlerManagerD1Ev@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer17URLHandlerManagerD2Ev@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer18AttachmentStrategy10headerOnlyEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18AttachmentStrategy5smartEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18AttachmentStrategy6createENS0_4TypeE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18AttachmentStrategy6createERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18AttachmentStrategy6hiddenEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18AttachmentStrategy6iconicEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18AttachmentStrategy7inlinedEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18AttachmentStrategyC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18AttachmentStrategyC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18AttachmentStrategyD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18AttachmentStrategyD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18AttachmentStrategyD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18BufferedHtmlWriter3endEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18BufferedHtmlWriter5beginEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18BufferedHtmlWriter5clearEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18BufferedHtmlWriter5resetEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18BufferedHtmlWriter9embedPartERK10QByteArrayRK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18BufferedHtmlWriter9extraHeadERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18BufferedHtmlWriterC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18BufferedHtmlWriterC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18BufferedHtmlWriterD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18BufferedHtmlWriterD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18BufferedHtmlWriterD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18InvitationSettings11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18InvitationSettings11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18InvitationSettings16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18InvitationSettings22doResetToDefaultsOtherEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18InvitationSettings24doLoadFromGlobalSettingsEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18InvitationSettings28slotLegacyBodyInvitesToggledEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18InvitationSettings4saveEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18InvitationSettings7changedEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18InvitationSettingsC1EP7QWidget@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18InvitationSettingsC2EP7QWidget@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18InvitationSettingsD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18InvitationSettingsD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18InvitationSettingsD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18RichHeaderStrategyC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18RichHeaderStrategyC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18RichHeaderStrategyD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18RichHeaderStrategyD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer18RichHeaderStrategyD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19AttachmentMarkBlock12internalExitEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19AttachmentMarkBlock13internalEnterEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19AttachmentMarkBlockC1EPNS_10HtmlWriterEPN5KMime7ContentE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19AttachmentMarkBlockC2EPNS_10HtmlWriterEPN5KMime7ContentE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19AttachmentMarkBlockD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19AttachmentMarkBlockD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19AttachmentMarkBlockD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19GrantleeHeaderStyleC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19GrantleeHeaderStyleC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19GrantleeHeaderStyleD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19GrantleeHeaderStyleD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19GrantleeHeaderStyleD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19MailWebEngineScript31manageShowHideEncryptionDetailsEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19ViewerPluginManager11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19ViewerPluginManager11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19ViewerPluginManager13setPluginNameERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19ViewerPluginManager16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19ViewerPluginManager18setServiceTypeNameERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19ViewerPluginManager20initializePluginListEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19ViewerPluginManager20pluginFromIdentifierERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19ViewerPluginManager4selfEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19ViewerPluginManagerC1EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19ViewerPluginManagerC2EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19ViewerPluginManagerD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19ViewerPluginManagerD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer19ViewerPluginManagerD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer20HeaderStyleInterface11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer20HeaderStyleInterface11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer20HeaderStyleInterface12styleChangedEPNS_17HeaderStylePluginE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer20HeaderStyleInterface12styleUpdatedEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer20HeaderStyleInterface15addActionToMenuEP11KActionMenuP12QActionGroup@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer20HeaderStyleInterface16slotStyleChangedEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer20HeaderStyleInterface16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer20HeaderStyleInterface17addHelpTextActionEP7QActionRK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer20HeaderStyleInterfaceC1EPNS_17HeaderStylePluginEP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer20HeaderStyleInterfaceC2EPNS_17HeaderStylePluginEP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer20HeaderStyleInterfaceD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer20HeaderStyleInterfaceD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer20HeaderStyleInterfaceD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21MessageViewerSettings11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21MessageViewerSettings11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21MessageViewerSettings11requestSyncEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21MessageViewerSettings11slotSyncNowEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21MessageViewerSettings16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21MessageViewerSettings4selfEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21MessageViewerSettings5mSelfE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21MessageViewerSettingsC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21MessageViewerSettingsC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21MessageViewerSettingsD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21MessageViewerSettingsD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21MessageViewerSettingsD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface10setMessageERK14QSharedPointerIN5KMime7MessageEE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface10showWidgetEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface11closePluginEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface12updateActionERKN7Akonadi4ItemE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface14activatePluginEPS0_@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface14setMessageItemERKN7Akonadi4ItemE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface17addHelpTextActionEP7QActionRK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface17refreshActionListEP17KActionCollection@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface18slotActivatePluginEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface20setCurrentCollectionERKN7Akonadi10CollectionE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface6setUrlERK4QUrl@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface7executeEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterface7setTextERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterfaceC1EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterfaceC2EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterfaceD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterfaceD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer21ViewerPluginInterfaceD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22HeaderStyleMenuManager10readConfigEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22HeaderStyleMenuManager11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22HeaderStyleMenuManager11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22HeaderStyleMenuManager12styleChangedEPNS_17HeaderStylePluginE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22HeaderStyleMenuManager12styleUpdatedEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22HeaderStyleMenuManager13setPluginNameERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22HeaderStyleMenuManager16slotStyleChangedEPNS_17HeaderStylePluginE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22HeaderStyleMenuManager16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22HeaderStyleMenuManagerC1EP17KActionCollectionP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22HeaderStyleMenuManagerC2EP17KActionCollectionP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22HeaderStyleMenuManagerD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22HeaderStyleMenuManagerD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22HeaderStyleMenuManagerD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22MarkMessageReadHandler11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22MarkMessageReadHandler11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22MarkMessageReadHandler16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22MarkMessageReadHandler7setItemERKN7Akonadi4ItemE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22MarkMessageReadHandlerC1EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22MarkMessageReadHandlerC2EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22MarkMessageReadHandlerD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22MarkMessageReadHandlerD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22MarkMessageReadHandlerD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22ScamDetectionWebEngine11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22ScamDetectionWebEngine11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22ScamDetectionWebEngine11showDetailsEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22ScamDetectionWebEngine14handleScanPageERK8QVariant@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22ScamDetectionWebEngine16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22ScamDetectionWebEngine17messageMayBeAScamEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22ScamDetectionWebEngine19resultScanDetectionEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22ScamDetectionWebEngine8scanPageEP14QWebEnginePage@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22ScamDetectionWebEngineC1EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22ScamDetectionWebEngineC2EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22ScamDetectionWebEngineD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22ScamDetectionWebEngineD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer22ScamDetectionWebEngineD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23GrantleeHeaderFormatterC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23GrantleeHeaderFormatterC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23GrantleeHeaderFormatterD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23GrantleeHeaderFormatterD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23GrantleeHeaderTestStyle15setAbsolutePathERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23GrantleeHeaderTestStyle15setMainFilenameERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23GrantleeHeaderTestStyle22setExtraDisplayHeadersERK11QStringList@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23GrantleeHeaderTestStyleC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23GrantleeHeaderTestStyleC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23GrantleeHeaderTestStyleD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23GrantleeHeaderTestStyleD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23GrantleeHeaderTestStyleD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23MessagePartRenderPluginD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23MessagePartRenderPluginD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23MessagePartRenderPluginD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23MessagePartRendererBaseC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23MessagePartRendererBaseC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23MessagePartRendererBaseD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23MessagePartRendererBaseD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23MessagePartRendererBaseD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManager10createViewEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManager11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManager11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManager13closeAllToolsEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManager13setPluginNameERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManager13updateActionsERKN7Akonadi4ItemE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManager14activatePluginEPNS_21ViewerPluginInterfaceE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManager16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManager17refreshActionListEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManager18setServiceTypeNameERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManager19setActionCollectionEP17KActionCollection@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManager20initializePluginListEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManagerC1EP7QWidgetP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManagerC2EP7QWidgetP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManagerD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManagerD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer23ViewerPluginToolManagerD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24HeaderStylePluginManager11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24HeaderStylePluginManager11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24HeaderStylePluginManager16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24HeaderStylePluginManager20pluginFromIdentifierERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24HeaderStylePluginManager4selfEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24HeaderStylePluginManagerC1EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24HeaderStylePluginManagerC2EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24HeaderStylePluginManagerD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24HeaderStylePluginManagerD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24HeaderStylePluginManagerD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24ScamCheckShortUrlManager11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24ScamCheckShortUrlManager11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24ScamCheckShortUrlManager16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24ScamCheckShortUrlManager4selfEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24ScamCheckShortUrlManagerC1EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24ScamCheckShortUrlManagerC2EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24ScamCheckShortUrlManagerD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24ScamCheckShortUrlManagerD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer24ScamCheckShortUrlManagerD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer25BodyPartURLHandlerManager15registerHandlerEPKNS_9Interface18BodyPartURLHandlerERK7QString@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer25BodyPartURLHandlerManager17unregisterHandlerEPKNS_9Interface18BodyPartURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer25BodyPartURLHandlerManagerD0Ev@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer25BodyPartURLHandlerManagerD1Ev@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer25BodyPartURLHandlerManagerD2Ev@ABI_5_5 4:18.03.60+git20171130 + _ZN13MessageViewer25MailTrackingDetailsDialog10readConfigEv@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingDetailsDialog10setDetailsERK7QString@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingDetailsDialog11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingDetailsDialog11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingDetailsDialog11writeConfigEv@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingDetailsDialog16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingDetailsDialogC1EP7QWidget@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingDetailsDialogC2EP7QWidget@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingDetailsDialogD0Ev@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingDetailsDialogD1Ev@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingDetailsDialogD2Ev@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingWarningWidget10addTrackerERKNS_31BlockMailTrackingUrlInterceptor20MailTrackerBlackListE@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingWarningWidget11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingWarningWidget11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingWarningWidget12hideAndClearEv@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingWarningWidget15slotShowDetailsERK7QString@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingWarningWidget16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingWarningWidgetC1EP7QWidget@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingWarningWidgetC2EP7QWidget@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingWarningWidgetD0Ev@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingWarningWidgetD1Ev@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MailTrackingWarningWidgetD2Ev@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer25MessageViewerSettingsBase4selfEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer25MessageViewerSettingsBaseC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer25MessageViewerSettingsBaseC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer25MessageViewerSettingsBaseD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer25MessageViewerSettingsBaseD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer25MessageViewerSettingsBaseD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererFactory13setPluginPathERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererFactory8instanceEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererFactoryC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererFactoryC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererFactoryD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererFactoryD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererManager10loadByNameERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererManager11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererManager11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererManager13createContextEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererManager16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererManager18initializeRendererEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererManager4selfEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererManagerC1EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererManagerC2EP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererManagerD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererManagerD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26MessagePartRendererManagerD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidget11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidget11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidget11showDetailsEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidget14addToWhiteListEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidget15slotShowDetailsERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidget15slotShowWarningEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidget16setUseInTestAppsEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidget16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidget17messageIsNotAScamEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidget18moveMessageToTrashEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidget18slotAddToWhiteListEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidget21slotMessageIsNotAScamEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidget24slotDisableScamDetectionEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidgetC1EP7QWidget@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidgetC2EP7QWidget@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidgetD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidgetD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer26ScamDetectionWarningWidgetD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer28AbstractMessageLoadedHandler10setSessionEPN7Akonadi7SessionE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer28AbstractMessageLoadedHandlerC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer28AbstractMessageLoadedHandlerC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer28AbstractMessageLoadedHandlerD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer28AbstractMessageLoadedHandlerD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer28AbstractMessageLoadedHandlerD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer29MessageDisplayFormatAttribute11deserializeERK10QByteArray@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer29MessageDisplayFormatAttribute16setMessageFormatENS_6Viewer20DisplayFormatMessageE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer29MessageDisplayFormatAttribute16setRemoteContentEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer29MessageDisplayFormatAttributeC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer29MessageDisplayFormatAttributeC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer29MessageDisplayFormatAttributeD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer29MessageDisplayFormatAttributeD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer29MessageDisplayFormatAttributeD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer4Util14checkOverwriteERK4QUrlP7QWidget@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer4Util15createAppActionERK28QExplicitlySharedDataPointerI8KServiceEbP12QActionGroupP7QObject@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer4Util15saveAttachmentsERK7QVectorIPN5KMime7ContentEEP7QWidgetR5QListI4QUrlE@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer4Util17saveMessageInMboxERK7QVectorIN7Akonadi4ItemEEP7QWidgetb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer4Util18iconPathForContentEPN5KMime7ContentEi@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer4Util19iconPathForMimetypeERK7QStringiS3_S3_@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer4Util20generateMboxFileNameERKN7Akonadi4ItemE@ABI_5_5 4:18.03.80+git20180326 + _ZN13MessageViewer4Util26saveMessageInMboxAndGetUrlER4QUrlRK7QVectorIN7Akonadi4ItemEEP7QWidgetb@ABI_5_5 4:18.03.80+git20180326 + _ZN13MessageViewer6KXFace10UnCompressEPciii@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace3GenEPc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace4SameEPcii@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace6BigAddEh@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace6BigDivEhPh@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace6BigMulEh@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace6BigPopEPK4prob@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace7BigPushEP4prob@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace7BigReadEPc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace7CompAllEPc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace7GenFaceEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace7RevPushEPK4prob@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace7toImageERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace8AllBlackEPcii@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace8AllWhiteEPcii@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace8BigClearEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace8BigWriteEPc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace8CompressEPciii@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace8PopGreysEPcii@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace8ReadFaceEPc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace9PushGreysEPcii@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace9UnCompAllEPc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace9UnGenFaceEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace9WriteFaceEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFace9fromImageERK6QImage@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFaceC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFaceC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFaceD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFaceD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6KXFaceD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer10closeEventEP11QCloseEvent@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer10initializeEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer10mainWindowEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer10readConfigEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer10setMessageERK14QSharedPointerIN5KMime7MessageEEN14MimeTreeParser10UpdateModeE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer10showReaderEPN5KMime7ContentEbRK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer10slotZoomInEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer10urlClickedERKN7Akonadi4ItemERK4QUrl@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer11changeEventEP6QEvent@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer11itemRemovedEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer11qt_metacastEPKc@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer11resizeEventEP12QResizeEvent@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer11setPrintingEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer11showMessageERK14QSharedPointerIN5KMime7MessageEERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer11slotZoomOutEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer11writeConfigEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer12printMessageERKN7Akonadi4ItemE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer12printPreviewEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer12slotJumpDownEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer12slotScrollUpEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer13deleteMessageERKN7Akonadi4ItemE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer13deleteMessageEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer13runJavaScriptERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer13setPluginNameERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer13setZoomFactorEd@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer13slotZoomResetEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer14createFetchJobERKN7Akonadi4ItemE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer14replyMessageToERK14QSharedPointerIN5KMime7MessageEEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer14setMessageItemERKN7Akonadi4ItemEN14MimeTreeParser10UpdateModeE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer14setMessagePartEPN5KMime7ContentE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer14setMessagePathERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer14slotScrollDownEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer14slotScrollNextEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer15setUseFixedFontEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer15slotSaveMessageEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer15slotScrollPriorEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer16displayPopupMenuERKN7Akonadi4ItemERKN15WebEngineViewer16WebHitTestResultERK6QPoint@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer16printingFinishedEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer16staticMetaObjectE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer17displaySplashPageERK7QStringRK5QHashIS1_8QVariantERK10QByteArray@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer17requestConfigSyncEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer18makeResourceOnlineENS0_18ResourceOnlineModeE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer18moveMessageToTrashEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer19printPreviewMessageERKN7Akonadi4ItemE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer19setOverrideEncodingERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer20enableMessageDisplayEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer20showStatusBarMessageERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer20slotAttachmentSaveAsEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer21setAttachmentStrategyEPKNS_18AttachmentStrategyE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer21setHtmlLoadExtDefaultEb@ABI_5_5 4:18.04.0+git20180429 + _ZN13MessageViewer6Viewer21slotAttachmentSaveAllEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer21slotChangeDisplayMailENS0_20DisplayFormatMessageEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer21slotShowMessageSourceEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer22pageIsScrolledToBottomEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer22setHtmlLoadExtOverrideEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer22viewerPluginActionListE6QFlagsINS_21ViewerPluginInterface19SpecificFeatureTypeEE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer23addMessageLoadedHandlerEPNS_28AbstractMessageLoadedHandlerE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer24copySelectionToClipboardEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer25setPrintElementBackgroundEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer26removeMessageLoadedHandlerEPNS_28AbstractMessageLoadedHandlerE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer26setDecryptMessageOverwriteEb@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer29saveMainFrameScreenshotInFileERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer30showOpenAttachmentFolderWidgetERK5QListI4QUrlE@ABI_5_5 4:18.03.60+git20171231 + _ZN13MessageViewer6Viewer32setDisplayFormatMessageOverwriteENS0_20DisplayFormatMessageE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer5clearEN14MimeTreeParser10UpdateModeE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer5eventEP6QEvent@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer5printEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer6updateEN14MimeTreeParser10UpdateModeE@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer8atBottomEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer8slotFindEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer9popupMenuERKN7Akonadi4ItemERK4QUrlS7_RK6QPoint@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6Viewer9selectAllEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6ViewerC1EP7QWidgetS2_P17KActionCollection@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6ViewerC2EP7QWidgetS2_P17KActionCollection@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6ViewerD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6ViewerD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer6ViewerD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer9CSSHelperC1EPK12QPaintDevice@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer9CSSHelperC2EPK12QPaintDevice@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer9CSSHelperD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer9CSSHelperD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer9CSSHelperD2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer9HTMLBlock4exitEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer9HTMLBlock5enterEv@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer9HTMLBlockC1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer9HTMLBlockC2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer9HTMLBlockD0Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer9HTMLBlockD1Ev@ABI_5_5 4:18.03.60+git20171121 + _ZN13MessageViewer9HTMLBlockD2Ev@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst|arch=amd64 i386)_ZN5KMime7Content6headerINS_7Headers7SubjectEEEPT_b@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst)_ZN7Akonadi4Item14setPayloadImplI14QSharedPointerIN5KMime7MessageEEEENSt9enable_ifIXntsrNS_8Internal12PayloadTraitIT_EE13isPolymorphicEvE4typeERKS9_@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst)_ZN7QObject7connectIM7QActionFvbEMN13MessageViewer13ViewerPrivateEFvvEEEN11QMetaObject10ConnectionEPKN9QtPrivate15FunctionPointerIT_E6ObjectESC_PKNSB_IT0_E6ObjectESH_N2Qt14ConnectionTypeE@ABI_5_5 4:18.03.60+git20171130 + (optional=templinst)_ZNK12KConfigGroup9readEntryI10QByteArrayEET_PKcRKS2_@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst)_ZNK12KConfigGroup9readEntryI5QFontEET_PKcRKS2_@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst)_ZNK12KConfigGroup9readEntryI5QSizeEET_PKcRKS2_@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst)_ZNK12KConfigGroup9readEntryI6QColorEET_PKcRKS2_@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst|arch=armhf i386)_ZNK12KConfigGroup9readEntryIbEET_PKcRKS1_@ABI_5_5 4:18.04.1 + (optional=templinst|arch=armhf i386)_ZNK12KConfigGroup9readEntryIiEET_PKcRKS1_@ABI_5_5 4:18.04.1 + _ZNK13MessageViewer10HtmlWriter6streamEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11EmptySource10htmlWriterEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer11EmptySource10isPrintingEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11EmptySource10levelQuoteEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11EmptySource13preferredModeEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11EmptySource13showEmoticonsEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11EmptySource14autoImportKeysEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11EmptySource14decryptMessageEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11EmptySource16htmlLoadExternalEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11EmptySource18attachmentStrategyEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer11EmptySource20showExpandQuotesMarkEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11EmptySource20showSignatureDetailsEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11EmptySource9cssHelperEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer11HeaderStyle10allowAsyncEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11HeaderStyle10isPrintingEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11HeaderStyle10isTopLevelEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11HeaderStyle10nodeHelperEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11HeaderStyle11messagePathEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11HeaderStyle12sourceObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11HeaderStyle13messageStatusEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11HeaderStyle13showEmoticonsEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11HeaderStyle14attachmentHtmlEv@ABI_5_5 4:18.04.0+git20180429 + _ZNK13MessageViewer11HeaderStyle14collectionNameEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11HeaderStyle14headerStrategyEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11HeaderStyle15readOnlyMessageEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11HeaderStyle5themeEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer11HeaderStyle9vCardNameEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer12ViewerPlugin10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer12ViewerPlugin18hasConfigureDialogEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer12ViewerPlugin9isEnabledEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13CSSHelperBase10quoteColorEi@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13CSSHelperBase12pgpWarnColorEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13CSSHelperBase12quoteFontTagEi@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13CSSHelperBase14cssDefinitionsEb@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13CSSHelperBase14quoteColorNameEi@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13CSSHelperBase15fullAddressListEv@ABI_5_5 4:18.04.0+git20180429 + _ZNK13MessageViewer13CSSHelperBase16addEndBlockQuoteEi@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13CSSHelperBase16nonQuotedFontTagEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13CSSHelperBase18addStartBlockQuoteEi@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13CSSHelperBase18quoteCssDefinitionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13CSSHelperBase19printCssDefinitionsEb@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13CSSHelperBase20commonCssDefinitionsEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13CSSHelperBase20screenCssDefinitionsEPKS0_b@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13CSSHelperBase8bodyFontEbb@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13CSSHelperBase8fontSizeEbb@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13CSSHelperBase8htmlHeadEb@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13EditorWatcher10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13EditorWatcher11fileChangedEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13EditorWatcher3urlEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13IconNameCache17iconPathFromLocalERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13IconNameCache5EntryltERKS1_@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13IconNameCache8iconPathERK7QStringi@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13IconNameCache8picsPathEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer13ViewerPrivate10htmlWriterEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate10metaObjectEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate10nodeHelperEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate11messageItemEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate11nodeFromUrlERK4QUrl@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate12printingModeEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate13overrideCodecEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate13showEmoticonsEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate14attachmentHtmlEv@ABI_5_5 4:18.04.0+git20180429 + _ZNK13MessageViewer13ViewerPrivate14decryptMessageEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate16htmlLoadExternalEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate16overrideEncodingEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate17createAtmFileLinkERK7QString@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate17headerStylePluginEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate17renderAttachmentsEPN5KMime7ContentERK6QColor@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate17saveSplitterSizesEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate18attachmentStrategyEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate19htmlLoadExtOverrideEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate19mimePartTreeIsEmptyEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate20showSignatureDetailsEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate21htmlMailGlobalSettingEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate21interceptorUrlActionsERKN15WebEngineViewer16WebHitTestResultE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate29displayFormatMessageOverwriteEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate6viewerEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate7messageEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate8htmlMailEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate8imageUrlEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer13ViewerPrivate9cssHelperEv@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer14FileHtmlWriter6deviceEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer14HeaderStrategy10showHeaderERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer14HeaderStrategy13headersToHideEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer14HeaderStrategy16headersToDisplayEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer14KRunURLHandler11handleClickERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer15ConfigureWidget10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer15HeaderStyleUtil10dateStringEPN5KMime7MessageEbNS0_25HeaderStyleUtilDateFormatE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer15HeaderStyleUtil10spamStatusEPN5KMime7MessageE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer15HeaderStyleUtil11directionOfERK7QString@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer15HeaderStyleUtil12dateShortStrERK9QDateTime@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer15HeaderStyleUtil12imgToDataUrlERK6QImage@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer15HeaderStyleUtil12resentToListEPN5KMime7MessageE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer15HeaderStyleUtil13drawSpamMeterENS_9SpamErrorEddRK7QStringS4_@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer15HeaderStyleUtil13subjectStringEPN5KMime7MessageE6QFlagsIN11KTextToHTML6OptionEE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer15HeaderStyleUtil14resentFromListEPN5KMime7MessageE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer15HeaderStyleUtil19updateXFaceSettingsE6QImageRNS0_13xfaceSettingsE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer15HeaderStyleUtil22subjectDirectionStringEPN5KMime7MessageE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer15HeaderStyleUtil5xfaceEPKNS_11HeaderStyleEPN5KMime7MessageE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer15HeaderStyleUtil7dateStrERK9QDateTime@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer15HeaderStyleUtil9strToHtmlERK7QString6QFlagsIN11KTextToHTML6OptionEE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer15SMimeURLHandler11handleClickERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer15SMimeURLHandler16statusBarMessageERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer16MailToURLHandler16statusBarMessageERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer16PlainHeaderStyle4nameEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer16PlainHeaderStyle6formatEPN5KMime7MessageE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer16PrintingSettings10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer16ScamExpandUrlJob10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer17HeaderStylePlugin10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer17HeaderStylePlugin14elidedTextSizeEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer17HeaderStylePlugin18hasConfigureDialogEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer17HeaderStylePlugin9alignmentEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer17HeaderStylePlugin9hasMarginEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer17HeaderStylePlugin9isEnabledEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer17HtmlAnchorHandler11handleClickERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer17MailWebEnginePage10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer17MailWebEngineView10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer17MailWebEngineView21interceptorUrlActionsERKN15WebEngineViewer16WebHitTestResultE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer17ScamCheckShortUrl10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer17URLHandlerManager10handleDragERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer17URLHandlerManager11handleClickERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer17URLHandlerManager14willHandleDragERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer17URLHandlerManager16handleShiftClickERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer17URLHandlerManager16statusBarMessageERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer17URLHandlerManager24handleContextMenuRequestERK4QUrlRK6QPointPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer18AttachmentStrategy30requiresAttachmentListInHeaderEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer18BufferedHtmlWriter4dataEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer18BufferedHtmlWriter6deviceEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer18InvitationSettings10helpAnchorEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer18InvitationSettings10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer19AttachmentMarkBlock10exitStringEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer19AttachmentMarkBlock11enterStringEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer19GrantleeHeaderStyle14showMailActionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer19GrantleeHeaderStyle4nameEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer19GrantleeHeaderStyle6formatEPN5KMime7MessageE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer19ViewerPluginManager10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer19ViewerPluginManager10pluginNameEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer19ViewerPluginManager11pluginsListEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer19ViewerPluginManager15configGroupNameEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer19ViewerPluginManager15pluginsDataListEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer19ViewerPluginManager15serviceTypeNameEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer19ViewerPluginManager22configPrefixSettingKeyEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer20AttachmentURLHandler10handleDragERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer20AttachmentURLHandler10nodeForUrlERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer20AttachmentURLHandler11handleClickERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer20AttachmentURLHandler14willHandleDragERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer20AttachmentURLHandler16handleShiftClickERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer20AttachmentURLHandler16statusBarMessageERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer20AttachmentURLHandler20attachmentIsInHeaderERK4QUrl@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer20AttachmentURLHandler24handleContextMenuRequestERK4QUrlRK6QPointPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer20ContactUidURLHandler11handleClickERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer20ContactUidURLHandler16statusBarMessageERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer20ContactUidURLHandler24handleContextMenuRequestERK4QUrlRK6QPointPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer20HeaderStyleInterface10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer20HeaderStyleInterface17headerStylePluginEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer20HeaderStyleInterface6actionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer21MessageViewerSettings10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer21ViewerPluginInterface10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer21ViewerPluginInterface7actionsEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer22HeaderStyleMenuManager10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer22HeaderStyleMenuManager4menuEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer22MarkMessageReadHandler10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer22ScamDetectionWebEngine10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer22ShowAuditLogURLHandler10handleDragERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer22ShowAuditLogURLHandler11handleClickERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer22ShowAuditLogURLHandler16statusBarMessageERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer22ShowAuditLogURLHandler24handleContextMenuRequestERK4QUrlRK6QPointPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer23EmbeddedImageURLHandler10handleDragERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer23EmbeddedImageURLHandler14willHandleDragERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer23GrantleeHeaderFormatter6formatERK7QStringRK14QSharedPointerIN8Grantlee12TemplateImplEERK11QStringListbPKNS_11HeaderStyleEPN5KMime7MessageEb@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer23GrantleeHeaderFormatter6toHtmlERK11QStringListRK7QStringS6_PKNS_11HeaderStyleEPN5KMime7MessageEb@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer23GrantleeHeaderFormatter6toHtmlERKNS0_31GrantleeHeaderFormatterSettingsE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer23GrantleeHeaderTestStyle4nameEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer23GrantleeHeaderTestStyle6formatEPN5KMime7MessageE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer23InternalImageURLHandler10handleDragERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer23InternalImageURLHandler14willHandleDragERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer23KMailProtocolURLHandler11handleClickERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer23KMailProtocolURLHandler16statusBarMessageERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer23MessagePartRenderPlugin10urlHandlerEi@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer23ViewerPluginToolManager10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer23ViewerPluginToolManager10pluginNameEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer23ViewerPluginToolManager15serviceTypeNameEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer23ViewerPluginToolManager22viewerPluginActionListE6QFlagsINS_21ViewerPluginInterface19SpecificFeatureTypeEE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer24HeaderStylePluginManager10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer24HeaderStylePluginManager11pluginsListEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer24HeaderStylePluginManager14pluginListNameEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer24HeaderStylePluginManager15configGroupNameEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer24HeaderStylePluginManager15pluginsDataListEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer24HeaderStylePluginManager22configPrefixSettingKeyEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer24ScamCheckShortUrlManager10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer24ScamCheckShortUrlManager17scamCheckShortUrlEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer25BodyPartURLHandlerManager11handleClickERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer25BodyPartURLHandlerManager15handlersForPartEPN5KMime7ContentE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer25BodyPartURLHandlerManager16statusBarMessageERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer25BodyPartURLHandlerManager24handleContextMenuRequestERK4QUrlRK6QPointPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer25MailTrackingDetailsDialog10metaObjectEv@ABI_5_5 4:18.03.60+git20171231 + _ZNK13MessageViewer25MailTrackingWarningWidget10metaObjectEv@ABI_5_5 4:18.03.60+git20171231 + _ZNK13MessageViewer25MailTrackingWarningWidget15generateDetailsEv@ABI_5_5 4:18.03.60+git20171231 + _ZNK13MessageViewer26MessagePartRendererFactory16renderersForPartEPK11QMetaObjectRK14QSharedPointerIN14MimeTreeParser11MessagePartEE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer26MessagePartRendererManager10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer26ScamDetectionWarningWidget10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer28AbstractMessageLoadedHandler7sessionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer29ExpandCollapseQuoteURLManager10handleDragERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer29ExpandCollapseQuoteURLManager11handleClickERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer29ExpandCollapseQuoteURLManager16statusBarMessageERK4QUrlPNS_13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZNK13MessageViewer29MessageDisplayFormatAttribute10serializedEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer29MessageDisplayFormatAttribute13messageFormatEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer29MessageDisplayFormatAttribute13remoteContentEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer29MessageDisplayFormatAttribute4typeEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer29MessageDisplayFormatAttribute5cloneEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer29MessageDisplayFormatAttributeeqERKS0_@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6KXFace10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer10copyActionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer10metaObjectEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer10urlClickedEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer11isFixedFontEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer11messageItemEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer11messagePathEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer12printingModeEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer12saveAsActionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer12selectedTextEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer13copyURLActionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer13urlOpenActionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer15imageUrlClickedEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer15selectAllActionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer15speakTextActionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer16htmlLoadExternalEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer16messageTreeModelEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer16overrideEncodingEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer16viewSourceActionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer17copyImageLocationEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer17headerStylePluginEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer18attachmentStrategyEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer19findInMessageActionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer19htmlLoadExtOverrideEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer19mimePartTreeIsEmptyEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer19shareServiceUrlMenuEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer19toggleFixFontActionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer21disableEmoticonActionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer21interceptorUrlActionsERKN15WebEngineViewer16WebHitTestResultE@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer24toggleMimePartTreeActionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer29displayFormatMessageOverwriteEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer30saveMessageDisplayFormatActionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer31resetMessageDisplayFormatActionEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer7messageEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer8htmlMailEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer6Viewer9cssHelperEv@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer9CSSHelper8htmlHeadEb@ABI_5_5 4:18.03.60+git20171121 + _ZNK13MessageViewer9HTMLBlock3dirEv@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst)_ZNK7Akonadi4Item10hasPayloadI14QSharedPointerIN5KMime7MessageEEEEbv@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst)_ZNK7Akonadi4Item11payloadImplI14QSharedPointerIN5KMime7MessageEEEENSt9enable_ifIXntsrNS_8Internal12PayloadTraitIT_EE13isPolymorphicES9_E4typeEv@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst)_ZNK7Akonadi4Item14tryToCloneImplI14QSharedPointerIN5KMime7MessageEESt10shared_ptrIS4_EEENSt9enable_ifIXntsrSt7is_sameIT_T0_E5valueEbE4typeEPSA_PKi@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst)_ZNK7Akonadi4Item7payloadI14QSharedPointerIN5KMime7MessageEEEET_v@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst)_ZNSt14_Function_base13_Base_managerISt5_BindIFMN13MessageViewer11EmptySourceEF7QStringPN5KMime7MessageEEPS3_St12_PlaceholderILi1EEEEE10_M_managerERSt9_Any_dataRKSG_St18_Manager_operation@ABI_5_5 4:18.03.60+git20171130 + (optional=templinst)_ZNSt15_Sp_counted_ptrIDnLN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst)_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst)_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst)_ZNSt17_Function_handlerIF7QStringPN5KMime7MessageEESt5_BindIFMN13MessageViewer11EmptySourceEFS0_S3_EPS7_St12_PlaceholderILi1EEEEE9_M_invokeERKSt9_Any_dataOS3_@ABI_5_5 4:18.03.60+git20171130 + (optional=templinst)_ZNSt6vectorIN5GpgME6ImportESaIS1_EED1Ev@ABI_5_5 4:18.03.60+git20171121 + (optional=templinst)_ZNSt6vectorIN5GpgME6ImportESaIS1_EED2Ev@ABI_5_5 4:18.03.60+git20171121 + _ZTI11QSharedData@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer10HtmlWriterE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer11EmptySourceE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer11HeaderStyleE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer12ViewerPluginE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer13CSSHelperBaseE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer13EditorWatcherE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer13RenderContextE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZTIN13MessageViewer14FileHtmlWriterE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer14HeaderStrategyE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer14KRunURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTIN13MessageViewer15ConfigureWidgetE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer15SMimeURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTIN13MessageViewer16MailToURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTIN13MessageViewer16PlainHeaderStyleE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer16PrintingSettingsE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer16ScamExpandUrlJobE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer17HeaderStylePluginE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer17HtmlAnchorHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTIN13MessageViewer17MailWebEnginePageE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer17MailWebEngineViewE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer17ScamCheckShortUrlE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer18AttachmentStrategyE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer18BufferedHtmlWriterE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer18InvitationSettingsE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer18RichHeaderStrategyE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer19AttachmentMarkBlockE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer19GrantleeHeaderStyleE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer19ViewerPluginManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer20AttachmentURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTIN13MessageViewer20ContactUidURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTIN13MessageViewer20HeaderStyleInterfaceE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer21MessageViewerSettingsE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer21ViewerPluginInterfaceE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer22HeaderStyleMenuManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer22MarkMessageReadHandlerE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer22ScamDetectionWebEngineE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer22ShowAuditLogURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTIN13MessageViewer23EmbeddedImageURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTIN13MessageViewer23GrantleeHeaderTestStyleE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer23InternalImageURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTIN13MessageViewer23KMailProtocolURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTIN13MessageViewer23MessagePartRenderPluginE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer23MessagePartRendererBaseE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer23ViewerPluginToolManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer24HeaderStylePluginManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer24ScamCheckShortUrlManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer25BodyPartURLHandlerManagerE@ABI_5_5 4:18.03.60+git20171130 + _ZTIN13MessageViewer25MailTrackingDetailsDialogE@ABI_5_5 4:18.03.60+git20171231 + _ZTIN13MessageViewer25MailTrackingWarningWidgetE@ABI_5_5 4:18.03.60+git20171231 + _ZTIN13MessageViewer25MessageViewerSettingsBaseE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer26MessagePartRendererManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer26ScamDetectionWarningWidgetE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer28AbstractMessageLoadedHandlerE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer29ExpandCollapseQuoteURLManagerE@ABI_5_5 4:18.03.60+git20171130 + _ZTIN13MessageViewer29MessageDisplayFormatAttributeE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer6KXFaceE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer6ViewerE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer9CSSHelperE@ABI_5_5 4:18.03.60+git20171121 + _ZTIN13MessageViewer9HTMLBlockE@ABI_5_5 4:18.03.60+git20171121 + _ZTISt17_Weak_result_typeIMN13MessageViewer11EmptySourceEF7QStringPN5KMime7MessageEEE@ABI_5_5 4:18.03.60+git20171130 + (optional)_ZTISt22_Weak_result_type_implIMN13MessageViewer11EmptySourceEF7QStringPN5KMime7MessageEEE@ABI_5_5 4:18.04.3 + _ZTISt24_Weak_result_type_memfunIMN13MessageViewer11EmptySourceEF7QStringPN5KMime7MessageEELb1EE@ABI_5_5 4:18.04.3 + _ZTISt5_BindIFMN13MessageViewer11EmptySourceEF7QStringPN5KMime7MessageEEPS1_St12_PlaceholderILi1EEEE@ABI_5_5 4:18.03.60+git20171130 + _ZTS11QSharedData@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer10HtmlWriterE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer11EmptySourceE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer11HeaderStyleE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer12ViewerPluginE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer13CSSHelperBaseE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer13EditorWatcherE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer13RenderContextE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZTSN13MessageViewer14FileHtmlWriterE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer14HeaderStrategyE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer14KRunURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTSN13MessageViewer15ConfigureWidgetE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer15SMimeURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTSN13MessageViewer16MailToURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTSN13MessageViewer16PlainHeaderStyleE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer16PrintingSettingsE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer16ScamExpandUrlJobE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer17HeaderStylePluginE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer17HtmlAnchorHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTSN13MessageViewer17MailWebEnginePageE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer17MailWebEngineViewE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer17ScamCheckShortUrlE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer18AttachmentStrategyE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer18BufferedHtmlWriterE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer18InvitationSettingsE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer18RichHeaderStrategyE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer19AttachmentMarkBlockE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer19GrantleeHeaderStyleE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer19ViewerPluginManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer20AttachmentURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTSN13MessageViewer20ContactUidURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTSN13MessageViewer20HeaderStyleInterfaceE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer21MessageViewerSettingsE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer21ViewerPluginInterfaceE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer22HeaderStyleMenuManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer22MarkMessageReadHandlerE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer22ScamDetectionWebEngineE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer22ShowAuditLogURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTSN13MessageViewer23EmbeddedImageURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTSN13MessageViewer23GrantleeHeaderTestStyleE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer23InternalImageURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTSN13MessageViewer23KMailProtocolURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTSN13MessageViewer23MessagePartRenderPluginE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer23MessagePartRendererBaseE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer23ViewerPluginToolManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer24HeaderStylePluginManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer24ScamCheckShortUrlManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer25BodyPartURLHandlerManagerE@ABI_5_5 4:18.03.60+git20171130 + _ZTSN13MessageViewer25MailTrackingDetailsDialogE@ABI_5_5 4:18.03.60+git20171231 + _ZTSN13MessageViewer25MailTrackingWarningWidgetE@ABI_5_5 4:18.03.60+git20171231 + _ZTSN13MessageViewer25MessageViewerSettingsBaseE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer26MessagePartRendererManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer26ScamDetectionWarningWidgetE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer28AbstractMessageLoadedHandlerE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer29ExpandCollapseQuoteURLManagerE@ABI_5_5 4:18.03.60+git20171130 + _ZTSN13MessageViewer29MessageDisplayFormatAttributeE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer6KXFaceE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer6ViewerE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer9CSSHelperE@ABI_5_5 4:18.03.60+git20171121 + _ZTSN13MessageViewer9HTMLBlockE@ABI_5_5 4:18.03.60+git20171121 + _ZTSSt17_Weak_result_typeIMN13MessageViewer11EmptySourceEF7QStringPN5KMime7MessageEEE@ABI_5_5 4:18.03.60+git20171130 + (optional)_ZTSSt22_Weak_result_type_implIMN13MessageViewer11EmptySourceEF7QStringPN5KMime7MessageEEE@ABI_5_5 4:18.04.3 + _ZTSSt24_Weak_result_type_memfunIMN13MessageViewer11EmptySourceEF7QStringPN5KMime7MessageEELb1EE@ABI_5_5 4:18.04.3 + _ZTSSt5_BindIFMN13MessageViewer11EmptySourceEF7QStringPN5KMime7MessageEEPS1_St12_PlaceholderILi1EEEE@ABI_5_5 4:18.03.60+git20171130 + _ZTVN13MessageViewer10HtmlWriterE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer11EmptySourceE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer11HeaderStyleE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer12ViewerPluginE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer13CSSHelperBaseE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer13EditorWatcherE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer13RenderContextE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer13ViewerPrivateE@ABI_5_5 4:18.03.60+git20171130 + _ZTVN13MessageViewer14FileHtmlWriterE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer14HeaderStrategyE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer14KRunURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTVN13MessageViewer15ConfigureWidgetE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer15SMimeURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTVN13MessageViewer16MailToURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTVN13MessageViewer16PlainHeaderStyleE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer16PrintingSettingsE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer16ScamExpandUrlJobE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer17HeaderStylePluginE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer17HtmlAnchorHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTVN13MessageViewer17MailWebEnginePageE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer17MailWebEngineViewE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer17ScamCheckShortUrlE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer18AttachmentStrategyE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer18BufferedHtmlWriterE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer18InvitationSettingsE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer18RichHeaderStrategyE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer19AttachmentMarkBlockE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer19GrantleeHeaderStyleE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer19ViewerPluginManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer20AttachmentURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTVN13MessageViewer20ContactUidURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTVN13MessageViewer20HeaderStyleInterfaceE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer21MessageViewerSettingsE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer21ViewerPluginInterfaceE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer22HeaderStyleMenuManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer22MarkMessageReadHandlerE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer22ScamDetectionWebEngineE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer22ShowAuditLogURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTVN13MessageViewer23EmbeddedImageURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTVN13MessageViewer23GrantleeHeaderTestStyleE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer23InternalImageURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTVN13MessageViewer23KMailProtocolURLHandlerE@ABI_5_5 4:18.03.60+git20171130 + _ZTVN13MessageViewer23MessagePartRenderPluginE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer23MessagePartRendererBaseE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer23ViewerPluginToolManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer24HeaderStylePluginManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer24ScamCheckShortUrlManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer25BodyPartURLHandlerManagerE@ABI_5_5 4:18.03.60+git20171130 + _ZTVN13MessageViewer25MailTrackingDetailsDialogE@ABI_5_5 4:18.03.60+git20171231 + _ZTVN13MessageViewer25MailTrackingWarningWidgetE@ABI_5_5 4:18.03.60+git20171231 + _ZTVN13MessageViewer25MessageViewerSettingsBaseE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer26MessagePartRendererManagerE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer26ScamDetectionWarningWidgetE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer28AbstractMessageLoadedHandlerE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer29ExpandCollapseQuoteURLManagerE@ABI_5_5 4:18.03.60+git20171130 + _ZTVN13MessageViewer29MessageDisplayFormatAttributeE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer6KXFaceE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer6ViewerE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer9CSSHelperE@ABI_5_5 4:18.03.60+git20171121 + _ZTVN13MessageViewer9HTMLBlockE@ABI_5_5 4:18.03.60+git20171121 + _ZZZN11MessageCore23MessageCoreSettingsBase28setOverrideCharacterEncodingERK7QStringENKUlvE_clEvE15qstring_literal@ABI_5_5 4:18.03.60+git20171121 + _ZZZN13MessageViewer25MessageViewerSettingsBase15setUseFixedFontEbENKUlvE_clEvE15qstring_literal@ABI_5_5 4:18.03.60+git20171121 + _ZZZN13MessageViewer25MessageViewerSettingsBase16setMimeTreeMode2EiENKUlvE_clEvE15qstring_literal@ABI_5_5 4:18.03.60+git20171121 + _ZZZN13MessageViewer25MessageViewerSettingsBase16setShowEmoticonsEbENKUlvE_clEvE15qstring_literal@ABI_5_5 4:18.03.80+git20180326 + _ZZZN13MessageViewer25MessageViewerSettingsBase17setMimePaneHeightEiENKUlvE_clEvE15qstring_literal@ABI_5_5 4:18.03.60+git20171121 + _ZZZN13MessageViewer25MessageViewerSettingsBase20setMessagePaneHeightEiENKUlvE_clEvE15qstring_literal@ABI_5_5 4:18.03.60+git20171121 + _ZZZN13MessageViewer25MessageViewerSettingsBase21setAttachmentStrategyERK7QStringENKUlvE_clEvE15qstring_literal@ABI_5_5 4:18.03.60+git20171121 + _ZZZN13MessageViewer25MessageViewerSettingsBase23setScamDetectionEnabledEbENKUlvE_clEvE15qstring_literal@ABI_5_5 4:18.03.60+git20171121 + _ZZZN13MessageViewer25MessageViewerSettingsBase24setHeaderPluginStyleNameERK7QStringENKUlvE_clEvE15qstring_literal@ABI_5_5 4:18.03.60+git20171121 + _ZZZN13MessageViewer25MessageViewerSettingsBase25setScamDetectionWhiteListERK11QStringListENKUlvE_clEvE15qstring_literal@ABI_5_5 4:18.03.60+git20171121 + (c++)"non-virtual thunk to MessageViewer::ConfigureWidget::~ConfigureWidget()@ABI_5_5" 4:18.03.60+git20171121 + (c++)"non-virtual thunk to MessageViewer::InvitationSettings::~InvitationSettings()@ABI_5_5" 4:18.03.60+git20171121 + (c++)"non-virtual thunk to MessageViewer::MailTrackingDetailsDialog::~MailTrackingDetailsDialog()@ABI_5_5" 4:18.03.60+git20171231 + (c++)"non-virtual thunk to MessageViewer::MailTrackingWarningWidget::~MailTrackingWarningWidget()@ABI_5_5" 4:18.03.60+git20171231 + (c++)"non-virtual thunk to MessageViewer::MailWebEngineView::~MailWebEngineView()@ABI_5_5" 4:18.03.60+git20171121 + (c++)"non-virtual thunk to MessageViewer::MarkMessageReadHandler::setItem(Akonadi::Item const&)@ABI_5_5" 4:18.03.60+git20171121 + (c++)"non-virtual thunk to MessageViewer::MarkMessageReadHandler::~MarkMessageReadHandler()@ABI_5_5" 4:18.03.60+git20171121 + (c++)"non-virtual thunk to MessageViewer::PrintingSettings::~PrintingSettings()@ABI_5_5" 4:18.03.60+git20171121 + (c++)"non-virtual thunk to MessageViewer::ScamDetectionWarningWidget::~ScamDetectionWarningWidget()@ABI_5_5" 4:18.03.60+git20171121 + (c++)"non-virtual thunk to MessageViewer::Viewer::~Viewer()@ABI_5_5" 4:18.03.60+git20171121 diff -Nru kf5-messagelib-17.12.3/debian/libkf5mimetreeparser5abi2.install kf5-messagelib-18.04.3/debian/libkf5mimetreeparser5abi2.install --- kf5-messagelib-17.12.3/debian/libkf5mimetreeparser5abi2.install 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/libkf5mimetreeparser5abi2.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -usr/lib/*/libKF5MimeTreeParser.so.5.* -usr/lib/*/libKF5MimeTreeParser.so.5abi2 diff -Nru kf5-messagelib-17.12.3/debian/libkf5mimetreeparser5abi3.install kf5-messagelib-18.04.3/debian/libkf5mimetreeparser5abi3.install --- kf5-messagelib-17.12.3/debian/libkf5mimetreeparser5abi3.install 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/libkf5mimetreeparser5abi3.install 2018-08-26 12:21:48.000000000 +0000 @@ -0,0 +1,2 @@ +usr/lib/*/libKF5MimeTreeParser.so.5.* +usr/lib/*/libKF5MimeTreeParser.so.5abi3 diff -Nru kf5-messagelib-17.12.3/debian/libkf5mimetreeparser5abi3.symbols kf5-messagelib-18.04.3/debian/libkf5mimetreeparser5abi3.symbols --- kf5-messagelib-17.12.3/debian/libkf5mimetreeparser5abi3.symbols 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/libkf5mimetreeparser5abi3.symbols 2018-08-26 12:21:48.000000000 +0000 @@ -0,0 +1,440 @@ +# SymbolsHelper-Confirmed: 4:18.04.3 amd64 arm64 armhf i386 +libKF5MimeTreeParser.so.5abi3 libkf5mimetreeparser5abi3 #MINVER# + ABI_5_3@ABI_5_3 4:18.03.60+git20171121 + (optional)_ZN10QByteArray7reserveEi@ABI_5_3 4:18.04.1 + _ZN14MimeTreeParser10NodeHelper11addTempFileERK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper11fixEncodingERK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper11qt_metacastEPKc@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper12cleanSubjectEPN5KMime7MessageE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper12cleanSubjectEPN5KMime7MessageERK11QStringListbRK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper12codecForNameERK10QByteArray@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper12magicSetTypeEPN5KMime7ContentEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper12partMetaDataEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper13createTempDirERK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper15encodingForNameERK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper15mergeExtraNodesEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper15removeTempFilesEv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper15replacePrefixesERK7QStringRK11QStringListbS3_@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper15setPartMetaDataEPN5KMime7ContentERKNS_12PartMetaDataE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper16setNodeProcessedEPN5KMime7ContentEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper16setOverrideCodecEPN5KMime7ContentEPK10QTextCodec@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper16staticMetaObjectE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper17cleanExtraContentEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper17setSignatureStateEPKN5KMime7ContentENS_19KMMsgSignatureStateE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper18attachExtraContentEPN5KMime7ContentES3_@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper18setBodyPartMementoEPN5KMime7ContentERK10QByteArrayPNS_9Interface15BodyPartMementoE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper18setEncryptionStateEPKN5KMime7ContentENS_20KMMsgEncryptionStateE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper18setNodeUnprocessedEPN5KMime7ContentEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper18supportedEncodingsEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper18unencryptedMessageERK14QSharedPointerIN5KMime7MessageEE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper19cleanFromExtraNodesEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper19forceCleanTempFilesEv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper19tempFileUrlFromNodeEPKN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper19writeFileToTempFileEPN5KMime7ContentERK7QString@ABI_5_3 4:18.03.80+git20180326 + _ZN14MimeTreeParser10NodeHelper19writeNodeToTempFileEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper22setNodeDisplayedHiddenEPN5KMime7ContentEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper23isInEncapsulatedMessageEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper23messageWithExtraContentEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper24setNodeDisplayedEmbeddedEPN5KMime7ContentEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper25unencryptedMessage_helperEPN5KMime7ContentER10QByteArraybi@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper5clearEv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper5codecEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper6updateENS_10UpdateModeE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper7charsetEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelper8fileNameEPKN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelperC1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelperC2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelperD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelperD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser10NodeHelperD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePart10setContentEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePart10setIsImageEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePart10setMementoEPNS_9Interface15BodyPartMementoE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePart11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePart11qt_metacastEPKc@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePart13appendSubPartERK14QSharedPointerIS0_E@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePart13clearSubPartsEv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePart13parseInternalEPN5KMime7ContentEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePart13setParentPartEPS0_@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePart16staticMetaObjectE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePart20setAttachmentContentEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePart21setNeverDisplayInlineEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePart7setTextERK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePart9setIsRootEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePartC1EPNS_16ObjectTreeParserERK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePartC2EPNS_16ObjectTreeParserERK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePartD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePartD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser11MessagePartD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser13ProcessResult21setNeverDisplayInlineEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser13ProcessResult23setInlineSignatureStateENS_19KMMsgSignatureStateE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser13ProcessResult24setInlineEncryptionStateENS_20KMMsgEncryptionStateE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15CertMessagePart11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15CertMessagePart11qt_metacastEPKc@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15CertMessagePart16staticMetaObjectE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15CertMessagePartC1EPNS_16ObjectTreeParserEPN5KMime7ContentEPKN6QGpgME8ProtocolEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15CertMessagePartC2EPNS_16ObjectTreeParserEPN5KMime7ContentEPKN6QGpgME8ProtocolEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15CertMessagePartD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15CertMessagePartD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15CertMessagePartD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15HtmlMessagePart11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15HtmlMessagePart11qt_metacastEPKc@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15HtmlMessagePart16staticMetaObjectE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15HtmlMessagePartC1EPNS_16ObjectTreeParserEPN5KMime7ContentEPNS_9Interface16ObjectTreeSourceE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15HtmlMessagePartC2EPNS_16ObjectTreeParserEPN5KMime7ContentEPNS_9Interface16ObjectTreeSourceE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15HtmlMessagePartD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15HtmlMessagePartD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15HtmlMessagePartD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MessagePartList11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MessagePartList11qt_metacastEPKc@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MessagePartList16staticMetaObjectE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MessagePartListC1EPNS_16ObjectTreeParserE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MessagePartListC2EPNS_16ObjectTreeParserE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MessagePartListD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MessagePartListD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MessagePartListD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MimeMessagePart11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MimeMessagePart11qt_metacastEPKc@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MimeMessagePart16staticMetaObjectE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MimeMessagePartC1EPNS_16ObjectTreeParserEPN5KMime7ContentEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MimeMessagePartC2EPNS_16ObjectTreeParserEPN5KMime7ContentEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MimeMessagePartD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MimeMessagePartD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15MimeMessagePartD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15TextMessagePart11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15TextMessagePart11qt_metacastEPKc@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15TextMessagePart12parseContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15TextMessagePart16staticMetaObjectE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15TextMessagePartC1EPNS_16ObjectTreeParserEPN5KMime7ContentEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15TextMessagePartC2EPNS_16ObjectTreeParserEPN5KMime7ContentEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15TextMessagePartD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15TextMessagePartD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser15TextMessagePartD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParser11processTypeEPN5KMime7ContentERNS_13ProcessResultERK10QByteArray@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParser13setAllowAsyncEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParser15copyContentFromEPKS0_@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParser15parseObjectTreeEPN5KMime7ContentEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParser16extractNodeInfosEPN5KMime7ContentEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParser19setPlainTextContentERK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParser23parseObjectTreeInternalEPN5KMime7ContentEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParser4initEv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParserC1EPKS0_@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParserC1EPNS_9Interface16ObjectTreeSourceEPNS_10NodeHelperE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParserC1ERKS0_@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParserC2EPKS0_@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParserC2EPNS_9Interface16ObjectTreeSourceEPNS_10NodeHelperE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParserC2ERKS0_@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParserD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParserD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16ObjectTreeParserD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16PartNodeBodyPartC1EPNS_16ObjectTreeParserEPNS_13ProcessResultEPN5KMime7ContentES7_PNS_10NodeHelperE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser16PartNodeBodyPartC2EPNS_16ObjectTreeParserEPNS_13ProcessResultEPN5KMime7ContentES7_PNS_10NodeHelperE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser17SignedMessagePart11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser17SignedMessagePart11qt_metacastEPKc@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser17SignedMessagePart11setIsSignedEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser17SignedMessagePart16staticMetaObjectE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser17SignedMessagePart17startVerificationERK10QByteArrayPK10QTextCodec@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser17SignedMessagePart19sigStatusToMetaDataEv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser17SignedMessagePart21setVerificationResultEPKNS_21CryptoBodyPartMementoEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser17SignedMessagePart25startVerificationDetachedERK10QByteArrayPN5KMime7ContentES3_@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser17SignedMessagePart8okVerifyERK10QByteArrayS3_PN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser17SignedMessagePartC1EPNS_16ObjectTreeParserERK7QStringPKN6QGpgME8ProtocolES5_PN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser17SignedMessagePartC2EPNS_16ObjectTreeParserERK7QStringPKN6QGpgME8ProtocolES5_PN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser17SignedMessagePartD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser17SignedMessagePartD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser17SignedMessagePartD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser20EncryptedMessagePart11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser20EncryptedMessagePart11qt_metacastEPKc@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser20EncryptedMessagePart13okDecryptMIMEERN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser20EncryptedMessagePart14setIsEncryptedEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser20EncryptedMessagePart15startDecryptionEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser20EncryptedMessagePart15startDecryptionERK10QByteArrayPK10QTextCodec@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser20EncryptedMessagePart16staticMetaObjectE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser20EncryptedMessagePart17setDecryptMessageEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser20EncryptedMessagePartC1EPNS_16ObjectTreeParserERK7QStringPKN6QGpgME8ProtocolES5_PN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser20EncryptedMessagePartC2EPNS_16ObjectTreeParserERK7QStringPKN6QGpgME8ProtocolES5_PN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser20EncryptedMessagePartD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser20EncryptedMessagePartD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser20EncryptedMessagePartD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser21AttachmentMessagePart11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser21AttachmentMessagePart11qt_metacastEPKc@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser21AttachmentMessagePart16staticMetaObjectE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser21AttachmentMessagePartC1EPNS_16ObjectTreeParserEPN5KMime7ContentEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser21AttachmentMessagePartC2EPNS_16ObjectTreeParserEPN5KMime7ContentEb@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser21AttachmentMessagePartD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser21AttachmentMessagePartD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser21AttachmentMessagePartD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser22AlternativeMessagePart11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser22AlternativeMessagePart11qt_metacastEPKc@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser22AlternativeMessagePart14availableModesEv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser22AlternativeMessagePart16setPreferredModeENS_4Util8HtmlModeE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser22AlternativeMessagePart16staticMetaObjectE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser22AlternativeMessagePartC1EPNS_16ObjectTreeParserEPN5KMime7ContentENS_4Util8HtmlModeE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser22AlternativeMessagePartC2EPNS_16ObjectTreeParserEPN5KMime7ContentENS_4Util8HtmlModeE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser22AlternativeMessagePartD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser22AlternativeMessagePartD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser22AlternativeMessagePartD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser22SimpleObjectTreeSource11setHtmlModeENS_4Util8HtmlModeERK5QListIS2_E@ABI_5_3 4:18.03.60+git20171231 + _ZN14MimeTreeParser22SimpleObjectTreeSource13overrideCodecEv@ABI_5_3 4:18.03.60+git20171231 + _ZN14MimeTreeParser22SimpleObjectTreeSource17setDecryptMessageEb@ABI_5_3 4:18.03.60+git20171231 + _ZN14MimeTreeParser22SimpleObjectTreeSource24bodyPartFormatterFactoryEv@ABI_5_3 4:18.03.60+git20171231 + _ZN14MimeTreeParser22SimpleObjectTreeSource6renderERK14QSharedPointerINS_11MessagePartEEb@ABI_5_3 4:18.03.60+git20171231 + _ZN14MimeTreeParser22SimpleObjectTreeSourceC1Ev@ABI_5_3 4:18.03.60+git20171231 + _ZN14MimeTreeParser22SimpleObjectTreeSourceC2Ev@ABI_5_3 4:18.03.60+git20171231 + _ZN14MimeTreeParser22SimpleObjectTreeSourceD0Ev@ABI_5_3 4:18.03.60+git20171231 + _ZN14MimeTreeParser22SimpleObjectTreeSourceD1Ev@ABI_5_3 4:18.03.60+git20171231 + _ZN14MimeTreeParser22SimpleObjectTreeSourceD2Ev@ABI_5_3 4:18.03.60+git20171231 + _ZN14MimeTreeParser24BodyPartFormatterFactory11loadPluginsEv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser24BodyPartFormatterFactory6insertERK7QStringPKNS_9Interface17BodyPartFormatterEi@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser24BodyPartFormatterFactory8instanceEv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser24BodyPartFormatterFactoryC1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser24BodyPartFormatterFactoryC2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser24BodyPartFormatterFactoryD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser24BodyPartFormatterFactoryD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser24BodyPartFormatterFactoryD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser28AttachmentTemporaryFilesDirs10addTempDirERK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser28AttachmentTemporaryFilesDirs11addTempFileERK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser28AttachmentTemporaryFilesDirs11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser28AttachmentTemporaryFilesDirs11qt_metacastEPKc@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser28AttachmentTemporaryFilesDirs15removeTempFilesEv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser28AttachmentTemporaryFilesDirs16staticMetaObjectE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser28AttachmentTemporaryFilesDirs19forceCleanTempFilesEv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser28AttachmentTemporaryFilesDirs19slotRemoveTempFilesEv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser28AttachmentTemporaryFilesDirs21setDelayRemoveAllInMsEi@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser28AttachmentTemporaryFilesDirsC1EP7QObject@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser28AttachmentTemporaryFilesDirsC2EP7QObject@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser28AttachmentTemporaryFilesDirsD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser28AttachmentTemporaryFilesDirsD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser28AttachmentTemporaryFilesDirsD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser29EncapsulatedRfc822MessagePart11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser29EncapsulatedRfc822MessagePart11qt_metacastEPKc@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser29EncapsulatedRfc822MessagePart16staticMetaObjectE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser29EncapsulatedRfc822MessagePartC1EPNS_16ObjectTreeParserEPN5KMime7ContentERK14QSharedPointerINS3_7MessageEE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser29EncapsulatedRfc822MessagePartC2EPNS_16ObjectTreeParserEPN5KMime7ContentERK14QSharedPointerINS3_7MessageEE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser29EncapsulatedRfc822MessagePartD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser29EncapsulatedRfc822MessagePartD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser29EncapsulatedRfc822MessagePartD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser4Util15labelForContentEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser4Util16htmlModeToStringENS0_8HtmlModeE@ABI_5_3 4:18.03.80+git20180326 + _ZN14MimeTreeParser4Util17isTypeBlacklistedEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser4Util18iconNameForContentEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser4Util19iconNameForMimetypeERK7QStringS3_S3_@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser4Util8mimetypeERK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface15BodyPartMementoD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface15BodyPartMementoD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface15BodyPartMementoD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface16ObjectTreeSourceC1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface16ObjectTreeSourceC2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface16ObjectTreeSourceD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface16ObjectTreeSourceD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface16ObjectTreeSourceD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface17BodyPartFormatterD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface17BodyPartFormatterD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface17BodyPartFormatterD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface23BodyPartFormatterPluginD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface23BodyPartFormatterPluginD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface23BodyPartFormatterPluginD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface8BodyPartD0Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface8BodyPartD1Ev@ABI_5_3 4:18.03.60+git20171121 + _ZN14MimeTreeParser9Interface8BodyPartD2Ev@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper10metaObjectEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper12fromAsStringEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper13extraContentsEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper13nodeProcessedEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper14signatureStateEPKN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper15bodyPartMementoEPN5KMime7ContentERK10QByteArray@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper15encryptionStateEPKN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper15persistentIndexEPKN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper16contentFromIndexEPN5KMime7ContentERK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper21isNodeDisplayedHiddenEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper21overallSignatureStateEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper22overallEncryptionStateEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper23decryptedNodeForContentEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper23isNodeDisplayedEmbeddedEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper26attachmentsOfExtraContentsEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper6asHREFEPKN5KMime7ContentERK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser10NodeHelper8fromHREFERK14QSharedPointerIN5KMime7MessageEERK4QUrl@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart10metaObjectEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart10nodeHelperEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart10parentPartEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart11hasSubPartsEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart11htmlContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart12isAttachmentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart12partMetaDataEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart14attachmentLinkEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart15attachmentIndexEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart16plaintextContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart17attachmentContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart18neverDisplayInlineEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart18renderInternalTextEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart3fixEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart4textEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart6isHtmlEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart6isRootEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart6sourceEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart7contentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart7isImageEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart7mementoEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart8makeLinkERK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser11MessagePart8subPartsEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser13ProcessResult18neverDisplayInlineEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser13ProcessResult20inlineSignatureStateEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser13ProcessResult21inlineEncryptionStateEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser13ProcessResult24adjustCryptoStatesOfNodeEPKN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15CertMessagePart10metaObjectEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15CertMessagePart12importResultEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15CertMessagePart4textEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15HtmlMessagePart10metaObjectEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15HtmlMessagePart3fixEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15HtmlMessagePart4textEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15HtmlMessagePart6isHtmlEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15HtmlMessagePart8bodyHtmlEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15MessagePartList10metaObjectEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15MessagePartList11htmlContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15MessagePartList16plaintextContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15MessagePartList4textEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15MimeMessagePart10metaObjectEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15MimeMessagePart11htmlContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15MimeMessagePart16plaintextContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15MimeMessagePart4textEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15TextMessagePart10metaObjectEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15TextMessagePart14decryptMessageEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15TextMessagePart14signatureStateEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15TextMessagePart15encryptionStateEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15TextMessagePart15isFirstTextPartEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15TextMessagePart17temporaryFilePathEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15TextMessagePart5labelEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15TextMessagePart7commentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15TextMessagePart8hasLabelEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser15TextMessagePart8showLinkEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16ObjectTreeParser10allowAsyncEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16ObjectTreeParser10nodeHelperEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16ObjectTreeParser10parsedPartEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16ObjectTreeParser11htmlContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16ObjectTreeParser16plainTextContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16ObjectTreeParser18htmlContentCharsetEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16ObjectTreeParser19hasPendingAsyncJobsEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16ObjectTreeParser23plainTextContentCharsetEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16ObjectTreeParser8codecForEPN5KMime7ContentE@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16PartNodeBodyPart10nodeHelperEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16PartNodeBodyPart13processResultEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16PartNodeBodyPart15topLevelContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16PartNodeBodyPart16objectTreeParserEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16PartNodeBodyPart6sourceEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16PartNodeBodyPart7contentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser16PartNodeBodyPart7mementoEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser17SignedMessagePart10metaObjectEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser17SignedMessagePart11cryptoProtoEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser17SignedMessagePart11fromAddressEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser17SignedMessagePart11htmlContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser17SignedMessagePart16plaintextContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser17SignedMessagePart8isSignedEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser20EncryptedMessagePart10isNoSecKeyEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser20EncryptedMessagePart10metaObjectEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser20EncryptedMessagePart11cryptoProtoEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser20EncryptedMessagePart11fromAddressEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser20EncryptedMessagePart11htmlContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser20EncryptedMessagePart11isEncryptedEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser20EncryptedMessagePart13isDecryptableEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser20EncryptedMessagePart14decryptMessageEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser20EncryptedMessagePart15passphraseErrorEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser20EncryptedMessagePart16plaintextContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser20EncryptedMessagePart17decryptRecipientsEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser20EncryptedMessagePart4textEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser21AttachmentMessagePart10metaObjectEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser22AlternativeMessagePart10childPartsEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser22AlternativeMessagePart10metaObjectEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser22AlternativeMessagePart11htmlContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser22AlternativeMessagePart13preferredModeEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser22AlternativeMessagePart16plaintextContentEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser22AlternativeMessagePart3fixEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser22AlternativeMessagePart4textEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser22AlternativeMessagePart6isHtmlEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser22SimpleObjectTreeSource13preferredModeEv@ABI_5_3 4:18.03.60+git20171231 + _ZNK14MimeTreeParser22SimpleObjectTreeSource14autoImportKeysEv@ABI_5_3 4:18.03.60+git20171231 + _ZNK14MimeTreeParser22SimpleObjectTreeSource14decryptMessageEv@ABI_5_3 4:18.03.60+git20171231 + _ZNK14MimeTreeParser24BodyPartFormatterFactory17formattersForTypeERK7QString@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser28AttachmentTemporaryFilesDirs10metaObjectEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser28AttachmentTemporaryFilesDirs13temporaryDirsEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser28AttachmentTemporaryFilesDirs14temporaryFilesEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser29EncapsulatedRfc822MessagePart10metaObjectEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser29EncapsulatedRfc822MessagePart3fixEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser29EncapsulatedRfc822MessagePart4textEv@ABI_5_3 4:18.03.60+git20171121 + _ZNK14MimeTreeParser29EncapsulatedRfc822MessagePart7messageEv@ABI_5_3 4:18.03.60+git20171121 + (optional=templinst)_ZNSt15_Sp_counted_ptrIDnLN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv@ABI_5_3 4:18.03.60+git20171121 + (optional=templinst)_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv@ABI_5_3 4:18.03.60+git20171121 + (optional=templinst)_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv@ABI_5_3 4:18.03.60+git20171121 + (optional=templinst)_ZNSt6vectorI7QStringSaIS0_EE12emplace_backIJS0_EEEvDpOT_@ABI_5_3 4:18.04.3 + (optional=templinst|arch=!amd64 !arm64 !armhf)_ZNSt6vectorI7QStringSaIS0_EE17_M_realloc_insertIJRKS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_@ABI_5_3 4:18.03.60+git20171121 + (optional=templinst|arch=arm64 armhf)_ZNSt6vectorI7QStringSaIS0_EE17_M_realloc_insertIJS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_@ABI_5_3 4:18.03.60+git20171121 + (optional=templinst)_ZNSt6vectorIN5GpgME9SignatureESaIS1_EED1Ev@ABI_5_3 4:18.04.3 + (optional=templinst)_ZNSt6vectorIN5GpgME9SignatureESaIS1_EED2Ev@ABI_5_3 4:18.04.3 + (optional=templinst)_ZNSt6vectorISt4pairIN5GpgME16DecryptionResult9RecipientENS1_3KeyEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_@ABI_5_3 4:18.03.60+git20171121 + (optional=templinst)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag@ABI_5_3 4:18.04.3 + _ZTIN14MimeTreeParser10NodeHelperE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser11MessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser15CertMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser15HtmlMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser15MessagePartListE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser15MimeMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser15TextMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser16ObjectTreeParserE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser16PartNodeBodyPartE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser17SignedMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser20EncryptedMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser21AttachmentMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser22AlternativeMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser22SimpleObjectTreeSourceE@ABI_5_3 4:18.03.60+git20171231 + _ZTIN14MimeTreeParser24BodyPartFormatterFactoryE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser28AttachmentTemporaryFilesDirsE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser29EncapsulatedRfc822MessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser9Interface15BodyPartMementoE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser9Interface16ObjectTreeSourceE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser9Interface17BodyPartFormatterE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser9Interface23BodyPartFormatterPluginE@ABI_5_3 4:18.03.60+git20171121 + _ZTIN14MimeTreeParser9Interface8BodyPartE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser10NodeHelperE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser11MessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser15CertMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser15HtmlMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser15MessagePartListE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser15MimeMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser15TextMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser16ObjectTreeParserE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser16PartNodeBodyPartE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser17SignedMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser20EncryptedMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser21AttachmentMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser22AlternativeMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser22SimpleObjectTreeSourceE@ABI_5_3 4:18.03.60+git20171231 + _ZTSN14MimeTreeParser24BodyPartFormatterFactoryE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser28AttachmentTemporaryFilesDirsE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser29EncapsulatedRfc822MessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser9Interface15BodyPartMementoE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser9Interface16ObjectTreeSourceE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser9Interface17BodyPartFormatterE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser9Interface23BodyPartFormatterPluginE@ABI_5_3 4:18.03.60+git20171121 + _ZTSN14MimeTreeParser9Interface8BodyPartE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser10NodeHelperE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser11MessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser15CertMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser15HtmlMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser15MessagePartListE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser15MimeMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser15TextMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser16ObjectTreeParserE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser16PartNodeBodyPartE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser17SignedMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser20EncryptedMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser21AttachmentMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser22AlternativeMessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser22SimpleObjectTreeSourceE@ABI_5_3 4:18.03.60+git20171231 + _ZTVN14MimeTreeParser24BodyPartFormatterFactoryE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser28AttachmentTemporaryFilesDirsE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser29EncapsulatedRfc822MessagePartE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser9Interface15BodyPartMementoE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser9Interface16ObjectTreeSourceE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser9Interface17BodyPartFormatterE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser9Interface23BodyPartFormatterPluginE@ABI_5_3 4:18.03.60+git20171121 + _ZTVN14MimeTreeParser9Interface8BodyPartE@ABI_5_3 4:18.03.60+git20171121 diff -Nru kf5-messagelib-17.12.3/debian/libkf5templateparser5abi2.symbols kf5-messagelib-18.04.3/debian/libkf5templateparser5abi2.symbols --- kf5-messagelib-17.12.3/debian/libkf5templateparser5abi2.symbols 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/libkf5templateparser5abi2.symbols 2018-08-26 12:21:48.000000000 +0000 @@ -1,4 +1,4 @@ -# SymbolsHelper-Confirmed: 4:17.07.70+git20170803 amd64 +# SymbolsHelper-Confirmed: 4:18.03.80+git20180326 amd64 libKF5TemplateParser.so.5abi2 libkf5templateparser5abi2 #MINVER# ABI_5_2@ABI_5_2 4:17.07.70+git20170613 _ZN14TemplateParser10CTemplatesC1ERK7QString@ABI_5_2 4:17.07.70+git20170613 @@ -89,6 +89,21 @@ _ZN14TemplateParser19CustomTemplatesMenuD0Ev@ABI_5_2 4:17.07.70+git20170613 _ZN14TemplateParser19CustomTemplatesMenuD1Ev@ABI_5_2 4:17.07.70+git20170613 _ZN14TemplateParser19CustomTemplatesMenuD2Ev@ABI_5_2 4:17.07.70+git20170613 + _ZN14TemplateParser20TemplatesCommandMenu11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser20TemplatesCommandMenu11qt_metacastEPKc@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser20TemplatesCommandMenu12fillSubMenusEv@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser20TemplatesCommandMenu13insertCommandENS0_7CommandE@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser20TemplatesCommandMenu13insertCommandERK7QStringi@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser20TemplatesCommandMenu16staticMetaObjectE@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser20TemplatesCommandMenu17slotInsertCommandENS0_7CommandE@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser20TemplatesCommandMenu21fillMenuFromActionMapERK4QMapI7QStringNS0_7CommandEEP11KActionMenu@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser20TemplatesCommandMenu7setTypeE6QFlagsINS0_8MenuTypeEE@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser20TemplatesCommandMenu8fillMenuEv@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser20TemplatesCommandMenuC1EP7QObject@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser20TemplatesCommandMenuC2EP7QObject@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser20TemplatesCommandMenuD0Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser20TemplatesCommandMenuD1Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser20TemplatesCommandMenuD2Ev@ABI_5_2 4:18.03.80+git20180326 _ZN14TemplateParser21TemplateWebEngineView11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:17.07.70+git20170613 _ZN14TemplateParser21TemplateWebEngineView11qt_metacastEPKc@ABI_5_2 4:17.07.70+git20170613 _ZN14TemplateParser21TemplateWebEngineView12setPlainTextERK7QString@ABI_5_2 4:17.07.70+git20170613 @@ -128,6 +143,27 @@ _ZN14TemplateParser22TemplatesConfigurationD0Ev@ABI_5_2 4:17.07.70+git20170613 _ZN14TemplateParser22TemplatesConfigurationD1Ev@ABI_5_2 4:17.07.70+git20170613 _ZN14TemplateParser22TemplatesConfigurationD2Ev@ABI_5_2 4:17.07.70+git20170613 + _ZN14TemplateParser25TemplateConvertCommandJob11convertTextEv@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser25TemplateConvertCommandJob11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser25TemplateConvertCommandJob11qt_metacastEPKc@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser25TemplateConvertCommandJob14setCurrentTextERK7QString@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser25TemplateConvertCommandJob16staticMetaObjectE@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser25TemplateConvertCommandJob18setOriginalMessageERK14QSharedPointerIN5KMime7MessageEE@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser25TemplateConvertCommandJobC1EP7QObject@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser25TemplateConvertCommandJobC2EP7QObject@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser25TemplateConvertCommandJobD0Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser25TemplateConvertCommandJobD1Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser25TemplateConvertCommandJobD2Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser28TemplatesInsertCommandAction11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser28TemplatesInsertCommandAction11qt_metacastEPKc@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser28TemplatesInsertCommandAction13insertCommandERK7QStringi@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser28TemplatesInsertCommandAction16staticMetaObjectE@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser28TemplatesInsertCommandAction7setTypeE6QFlagsINS_20TemplatesCommandMenu8MenuTypeEE@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser28TemplatesInsertCommandActionC1EP7QObject@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser28TemplatesInsertCommandActionC2EP7QObject@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser28TemplatesInsertCommandActionD0Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser28TemplatesInsertCommandActionD1Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser28TemplatesInsertCommandActionD2Ev@ABI_5_2 4:18.03.80+git20180326 _ZN14TemplateParser29TemplateParserExtractHtmlInfo11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:17.07.70+git20170613 _ZN14TemplateParser29TemplateParserExtractHtmlInfo11qt_metacastEPKc@ABI_5_2 4:17.07.70+git20170613 _ZN14TemplateParser29TemplateParserExtractHtmlInfo11setTemplateERK7QString@ABI_5_2 4:17.07.70+git20170613 @@ -143,6 +179,16 @@ _ZN14TemplateParser29TemplateParserExtractHtmlInfoD0Ev@ABI_5_2 4:17.07.70+git20170613 _ZN14TemplateParser29TemplateParserExtractHtmlInfoD1Ev@ABI_5_2 4:17.07.70+git20170613 _ZN14TemplateParser29TemplateParserExtractHtmlInfoD2Ev@ABI_5_2 4:17.07.70+git20170613 + _ZN14TemplateParser32TemplatesInsertCommandPushButton11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser32TemplatesInsertCommandPushButton11qt_metacastEPKc@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser32TemplatesInsertCommandPushButton13insertCommandERK7QStringi@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser32TemplatesInsertCommandPushButton16staticMetaObjectE@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser32TemplatesInsertCommandPushButton7setTypeE6QFlagsINS_20TemplatesCommandMenu8MenuTypeEE@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser32TemplatesInsertCommandPushButtonC1EP7QWidgetRK7QString@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser32TemplatesInsertCommandPushButtonC2EP7QWidgetRK7QString@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser32TemplatesInsertCommandPushButtonD0Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser32TemplatesInsertCommandPushButtonD1Ev@ABI_5_2 4:18.03.80+git20180326 + _ZN14TemplateParser32TemplatesInsertCommandPushButtonD2Ev@ABI_5_2 4:18.03.80+git20180326 _ZN14TemplateParser39TemplateExtractHtmlElementWebEngineView11qt_metacallEN11QMetaObject4CallEiPPv@ABI_5_2 4:17.07.70+git20170613 _ZN14TemplateParser39TemplateExtractHtmlElementWebEngineView11qt_metacastEPKc@ABI_5_2 4:17.07.70+git20170613 _ZN14TemplateParser39TemplateExtractHtmlElementWebEngineView14handleHtmlInfoERK8QVariant@ABI_5_2 4:17.07.70+git20170613 @@ -214,12 +260,22 @@ _ZNK14TemplateParser19CustomTemplatesMenu15replyActionMenuEv@ABI_5_2 4:17.07.70+git20170613 _ZNK14TemplateParser19CustomTemplatesMenu17forwardActionMenuEv@ABI_5_2 4:17.07.70+git20170613 _ZNK14TemplateParser19CustomTemplatesMenu18replyAllActionMenuEv@ABI_5_2 4:17.07.70+git20170613 + _ZNK14TemplateParser20TemplatesCommandMenu10metaObjectEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK14TemplateParser20TemplatesCommandMenu4menuEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK14TemplateParser20TemplatesCommandMenu4typeEv@ABI_5_2 4:18.03.80+git20180326 _ZNK14TemplateParser21TemplateWebEngineView10metaObjectEv@ABI_5_2 4:17.07.70+git20170613 _ZNK14TemplateParser21TemplateWebEngineView9plainTextEv@ABI_5_2 4:17.07.70+git20170613 _ZNK14TemplateParser22TemplatesConfiguration10metaObjectEv@ABI_5_2 4:17.07.70+git20170613 _ZNK14TemplateParser22TemplatesConfiguration15currentTextEditEv@ABI_5_2 4:17.07.70+git20170613 _ZNK14TemplateParser22TemplatesConfiguration9helpLabelEv@ABI_5_2 4:17.07.70+git20170613 + _ZNK14TemplateParser25TemplateConvertCommandJob10metaObjectEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK14TemplateParser25TemplateConvertCommandJob11currentTextEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK14TemplateParser25TemplateConvertCommandJob15originalMessageEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK14TemplateParser28TemplatesInsertCommandAction10metaObjectEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK14TemplateParser28TemplatesInsertCommandAction4typeEv@ABI_5_2 4:18.03.80+git20180326 _ZNK14TemplateParser29TemplateParserExtractHtmlInfo10metaObjectEv@ABI_5_2 4:17.07.70+git20170613 + _ZNK14TemplateParser32TemplatesInsertCommandPushButton10metaObjectEv@ABI_5_2 4:18.03.80+git20180326 + _ZNK14TemplateParser32TemplatesInsertCommandPushButton4typeEv@ABI_5_2 4:18.03.80+git20180326 _ZNK14TemplateParser39TemplateExtractHtmlElementWebEngineView10metaObjectEv@ABI_5_2 4:17.07.70+git20170613 _ZNK14TemplateParser39TemplateExtractHtmlElementWebEngineView11bodyElementEv@ABI_5_2 4:17.07.70+git20170613 _ZNK14TemplateParser39TemplateExtractHtmlElementWebEngineView11htmlElementEv@ABI_5_2 4:17.07.70+git20170613 @@ -236,10 +292,14 @@ _ZTIN14TemplateParser17TemplateParserJobE@ABI_5_2 4:17.07.70+git20170613 _ZTIN14TemplateParser17TemplatesTextEditE@ABI_5_2 4:17.07.70+git20170613 _ZTIN14TemplateParser19CustomTemplatesMenuE@ABI_5_2 4:17.07.70+git20170613 + _ZTIN14TemplateParser20TemplatesCommandMenuE@ABI_5_2 4:18.03.80+git20180326 _ZTIN14TemplateParser21TemplateWebEngineViewE@ABI_5_2 4:17.07.70+git20170613 _ZTIN14TemplateParser22TemplateParserSettingsE@ABI_5_2 4:17.07.70+git20170613 _ZTIN14TemplateParser22TemplatesConfigurationE@ABI_5_2 4:17.07.70+git20170613 + _ZTIN14TemplateParser25TemplateConvertCommandJobE@ABI_5_2 4:18.03.80+git20180326 + _ZTIN14TemplateParser28TemplatesInsertCommandActionE@ABI_5_2 4:18.03.80+git20180326 _ZTIN14TemplateParser29TemplateParserExtractHtmlInfoE@ABI_5_2 4:17.07.70+git20170613 + _ZTIN14TemplateParser32TemplatesInsertCommandPushButtonE@ABI_5_2 4:18.03.80+git20180326 _ZTIN14TemplateParser39TemplateExtractHtmlElementWebEngineViewE@ABI_5_2 4:17.07.70+git20170613 _ZTIN14TemplateParser39TemplateParserEmailAddressRequesterBaseE@ABI_5_2 4:17.07.70+git20170613 _ZTIN14TemplateParser43TemplateParserEmailAddressRequesterLineEditE@ABI_5_2 4:17.07.70+git20170613 @@ -251,10 +311,14 @@ _ZTSN14TemplateParser17TemplateParserJobE@ABI_5_2 4:17.07.70+git20170613 _ZTSN14TemplateParser17TemplatesTextEditE@ABI_5_2 4:17.07.70+git20170613 _ZTSN14TemplateParser19CustomTemplatesMenuE@ABI_5_2 4:17.07.70+git20170613 + _ZTSN14TemplateParser20TemplatesCommandMenuE@ABI_5_2 4:18.03.80+git20180326 _ZTSN14TemplateParser21TemplateWebEngineViewE@ABI_5_2 4:17.07.70+git20170613 _ZTSN14TemplateParser22TemplateParserSettingsE@ABI_5_2 4:17.07.70+git20170613 _ZTSN14TemplateParser22TemplatesConfigurationE@ABI_5_2 4:17.07.70+git20170613 + _ZTSN14TemplateParser25TemplateConvertCommandJobE@ABI_5_2 4:18.03.80+git20180326 + _ZTSN14TemplateParser28TemplatesInsertCommandActionE@ABI_5_2 4:18.03.80+git20180326 _ZTSN14TemplateParser29TemplateParserExtractHtmlInfoE@ABI_5_2 4:17.07.70+git20170613 + _ZTSN14TemplateParser32TemplatesInsertCommandPushButtonE@ABI_5_2 4:18.03.80+git20180326 _ZTSN14TemplateParser39TemplateExtractHtmlElementWebEngineViewE@ABI_5_2 4:17.07.70+git20170613 _ZTSN14TemplateParser39TemplateParserEmailAddressRequesterBaseE@ABI_5_2 4:17.07.70+git20170613 _ZTSN14TemplateParser43TemplateParserEmailAddressRequesterLineEditE@ABI_5_2 4:17.07.70+git20170613 @@ -265,10 +329,14 @@ _ZTVN14TemplateParser17TemplateParserJobE@ABI_5_2 4:17.07.70+git20170613 _ZTVN14TemplateParser17TemplatesTextEditE@ABI_5_2 4:17.07.70+git20170613 _ZTVN14TemplateParser19CustomTemplatesMenuE@ABI_5_2 4:17.07.70+git20170613 + _ZTVN14TemplateParser20TemplatesCommandMenuE@ABI_5_2 4:18.03.80+git20180326 _ZTVN14TemplateParser21TemplateWebEngineViewE@ABI_5_2 4:17.07.70+git20170613 _ZTVN14TemplateParser22TemplateParserSettingsE@ABI_5_2 4:17.07.70+git20170613 _ZTVN14TemplateParser22TemplatesConfigurationE@ABI_5_2 4:17.07.70+git20170613 + _ZTVN14TemplateParser25TemplateConvertCommandJobE@ABI_5_2 4:18.03.80+git20180326 + _ZTVN14TemplateParser28TemplatesInsertCommandActionE@ABI_5_2 4:18.03.80+git20180326 _ZTVN14TemplateParser29TemplateParserExtractHtmlInfoE@ABI_5_2 4:17.07.70+git20170613 + _ZTVN14TemplateParser32TemplatesInsertCommandPushButtonE@ABI_5_2 4:18.03.80+git20180326 _ZTVN14TemplateParser39TemplateExtractHtmlElementWebEngineViewE@ABI_5_2 4:17.07.70+git20170613 _ZTVN14TemplateParser39TemplateParserEmailAddressRequesterBaseE@ABI_5_2 4:17.07.70+git20170613 _ZTVN14TemplateParser43TemplateParserEmailAddressRequesterLineEditE@ABI_5_2 4:17.07.70+git20170613 @@ -296,4 +364,5 @@ (c++)"non-virtual thunk to TemplateParser::TemplateParserEmailAddressRequesterLineEdit::~TemplateParserEmailAddressRequesterLineEdit()@ABI_5_2" 4:17.07.70+git20170613 (c++)"non-virtual thunk to TemplateParser::TemplateWebEngineView::~TemplateWebEngineView()@ABI_5_2" 4:17.07.70+git20170613 (c++)"non-virtual thunk to TemplateParser::TemplatesConfiguration::~TemplatesConfiguration()@ABI_5_2" 4:17.07.70+git20170613 + (c++)"non-virtual thunk to TemplateParser::TemplatesInsertCommandPushButton::~TemplatesInsertCommandPushButton()@ABI_5_2" 4:18.03.80+git20180326 (c++)"non-virtual thunk to TemplateParser::TemplatesTextEdit::~TemplatesTextEdit()@ABI_5_2" 4:17.07.70+git20170613 diff -Nru kf5-messagelib-17.12.3/debian/patches/series kf5-messagelib-18.04.3/debian/patches/series --- kf5-messagelib-17.12.3/debian/patches/series 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/patches/series 2018-08-26 12:21:48.000000000 +0000 @@ -1,8 +1,3 @@ enable_debianabimanager.diff kubuntu_disable_gpgagent_tests.diff kubuntu_disable_failing_tests.diff -upstream_fix_includes_01.diff -upstream_fix_includes_02.diff -upstream_fix_includes_03.diff -upstream_fix_includes_04.diff -upstream_fix-build-with-Qt-5.11.patch diff -Nru kf5-messagelib-17.12.3/debian/patches/upstream_fix-build-with-Qt-5.11.patch kf5-messagelib-18.04.3/debian/patches/upstream_fix-build-with-Qt-5.11.patch --- kf5-messagelib-17.12.3/debian/patches/upstream_fix-build-with-Qt-5.11.patch 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/patches/upstream_fix-build-with-Qt-5.11.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -From 9e008c1c4e0c55cce2c45b468a5ce0cfcd57694a Mon Sep 17 00:00:00 2001 -From: Allan Sandfeld Jensen -Date: Wed, 7 Mar 2018 13:02:59 +0100 -Subject: Fix build with Qt 5.11 - -Summary: Include QButtonGroup since we are using it. - -Reviewers: mlaurent - -Reviewed By: mlaurent - -Subscribers: #kde_pim - -Tags: #kde_pim - -Differential Revision: https://phabricator.kde.org/D11116 ---- - messagecomposer/src/imagescaling/imagescalingwidget.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/messagecomposer/src/imagescaling/imagescalingwidget.cpp b/messagecomposer/src/imagescaling/imagescalingwidget.cpp -index 5e6dee0..dd8a202 100644 ---- a/messagecomposer/src/imagescaling/imagescalingwidget.cpp -+++ b/messagecomposer/src/imagescaling/imagescalingwidget.cpp -@@ -21,10 +21,11 @@ - #include "ui_imagescalingwidget.h" - #include "settings/messagecomposersettings.h" - --#include - #include - #include - -+#include -+#include - #include - #include - --- -cgit v0.11.2 - diff -Nru kf5-messagelib-17.12.3/debian/patches/upstream_fix_includes_01.diff kf5-messagelib-18.04.3/debian/patches/upstream_fix_includes_01.diff --- kf5-messagelib-17.12.3/debian/patches/upstream_fix_includes_01.diff 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/patches/upstream_fix_includes_01.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -From feda4e33e9e935384fc322878d8da58e1f08e562 Mon Sep 17 00:00:00 2001 -From: Laurent Montel -Date: Wed, 21 Mar 2018 06:57:49 +0100 -Subject: Remove this not necessary include - ---- - messagelist/src/core/widgetbase.h | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/messagelist/src/core/widgetbase.h b/messagelist/src/core/widgetbase.h -index 304b078..5008708 100644 ---- a/messagelist/src/core/widgetbase.h -+++ b/messagelist/src/core/widgetbase.h -@@ -26,7 +26,6 @@ - #include - - #include --#include - #include - - class QLineEdit; --- -cgit v0.11.2 - diff -Nru kf5-messagelib-17.12.3/debian/patches/upstream_fix_includes_02.diff kf5-messagelib-18.04.3/debian/patches/upstream_fix_includes_02.diff --- kf5-messagelib-17.12.3/debian/patches/upstream_fix_includes_02.diff 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/patches/upstream_fix_includes_02.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -From 28e8731a152b98f8f80c896c6b389748d5fdee43 Mon Sep 17 00:00:00 2001 -From: Laurent Montel -Date: Wed, 21 Mar 2018 07:01:51 +0100 -Subject: Use MessageList subfolder - ---- - messagelist/src/core/widgetbase.h | 4 ++-- - messagelist/src/widget.h | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/messagelist/src/core/widgetbase.h b/messagelist/src/core/widgetbase.h -index 5008708..6fbb6f8 100644 ---- a/messagelist/src/core/widgetbase.h -+++ b/messagelist/src/core/widgetbase.h -@@ -25,8 +25,8 @@ - #include - #include - --#include --#include -+#include -+#include - - class QLineEdit; - class QActionGroup; -diff --git a/messagelist/src/widget.h b/messagelist/src/widget.h -index 153471d..1febd5e 100644 ---- a/messagelist/src/widget.h -+++ b/messagelist/src/widget.h -@@ -22,7 +22,7 @@ - #include - #include - #include --#include -+#include - - #include - #include --- -cgit v0.11.2 - diff -Nru kf5-messagelib-17.12.3/debian/patches/upstream_fix_includes_03.diff kf5-messagelib-18.04.3/debian/patches/upstream_fix_includes_03.diff --- kf5-messagelib-17.12.3/debian/patches/upstream_fix_includes_03.diff 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/patches/upstream_fix_includes_03.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,107 +0,0 @@ -From e068f81e9a6176309301eed7765aa54b2ef120dc Mon Sep 17 00:00:00 2001 -From: Laurent Montel -Date: Wed, 21 Mar 2018 07:11:26 +0100 -Subject: Fix includes - ---- - messagelist/src/core/aggregation.h | 2 +- - messagelist/src/core/delegate.h | 2 +- - messagelist/src/core/groupheaderitem.h | 2 +- - messagelist/src/core/manager.h | 2 +- - messagelist/src/core/messageitem.h | 4 ++-- - messagelist/src/core/model.h | 4 ++-- - messagelist/src/widget.h | 5 ++--- - 7 files changed, 10 insertions(+), 11 deletions(-) - ---- a/messagelist/src/core/aggregation.h -+++ b/messagelist/src/core/aggregation.h -@@ -27,7 +27,7 @@ class QDataStream; - #include - #include - --#include -+#include "core/optionset.h" - - namespace MessageList { - namespace Core { ---- a/messagelist/src/core/delegate.h -+++ b/messagelist/src/core/delegate.h -@@ -21,7 +21,7 @@ - #ifndef __MESSAGELIST_CORE_DELEGATE_H__ - #define __MESSAGELIST_CORE_DELEGATE_H__ - --#include -+#include "core/themedelegate.h" - - namespace MessageList { - namespace Core { ---- a/messagelist/src/core/groupheaderitem.h -+++ b/messagelist/src/core/groupheaderitem.h -@@ -23,7 +23,7 @@ - - #include - --#include -+#include "core/item.h" - - namespace MessageList { - namespace Core { ---- a/messagelist/src/core/manager.h -+++ b/messagelist/src/core/manager.h -@@ -21,7 +21,7 @@ - #ifndef __MESSAGELIST_CORE_MANAGER_H__ - #define __MESSAGELIST_CORE_MANAGER_H__ - --#include -+#include "core/sortorder.h" - #include - #include - #include ---- a/messagelist/src/core/messageitem.h -+++ b/messagelist/src/core/messageitem.h -@@ -21,8 +21,8 @@ - #ifndef __MESSAGELIST_CORE_MESSAGEITEM_H__ - #define __MESSAGELIST_CORE_MESSAGEITEM_H__ - --#include --#include -+#include "core/item.h" -+#include "core/modelinvariantindex.h" - - #include - #include ---- a/messagelist/src/core/model.h -+++ b/messagelist/src/core/model.h -@@ -26,9 +26,7 @@ - #include - #include - --#include - #include --#include - - #include // time_t - -@@ -45,6 +43,8 @@ class Theme; - class StorageModel; - class View; - class ModelPrivate; -+class SortOrder; -+class Aggregation; - - /** - * This class manages the huge tree of displayable objects: GroupHeaderItems and MessageItems. ---- a/messagelist/src/widget.h -+++ b/messagelist/src/widget.h -@@ -19,9 +19,8 @@ - #ifndef __MESSAGELIST_WIDGET_H__ - #define __MESSAGELIST_WIDGET_H__ - --#include --#include --#include -+#include -+#include - #include - - #include diff -Nru kf5-messagelib-17.12.3/debian/patches/upstream_fix_includes_04.diff kf5-messagelib-18.04.3/debian/patches/upstream_fix_includes_04.diff --- kf5-messagelib-17.12.3/debian/patches/upstream_fix_includes_04.diff 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/patches/upstream_fix_includes_04.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,38 +0,0 @@ -From 1d9e28e3aa8bd1d7ad1b7b56720c436cd2dce8b9 Mon Sep 17 00:00:00 2001 -From: Laurent Montel -Date: Wed, 21 Mar 2018 07:32:59 +0100 -Subject: Add local file - ---- - messagelist/src/core/themedelegate.h | 4 ++-- - messagelist/src/utils/themeeditor.h | 6 +++--- - 2 files changed, 5 insertions(+), 5 deletions(-) - ---- a/messagelist/src/core/themedelegate.h -+++ b/messagelist/src/core/themedelegate.h -@@ -25,8 +25,8 @@ - #include - #include - --#include --#include -+#include "core/theme.h" -+#include "core/item.h" - - class QAbstractItemView; - ---- a/messagelist/src/utils/themeeditor.h -+++ b/messagelist/src/utils/themeeditor.h -@@ -21,9 +21,9 @@ - #ifndef __MESSAGELIST_UTILS_THEMEEDITOR_H__ - #define __MESSAGELIST_UTILS_THEMEEDITOR_H__ - --#include --#include --#include -+#include "utils/optionseteditor.h" -+#include "core/themedelegate.h" -+#include "core/theme.h" - - #include - #include diff -Nru kf5-messagelib-17.12.3/debian/rules kf5-messagelib-18.04.3/debian/rules --- kf5-messagelib-17.12.3/debian/rules 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/rules 2018-08-26 12:21:48.000000000 +0000 @@ -8,3 +8,7 @@ override_dh_auto_test: # Disable dh_auto_test at build time : + +override_dh_shlibdeps: + $(overridden_command) -plibkf5messageviewer5abi5 -- -xlibc6 + $(overridden_command) --remaining-packages diff -Nru kf5-messagelib-17.12.3/debian/source/lintian-overrides kf5-messagelib-18.04.3/debian/source/lintian-overrides --- kf5-messagelib-17.12.3/debian/source/lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/source/lintian-overrides 2018-08-26 12:21:48.000000000 +0000 @@ -0,0 +1 @@ +kf5-messagelib source: source-is-missing webengineviewer/src/data/jquery-ui.js line length is 516 characters (>512) diff -Nru kf5-messagelib-17.12.3/debian/source.lintian-overrides kf5-messagelib-18.04.3/debian/source.lintian-overrides --- kf5-messagelib-17.12.3/debian/source.lintian-overrides 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/source.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -kf5-messagelib source: source-is-missing webengineviewer/src/data/jquery.min.js -kf5-messagelib source: source-is-missing webengineviewer/src/data/jquery-ui.js -kf5-messagelib source: source-is-missing webengineviewer/src/data/jquery-ui.js line length is 516 characters (>512) diff -Nru kf5-messagelib-17.12.3/debian/tests/acc kf5-messagelib-18.04.3/debian/tests/acc --- kf5-messagelib-17.12.3/debian/tests/acc 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/tests/acc 2018-08-26 12:21:48.000000000 +0000 @@ -1,5 +1,8 @@ #!/bin/sh +#tests broken upstream so skip +exit 0 + DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH) for in_file in debian/*.acc.in; do diff -Nru kf5-messagelib-17.12.3/debian/tests/control kf5-messagelib-18.04.3/debian/tests/control --- kf5-messagelib-17.12.3/debian/tests/control 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/tests/control 2018-08-26 12:21:48.000000000 +0000 @@ -3,7 +3,7 @@ xvfb, xauth, dbus-x11, libgl1-mesa-dri, gnupg-agent, akonadi-server, akonadi-backend-sqlite, breeze-icon-theme, openbox, libkf5akonadi-dev-bin, libkf5akonadisearch-bin, kinit -Restrictions: build-needed +#Restrictions: build-needed Tests: acc Depends: @, diff -Nru kf5-messagelib-17.12.3/debian/tests/testsuite kf5-messagelib-18.04.3/debian/tests/testsuite --- kf5-messagelib-17.12.3/debian/tests/testsuite 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/tests/testsuite 2018-08-26 12:21:48.000000000 +0000 @@ -1,6 +1,8 @@ #!/bin/sh -dpkg-architecture -e amd64 || dpkg-architecture -e i386 || exit 0 +#dpkg-architecture -e amd64 || dpkg-architecture -e i386 || exit 0 +#tests broken upstream so skip +exit 0 export HOME=$(mktemp -d) trap "rm -rf ${HOME}" EXIT diff -Nru kf5-messagelib-17.12.3/debian/upstream/metadata kf5-messagelib-18.04.3/debian/upstream/metadata --- kf5-messagelib-17.12.3/debian/upstream/metadata 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/upstream/metadata 2018-08-26 12:21:48.000000000 +0000 @@ -1,7 +1,7 @@ Name: messagelib -Changelog: https://quickgit.kde.org/?p=messagelib.git&a=log +Changelog: https://cgit.kde.org/messagelib.git/log Contact: kde-devel@kde.org Donation: https://www.kde.org/community/donations/index.php Repository: https://anongit.kde.org/messagelib.git -Repository-Browse: https://quickgit.kde.org/?p=messagelib.git +Repository-Browse: https://cgit.kde.org/messagelib.git Security-Contact: security@kde.org diff -Nru kf5-messagelib-17.12.3/debian/watch kf5-messagelib-18.04.3/debian/watch --- kf5-messagelib-17.12.3/debian/watch 2018-07-20 04:58:08.000000000 +0000 +++ kf5-messagelib-18.04.3/debian/watch 2018-08-26 12:21:48.000000000 +0000 @@ -1,2 +1,2 @@ -version=3 -http://download.kde.org/stable/applications/([\d.]+)/src/messagelib-([\d.]+).tar.xz +version=4 +opts=pgpsigurlmangle=s/$/.sig/ https://download.kde.org/stable/applications/([\d.]+)/src/messagelib-([\d.]+)\.tar\.xz diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/attachmentvcardfromaddressbookjobtest.cpp kf5-messagelib-18.04.3/messagecomposer/autotests/attachmentvcardfromaddressbookjobtest.cpp --- kf5-messagelib-17.12.3/messagecomposer/autotests/attachmentvcardfromaddressbookjobtest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/attachmentvcardfromaddressbookjobtest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Montel Laurent + Copyright (c) 2015-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/attachmentvcardfromaddressbookjobtest.h kf5-messagelib-18.04.3/messagecomposer/autotests/attachmentvcardfromaddressbookjobtest.h --- kf5-messagelib-17.12.3/messagecomposer/autotests/attachmentvcardfromaddressbookjobtest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/attachmentvcardfromaddressbookjobtest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Montel Laurent + Copyright (c) 2015-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/CMakeLists.txt kf5-messagelib-18.04.3/messagecomposer/autotests/CMakeLists.txt --- kf5-messagelib-17.12.3/messagecomposer/autotests/CMakeLists.txt 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/CMakeLists.txt 2018-07-06 05:43:41.000000000 +0000 @@ -9,8 +9,21 @@ macro( add_messagecomposer_test _source ) ecm_add_test(${_source} NAME_PREFIX "messagecomposer-" - LINK_LIBRARIES KF5::Mime KF5::MessageComposer KF5::MessageViewer KF5::MessageCore KF5::TemplateParser - KF5::PimTextEdit Qt5::Test KF5::IdentityManagement KF5::Contacts KF5::AkonadiCore KF5::XmlGui KF5::Libkdepim KF5::IconThemes KF5::Completion + LINK_LIBRARIES + KF5::Mime + KF5::MessageComposer + KF5::MessageViewer + KF5::MessageCore + KF5::TemplateParser + KF5::PimTextEdit + Qt5::Test + KF5::IdentityManagement + KF5::Contacts + KF5::AkonadiCore + KF5::XmlGui + KF5::Libkdepim + KF5::IconThemes + KF5::Completion ) endmacro() diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/composerviewbasetest.cpp kf5-messagelib-18.04.3/messagecomposer/autotests/composerviewbasetest.cpp --- kf5-messagelib-17.12.3/messagecomposer/autotests/composerviewbasetest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/composerviewbasetest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/composerviewbasetest.h kf5-messagelib-18.04.3/messagecomposer/autotests/composerviewbasetest.h --- kf5-messagelib-17.12.3/messagecomposer/autotests/composerviewbasetest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/composerviewbasetest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/cryptocomposertest.cpp kf5-messagelib-18.04.3/messagecomposer/autotests/cryptocomposertest.cpp --- kf5-messagelib-17.12.3/messagecomposer/autotests/cryptocomposertest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/cryptocomposertest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -23,14 +23,11 @@ #include "qtest_messagecomposer.h" #include "cryptofunctions.h" -#include "testcsshelper.h" - -#include -#include +#include "setupenv.h" #include -#include +#include using namespace KMime; #include @@ -39,22 +36,23 @@ #include #include #include -#include "MessageComposer/Util" -#include -#include +#include +#include +#include using namespace MessageComposer; #include #include -#include +using namespace MessageCore; #include -#include - -using MessageCore::AttachmentPart; +#include #include +#include +#include + Q_DECLARE_METATYPE(MessageCore::AttachmentPart) QTEST_MAIN(CryptoComposerTest) @@ -153,17 +151,12 @@ QCOMPARE(message->from()->asUnicodeString(), QString::fromLocal8Bit("me@me.me")); QCOMPARE(message->to()->asUnicodeString(), QString::fromLocal8Bit("you@you.you")); - MimeTreeParser::BufferedHtmlWriter testWriter; - testWriter.begin(); - TestCSSHelper testCSSHelper; - MessageComposer::Test::TestObjectTreeSource testSource(&testWriter, &testCSSHelper); - testSource.setAllowDecryption(true); + MimeTreeParser::SimpleObjectTreeSource testSource; + testSource.setDecryptMessage(true); MimeTreeParser::NodeHelper *nh = new MimeTreeParser::NodeHelper; MimeTreeParser::ObjectTreeParser otp(&testSource, nh); - MimeTreeParser::ProcessResult pResult(nh); otp.parseObjectTree(message.data()); - testWriter.end(); KMime::Message::Ptr unencrypted = nh->unencryptedMessage(message); KMime::Content *testAttachment = Util::findTypeInMessage(unencrypted.data(), "x-some", "x-type"); diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/cryptofunctions.cpp kf5-messagelib-18.04.3/messagecomposer/autotests/cryptofunctions.cpp --- kf5-messagelib-17.12.3/messagecomposer/autotests/cryptofunctions.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/cryptofunctions.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -20,25 +20,22 @@ #include "cryptofunctions.h" -#include "testcsshelper.h" +#include "setupenv.h" -#include "MessageComposer/Util" +#include #include #include #include -#include -#include #include -#include +#include #include #include #include #include -#include using namespace MessageComposer; @@ -61,13 +58,9 @@ resultMessage->parse(); // parse the result and make sure it is valid in various ways - MimeTreeParser::BufferedHtmlWriter testWriter; - testWriter.begin(); - TestCSSHelper testCSSHelper; - MessageComposer::Test::TestObjectTreeSource testSource(&testWriter, &testCSSHelper); + MimeTreeParser::SimpleObjectTreeSource testSource; MimeTreeParser::NodeHelper *nh = new MimeTreeParser::NodeHelper; MimeTreeParser::ObjectTreeParser otp(&testSource, nh); - MimeTreeParser::ProcessResult pResult(nh); // ensure the signed part exists and is parseable if (f & Kleo::OpenPGPMIMEFormat) { @@ -134,11 +127,8 @@ resultMessage->parse(); // parse the result and make sure it is valid in various ways - MimeTreeParser::BufferedHtmlWriter testWriter; - testWriter.begin(); - TestCSSHelper testCSSHelper; - MessageComposer::Test::TestObjectTreeSource testSource(&testWriter, &testCSSHelper); - testSource.setAllowDecryption(true); + MimeTreeParser::SimpleObjectTreeSource testSource; + testSource.setDecryptMessage(true); MimeTreeParser::NodeHelper *nh = new MimeTreeParser::NodeHelper; MimeTreeParser::ObjectTreeParser otp(&testSource, nh); @@ -190,11 +180,8 @@ resultMessage->parse(); // parse the result and make sure it is valid in various ways - MimeTreeParser::BufferedHtmlWriter testWriter; - testWriter.begin(); - TestCSSHelper testCSSHelper; - MessageComposer::Test::TestObjectTreeSource testSource(&testWriter, &testCSSHelper); - testSource.setAllowDecryption(true); + MimeTreeParser::SimpleObjectTreeSource testSource; + testSource.setDecryptMessage(true); MimeTreeParser::NodeHelper *nh = new MimeTreeParser::NodeHelper; MimeTreeParser::ObjectTreeParser otp(&testSource, nh); diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/encryptjobtest.cpp kf5-messagelib-18.04.3/messagecomposer/autotests/encryptjobtest.cpp --- kf5-messagelib-17.12.3/messagecomposer/autotests/encryptjobtest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/encryptjobtest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -20,15 +20,13 @@ #include "encryptjobtest.h" -#include -#include #include "qtest_messagecomposer.h" #include "cryptofunctions.h" +#include "setupenv.h" -#include +#include #include -#include #include #include @@ -37,13 +35,14 @@ #include #include -#include #include -#include #include #include +#include +#include + QTEST_MAIN(EncryptJobTest) void EncryptJobTest::initTestCase() diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/followupreminderselectdatedialogtest.cpp kf5-messagelib-18.04.3/messagecomposer/autotests/followupreminderselectdatedialogtest.cpp --- kf5-messagelib-17.12.3/messagecomposer/autotests/followupreminderselectdatedialogtest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/followupreminderselectdatedialogtest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Montel Laurent + Copyright (C) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/followupreminderselectdatedialogtest.h kf5-messagelib-18.04.3/messagecomposer/autotests/followupreminderselectdatedialogtest.h --- kf5-messagelib-17.12.3/messagecomposer/autotests/followupreminderselectdatedialogtest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/followupreminderselectdatedialogtest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Montel Laurent + Copyright (C) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/globalparttest.cpp kf5-messagelib-18.04.3/messagecomposer/autotests/globalparttest.cpp --- kf5-messagelib-17.12.3/messagecomposer/autotests/globalparttest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/globalparttest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Montel Laurent + Copyright (C) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/globalparttest.h kf5-messagelib-18.04.3/messagecomposer/autotests/globalparttest.h --- kf5-messagelib-17.12.3/messagecomposer/autotests/globalparttest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/globalparttest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Montel Laurent + Copyright (C) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/infoparttest.cpp kf5-messagelib-18.04.3/messagecomposer/autotests/infoparttest.cpp --- kf5-messagelib-17.12.3/messagecomposer/autotests/infoparttest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/infoparttest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Montel Laurent + Copyright (C) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/infoparttest.h kf5-messagelib-18.04.3/messagecomposer/autotests/infoparttest.h --- kf5-messagelib-17.12.3/messagecomposer/autotests/infoparttest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/infoparttest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Montel Laurent + Copyright (C) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/messagefactoryngtest.cpp kf5-messagelib-18.04.3/messagecomposer/autotests/messagefactoryngtest.cpp --- kf5-messagelib-17.12.3/messagecomposer/autotests/messagefactoryngtest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/messagefactoryngtest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,7 +1,7 @@ /* Copyright (C) 2010 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.com Copyright (c) 2010 Leo Franchi - Copyright (c) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by @@ -21,39 +21,35 @@ #include "messagefactoryngtest.h" +#include "qtest_messagecomposer.h" #include "cryptofunctions.h" +#include "setupenv.h" #include -#include -#include "MessageComposer/Composer" -#include "MessageComposer/MessageFactoryNG" -#include "MessageComposer/GlobalPart" -#include "MessageComposer/MessageComposerSettings" -#include "MessageComposer/Util" - -#include "MessageComposer/InfoPart" -#include "MessageComposer/TextPart" - -#include "testcsshelper.h" -#include - -#include -#include -#include +#include +#include +#include +#include +#include -#include "qtest_messagecomposer.h" -#include +#include +#include + +#include + +#include +#include + +#include "globalsettings_templateparser.h" -#include -#include -#include -#include #include + +#include #include #include -#include "globalsettings_templateparser.h" #include +#include using namespace MessageComposer; @@ -842,14 +838,6 @@ QVERIFY(mdn.data()); //qDebug() << "mdn" << mdn->encodedContent(); - /* - // parse the result and make sure it is valid in various ways - TestHtmlWriter testWriter; - TestCSSHelper testCSSHelper; - TestObjectTreeSource testSource( &testWriter, &testCSSHelper ); - MimeTreeParser::NodeHelper* nh = new MimeTreeParser::NodeHelper; - MimeTreeParser::ObjectTreeParser otp( &testSource, nh, 0, false, true, 0 ); - MimeTreeParser::ProcessResult pResult( nh ); */ QString mdnContent = QString::fromLatin1("The message sent on %1 to %2 with subject \"%3\" has been displayed. " "This is no guarantee that the message has been read or understood."); diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/messagefactoryngtest.h kf5-messagelib-18.04.3/messagecomposer/autotests/messagefactoryngtest.h --- kf5-messagelib-17.12.3/messagecomposer/autotests/messagefactoryngtest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/messagefactoryngtest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,7 +1,7 @@ /* Copyright (C) 2010 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.com Copyright (c) 2010 Leo Franchi - Copyright (c) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/plugineditorcheckbeforesendparamstest.cpp kf5-messagelib-18.04.3/messagecomposer/autotests/plugineditorcheckbeforesendparamstest.cpp --- kf5-messagelib-17.12.3/messagecomposer/autotests/plugineditorcheckbeforesendparamstest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/plugineditorcheckbeforesendparamstest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/plugineditorcheckbeforesendparamstest.h kf5-messagelib-18.04.3/messagecomposer/autotests/plugineditorcheckbeforesendparamstest.h --- kf5-messagelib-17.12.3/messagecomposer/autotests/plugineditorcheckbeforesendparamstest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/plugineditorcheckbeforesendparamstest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/qtest_messagecomposer.h kf5-messagelib-18.04.3/messagecomposer/autotests/qtest_messagecomposer.h --- kf5-messagelib-17.12.3/messagecomposer/autotests/qtest_messagecomposer.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/qtest_messagecomposer.h 2018-07-06 05:43:41.000000000 +0000 @@ -22,8 +22,6 @@ #ifndef QTEST_MESSAGECOMPOSER_H #define QTEST_MESSAGECOMPOSER_H -#include - /** * Runs a MessageComposer::JobBase synchronously and aborts if the job failed. * Similar to QVERIFY( job->exec() ) but includes the job error message diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/recipientseditortest.cpp kf5-messagelib-18.04.3/messagecomposer/autotests/recipientseditortest.cpp --- kf5-messagelib-17.12.3/messagecomposer/autotests/recipientseditortest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/recipientseditortest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -61,7 +61,7 @@ MessageComposer::RecipientsEditor editor(new RecipientsLineTestFactory()); editor.show(); QApplication::setActiveWindow(&editor); - QTest::qWaitForWindowActive(&editor); + QVERIFY(QTest::qWaitForWindowActive(&editor)); QCOMPARE(editor.recipients().size(), 0); diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/setupenv.cpp kf5-messagelib-18.04.3/messagecomposer/autotests/setupenv.cpp --- kf5-messagelib-17.12.3/messagecomposer/autotests/setupenv.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/setupenv.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -29,8 +29,8 @@ void MessageComposer::Test::setupEnv() { - setenv("LC_ALL", "C", 1); - setenv("KDEHOME", QFile::encodeName(QDir::homePath() + QString::fromLatin1("/.qttest")).constData(), 1); + qputenv("LC_ALL", "C"); + qputenv("KDEHOME", QFile::encodeName(QDir::homePath() + QString::fromLatin1("/.qttest")).constData()); } std::vector< GpgME::Key, std::allocator< GpgME::Key > > MessageComposer::Test::getKeys(bool smime) diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/setupenv.h kf5-messagelib-18.04.3/messagecomposer/autotests/setupenv.h --- kf5-messagelib-17.12.3/messagecomposer/autotests/setupenv.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/setupenv.h 2018-07-06 05:43:41.000000000 +0000 @@ -22,8 +22,6 @@ #define MESSAGECORE_TESTS_UTIL_H #include -#include -#include namespace MessageComposer { namespace Test { @@ -39,34 +37,6 @@ * Returns list of keys used in various crypto routines */ std::vector getKeys(bool smime = false); - -// We can't use EmptySource, since that doesn't provide a HTML writer. Therefore, derive -// from EmptySource so we can provide our own HTML writer. -// This is only needed because ObjectTreeParser has a bug and doesn't decrypt inline PGP messages -// when there is no HTML writer, see FIXME comment in ObjectTreeParser::writeBodyString(). -class TestObjectTreeSource : public MessageViewer::EmptySource -{ -public: - TestObjectTreeSource(MimeTreeParser::HtmlWriter *writer, MessageViewer::CSSHelperBase *cssHelper) - : mWriter(writer) - , mCSSHelper(cssHelper) - { - } - - MimeTreeParser::HtmlWriter *htmlWriter() override - { - return mWriter; - } - - MessageViewer::CSSHelperBase *cssHelper() override - { - return mCSSHelper; - } - -private: - MimeTreeParser::HtmlWriter *mWriter = nullptr; - MessageViewer::CSSHelperBase *mCSSHelper = nullptr; -}; } } diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/testcsshelper.h kf5-messagelib-18.04.3/messagecomposer/autotests/testcsshelper.h --- kf5-messagelib-17.12.3/messagecomposer/autotests/testcsshelper.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/testcsshelper.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -/* - Copyright (C) 2009 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.net - Copyright (c) 2009 Leo Franchi - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. - */ - -#ifndef TEST_CSS_HELPER_H -#define TEST_CSS_HELPER_H - -#include - -// Objecttreeparser needs a valid css helper othewise it crashes -class TestCSSHelper : public MessageViewer::CSSHelper -{ -public: - TestCSSHelper() : MessageViewer::CSSHelper(nullptr) - { - } - - virtual ~TestCSSHelper() - { - } - - QString nonQuotedFontTag() const - { - return QString::fromLatin1("<"); - } - - QString quoteFontTag(int) const - { - return QString::fromLatin1("<"); - } -}; - -#endif diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/textparttest.cpp kf5-messagelib-18.04.3/messagecomposer/autotests/textparttest.cpp --- kf5-messagelib-17.12.3/messagecomposer/autotests/textparttest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/textparttest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Montel Laurent + Copyright (C) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/textparttest.h kf5-messagelib-18.04.3/messagecomposer/autotests/textparttest.h --- kf5-messagelib-17.12.3/messagecomposer/autotests/textparttest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/textparttest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Montel Laurent + Copyright (C) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/utiltest.cpp kf5-messagelib-18.04.3/messagecomposer/autotests/utiltest.cpp --- kf5-messagelib-17.12.3/messagecomposer/autotests/utiltest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/utiltest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,6 +1,6 @@ /* Copyright (c) 2009 Constantin Berzan - Copyright (c) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messagecomposer/autotests/utiltest.h kf5-messagelib-18.04.3/messagecomposer/autotests/utiltest.h --- kf5-messagelib-17.12.3/messagecomposer/autotests/utiltest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/autotests/utiltest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,6 +1,6 @@ /* Copyright (c) 2009 Constantin Berzan - Copyright (c) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messagecomposer/KF5MessageComposerConfig.cmake.in kf5-messagelib-18.04.3/messagecomposer/KF5MessageComposerConfig.cmake.in --- kf5-messagelib-17.12.3/messagecomposer/KF5MessageComposerConfig.cmake.in 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/KF5MessageComposerConfig.cmake.in 2018-07-06 05:43:41.000000000 +0000 @@ -7,5 +7,5 @@ find_dependency(KF5IdentityManagement "@IDENTITYMANAGEMENT_LIB_VERSION@") find_dependency(KF5AkonadiMime "@AKONADIMIME_LIB_VERSION@") find_dependency(KF5Libkleo "@LIBKLEO_LIB_VERSION@") - +find_dependency(KF5MessageViewer "@MESSAGELIB_LIB_VERSION@") include("${CMAKE_CURRENT_LIST_DIR}/KF5MessageComposerTargets.cmake") diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/attachment/attachmentcontrollerbase.cpp kf5-messagelib-18.04.3/messagecomposer/src/attachment/attachmentcontrollerbase.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/attachment/attachmentcontrollerbase.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/attachment/attachmentcontrollerbase.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -275,7 +275,7 @@ { Q_ASSERT(selectedParts.count() == 1); AttachmentUpdateJob *ajob = new AttachmentUpdateJob(selectedParts.first(), q); - connect(ajob, SIGNAL(result(KJob*)), q, SLOT(updateJobResult(KJob*))); + connect(ajob, &AttachmentUpdateJob::result, q, [this](KJob *job) { updateJobResult(job); }); ajob->start(); } @@ -490,40 +490,40 @@ connect(d->removeContextAction, &QAction::triggered, this, [this]() { d->removeSelectedAttachments(); }); d->openContextAction = new QAction(i18nc("to open", "Open"), this); - connect(d->openContextAction, SIGNAL(triggered(bool)), this, SLOT(openSelectedAttachments())); + connect(d->openContextAction, &QAction::triggered, this, [this]() { d->openSelectedAttachments(); }); d->viewContextAction = new QAction(i18nc("to view", "View"), this); - connect(d->viewContextAction, SIGNAL(triggered(bool)), this, SLOT(viewSelectedAttachments())); + connect(d->viewContextAction, &QAction::triggered, this, [this]() { d->viewSelectedAttachments(); }); d->editContextAction = new QAction(i18nc("to edit", "Edit"), this); - connect(d->editContextAction, SIGNAL(triggered(bool)), this, SLOT(editSelectedAttachment())); + connect(d->editContextAction, &QAction::triggered, this, [this]() { d->editSelectedAttachment(); }); d->editWithContextAction = new QAction(i18n("Edit With..."), this); - connect(d->editWithContextAction, SIGNAL(triggered(bool)), this, SLOT(editSelectedAttachmentWith())); + connect(d->editWithContextAction, &QAction::triggered, this, [this]() { d->editSelectedAttachmentWith(); }); d->saveAsAction = new QAction(QIcon::fromTheme(QStringLiteral("document-save-as")), i18n("&Save Attachment As..."), this); d->saveAsContextAction = new QAction(QIcon::fromTheme(QStringLiteral("document-save-as")), i18n("Save As..."), this); - connect(d->saveAsAction, SIGNAL(triggered(bool)), - this, SLOT(saveSelectedAttachmentAs())); - connect(d->saveAsContextAction, SIGNAL(triggered(bool)), - this, SLOT(saveSelectedAttachmentAs())); + connect(d->saveAsAction, &QAction::triggered, + this, [this]() { d->saveSelectedAttachmentAs(); }); + connect(d->saveAsContextAction, &QAction::triggered, + this, [this]() { d->saveSelectedAttachmentAs(); }); d->propertiesAction = new QAction(i18n("Attachment Pr&operties..."), this); d->propertiesContextAction = new QAction(i18n("Properties"), this); - connect(d->propertiesAction, SIGNAL(triggered(bool)), - this, SLOT(selectedAttachmentProperties())); - connect(d->propertiesContextAction, SIGNAL(triggered(bool)), - this, SLOT(selectedAttachmentProperties())); + connect(d->propertiesAction, &QAction::triggered, + this, [this]() { d->selectedAttachmentProperties(); }); + connect(d->propertiesContextAction, &QAction::triggered, + this, [this]() { d->selectedAttachmentProperties(); }); d->selectAllAction = new QAction(i18n("Select All"), this); connect(d->selectAllAction, &QAction::triggered, this, &AttachmentControllerBase::selectedAllAttachment); d->reloadAttachmentAction = new QAction(QIcon::fromTheme(QStringLiteral("view-refresh")), i18n("Reload"), this); - connect(d->reloadAttachmentAction, SIGNAL(triggered(bool)), - this, SLOT(reloadAttachment())); + connect(d->reloadAttachmentAction, &QAction::triggered, + this, [this]() {d->reloadAttachment();}); // Insert the actions into the composer window's menu. KActionCollection *collection = d->mActionCollection; @@ -560,7 +560,7 @@ qCDebug(MESSAGECOMPOSER_LOG) << "Compressing part."; AttachmentCompressJob *ajob = new AttachmentCompressJob(part, this); - connect(ajob, SIGNAL(result(KJob*)), this, SLOT(compressJobResult(KJob*))); + connect(ajob, &AttachmentCompressJob::result, this, [this](KJob *job) { d->compressJobResult(job); }); ajob->start(); } else { qCDebug(MESSAGECOMPOSER_LOG) << "Uncompressing part."; @@ -580,7 +580,7 @@ Q_EMIT refreshSelection(); const int numberOfParts(d->selectedParts.count()); - QMenu *menu = new QMenu; + QMenu menu; const bool enableEditAction = (numberOfParts == 1) && (!d->selectedParts.first()->isMessageOrMessageCollection()); @@ -597,44 +597,43 @@ if ((mimetype == QLatin1String("text/plain")) || (mimetype == QLatin1String("image/png")) || (mimetype == QLatin1String("image/jpeg")) - || parentMimeType.contains(QStringLiteral("text/plain")) - || parentMimeType.contains(QStringLiteral("image/png")) - || parentMimeType.contains(QStringLiteral("image/jpeg")) + || parentMimeType.contains(QLatin1String("text/plain")) + || parentMimeType.contains(QLatin1String("image/png")) + || parentMimeType.contains(QLatin1String("image/jpeg")) ) { - menu->addAction(d->viewContextAction); + menu.addAction(d->viewContextAction); } - d->createOpenWithMenu(menu, d->selectedParts.first()); + d->createOpenWithMenu(&menu, d->selectedParts.first()); } - menu->addAction(d->openContextAction); + menu.addAction(d->openContextAction); } if (enableEditAction) { - menu->addAction(d->editWithContextAction); - menu->addAction(d->editContextAction); + menu.addAction(d->editWithContextAction); + menu.addAction(d->editContextAction); } if (numberOfParts > 0) { - menu->addAction(d->removeContextAction); + menu.addAction(d->removeContextAction); } if (numberOfParts == 1) { if (!d->selectedParts.first()->url().isEmpty()) { - menu->addAction(d->reloadAttachmentAction); + menu.addAction(d->reloadAttachmentAction); } - menu->addAction(d->saveAsContextAction); - menu->addSeparator(); - menu->addAction(d->propertiesContextAction); + menu.addAction(d->saveAsContextAction); + menu.addSeparator(); + menu.addAction(d->propertiesContextAction); } const int nbAttachment = d->model->rowCount(); if (nbAttachment != numberOfParts) { - menu->addSeparator(); - menu->addAction(d->selectAllAction); + menu.addSeparator(); + menu.addAction(d->selectAllAction); } if (numberOfParts == 0) { - menu->addSeparator(); - menu->addAction(d->addContextAction); + menu.addSeparator(); + menu.addAction(d->addContextAction); } - menu->exec(QCursor::pos()); - delete menu; + menu.exec(QCursor::pos()); } void AttachmentControllerBase::slotOpenWithDialog() @@ -718,8 +717,7 @@ MessageComposer::Composer *composer = new MessageComposer::Composer; composer->globalPart()->setFallbackCharsetEnabled(true); MessageComposer::AttachmentJob *attachmentJob = new MessageComposer::AttachmentJob(part, composer); - connect(attachmentJob, SIGNAL(result(KJob*)), - this, SLOT(slotAttachmentContentCreated(KJob*))); + connect(attachmentJob, &AttachmentJob::result, this, [this](KJob *job) { d->slotAttachmentContentCreated(job); }); attachmentJob->start(); } @@ -751,8 +749,8 @@ QUrl::fromLocalFile(tempFile->fileName()), QString::fromLatin1(part->mimeType()), openWithOption, this, d->wParent); - connect(watcher, SIGNAL(editDone(MessageViewer::EditorWatcher*)), - this, SLOT(editDone(MessageViewer::EditorWatcher*))); + connect(watcher, &MessageViewer::EditorWatcher::editDone, + this, [this](MessageViewer::EditorWatcher *watcher) { d->editDone(watcher);}); switch (watcher->start()) { case MessageViewer::EditorWatcher::NoError: @@ -934,7 +932,7 @@ void AttachmentControllerBase::addAttachment(const QUrl &url) { MessageCore::AttachmentFromUrlBaseJob *ajob = MessageCore::AttachmentFromUrlUtils::createAttachmentJob(url, this); - connect(ajob, SIGNAL(result(KJob*)), this, SLOT(loadJobResult(KJob*))); + connect(ajob, &AttachmentFromUrlBaseJob::result, this, [this](KJob *job) { d->loadJobResult(job); }); ajob->start(); } diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/attachment/attachmentcontrollerbase.h kf5-messagelib-18.04.3/messagecomposer/src/attachment/attachmentcontrollerbase.h --- kf5-messagelib-17.12.3/messagecomposer/src/attachment/attachmentcontrollerbase.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/attachment/attachmentcontrollerbase.h 2018-07-06 05:43:41.000000000 +0000 @@ -98,8 +98,6 @@ private: void attachFiles(const QList &urls, const QString &encoding); void attachDirectory(const QUrl &url); - -private Q_SLOTS: void slotPutResult(KJob *job); void slotOpenWithDialog(); void slotOpenWithAction(QAction *act); @@ -107,21 +105,6 @@ private: class Private; Private *const d; - - Q_PRIVATE_SLOT(d, void compressJobResult(KJob *)) - Q_PRIVATE_SLOT(d, void loadJobResult(KJob *)) - Q_PRIVATE_SLOT(d, void openSelectedAttachments()) - Q_PRIVATE_SLOT(d, void viewSelectedAttachments()) - Q_PRIVATE_SLOT(d, void editSelectedAttachment()) - Q_PRIVATE_SLOT(d, void editSelectedAttachmentWith()) - Q_PRIVATE_SLOT(d, void removeSelectedAttachments()) - Q_PRIVATE_SLOT(d, void saveSelectedAttachmentAs()) - Q_PRIVATE_SLOT(d, void selectedAttachmentProperties()) - Q_PRIVATE_SLOT(d, void editDone(MessageViewer::EditorWatcher *)) - Q_PRIVATE_SLOT(d, void slotAttachmentContentCreated(KJob *)) - Q_PRIVATE_SLOT(d, void reloadAttachment()) - Q_PRIVATE_SLOT(d, void updateJobResult(KJob *)) - Q_PRIVATE_SLOT(d, void attachVcardFromAddressBook(KJob *)) }; } // diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/attachment/attachmentmodel.cpp kf5-messagelib-18.04.3/messagecomposer/src/attachment/attachmentmodel.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/attachment/attachmentmodel.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/attachment/attachmentmodel.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -51,15 +51,15 @@ Private(AttachmentModel *qq); ~Private(); - AttachmentModel *const q; AttachmentPart::List parts; + QList tempDirs; + AttachmentModel *const q; bool modified = false; bool encryptEnabled = false; bool signEnabled = false; bool encryptSelected = false; bool signSelected = false; bool autoDisplayEnabled = false; - QList tempDirs; }; AttachmentModel::Private::Private(AttachmentModel *qq) @@ -406,7 +406,7 @@ return true; } -bool AttachmentModel::removeAttachment(AttachmentPart::Ptr part) +bool AttachmentModel::removeAttachment(const AttachmentPart::Ptr &part) { int idx = d->parts.indexOf(part); if (idx < 0) { diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/attachment/attachmentmodel.h kf5-messagelib-18.04.3/messagecomposer/src/attachment/attachmentmodel.h --- kf5-messagelib-17.12.3/messagecomposer/src/attachment/attachmentmodel.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/attachment/attachmentmodel.h 2018-07-06 05:43:41.000000000 +0000 @@ -73,7 +73,7 @@ }; explicit AttachmentModel(QObject *parent); - ~AttachmentModel(); + ~AttachmentModel() override; bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override; QMimeData *mimeData(const QModelIndexList &indexes) const override; @@ -104,7 +104,7 @@ bool addAttachment(MessageCore::AttachmentPart::Ptr part); bool updateAttachment(MessageCore::AttachmentPart::Ptr part); bool replaceAttachment(MessageCore::AttachmentPart::Ptr oldPart, MessageCore::AttachmentPart::Ptr newPart); - bool removeAttachment(MessageCore::AttachmentPart::Ptr part); + bool removeAttachment(const MessageCore::AttachmentPart::Ptr &part); MessageCore::AttachmentPart::List attachments() const; Qt::ItemFlags flags(const QModelIndex &index) const override; diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/CMakeLists.txt kf5-messagelib-18.04.3/messagecomposer/src/CMakeLists.txt --- kf5-messagelib-17.12.3/messagecomposer/src/CMakeLists.txt 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/CMakeLists.txt 2018-07-06 05:43:41.000000000 +0000 @@ -96,6 +96,7 @@ plugineditor/plugineditormanager.cpp plugineditor/plugineditor.cpp plugineditor/plugineditorinterface.cpp + plugineditor/pluginactiontype.cpp ) set(messagecomposer_plugineditorcheckbeforesend_SRCS @@ -113,8 +114,22 @@ plugineditorinit/plugineditorinitinterface.cpp ) +set(messagecomposer_plugineditorconverttext_SRCS + plugineditorconverttext/plugineditorconverttextconfigurewidget.cpp + plugineditorconverttext/plugineditorconverttext.cpp + plugineditorconverttext/plugineditorconverttextmanager.cpp + plugineditorconverttext/plugineditorconverttextinterface.cpp + plugineditorconverttext/plugineditorconverterinitialdata.cpp + plugineditorconverttext/plugineditorconverterbeforeconvertingdata.cpp + ) + +set(messagecomposer_widgets_SRCS + widgets/dictionarycombobox.cpp + ) set( messagecomposer_src + ${messagecomposer_widgets_SRCS} + ${messagecomposer_plugineditorconverttext_SRCS} ${messagecomposer_plugineditorinit_SRCS} ${messagecomposer_plugineditor_SRCS} ${messagecomposer_richtextcomposerng_SRCS} @@ -164,11 +179,11 @@ KF5::IdentityManagement KF5::AkonadiMime KF5::Libkleo + KF5::MessageViewer PRIVATE KF5::MailTransportAkonadi KF5::PimTextEdit KF5::TemplateParser - KF5::MessageViewer KF5::AkonadiWidgets KF5::LibkdepimAkonadi KF5::KIOCore @@ -184,6 +199,7 @@ KF5::FollowupReminder KF5::Archive KF5::Contacts + KF5::SonnetCore ) target_include_directories(KF5MessageComposer INTERFACE "$") @@ -203,6 +219,7 @@ ecm_generate_headers(MessageComposer_Camelplugineditor_HEADERS HEADER_NAMES PluginEditor + PluginActionType PluginEditorInterface PluginEditorManager REQUIRED_HEADERS MessageComposer_plugineditor_HEADERS @@ -221,6 +238,28 @@ RELATIVE plugineditorinit ) +ecm_generate_headers(MessageComposer_Camelplugineditorconverttext_HEADERS + HEADER_NAMES + PluginEditorConvertTextConfigureWidget + PluginEditorConvertText + PluginEditorConvertTextManager + PluginEditorConvertTextInterface + PluginEditorConverterInitialData + PluginEditorConverterBeforeConvertingData + REQUIRED_HEADERS MessageComposer_plugineditorconverttext_HEADERS + PREFIX MessageComposer + RELATIVE plugineditorconverttext + ) + +ecm_generate_headers(MessageComposer_Camelwidgets_HEADERS + HEADER_NAMES + DictionaryComboBox + REQUIRED_HEADERS MessageComposer_widgets_HEADERS + PREFIX MessageComposer + RELATIVE widgets + ) + + ecm_generate_headers(MessageComposer_Camelplugineditorcheckbeforesend_HEADERS HEADER_NAMES PluginEditorCheckBeforeSend @@ -366,6 +405,7 @@ install(FILES + ${MessageComposer_Camelplugineditorconverttext_HEADERS} ${MessageComposer_Camelplugineditorinit_HEADERS} ${MessageComposer_Camelplugineditorcheckbeforesend_HEADERS} ${MessageComposer_Camelcasecomposer_HEADERS} @@ -381,16 +421,19 @@ ${MessageComposer_Camelcasejob_HEADERS} ${MessageComposer_Camelcaseattachement_HEADERS} ${MessageComposer_Camelplugineditor_HEADERS} + ${MessageComposer_Camelwidgets_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/MessageComposer COMPONENT Devel ) install(FILES ${MessageComposer_HEADERS} + ${MessageComposer_plugineditorconverttext_HEADERS} ${MessageComposer_plugineditorinit_HEADERS} ${CMAKE_CURRENT_BINARY_DIR}/messagecomposer_export.h ${CMAKE_CURRENT_BINARY_DIR}/messagecomposersettings_base.h ${CMAKE_CURRENT_BINARY_DIR}/messagecomposer_debug.h + ${MessageComposer_widgets_HEADERS} ${MessageComposer_composer_HEADERS} ${MessageComposer_composerng_HEADERS} ${MessageComposer_sender_HEADERS} diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer/composer.cpp kf5-messagelib-18.04.3/messagecomposer/src/composer/composer.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/composer/composer.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer/composer.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -48,17 +48,6 @@ public: ComposerPrivate(Composer *qq) : JobBasePrivate(qq) - , started(false) - , finished(false) - , sign(false) - , encrypt(false) - , noCrypto(false) - , autoSaving(false) - , globalPart(nullptr) - , infoPart(nullptr) - , textPart(nullptr) - , skeletonMessage(nullptr) - , resultContent(nullptr) { } @@ -73,32 +62,32 @@ void attachmentsFinished(KJob *job); // slot void composeFinalStep(KMime::Content *headers, KMime::Content *content); - bool started; - bool finished; - bool sign; - bool encrypt; - bool noCrypto; - bool autoSaving; - Kleo::CryptoMessageFormat format; - std::vector signers; QList > > encData; - + std::vector signers; + AttachmentPart::List attachmentParts; + // attachments with different sign/encrypt settings from + // main message body. added at the end of the process + AttachmentPart::List lateAttachmentParts; QList resultMessages; + Kleo::CryptoMessageFormat format; + // Stuff that the application plays with. GlobalPart *globalPart = nullptr; InfoPart *infoPart = nullptr; TextPart *textPart = nullptr; - AttachmentPart::List attachmentParts; - // attachments with different sign/encrypt settings from - // main message body. added at the end of the process - AttachmentPart::List lateAttachmentParts; // Stuff that we play with. KMime::Message *skeletonMessage = nullptr; KMime::Content *resultContent = nullptr; + bool started = false; + bool finished = false; + bool sign = false; + bool encrypt = false; + bool noCrypto = false; + bool autoSaving = false; Q_DECLARE_PUBLIC(Composer) }; diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer/composer.h kf5-messagelib-18.04.3/messagecomposer/src/composer/composer.h --- kf5-messagelib-17.12.3/messagecomposer/src/composer/composer.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer/composer.h 2018-07-06 05:43:41.000000000 +0000 @@ -48,7 +48,7 @@ public: explicit Composer(QObject *parent = nullptr); - virtual ~Composer(); + ~Composer() override; QList resultMessages() const; diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer/composerlineedit.h kf5-messagelib-18.04.3/messagecomposer/src/composer/composerlineedit.h --- kf5-messagelib-17.12.3/messagecomposer/src/composer/composerlineedit.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer/composerlineedit.h 2018-07-06 05:43:41.000000000 +0000 @@ -31,14 +31,13 @@ public: explicit ComposerLineEdit(bool useCompletion, QWidget *parent = nullptr); - ~ComposerLineEdit(); + ~ComposerLineEdit() override; Q_SIGNALS: void focusUp(); void focusDown(); protected: - void keyPressEvent(QKeyEvent *) override; }; } diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer/composerviewbase.cpp kf5-messagelib-18.04.3/messagecomposer/src/composer/composerviewbase.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/composer/composerviewbase.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer/composerviewbase.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -46,13 +46,13 @@ #include #include "settings/messagecomposersettings.h" -#include #include +#include #ifndef QT_NO_CURSOR #include #endif -#include +#include "widgets/dictionarycombobox.h" #include #include @@ -110,18 +110,9 @@ , m_dictionary(nullptr) , m_fccCombo(nullptr) , m_parentWidget(parentGui) - , m_sign(false) - , m_encrypt(false) - , m_neverEncrypt(false) - , m_mdnRequested(false) - , m_urgent(false) , m_cryptoMessageFormat(Kleo::AutoFormat) - , m_pendingQueueJobs(0) - , m_autoSaveTimer(nullptr) - , m_autoSaveErrorShown(false) - , m_autoSaveInterval(1 * 1000 * 60) - , // default of 1 min - mSendLaterInfo(nullptr) + , m_autoSaveInterval(1 * 1000 * 60) // default of 1 min + , mSendLaterInfo(nullptr) { m_charsets << "utf-8"; // default, so we have a backup in case client code forgot to set. @@ -180,9 +171,9 @@ KMime::Content *msgContent = new KMime::Content; msgContent->setContent(m_msg->encodedContent()); msgContent->parse(); - MessageViewer::EmptySource emptySource; + MimeTreeParser::SimpleObjectTreeSource emptySource; MimeTreeParser::ObjectTreeParser otp(&emptySource); //All default are ok - emptySource.setAllowDecryption(allowDecryption); + emptySource.setDecryptMessage(allowDecryption); otp.parseObjectTree(msgContent); // Load the attachments @@ -231,7 +222,7 @@ KMime::Content *msgContent = new KMime::Content; msgContent->setContent(msg->encodedContent()); msgContent->parse(); - MessageViewer::EmptySource emptySource; + MimeTreeParser::SimpleObjectTreeSource emptySource; MimeTreeParser::ObjectTreeParser otp(&emptySource); //All default are ok otp.parseObjectTree(msgContent); // Set the HTML text and collect HTML images @@ -1053,12 +1044,12 @@ mFollowUpDate = followUpDate; } -Sonnet::DictionaryComboBox *ComposerViewBase::dictionary() const +MessageComposer::DictionaryComboBox *ComposerViewBase::dictionary() const { return m_dictionary; } -void ComposerViewBase::setDictionary(Sonnet::DictionaryComboBox *dictionary) +void ComposerViewBase::setDictionary(MessageComposer::DictionaryComboBox *dictionary) { m_dictionary = dictionary; } @@ -1567,6 +1558,7 @@ void ComposerViewBase::slotFccCollectionCheckResult(KJob *job) { if (job->error()) { + qCWarning(MESSAGECOMPOSER_LOG) << " void ComposerViewBase::slotFccCollectionCheckResult(KJob *job) errror " << job->errorString(); const Akonadi::Collection sentMailCol = Akonadi::SpecialMailCollections::self()->defaultCollection(Akonadi::SpecialMailCollections::SentMail); if (m_fccCombo) { @@ -2039,3 +2031,8 @@ } } } + +KMime::Message::Ptr ComposerViewBase::msg() const +{ + return m_msg; +} diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer/composerviewbase.h kf5-messagelib-18.04.3/messagecomposer/src/composer/composerviewbase.h --- kf5-messagelib-17.12.3/messagecomposer/src/composer/composerviewbase.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer/composerviewbase.h 2018-07-06 05:43:41.000000000 +0000 @@ -36,7 +36,7 @@ class KJob; class QWidget; -namespace Sonnet { +namespace MessageComposer { class DictionaryComboBox; } @@ -80,7 +80,7 @@ Q_OBJECT public: explicit ComposerViewBase(QObject *parent = nullptr, QWidget *widget = nullptr); - virtual ~ComposerViewBase(); + ~ComposerViewBase() override; enum Confirmation { LetUserConfirm, NoConfirmationNeeded @@ -162,8 +162,8 @@ Akonadi::CollectionComboBox *fccCombo() const; void setFcc(const Akonadi::Collection &id); - Sonnet::DictionaryComboBox *dictionary() const; - void setDictionary(Sonnet::DictionaryComboBox *dictionary); + MessageComposer::DictionaryComboBox *dictionary() const; + void setDictionary(MessageComposer::DictionaryComboBox *dictionary); /** * Widgets for editing differ in client classes, so @@ -230,6 +230,8 @@ Akonadi::Collection followUpCollection() const; void setFollowUpCollection(const Akonadi::Collection &followUpCollection); + KMime::Message::Ptr msg() const; + public Q_SLOTS: void identityChanged(const KIdentityManagement::Identity &ident, const KIdentityManagement::Identity &oldIdent, bool msgCleared = false); @@ -331,7 +333,7 @@ KIdentityManagement::IdentityManager *m_identMan = nullptr; MessageComposer::RichTextComposerNg *m_editor = nullptr; MailTransport::TransportComboBox *m_transport = nullptr; - Sonnet::DictionaryComboBox *m_dictionary = nullptr; + MessageComposer::DictionaryComboBox *m_dictionary = nullptr; Akonadi::CollectionComboBox *m_fccCombo = nullptr; Akonadi::Collection m_fccCollection; QWidget *m_parentWidget = nullptr; @@ -341,18 +343,22 @@ // Used mainly to prevent closing the window if a composer is active QList< MessageComposer::Composer * > m_composers; - bool m_sign, m_encrypt, m_neverEncrypt, m_mdnRequested, m_urgent; + bool m_sign = false; + bool m_encrypt = false; + bool m_neverEncrypt = false; + bool m_mdnRequested = false; + bool m_urgent = false; Kleo::CryptoMessageFormat m_cryptoMessageFormat; QString mExpandedFrom, m_from, m_replyTo, m_subject; QStringList mExpandedTo, mExpandedCc, mExpandedBcc; QList< QByteArray > m_charsets; QMap m_customHeader; - int m_pendingQueueJobs; + int m_pendingQueueJobs = 0; QTimer *m_autoSaveTimer = nullptr; QString m_autoSaveUUID; - bool m_autoSaveErrorShown; // Stops an error message being shown every time autosave is executed. + bool m_autoSaveErrorShown = false; // Stops an error message being shown every time autosave is executed. int m_autoSaveInterval; MessageComposer::MessageSender::SendMethod mSendMethod; diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer/keyresolver.cpp kf5-messagelib-18.04.3/messagecomposer/src/composer/keyresolver.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/composer/keyresolver.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer/keyresolver.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -113,11 +113,6 @@ return Kleo::KeyResolver::Item(oldItem.address, newItem.keys, newItem.pref, oldItem.signPref, oldItem.format); } -static inline bool WithRespectToKeyID(const GpgME::Key &left, const GpgME::Key &right) -{ - return qstrcmp(left.keyID(), right.keyID()) == 0; -} - static bool ValidOpenPGPEncryptionKey(const GpgME::Key &key) { if (key.protocol() != GpgME::OpenPGP) { @@ -226,21 +221,11 @@ return !ValidTrustedOpenPGPEncryptionKey(key); } -static inline bool NotValidOpenPGPEncryptionKey(const GpgME::Key &key) -{ - return !ValidOpenPGPEncryptionKey(key); -} - static inline bool NotValidTrustedSMIMEEncryptionKey(const GpgME::Key &key) { return !ValidTrustedSMIMEEncryptionKey(key); } -static inline bool NotValidSMIMEEncryptionKey(const GpgME::Key &key) -{ - return !ValidSMIMEEncryptionKey(key); -} - static inline bool NotValidTrustedEncryptionKey(const GpgME::Key &key) { return !ValidTrustedEncryptionKey(key); @@ -251,11 +236,6 @@ return !ValidEncryptionKey(key); } -static inline bool NotValidSigningKey(const GpgME::Key &key) -{ - return !ValidSigningKey(key); -} - static inline bool NotValidOpenPGPSigningKey(const GpgME::Key &key) { return !ValidOpenPGPSigningKey(key); @@ -1940,6 +1920,7 @@ Kleo::KeyResolver::ContactPreferences Kleo::KeyResolver::lookupContactPreferences(const QString &address) const { +#ifdef HAVE_A_FIX_FOR_LOCK const Private::ContactPreferencesMap::iterator it = d->mContactPreferencesMap.find(address); if (it != d->mContactPreferencesMap.end()) { @@ -1967,6 +1948,10 @@ // insert into map and grab resulting iterator d->mContactPreferencesMap.insert(std::make_pair(address, pref)); return pref; +#else + Q_UNUSED(address) + return ContactPreferences(); +#endif } void Kleo::KeyResolver::saveContactPreference(const QString &email, const ContactPreferences &pref) const diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer/keyresolver.h kf5-messagelib-18.04.3/messagecomposer/src/composer/keyresolver.h --- kf5-messagelib-17.12.3/messagecomposer/src/composer/keyresolver.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer/keyresolver.h 2018-07-06 05:43:41.000000000 +0000 @@ -34,8 +34,8 @@ your version. */ -#ifndef __KLEO_KEYRESOLVER_H__ -#define __KLEO_KEYRESOLVER_H__ +#ifndef KLEO_KEYRESOLVER_H +#define KLEO_KEYRESOLVER_H #include "messagecomposer_export.h" #include @@ -313,4 +313,4 @@ }; } // namespace Kleo -#endif // __KLEO_KEYRESOLVER_H__ +#endif // KLEO_KEYRESOLVER_H diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/autotests/CMakeLists.txt kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/autotests/CMakeLists.txt --- kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/autotests/CMakeLists.txt 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/autotests/CMakeLists.txt 2018-07-06 05:43:41.000000000 +0000 @@ -8,3 +8,4 @@ endmacro() add_composerng_autocorrect_unittest(richtextcomposerngtest.cpp) +add_composerng_autocorrect_unittest(richtextcomposersignaturestest.cpp) diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/autotests/richtextcomposerngtest.cpp kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/autotests/richtextcomposerngtest.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/autotests/richtextcomposerngtest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/autotests/richtextcomposerngtest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Montel Laurent + Copyright (C) 2016-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/autotests/richtextcomposerngtest.h kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/autotests/richtextcomposerngtest.h --- kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/autotests/richtextcomposerngtest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/autotests/richtextcomposerngtest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Montel Laurent + Copyright (C) 2016-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/autotests/richtextcomposersignaturestest.cpp kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/autotests/richtextcomposersignaturestest.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/autotests/richtextcomposersignaturestest.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/autotests/richtextcomposersignaturestest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,99 @@ +/* + Copyright (C) 2018 Montel Laurent + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + + +#include "richtextcomposersignaturestest.h" +#include "../richtextcomposerng.h" +#include "../richtextcomposersignatures.h" +#include +#include + +QTEST_MAIN(RichTextComposerSignaturesTest) + +RichTextComposerSignaturesTest::RichTextComposerSignaturesTest(QObject *parent) + : QObject(parent) +{ + +} + +void RichTextComposerSignaturesTest::shouldCleanSignature() +{ + MessageComposer::RichTextComposerNg richtextComposerNg; + richtextComposerNg.createActions(new KActionCollection(this)); + MessageComposer::RichTextComposerSignatures *composerSignature = richtextComposerNg.composerSignature(); + QVERIFY(composerSignature); + + KIdentityManagement::Signature signature1; + signature1.setText(QStringLiteral("bla Bla\t")); + signature1.setEnabledSignature(true); + signature1.setInlinedHtml(false); + + KIdentityManagement::Signature signature2(QStringLiteral("Signature")); + signature2.setText(QStringLiteral("Foo Bla\t")); + signature2.setEnabledSignature(true); + signature2.setInlinedHtml(false); + + richtextComposerNg.insertSignature(signature1, KIdentityManagement::Signature::Start, KIdentityManagement::Signature::AddNewLines); + composerSignature->cleanWhitespace(signature2); + + + composerSignature->replaceSignature(signature1, signature2); + QCOMPARE(richtextComposerNg.toPlainText(), QStringLiteral("\n\nbla Bla ")); + + for (int i = 0; i < 10; i++) { + composerSignature->replaceSignature(signature2, signature1); + composerSignature->replaceSignature(signature1, signature2); + } + QCOMPARE(richtextComposerNg.toPlainText(), QStringLiteral("\n\nbla Bla ")); + +} + +void RichTextComposerSignaturesTest::shouldReplaceSignatureWhenText() +{ + MessageComposer::RichTextComposerNg richtextComposerNg; + richtextComposerNg.setText(QStringLiteral("foo\nbla \nfoo")); + richtextComposerNg.createActions(new KActionCollection(this)); + MessageComposer::RichTextComposerSignatures *composerSignature = richtextComposerNg.composerSignature(); + QVERIFY(composerSignature); + + KIdentityManagement::Signature signature1; + signature1.setText(QStringLiteral("bla Bla\t")); + signature1.setEnabledSignature(true); + signature1.setInlinedHtml(false); + + KIdentityManagement::Signature signature2(QStringLiteral("Signature")); + signature2.setText(QStringLiteral("Foo Bla\t")); + signature2.setEnabledSignature(true); + signature2.setInlinedHtml(false); + + richtextComposerNg.insertSignature(signature1, KIdentityManagement::Signature::End, KIdentityManagement::Signature::AddSeparator); + composerSignature->cleanWhitespace(signature2); + + + composerSignature->replaceSignature(signature1, signature2); + const QString result = QStringLiteral("foo\nbla\nfoo--\nbla Bla "); + QCOMPARE(richtextComposerNg.toPlainText(), result); + + for (int i = 0; i < 10; i++) { + composerSignature->replaceSignature(signature2, signature1); + composerSignature->replaceSignature(signature1, signature2); + } + QCOMPARE(richtextComposerNg.toPlainText(), result); + +} diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/autotests/richtextcomposersignaturestest.h kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/autotests/richtextcomposersignaturestest.h --- kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/autotests/richtextcomposersignaturestest.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/autotests/richtextcomposersignaturestest.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,36 @@ +/* + Copyright (C) 2018 Montel Laurent + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef RICHTEXTCOMPOSERSIGNATURESTEST_H +#define RICHTEXTCOMPOSERSIGNATURESTEST_H + +#include + +class RichTextComposerSignaturesTest : public QObject +{ + Q_OBJECT +public: + explicit RichTextComposerSignaturesTest(QObject *parent = nullptr); + ~RichTextComposerSignaturesTest() = default; +private Q_SLOTS: + void shouldCleanSignature(); + void shouldReplaceSignatureWhenText(); +}; + +#endif // RICHTEXTCOMPOSERSIGNATURESTEST_H diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/richtextcomposerng.cpp kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/richtextcomposerng.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/richtextcomposerng.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/richtextcomposerng.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Montel Laurent + Copyright (C) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -144,7 +144,7 @@ const QString fontSizeStr = styleRegex.cap(1); const int ptValue = fontSizeStr.toInt(&ok); if (ok) { - double emValue = (double)ptValue / 12; + double emValue = static_cast(ptValue) / 12; const QString emValueStr = QString::number(emValue, 'g', 2); cleanHtml.replace(styleRegex.pos(1), QString(fontSizeStr + QLatin1String("px")).length(), emValueStr + QLatin1String("em")); } @@ -155,22 +155,34 @@ } } -void RichTextComposerNg::fillComposerTextPart(MessageComposer::TextPart *textPart) +bool RichTextComposerNg::convertPlainText(MessageComposer::TextPart *textPart) { - if (composerControler()->isFormattingUsed() && MessageComposer::MessageComposerSettings::self()->improvePlainTextOfHtmlMessage()) { - Grantlee::PlainTextMarkupBuilder *pb = new Grantlee::PlainTextMarkupBuilder(); + return false; +} - Grantlee::MarkupDirector *pmd = new Grantlee::MarkupDirector(pb); - pmd->processDocument(document()); - const QString plainText = pb->getResult(); - textPart->setCleanPlainText(composerControler()->toCleanPlainText(plainText)); - QTextDocument *doc = new QTextDocument(plainText); - doc->adjustSize(); - - textPart->setWrappedPlainText(composerControler()->toWrappedPlainText(doc)); - delete doc; - delete pmd; - delete pb; +void RichTextComposerNg::fillComposerTextPart(MessageComposer::TextPart *textPart) +{ + if (composerControler()->isFormattingUsed()) { + if (!convertPlainText(textPart)) { + if (MessageComposer::MessageComposerSettings::self()->improvePlainTextOfHtmlMessage()) { + Grantlee::PlainTextMarkupBuilder *pb = new Grantlee::PlainTextMarkupBuilder(); + + Grantlee::MarkupDirector *pmd = new Grantlee::MarkupDirector(pb); + pmd->processDocument(document()); + const QString plainText = pb->getResult(); + textPart->setCleanPlainText(composerControler()->toCleanPlainText(plainText)); + QTextDocument *doc = new QTextDocument(plainText); + doc->adjustSize(); + + textPart->setWrappedPlainText(composerControler()->toWrappedPlainText(doc)); + delete doc; + delete pmd; + delete pb; + } else { + textPart->setCleanPlainText(composerControler()->toCleanPlainText()); + textPart->setWrappedPlainText(composerControler()->toWrappedPlainText()); + } + } } else { textPart->setCleanPlainText(composerControler()->toCleanPlainText()); textPart->setWrappedPlainText(composerControler()->toWrappedPlainText()); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/richtextcomposerng.h kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/richtextcomposerng.h --- kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/richtextcomposerng.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/richtextcomposerng.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Montel Laurent + Copyright (C) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -37,7 +37,7 @@ Q_OBJECT public: explicit RichTextComposerNg(QWidget *parent = nullptr); - ~RichTextComposerNg(); + ~RichTextComposerNg() override; PimCommon::AutoCorrection *autocorrection() const; void setAutocorrection(PimCommon::AutoCorrection *autocorrect); @@ -50,6 +50,9 @@ QString toCleanHtml() const; void forceAutoCorrection(bool selectedText = false) override; + + virtual bool convertPlainText(MessageComposer::TextPart *textPart); + private: bool processAutoCorrection(QKeyEvent *event) override; RichTextComposerNgPrivate *const d; diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/richtextcomposersignatures.cpp kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/richtextcomposersignatures.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/richtextcomposersignatures.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/richtextcomposersignatures.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Montel Laurent + Copyright (C) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/richtextcomposersignatures.h kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/richtextcomposersignatures.h --- kf5-messagelib-17.12.3/messagecomposer/src/composer-ng/richtextcomposersignatures.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/composer-ng/richtextcomposersignatures.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Montel Laurent + Copyright (C) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/followupreminder/followupremindercreatejob.cpp kf5-messagelib-18.04.3/messagecomposer/src/followupreminder/followupremindercreatejob.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/followupreminder/followupremindercreatejob.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/followupreminder/followupremindercreatejob.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Montel Laurent + Copyright (C) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/followupreminder/followupremindercreatejob.h kf5-messagelib-18.04.3/messagecomposer/src/followupreminder/followupremindercreatejob.h --- kf5-messagelib-17.12.3/messagecomposer/src/followupreminder/followupremindercreatejob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/followupreminder/followupremindercreatejob.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Montel Laurent + Copyright (C) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -34,7 +34,7 @@ Q_OBJECT public: explicit FollowupReminderCreateJob(QObject *parent = nullptr); - ~FollowupReminderCreateJob(); + ~FollowupReminderCreateJob() override; void setFollowUpReminderDate(const QDate &date); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/followupreminder/followupreminderselectdatedialog.cpp kf5-messagelib-18.04.3/messagecomposer/src/followupreminder/followupreminderselectdatedialog.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/followupreminder/followupreminderselectdatedialog.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/followupreminder/followupreminderselectdatedialog.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Montel Laurent + Copyright (C) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/followupreminder/followupreminderselectdatedialog.h kf5-messagelib-18.04.3/messagecomposer/src/followupreminder/followupreminderselectdatedialog.h --- kf5-messagelib-17.12.3/messagecomposer/src/followupreminder/followupreminderselectdatedialog.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/followupreminder/followupreminderselectdatedialog.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Montel Laurent + Copyright (C) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -33,7 +33,7 @@ Q_OBJECT public: explicit FollowUpReminderSelectDateDialog(QWidget *parent = nullptr, QAbstractItemModel *model = nullptr); - ~FollowUpReminderSelectDateDialog(); + ~FollowUpReminderSelectDateDialog() override; QDate selectedDate() const; diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/helper/messagefactoryforwardjob.cpp kf5-messagelib-18.04.3/messagecomposer/src/helper/messagefactoryforwardjob.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/helper/messagefactoryforwardjob.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/helper/messagefactoryforwardjob.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/helper/messagefactoryforwardjob.h kf5-messagelib-18.04.3/messagecomposer/src/helper/messagefactoryforwardjob.h --- kf5-messagelib-17.12.3/messagecomposer/src/helper/messagefactoryforwardjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/helper/messagefactoryforwardjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/helper/messagefactoryng.cpp kf5-messagelib-18.04.3/messagecomposer/src/helper/messagefactoryng.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/helper/messagefactoryng.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/helper/messagefactoryng.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,7 +1,7 @@ /* Copyright (C) 2010 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com Copyright (c) 2010 Leo Franchi - Copyright (c) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -132,7 +132,7 @@ if (auto hdr = m_origMsg->headerByType("List-Post")) { const QString hdrListPost = hdr->asUnicodeString(); - if (hdrListPost.contains(QStringLiteral("mailto:"), Qt::CaseInsensitive)) { + if (hdrListPost.contains(QLatin1String("mailto:"), Qt::CaseInsensitive)) { QRegExp rx(QStringLiteral("]+)@([^>]+)>"), Qt::CaseInsensitive); if (rx.indexIn(hdrListPost, 0) != -1) { // matched KMime::Types::Mailbox mailbox; @@ -938,7 +938,7 @@ if (auto hrd = msg->headerByType("Disposition-Notification-Options")) { notificationOptions = hrd->asUnicodeString(); } - if (notificationOptions.contains(QStringLiteral("required"), Qt::CaseSensitive)) { + if (notificationOptions.contains(QLatin1String("required"), Qt::CaseSensitive)) { // ### hacky; should parse... // There is a required option that we don't understand. We need to // ask the user what we should do: @@ -954,7 +954,7 @@ idString = hdr->asUnicodeString().trimmed(); } bool ok = false; - int id = idString.toUInt(&ok); + uint id = idString.toUInt(&ok); if (!ok || id == 0) { id = m_identityManager->identityForAddress(msg->to()->asUnicodeString() + QLatin1String(", ") + msg->cc()->asUnicodeString()).uoid(); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/helper/messagefactoryng.h kf5-messagelib-18.04.3/messagecomposer/src/helper/messagefactoryng.h --- kf5-messagelib-17.12.3/messagecomposer/src/helper/messagefactoryng.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/helper/messagefactoryng.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,7 +1,7 @@ /* Copyright (C) 2010 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com Copyright (c) 2010 Leo Franchi - Copyright (c) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -68,7 +68,7 @@ }; explicit MessageFactoryNG(const KMime::Message::Ptr &origMsg, Akonadi::Item::Id id, const Akonadi::Collection &col = Akonadi::Collection(), QObject *parent = nullptr); - virtual ~MessageFactoryNG(); + ~MessageFactoryNG() override; /** * Create a new message that is a reply to this message, filling all diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/helper/messagefactoryreplyjob.cpp kf5-messagelib-18.04.3/messagecomposer/src/helper/messagefactoryreplyjob.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/helper/messagefactoryreplyjob.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/helper/messagefactoryreplyjob.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/helper/messagefactoryreplyjob.h kf5-messagelib-18.04.3/messagecomposer/src/helper/messagefactoryreplyjob.h --- kf5-messagelib-17.12.3/messagecomposer/src/helper/messagefactoryreplyjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/helper/messagefactoryreplyjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/autotests/imagescalingtest.cpp kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/autotests/imagescalingtest.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/autotests/imagescalingtest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/autotests/imagescalingtest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Montel Laurent + Copyright (C) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/autotests/imagescalingtest.h kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/autotests/imagescalingtest.h --- kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/autotests/imagescalingtest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/autotests/imagescalingtest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Montel Laurent + Copyright (C) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescaling.cpp kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescaling.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescaling.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescaling.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2017 Montel Laurent + Copyright (C) 2012-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -173,13 +173,13 @@ if (type.isEmpty()) { type = QStringLiteral("PNG"); } - if (d->mName.endsWith(QStringLiteral(".png"))) { + if (d->mName.endsWith(QLatin1String(".png"))) { if (type != QLatin1String("PNG")) { - d->mName.replace(QStringLiteral(".png"), QStringLiteral(".jpg")); + d->mName.replace(QLatin1String(".png"), QLatin1String(".jpg")); } - } else if (d->mName.endsWith(QStringLiteral(".jpg"))) { + } else if (d->mName.endsWith(QLatin1String(".jpg"))) { if (type != QLatin1String("JPG")) { - d->mName.replace(QStringLiteral(".jpg"), QStringLiteral(".png")); + d->mName.replace(QLatin1String(".jpg"), QLatin1String(".png")); } } else { if (type == QLatin1String("PNG")) { diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescaling.h kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescaling.h --- kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescaling.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescaling.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2017 Montel Laurent + Copyright (C) 2012-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescalingselectformat.cpp kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescalingselectformat.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescalingselectformat.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescalingselectformat.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Montel Laurent + Copyright (C) 2013-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescalingselectformat.h kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescalingselectformat.h --- kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescalingselectformat.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescalingselectformat.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Montel Laurent + Copyright (C) 2013-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescalingutils.cpp kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescalingutils.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescalingutils.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescalingutils.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Montel Laurent + Copyright (C) 2013-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -87,10 +87,10 @@ QString pattern = MessageComposer::MessageComposerSettings::self()->renameResizedImagesPattern(); if (!pattern.isEmpty()) { const QString filename = part->fileName(); - pattern.replace(QStringLiteral("%t"), QTime::currentTime().toString()); - pattern.replace(QStringLiteral("%d"), QDate::currentDate().toString()); - pattern.replace(QStringLiteral("%n"), filename); //Original name - pattern.replace(QStringLiteral("%e"), QFileInfo(filename).completeSuffix()); //Original extension + pattern.replace(QLatin1String("%t"), QTime::currentTime().toString()); + pattern.replace(QLatin1String("%d"), QDate::currentDate().toString()); + pattern.replace(QLatin1String("%n"), filename); //Original name + pattern.replace(QLatin1String("%e"), QFileInfo(filename).completeSuffix()); //Original extension const QString type = MessageComposer::MessageComposerSettings::self()->writeFormat(); QString newExtension; @@ -100,7 +100,7 @@ newExtension = QStringLiteral("png"); } if (!newExtension.isEmpty()) { - pattern.replace(QStringLiteral("%x"), newExtension); //new Extension + pattern.replace(QLatin1String("%x"), newExtension); //new Extension } //Need to define pattern type. diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescalingutils.h kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescalingutils.h --- kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescalingutils.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescalingutils.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Montel Laurent + Copyright (C) 2013-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescalingwidget.cpp kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescalingwidget.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescalingwidget.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescalingwidget.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2017 Montel Laurent + Copyright (C) 2012-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -21,10 +21,11 @@ #include "ui_imagescalingwidget.h" #include "settings/messagecomposersettings.h" -#include #include #include +#include +#include #include #include diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescalingwidget.h kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescalingwidget.h --- kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/imagescalingwidget.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/imagescalingwidget.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2017 Montel Laurent + Copyright (C) 2012-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/tests/imagescaling_gui.cpp kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/tests/imagescaling_gui.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/tests/imagescaling_gui.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/tests/imagescaling_gui.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Montel Laurent + Copyright (C) 2013-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/tests/imagescaling_gui.h kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/tests/imagescaling_gui.h --- kf5-messagelib-17.12.3/messagecomposer/src/imagescaling/tests/imagescaling_gui.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/imagescaling/tests/imagescaling_gui.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Montel Laurent + Copyright (C) 2013-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/aliasesexpandjob.h kf5-messagelib-18.04.3/messagecomposer/src/job/aliasesexpandjob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/aliasesexpandjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/aliasesexpandjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -54,7 +54,7 @@ /** * Destroys the aliases expand job. */ - ~AliasesExpandJob(); + ~AliasesExpandJob() override; /** * Starts the job. diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/attachmentfrompublickeyjob.h kf5-messagelib-18.04.3/messagecomposer/src/job/attachmentfrompublickeyjob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/attachmentfrompublickeyjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/attachmentfrompublickeyjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -35,7 +35,7 @@ public: explicit AttachmentFromPublicKeyJob(const QString &fingerprint, QObject *parent = nullptr); - virtual ~AttachmentFromPublicKeyJob(); + ~AttachmentFromPublicKeyJob() override; QString fingerprint() const; void setFingerprint(const QString &fingerprint); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/attachmentjob.cpp kf5-messagelib-18.04.3/messagecomposer/src/job/attachmentjob.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/job/attachmentjob.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/attachmentjob.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -42,34 +42,11 @@ { } - //QByteArray detectCharset( const QByteArray &data ); - AttachmentPart::Ptr part; Q_DECLARE_PUBLIC(AttachmentJob) }; -#if 0 -QByteArray AttachmentJobPrivate::detectCharset(const QByteArray &data) -{ - KEncodingProber prober; - prober.feed(data); - qCDebug(MESSAGECOMPOSER_LOG) << "Autodetected charset" << prober.encoding() << "with confidence" << prober.confidence(); - - // The prober detects binary attachments as UTF-16LE with confidence 99%, which - // obviously is wrong, so work around this here (most mail clients don't understand - // UTF-16LE). - const QByteArray detectedEncoding = prober.encoding(); - if (prober.confidence() > 0.6 && !detectedEncoding.toLower().contains("utf-16")) { - return detectedEncoding; - } else { - qCWarning(MESSAGECOMPOSER_LOG) << "Could not autodetect charset; using UTF-8."; - return QByteArrayLiteral("utf-8"); - } -} - -#endif - AttachmentJob::AttachmentJob(AttachmentPart::Ptr part, QObject *parent) : ContentJobBase(*new AttachmentJobPrivate(this), parent) { diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/attachmentjob.h kf5-messagelib-18.04.3/messagecomposer/src/job/attachmentjob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/attachmentjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/attachmentjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -36,7 +36,7 @@ public: explicit AttachmentJob(MessageCore::AttachmentPart::Ptr part, QObject *parent = nullptr); - virtual ~AttachmentJob(); + ~AttachmentJob() override; MessageCore::AttachmentPart::Ptr attachmentPart() const; void setAttachmentPart(MessageCore::AttachmentPart::Ptr part); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/attachmentvcardfromaddressbookjob.cpp kf5-messagelib-18.04.3/messagecomposer/src/job/attachmentvcardfromaddressbookjob.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/job/attachmentvcardfromaddressbookjob.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/attachmentvcardfromaddressbookjob.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Montel Laurent + Copyright (c) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/attachmentvcardfromaddressbookjob.h kf5-messagelib-18.04.3/messagecomposer/src/job/attachmentvcardfromaddressbookjob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/attachmentvcardfromaddressbookjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/attachmentvcardfromaddressbookjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Montel Laurent + Copyright (c) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as @@ -28,7 +28,7 @@ Q_OBJECT public: explicit AttachmentVcardFromAddressBookJob(const Akonadi::Item &item, QObject *parent = nullptr); - ~AttachmentVcardFromAddressBookJob(); + ~AttachmentVcardFromAddressBookJob() override; protected Q_SLOTS: void doStart() override; diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/contentjobbase.h kf5-messagelib-18.04.3/messagecomposer/src/job/contentjobbase.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/contentjobbase.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/contentjobbase.h 2018-07-06 05:43:41.000000000 +0000 @@ -38,7 +38,7 @@ public: explicit ContentJobBase(QObject *parent = nullptr); - virtual ~ContentJobBase(); + ~ContentJobBase() override; /** Starts processing this ContentJobBase asynchronously. diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/distributionlistexpandjob.h kf5-messagelib-18.04.3/messagecomposer/src/job/distributionlistexpandjob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/distributionlistexpandjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/distributionlistexpandjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -45,7 +45,7 @@ /** * Destroys the distribution list expand job. */ - ~DistributionListExpandJob(); + ~DistributionListExpandJob() override; /** * Starts the job. diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/emailaddressresolvejob.h kf5-messagelib-18.04.3/messagecomposer/src/job/emailaddressresolvejob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/emailaddressresolvejob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/emailaddressresolvejob.h 2018-07-06 05:43:41.000000000 +0000 @@ -52,7 +52,7 @@ /** * Destroys the email address resolve job. */ - ~EmailAddressResolveJob(); + ~EmailAddressResolveJob() override; /** * Starts the job. diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/encryptjob.cpp kf5-messagelib-18.04.3/messagecomposer/src/job/encryptjob.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/job/encryptjob.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/encryptjob.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -48,10 +48,10 @@ { } - KMime::Content *content = nullptr; + QStringList recipients; std::vector keys; Kleo::CryptoMessageFormat format; - QStringList recipients; + KMime::Content *content = nullptr; // copied from messagecomposer.cpp bool binaryHint(Kleo::CryptoMessageFormat f) diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/encryptjob.h kf5-messagelib-18.04.3/messagecomposer/src/job/encryptjob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/encryptjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/encryptjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -48,7 +48,7 @@ public: explicit EncryptJob(QObject *parent = nullptr); - virtual ~EncryptJob(); + ~EncryptJob() override; void setContent(KMime::Content *content); void setCryptoMessageFormat(Kleo::CryptoMessageFormat format); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/inserttextfilejob.h kf5-messagelib-18.04.3/messagecomposer/src/job/inserttextfilejob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/inserttextfilejob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/inserttextfilejob.h 2018-07-06 05:43:41.000000000 +0000 @@ -42,7 +42,7 @@ public: InsertTextFileJob(QTextEdit *editor, const QUrl &url); - ~InsertTextFileJob(); + ~InsertTextFileJob() override; void setEncoding(const QString &encoding); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/jobbase.h kf5-messagelib-18.04.3/messagecomposer/src/job/jobbase.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/jobbase.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/jobbase.h 2018-07-06 05:43:41.000000000 +0000 @@ -49,7 +49,7 @@ }; explicit JobBase(QObject *parent = nullptr); - virtual ~JobBase(); + ~JobBase() override; // asserts if no Composer parent GlobalPart *globalPart(); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/maintextjob.h kf5-messagelib-18.04.3/messagecomposer/src/job/maintextjob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/maintextjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/maintextjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -33,7 +33,7 @@ public: explicit MainTextJob(TextPart *textPart = nullptr, QObject *parent = nullptr); - virtual ~MainTextJob(); + ~MainTextJob() override; TextPart *textPart() const; void setTextPart(TextPart *part); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/multipartjob.h kf5-messagelib-18.04.3/messagecomposer/src/job/multipartjob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/multipartjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/multipartjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -34,7 +34,7 @@ public: explicit MultipartJob(QObject *parent = nullptr); - virtual ~MultipartJob(); + ~MultipartJob() override; QByteArray multipartSubtype() const; void setMultipartSubtype(const QByteArray &subtype); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/savecontactpreferencejob.cpp kf5-messagelib-18.04.3/messagecomposer/src/job/savecontactpreferencejob.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/job/savecontactpreferencejob.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/savecontactpreferencejob.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Montel Laurent + Copyright (C) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/savecontactpreferencejob.h kf5-messagelib-18.04.3/messagecomposer/src/job/savecontactpreferencejob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/savecontactpreferencejob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/savecontactpreferencejob.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Montel Laurent + Copyright (C) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/signencryptjob.cpp kf5-messagelib-18.04.3/messagecomposer/src/job/signencryptjob.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/job/signencryptjob.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/signencryptjob.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -49,12 +49,12 @@ { } - KMime::Content *content = nullptr; std::vector signers; - Kleo::CryptoMessageFormat format; std::vector encKeys; QStringList recipients; + Kleo::CryptoMessageFormat format; + KMime::Content *content = nullptr; // copied from messagecomposer.cpp bool binaryHint(Kleo::CryptoMessageFormat f) diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/signencryptjob.h kf5-messagelib-18.04.3/messagecomposer/src/job/signencryptjob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/signencryptjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/signencryptjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -48,7 +48,7 @@ public: explicit SignEncryptJob(QObject *parent = nullptr); - virtual ~SignEncryptJob(); + ~SignEncryptJob() override; void setContent(KMime::Content *content); void setCryptoMessageFormat(Kleo::CryptoMessageFormat format); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/signjob.h kf5-messagelib-18.04.3/messagecomposer/src/job/signjob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/signjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/signjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -46,7 +46,7 @@ public: explicit SignJob(QObject *parent = nullptr); - virtual ~SignJob(); + ~SignJob() override; void setContent(KMime::Content *content); void setCryptoMessageFormat(Kleo::CryptoMessageFormat format); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/singlepartjob.h kf5-messagelib-18.04.3/messagecomposer/src/job/singlepartjob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/singlepartjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/singlepartjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -44,7 +44,7 @@ public: explicit SinglepartJob(QObject *parent = nullptr); - virtual ~SinglepartJob(); + ~SinglepartJob() override; QByteArray data() const; void setData(const QByteArray &data); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/skeletonmessagejob.h kf5-messagelib-18.04.3/messagecomposer/src/job/skeletonmessagejob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/skeletonmessagejob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/skeletonmessagejob.h 2018-07-06 05:43:41.000000000 +0000 @@ -41,7 +41,7 @@ public: explicit SkeletonMessageJob(InfoPart *infoPart = nullptr, GlobalPart *globalPart = nullptr, QObject *parent = nullptr); - virtual ~SkeletonMessageJob(); + ~SkeletonMessageJob() override; InfoPart *infoPart() const; void setInfoPart(InfoPart *part); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/job/transparentjob.h kf5-messagelib-18.04.3/messagecomposer/src/job/transparentjob.h --- kf5-messagelib-17.12.3/messagecomposer/src/job/transparentjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/job/transparentjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -37,7 +37,7 @@ public: explicit TransparentJob(QObject *parent = nullptr); - virtual ~TransparentJob(); + ~TransparentJob() override; void setContent(KMime::Content *content); void process() override; diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/part/globalpart.h kf5-messagelib-18.04.3/messagecomposer/src/part/globalpart.h --- kf5-messagelib-17.12.3/messagecomposer/src/part/globalpart.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/part/globalpart.h 2018-07-06 05:43:41.000000000 +0000 @@ -32,7 +32,7 @@ public: explicit GlobalPart(QObject *parent = nullptr); - virtual ~GlobalPart(); + ~GlobalPart() override; // default true bool isGuiEnabled() const; diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/part/infopart.h kf5-messagelib-18.04.3/messagecomposer/src/part/infopart.h --- kf5-messagelib-17.12.3/messagecomposer/src/part/infopart.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/part/infopart.h 2018-07-06 05:43:41.000000000 +0000 @@ -33,7 +33,7 @@ public: explicit InfoPart(QObject *parent = nullptr); - virtual ~InfoPart(); + ~InfoPart() override; QString from() const; void setFrom(const QString &from); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/part/messagepart.h kf5-messagelib-18.04.3/messagecomposer/src/part/messagepart.h --- kf5-messagelib-17.12.3/messagecomposer/src/part/messagepart.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/part/messagepart.h 2018-07-06 05:43:41.000000000 +0000 @@ -37,7 +37,7 @@ public: explicit MessagePart(QObject *parent = nullptr); - virtual ~MessagePart(); + ~MessagePart() override; private: class Private; diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/part/textpart.h kf5-messagelib-18.04.3/messagecomposer/src/part/textpart.h --- kf5-messagelib-17.12.3/messagecomposer/src/part/textpart.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/part/textpart.h 2018-07-06 05:43:41.000000000 +0000 @@ -33,7 +33,7 @@ public: explicit TextPart(QObject *parent = nullptr); - virtual ~TextPart(); + ~TextPart() override; // default true bool isWordWrappingEnabled() const; diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/pluginactiontype.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/pluginactiontype.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/pluginactiontype.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/pluginactiontype.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,68 @@ +/* + Copyright (C) 2015-2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "pluginactiontype.h" + +using namespace MessageComposer; + +PluginActionType::PluginActionType() + : mAction(nullptr) + , mType(Tools) +{ +} + +PluginActionType::PluginActionType(QAction *action, PluginActionType::Type type) + : mAction(action) + , mType(type) +{ +} + +QAction *PluginActionType::action() const +{ + return mAction; +} + +PluginActionType::Type PluginActionType::type() const +{ + return mType; +} + + +QString PluginActionType::actionXmlExtension(PluginActionType::Type type) +{ + switch (type) { + case MessageComposer::PluginActionType::Tools: + return QStringLiteral("_plugins_tools"); + case MessageComposer::PluginActionType::Edit: + return QStringLiteral("_plugins_edit"); + case MessageComposer::PluginActionType::File: + return QStringLiteral("_plugins_file"); + case MessageComposer::PluginActionType::Action: + return QStringLiteral("_plugins_actions"); + case MessageComposer::PluginActionType::PopupMenu: + return QStringLiteral("_popupmenu_actions"); + case MessageComposer::PluginActionType::ToolBar: + return QStringLiteral("_toolbar_actions"); + case MessageComposer::PluginActionType::Options: + return QStringLiteral("_plugins_options"); + case MessageComposer::PluginActionType::None: + return QString(); + } + return {}; +} diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/pluginactiontype.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/pluginactiontype.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/pluginactiontype.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/pluginactiontype.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,54 @@ +/* + Copyright (C) 2015-2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef PLUGINACTIONTYPE_H +#define PLUGINACTIONTYPE_H + +#include "messagecomposer_export.h" +#include +class QAction; + +namespace MessageComposer { +class MESSAGECOMPOSER_EXPORT PluginActionType +{ +public: + enum Type { + Tools = 0, + Edit = 1, + File = 2, + Action = 3, + PopupMenu = 4, + ToolBar = 5, + Options = 6, + None = 7 + }; + PluginActionType(); + + PluginActionType(QAction *action, Type type); + QAction *action() const; + Type type() const; + + static QString actionXmlExtension(PluginActionType::Type type); +private: + QAction *mAction = nullptr; + Type mType; +}; +} + +#endif // PLUGINEDITORINTERFACE_H diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/plugineditor.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/plugineditor.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/plugineditor.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/plugineditor.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/plugineditor.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/plugineditor.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/plugineditor.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/plugineditor.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/plugineditorinterface.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/plugineditorinterface.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/plugineditorinterface.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/plugineditorinterface.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -21,28 +21,6 @@ using namespace MessageComposer; -ActionType::ActionType() - : mAction(nullptr) - , mType(Tools) -{ -} - -ActionType::ActionType(QAction *action, ActionType::Type type) - : mAction(action) - , mType(type) -{ -} - -QAction *ActionType::action() const -{ - return mAction; -} - -ActionType::Type ActionType::type() const -{ - return mType; -} - class MessageComposer::PluginEditorInterfacePrivate { public: @@ -50,10 +28,11 @@ { } - ActionType mActionType; + PluginActionType mActionType; QWidget *mParentWidget = nullptr; KPIMTextEdit::RichTextEditor *mRichTextEditor = nullptr; PluginEditor *plugin = nullptr; + bool mSelectedText = false; }; PluginEditorInterface::PluginEditorInterface(QObject *parent) @@ -67,12 +46,12 @@ delete d; } -void PluginEditorInterface::setActionType(ActionType type) +void PluginEditorInterface::setActionType(PluginActionType type) { d->mActionType = type; } -ActionType PluginEditorInterface::actionType() const +PluginActionType PluginEditorInterface::actionType() const { return d->mActionType; } @@ -87,25 +66,12 @@ d->mRichTextEditor = richTextEditor; } -QString PluginEditorInterface::actionXmlExtension(ActionType::Type type) +void PluginEditorInterface::setNeedSelectedText(bool b) { - switch (type) { - case MessageComposer::ActionType::Tools: - return QStringLiteral("_plugins_tools"); - case MessageComposer::ActionType::Edit: - return QStringLiteral("_plugins_edit"); - case MessageComposer::ActionType::File: - return QStringLiteral("_plugins_file"); - case MessageComposer::ActionType::Action: - return QStringLiteral("_plugins_actions"); - case MessageComposer::ActionType::PopupMenu: - return QStringLiteral("_popupmenu_actions"); - case MessageComposer::ActionType::ToolBar: - return QStringLiteral("_toolbar_actions"); - case MessageComposer::ActionType::Options: - return QStringLiteral("_plugins_options"); - case MessageComposer::ActionType::None: - return QString(); - } - return {}; + d->mSelectedText = b; +} + +bool PluginEditorInterface::needSelectedText() const +{ + return d->mSelectedText; } diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/plugineditorinterface.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/plugineditorinterface.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/plugineditorinterface.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/plugineditorinterface.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -22,6 +22,7 @@ #include #include +#include #include "messagecomposer_export.h" class QAction; @@ -30,30 +31,6 @@ } namespace MessageComposer { -class MESSAGECOMPOSER_EXPORT ActionType -{ -public: - enum Type { - Tools = 0, - Edit = 1, - File = 2, - Action = 3, - PopupMenu = 4, - ToolBar = 5, - Options = 6, - None = 7 - }; - ActionType(); - - ActionType(QAction *action, Type type); - QAction *action() const; - Type type() const; - -private: - QAction *mAction = nullptr; - Type mType; -}; - class PluginEditorInterfacePrivate; class PluginEditor; class MESSAGECOMPOSER_EXPORT PluginEditorInterface : public PimCommon::AbstractGenericPluginInterface @@ -63,13 +40,15 @@ explicit PluginEditorInterface(QObject *parent = nullptr); ~PluginEditorInterface(); - void setActionType(ActionType type); - ActionType actionType() const; + void setActionType(PluginActionType type); + PluginActionType actionType() const; KPIMTextEdit::RichTextEditor *richTextEditor() const; void setRichTextEditor(KPIMTextEdit::RichTextEditor *richTextEditor); - static QString actionXmlExtension(ActionType::Type type); + void setNeedSelectedText(bool b); + bool needSelectedText() const; + Q_SIGNALS: void emitPluginActivated(MessageComposer::PluginEditorInterface *interface); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/plugineditormanager.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/plugineditormanager.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/plugineditormanager.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/plugineditormanager.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -40,8 +40,8 @@ QString metaDataFileName; PimCommon::PluginUtilData pluginData; int order = 0; - PluginEditor *plugin = nullptr; bool isEnabled = true; + PluginEditor *plugin = nullptr; }; namespace { @@ -77,7 +77,7 @@ bool PluginEditorManagerPrivate::initializePlugins() { const QVector plugins = KPluginLoader::findPlugins(QStringLiteral("kmail"), [](const KPluginMetaData &md) { - return md.serviceTypes().contains(QStringLiteral("KMailEditor/Plugin")); + return md.serviceTypes().contains(QLatin1String("KMailEditor/Plugin")); }); const QPair pair = PimCommon::PluginUtil::loadPluginSetting(configGroupName(), configPrefixSettingKey()); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/plugineditormanager.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/plugineditormanager.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditor/plugineditormanager.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditor/plugineditormanager.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendconfigurewidget.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendconfigurewidget.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendconfigurewidget.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendconfigurewidget.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendconfigurewidget.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendconfigurewidget.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendconfigurewidget.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendconfigurewidget.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesend.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesend.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesend.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesend.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesend.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesend.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesend.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesend.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendinterface.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendinterface.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendinterface.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendinterface.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendinterface.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendinterface.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendinterface.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendinterface.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendmanager.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendmanager.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendmanager.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendmanager.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -35,9 +35,9 @@ { } + PimCommon::PluginUtilData pluginData; QString metaDataFileNameBaseName; QString metaDataFileName; - PimCommon::PluginUtilData pluginData; PluginEditorCheckBeforeSend *plugin = nullptr; bool isEnabled = true; }; @@ -89,7 +89,7 @@ bool PluginEditorCheckBeforeSendManagerPrivate::initializePlugins() { const QVector plugins = KPluginLoader::findPlugins(QStringLiteral("kmail"), [](const KPluginMetaData &md) { - return md.serviceTypes().contains(QStringLiteral("KMailEditor/PluginCheckBeforeSend")); + return md.serviceTypes().contains(QLatin1String("KMailEditor/PluginCheckBeforeSend")); }); const QPair pair = PimCommon::PluginUtil::loadPluginSetting(configGroupName(), configPrefixSettingKey()); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendmanager.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendmanager.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendmanager.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendmanager.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendparams.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendparams.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendparams.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendparams.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendparams.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendparams.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendparams.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorcheckbeforesend/plugineditorcheckbeforesendparams.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterbeforeconvertingdata.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterbeforeconvertingdata.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterbeforeconvertingdata.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterbeforeconvertingdata.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,45 @@ +/* + Copyright (C) 2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "plugineditorconverterbeforeconvertingdata.h" +using namespace MessageComposer; +PluginEditorConverterBeforeConvertingData::PluginEditorConverterBeforeConvertingData() +{ + +} + +bool PluginEditorConverterBeforeConvertingData::newMessage() const +{ + return mNewMessage; +} + +void PluginEditorConverterBeforeConvertingData::setNewMessage(bool newMessage) +{ + mNewMessage = newMessage; +} + +KMime::Message::Ptr PluginEditorConverterBeforeConvertingData::message() const +{ + return mMessage; +} + +void PluginEditorConverterBeforeConvertingData::setMessage(const KMime::Message::Ptr &message) +{ + mMessage = message; +} diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterbeforeconvertingdata.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterbeforeconvertingdata.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterbeforeconvertingdata.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterbeforeconvertingdata.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,43 @@ +/* + Copyright (C) 2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef PLUGINEDITORCONVERTERBEFORECONVERTINGDATA_H +#define PLUGINEDITORCONVERTERBEFORECONVERTINGDATA_H + +#include "messagecomposer_export.h" +#include +namespace MessageComposer { +class MESSAGECOMPOSER_EXPORT PluginEditorConverterBeforeConvertingData +{ +public: + PluginEditorConverterBeforeConvertingData(); + + bool newMessage() const; + void setNewMessage(bool newMessage); + + KMime::Message::Ptr message() const; + void setMessage(const KMime::Message::Ptr &message); + +private: + KMime::Message::Ptr mMessage; + bool mNewMessage = true; +}; +} + +#endif // PLUGINEDITORCONVERTERBEFORECONVERTINGDATA_H diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterinitialdata.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterinitialdata.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterinitialdata.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterinitialdata.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,47 @@ +/* + Copyright (C) 2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "plugineditorconverterinitialdata.h" + +using namespace MessageComposer; + +PluginEditorConverterInitialData::PluginEditorConverterInitialData() +{ + +} + +bool PluginEditorConverterInitialData::newMessage() const +{ + return mNewMessage; +} + +void PluginEditorConverterInitialData::setNewMessage(bool newMessage) +{ + mNewMessage = newMessage; +} + +KMime::Message::Ptr PluginEditorConverterInitialData::mewMsg() const +{ + return mMewMsg; +} + +void PluginEditorConverterInitialData::setMewMsg(const KMime::Message::Ptr &mewMsg) +{ + mMewMsg = mewMsg; +} diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterinitialdata.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterinitialdata.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterinitialdata.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverterinitialdata.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,42 @@ +/* + Copyright (C) 2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef PLUGINEDITORCONVERTERINITIALDATA_H +#define PLUGINEDITORCONVERTERINITIALDATA_H + +#include "messagecomposer_export.h" +#include +namespace MessageComposer { +class MESSAGECOMPOSER_EXPORT PluginEditorConverterInitialData +{ +public: + PluginEditorConverterInitialData(); + + bool newMessage() const; + void setNewMessage(bool newMessage); + + KMime::Message::Ptr mewMsg() const; + void setMewMsg(const KMime::Message::Ptr &mewMsg); + +private: + KMime::Message::Ptr mMewMsg; + bool mNewMessage = true; +}; +} +#endif // PLUGINEDITORCONVERTERINITIALDATA_H diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextconfigurewidget.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextconfigurewidget.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextconfigurewidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextconfigurewidget.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,36 @@ +/* + Copyright (C) 2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "plugineditorconverttextconfigurewidget.h" + +using namespace MessageComposer; + +PluginEditorConvertTextConfigureWidget::PluginEditorConvertTextConfigureWidget(QWidget *parent) + : QWidget(parent) +{ +} + +PluginEditorConvertTextConfigureWidget::~PluginEditorConvertTextConfigureWidget() +{ +} + +QString PluginEditorConvertTextConfigureWidget::helpAnchor() const +{ + return QString(); +} diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextconfigurewidget.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextconfigurewidget.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextconfigurewidget.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextconfigurewidget.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,42 @@ +/* + Copyright (C) 2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef PluginEditorConvertTextConfigureWidget_H +#define PluginEditorConvertTextConfigureWidget_H + +#include "messagecomposer_export.h" +#include + +namespace MessageComposer { +class MESSAGECOMPOSER_EXPORT PluginEditorConvertTextConfigureWidget : public QWidget +{ + Q_OBJECT +public: + explicit PluginEditorConvertTextConfigureWidget(QWidget *parent = nullptr); + ~PluginEditorConvertTextConfigureWidget(); + + virtual void loadSettings() = 0; + virtual void saveSettings() = 0; + virtual void resetSettings() = 0; + virtual QString helpAnchor() const; +Q_SIGNALS: + void configureChanged(); +}; +} +#endif // PluginEditorConvertTextConfigureWidget_H diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttext.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttext.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttext.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttext.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,73 @@ +/* + Copyright (C) 2017-2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "plugineditorconverttext.h" + +using namespace MessageComposer; + +class MessageComposer::PluginEditorConverttextPrivate +{ +public: + PluginEditorConverttextPrivate() + { + } + + bool mIsEnabled = false; +}; + +PluginEditorConvertText::PluginEditorConvertText(QObject *parent) + : QObject(parent) + , d(new MessageComposer::PluginEditorConverttextPrivate) +{ +} + +PluginEditorConvertText::~PluginEditorConvertText() +{ + delete d; +} + +bool PluginEditorConvertText::hasConfigureDialog() const +{ + return false; +} + +void PluginEditorConvertText::showConfigureDialog(QWidget *parent) +{ + Q_UNUSED(parent); +} + +void PluginEditorConvertText::emitConfigChanged() +{ + Q_EMIT configChanged(); +} + +QString PluginEditorConvertText::description() const +{ + return {}; +} + +void PluginEditorConvertText::setIsEnabled(bool enabled) +{ + d->mIsEnabled = enabled; +} + +bool PluginEditorConvertText::isEnabled() const +{ + return d->mIsEnabled; +} diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttext.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttext.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttext.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttext.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,57 @@ +/* + Copyright (C) 2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef PLUGINEDITORCONVERTTEXT_H +#define PLUGINEDITORCONVERTTEXT_H + +#include +#include "messagecomposer_export.h" +class KActionCollection; +namespace MessageComposer { +class PluginEditorConverttextPrivate; +class PluginEditorConvertTextInterface; + +class MESSAGECOMPOSER_EXPORT PluginEditorConvertText : public QObject +{ + Q_OBJECT +public: + explicit PluginEditorConvertText(QObject *parent = nullptr); + ~PluginEditorConvertText(); + + virtual PluginEditorConvertTextInterface *createInterface(KActionCollection *ac, QObject *parent) = 0; + + virtual bool hasConfigureDialog() const; + + virtual void showConfigureDialog(QWidget *parent = nullptr); + + void emitConfigChanged(); + + virtual QString description() const; + + void setIsEnabled(bool enabled); + bool isEnabled() const; + +Q_SIGNALS: + void configChanged(); + +private: + PluginEditorConverttextPrivate *const d; +}; +} +#endif // PLUGINEDITORCONVERTTEXT_H diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextinterface.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextinterface.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextinterface.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextinterface.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,118 @@ +/* + Copyright (C) 2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "plugineditorconverttextinterface.h" +#include "plugineditorconverterinitialdata.h" +#include "plugineditorconverterbeforeconvertingdata.h" + +#include + +using namespace MessageComposer; + +class MessageComposer::PluginEditorConvertTextInterfacePrivate +{ +public: + PluginEditorConvertTextInterfacePrivate() + : mParentWidget(nullptr) + , mEditor(nullptr) + { + } + PluginActionType mActionType; + + QWidget *mParentWidget = nullptr; + KPIMTextEdit::RichTextComposer *mEditor = nullptr; + PluginEditorConverterInitialData mInitialData; + PluginEditorConverterBeforeConvertingData mBeforeConvertingData; +}; + +PluginEditorConvertTextInterface::PluginEditorConvertTextInterface(QObject *parent) + : QObject(parent) + , d(new MessageComposer::PluginEditorConvertTextInterfacePrivate) +{ +} + +PluginEditorConvertTextInterface::~PluginEditorConvertTextInterface() +{ + delete d; +} + +bool PluginEditorConvertTextInterface::reformatText() +{ + return false; +} + +void PluginEditorConvertTextInterface::setParentWidget(QWidget *parent) +{ + d->mParentWidget = parent; +} + +QWidget *PluginEditorConvertTextInterface::parentWidget() const +{ + return d->mParentWidget; +} + +void PluginEditorConvertTextInterface::setActionType(PluginActionType type) +{ + d->mActionType = type; +} + +PluginActionType PluginEditorConvertTextInterface::actionType() const +{ + return d->mActionType; +} + +void PluginEditorConvertTextInterface::createAction(KActionCollection *ac) +{ + Q_UNUSED(ac); +} + +void PluginEditorConvertTextInterface::setInitialData(const PluginEditorConverterInitialData &data) +{ + d->mInitialData = data; +} + +PluginEditorConverterInitialData PluginEditorConvertTextInterface::initialData() const +{ + return d->mInitialData; +} + +void PluginEditorConvertTextInterface::setBeforeConvertingData(const PluginEditorConverterBeforeConvertingData &data) +{ + d->mBeforeConvertingData = data; +} + +PluginEditorConverterBeforeConvertingData PluginEditorConvertTextInterface::beforeConvertingData() const +{ + return d->mBeforeConvertingData; +} + +KPIMTextEdit::RichTextComposer *PluginEditorConvertTextInterface::richTextEditor() const +{ + return d->mEditor; +} + +void PluginEditorConvertTextInterface::setRichTextEditor(KPIMTextEdit::RichTextComposer *richTextEditor) +{ + d->mEditor = richTextEditor; +} + +void PluginEditorConvertTextInterface::reloadConfig() +{ + //Reimplement it +} diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextinterface.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextinterface.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextinterface.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextinterface.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,77 @@ +/* + Copyright (C) 2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef PLUGINEDITORCONVERTTEXTINTERFACE_H +#define PLUGINEDITORCONVERTTEXTINTERFACE_H + +#include +#include "messagecomposer_export.h" +#include +#include + + +namespace KPIMTextEdit { +class RichTextComposer; +} +class KActionCollection; +namespace MessageComposer { +class TextPart; +class PluginEditorConvertTextInterfacePrivate; +class PluginEditorConverterInitialData; +class PluginEditorConverterBeforeConvertingData; +class MESSAGECOMPOSER_EXPORT PluginEditorConvertTextInterface : public QObject +{ + Q_OBJECT +public: + explicit PluginEditorConvertTextInterface(QObject *parent = nullptr); + ~PluginEditorConvertTextInterface(); + + virtual bool reformatText(); + + virtual bool convertTextToFormat(MessageComposer::TextPart *textPart) = 0; + + void setParentWidget(QWidget *parent); + QWidget *parentWidget() const; + + KPIMTextEdit::RichTextComposer *richTextEditor() const; + void setRichTextEditor(KPIMTextEdit::RichTextComposer *richTextEditor); + + void setActionType(PluginActionType type); + PluginActionType actionType() const; + + virtual void createAction(KActionCollection *ac); + + virtual void setInitialData(const PluginEditorConverterInitialData &data); + PluginEditorConverterInitialData initialData() const; + + virtual void setBeforeConvertingData(const PluginEditorConverterBeforeConvertingData &data); + PluginEditorConverterBeforeConvertingData beforeConvertingData() const; + +public Q_SLOTS: + virtual void reloadConfig(); + +Q_SIGNALS: + void textReformated(); + +private: + PluginEditorConvertTextInterfacePrivate *const d; +}; +} + +#endif // PLUGINEDITORCONVERTTEXTINTERFACE_H diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextmanager.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextmanager.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextmanager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextmanager.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,204 @@ +/* + Copyright (C) 2017-2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "plugineditorconverttextmanager.h" +#include "plugineditorconverttext.h" +#include "messagecomposer_debug.h" +#include +#include +#include +#include +#include + +using namespace MessageComposer; + +class PluginEditorConvertTextInfo +{ +public: + PluginEditorConvertTextInfo() + { + } + + QString metaDataFileNameBaseName; + QString metaDataFileName; + PimCommon::PluginUtilData pluginData; + PluginEditorConvertText *plugin = nullptr; + bool isEnabled = true; +}; + +namespace { +QString pluginVersion() +{ + return QStringLiteral("1.0"); +} +} + +class MessageComposer::PluginEditorConvertTextManagerPrivate +{ +public: + PluginEditorConvertTextManagerPrivate(PluginEditorConvertTextManager *qq) + : q(qq) + { + initializePlugins(); + } + + void loadPlugin(PluginEditorConvertTextInfo *item); + QVector pluginsList() const; + bool initializePlugins(); + QVector mPluginList; + QString configPrefixSettingKey() const; + QString configGroupName() const; + QVector pluginsDataList() const; + PluginEditorConvertText *pluginFromIdentifier(const QString &id); +private: + QVector mPluginDataList; + PluginEditorConvertTextManager *q; +}; + +QString PluginEditorConvertTextManagerPrivate::configGroupName() const +{ + return QStringLiteral("KMailPluginEditorConvertText"); +} + +QString PluginEditorConvertTextManagerPrivate::configPrefixSettingKey() const +{ + return QStringLiteral("PluginEditorConvertText"); +} + +QVector PluginEditorConvertTextManagerPrivate::pluginsDataList() const +{ + return mPluginDataList; +} + +bool PluginEditorConvertTextManagerPrivate::initializePlugins() +{ + const QVector plugins = KPluginLoader::findPlugins(QStringLiteral("kmail"), [](const KPluginMetaData &md) { + return md.serviceTypes().contains(QLatin1String("KMailEditor/PluginEditorConvertText")); + }); + + const QPair pair = PimCommon::PluginUtil::loadPluginSetting(configGroupName(), configPrefixSettingKey()); + + QVectorIterator i(plugins); + i.toBack(); + QSet unique; + while (i.hasPrevious()) { + PluginEditorConvertTextInfo info; + const KPluginMetaData data = i.previous(); + + //1) get plugin data => name/description etc. + info.pluginData = PimCommon::PluginUtil::createPluginMetaData(data); + //2) look at if plugin is activated + const bool isPluginActivated = PimCommon::PluginUtil::isPluginActivated(pair.first, pair.second, info.pluginData.mEnableByDefault, info.pluginData.mIdentifier); + info.isEnabled = isPluginActivated; + info.metaDataFileNameBaseName = QFileInfo(data.fileName()).baseName(); + info.metaDataFileName = data.fileName(); + if (pluginVersion() == data.version()) { + // only load plugins once, even if found multiple times! + if (unique.contains(info.metaDataFileNameBaseName)) { + continue; + } + info.plugin = nullptr; + mPluginList.push_back(info); + unique.insert(info.metaDataFileNameBaseName); + } else { + qCWarning(MESSAGECOMPOSER_LOG) << "Plugin " << data.name() << " doesn't have correction plugin version. It will not be loaded."; + } + } + QVector::iterator end(mPluginList.end()); + for (QVector::iterator it = mPluginList.begin(); it != end; ++it) { + loadPlugin(&(*it)); + } + return true; +} + +void PluginEditorConvertTextManagerPrivate::loadPlugin(PluginEditorConvertTextInfo *item) +{ + KPluginLoader pluginLoader(item->metaDataFileName); + if (pluginLoader.factory()) { + item->plugin = pluginLoader.factory()->create(q, QVariantList() << item->metaDataFileNameBaseName); + item->plugin->setIsEnabled(item->isEnabled); + item->pluginData.mHasConfigureDialog = item->plugin->hasConfigureDialog(); + mPluginDataList.append(item->pluginData); + } +} + +QVector PluginEditorConvertTextManagerPrivate::pluginsList() const +{ + QVector lst; + QVector::ConstIterator end(mPluginList.constEnd()); + for (QVector::ConstIterator it = mPluginList.constBegin(); it != end; ++it) { + if (auto plugin = (*it).plugin) { + lst << plugin; + } + } + return lst; +} + +PluginEditorConvertText *PluginEditorConvertTextManagerPrivate::pluginFromIdentifier(const QString &id) +{ + QVector::ConstIterator end(mPluginList.constEnd()); + for (QVector::ConstIterator it = mPluginList.constBegin(); it != end; ++it) { + if ((*it).pluginData.mIdentifier == id) { + return (*it).plugin; + } + } + return {}; +} + +PluginEditorConvertTextManager::PluginEditorConvertTextManager(QObject *parent) + : QObject(parent) + , d(new MessageComposer::PluginEditorConvertTextManagerPrivate(this)) +{ +} + +PluginEditorConvertTextManager::~PluginEditorConvertTextManager() +{ + delete d; +} + +PluginEditorConvertTextManager *PluginEditorConvertTextManager::self() +{ + static PluginEditorConvertTextManager s_self; + return &s_self; +} + +QVector PluginEditorConvertTextManager::pluginsList() const +{ + return d->pluginsList(); +} + +QString PluginEditorConvertTextManager::configGroupName() const +{ + return d->configGroupName(); +} + +QString PluginEditorConvertTextManager::configPrefixSettingKey() const +{ + return d->configPrefixSettingKey(); +} + +QVector PluginEditorConvertTextManager::pluginsDataList() const +{ + return d->pluginsDataList(); +} + +PluginEditorConvertText *PluginEditorConvertTextManager::pluginFromIdentifier(const QString &id) +{ + return d->pluginFromIdentifier(id); +} diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextmanager.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextmanager.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextmanager.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorconverttext/plugineditorconverttextmanager.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,48 @@ +/* + Copyright (C) 2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef PLUGINEDITORCONVERTTEXTMANAGER_H +#define PLUGINEDITORCONVERTTEXTMANAGER_H + +#include +#include "messagecomposer_export.h" +#include +namespace MessageComposer { +class PluginEditorConvertTextManagerPrivate; +class PluginEditorConvertText; +class MESSAGECOMPOSER_EXPORT PluginEditorConvertTextManager : public QObject +{ + Q_OBJECT +public: + explicit PluginEditorConvertTextManager(QObject *parent = nullptr); + ~PluginEditorConvertTextManager(); + + static PluginEditorConvertTextManager *self(); + + QVector pluginsList() const; + + QString configGroupName() const; + QString configPrefixSettingKey() const; + QVector pluginsDataList() const; + PluginEditorConvertText *pluginFromIdentifier(const QString &id); +private: + PluginEditorConvertTextManagerPrivate *const d; +}; +} +#endif // PLUGINEDITORCONVERTTEXTMANAGER_H diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinitconfigurewidget.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinitconfigurewidget.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinitconfigurewidget.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinitconfigurewidget.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinitconfigurewidget.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinitconfigurewidget.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinitconfigurewidget.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinitconfigurewidget.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinit.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinit.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinit.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinit.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinit.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinit.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinit.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinit.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinitinterface.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinitinterface.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinitinterface.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinitinterface.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinitinterface.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinitinterface.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinitinterface.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinitinterface.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinitmanager.cpp kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinitmanager.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinitmanager.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinitmanager.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -89,7 +89,7 @@ bool PluginEditorInitManagerPrivate::initializePlugins() { const QVector plugins = KPluginLoader::findPlugins(QStringLiteral("kmail"), [](const KPluginMetaData &md) { - return md.serviceTypes().contains(QStringLiteral("KMailEditor/PluginEditorInit")); + return md.serviceTypes().contains(QLatin1String("KMailEditor/PluginEditorInit")); }); const QPair pair = PimCommon::PluginUtil::loadPluginSetting(configGroupName(), configPrefixSettingKey()); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinitmanager.h kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinitmanager.h --- kf5-messagelib-17.12.3/messagecomposer/src/plugineditorinit/plugineditorinitmanager.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/plugineditorinit/plugineditorinitmanager.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/recipient/recipient.h kf5-messagelib-18.04.3/messagecomposer/src/recipient/recipient.h --- kf5-messagelib-17.12.3/messagecomposer/src/recipient/recipient.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/recipient/recipient.h 2018-07-06 05:43:41.000000000 +0000 @@ -48,7 +48,7 @@ }; Recipient(const QString &email = QString(), Type type = To); //krazy:exclude=explicit - ~Recipient(); + ~Recipient() override; void setType(Type type); Type type() const; diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/recipient/recipientline.cpp kf5-messagelib-18.04.3/messagecomposer/src/recipient/recipientline.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/recipient/recipientline.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/recipient/recipientline.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -132,9 +132,7 @@ void RecipientLineNG::analyzeLine(const QString &text) { const QStringList r = KEmailAddress::splitAddressList(text); - if (r.count() != mRecipientsCount) { - mRecipientsCount = r.count(); - } + mRecipientsCount = r.count(); mModified = true; Q_EMIT countChanged(); } diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/recipient/recipientseditormanager.cpp kf5-messagelib-18.04.3/messagecomposer/src/recipient/recipientseditormanager.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/recipient/recipientseditormanager.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/recipient/recipientseditormanager.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/recipient/recipientseditormanager.h kf5-messagelib-18.04.3/messagecomposer/src/recipient/recipientseditormanager.h --- kf5-messagelib-17.12.3/messagecomposer/src/recipient/recipientseditormanager.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/recipient/recipientseditormanager.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/recipient/recipientspicker.h kf5-messagelib-18.04.3/messagecomposer/src/recipient/recipientspicker.h --- kf5-messagelib-17.12.3/messagecomposer/src/recipient/recipientspicker.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/recipient/recipientspicker.h 2018-07-06 05:43:41.000000000 +0000 @@ -40,7 +40,7 @@ public: explicit RecipientsPicker(QWidget *parent); - ~RecipientsPicker(); + ~RecipientsPicker() override; void setRecipients(const Recipient::List &); diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/recipient/recipientspickerwidget.cpp kf5-messagelib-18.04.3/messagecomposer/src/recipient/recipientspickerwidget.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/recipient/recipientspickerwidget.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/recipient/recipientspickerwidget.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/recipient/recipientspickerwidget.h kf5-messagelib-18.04.3/messagecomposer/src/recipient/recipientspickerwidget.h --- kf5-messagelib-17.12.3/messagecomposer/src/recipient/recipientspickerwidget.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/recipient/recipientspickerwidget.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/sender/akonadisender.h kf5-messagelib-18.04.3/messagecomposer/src/sender/akonadisender.h --- kf5-messagelib-17.12.3/messagecomposer/src/sender/akonadisender.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/sender/akonadisender.h 2018-07-06 05:43:41.000000000 +0000 @@ -36,7 +36,7 @@ public: explicit AkonadiSender(QObject *parent = nullptr); - ~AkonadiSender(); + ~AkonadiSender() override; protected: /** diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/sender/messagesender.h kf5-messagelib-18.04.3/messagecomposer/src/sender/messagesender.h --- kf5-messagelib-17.12.3/messagecomposer/src/sender/messagesender.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/sender/messagesender.h 2018-07-06 05:43:41.000000000 +0000 @@ -30,8 +30,8 @@ your version. */ -#ifndef __KMAIL_MESSAGESENDER_H__ -#define __KMAIL_MESSAGESENDER_H__ +#ifndef KMAIL_MESSAGESENDER_H +#define KMAIL_MESSAGESENDER_H #include namespace MessageComposer { @@ -93,4 +93,4 @@ } } -#endif /* __KMAIL_MESSAGESENDER_H__ */ +#endif /* __KMAIL_MESSAGESENDER_H */ diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/settings/messagecomposersettings.h kf5-messagelib-18.04.3/messagecomposer/src/settings/messagecomposersettings.h --- kf5-messagelib-17.12.3/messagecomposer/src/settings/messagecomposersettings.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/settings/messagecomposersettings.h 2018-07-06 05:43:41.000000000 +0000 @@ -48,7 +48,7 @@ private: MessageComposerSettings(); - virtual ~MessageComposerSettings(); + ~MessageComposerSettings() override; static MessageComposerSettings *mSelf; QTimer *mConfigSyncTimer = nullptr; diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/utils/kleo_util.h kf5-messagelib-18.04.3/messagecomposer/src/utils/kleo_util.h --- kf5-messagelib-17.12.3/messagecomposer/src/utils/kleo_util.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/utils/kleo_util.h 2018-07-06 05:43:41.000000000 +0000 @@ -29,8 +29,8 @@ your version. */ -#ifndef __KDEPIM_KMAIL_KLEO_UTIL_H__ -#define __KDEPIM_KMAIL_KLEO_UTIL_H__ +#ifndef KDEPIM_KMAIL_KLEO_UTIL_H +#define KDEPIM_KMAIL_KLEO_UTIL_H #include "libkleo/enum.h" @@ -92,4 +92,4 @@ return f & (Kleo::OpenPGPMIMEFormat | Kleo::InlineOpenPGPFormat); } -#endif // __KDEPIM_KMAIL_KLEO_UTIL_H__ +#endif // KDEPIM_KMAIL_KLEO_UTIL_H diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/widgets/dictionarycombobox.cpp kf5-messagelib-18.04.3/messagecomposer/src/widgets/dictionarycombobox.cpp --- kf5-messagelib-17.12.3/messagecomposer/src/widgets/dictionarycombobox.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/widgets/dictionarycombobox.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2003 Ingo Kloecker + * Copyright (c) 2008 Tom Albers + * Copyright (C) 2017-2018 Laurent Montel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA +*/ + +#include "dictionarycombobox.h" +#include +#include "messagecomposer_debug.h" +#include + +using namespace MessageComposer; + +//@cond PRIVATE +class MessageComposer::DictionaryComboBoxPrivate +{ +public: + explicit DictionaryComboBoxPrivate(DictionaryComboBox *combo) : q(combo) {} + DictionaryComboBox *q; + void slotDictionaryChanged(int idx); +}; + +void DictionaryComboBoxPrivate::slotDictionaryChanged(int idx) +{ + Q_EMIT q->dictionaryChanged(q->itemData(idx).toString()); + Q_EMIT q->dictionaryNameChanged(q->itemText(idx)); +} +//@endcon + +DictionaryComboBox::DictionaryComboBox(QWidget *parent) + : QComboBox(parent), d(new DictionaryComboBoxPrivate(this)) +{ + reloadCombo(); + connect(this, QOverload::of(&QComboBox::activated), + this, [this](int item) {d->slotDictionaryChanged(item);} ); +} + +DictionaryComboBox::~DictionaryComboBox() +{ + delete d; +} + +QString DictionaryComboBox::currentDictionaryName() const +{ + return currentText(); +} + +QString DictionaryComboBox::currentDictionary() const +{ + return itemData(currentIndex()).toString(); +} + +bool DictionaryComboBox::assignDictionnaryName(const QString &name) +{ + if (name.isEmpty() || name == currentText()) { + return false; + } + + int idx = findText(name); + if (idx == -1) { + qCDebug(MESSAGECOMPOSER_LOG) << "name not found" << name; + return false; + } + + setCurrentIndex(idx); + d->slotDictionaryChanged(idx); + return true; +} + +void DictionaryComboBox::setCurrentByDictionaryName(const QString &name) +{ + assignDictionnaryName(name); + if (name != autoDeleteString()) { + //TODO + } +} + +bool DictionaryComboBox::assignByDictionnary(const QString &dictionary) +{ + if (dictionary.isEmpty()) { + return false; + } + if (dictionary == itemData(currentIndex()).toString()) { + return true; + } + + int idx = findData(dictionary); + if (idx == -1) { + qCDebug(MESSAGECOMPOSER_LOG) << "dictionary not found" << dictionary; + return false; + } + + setCurrentIndex(idx); + d->slotDictionaryChanged(idx); + return true; +} + +void DictionaryComboBox::setCurrentByDictionary(const QString &dictionary) +{ + assignByDictionnary(dictionary); +} + +void DictionaryComboBox::reloadCombo() +{ + clear(); +#if 0 //Temporary comment it. + addItem(i18n("AutoDetect Language"), autoDeleteString()); +#endif + Sonnet::Speller *speller = new Sonnet::Speller(); + QMap dictionaries = speller->availableDictionaries(); + QMapIterator i(dictionaries); + while (i.hasNext()) { + i.next(); + addItem(i.key(), i.value()); + } + delete speller; +} + +QString DictionaryComboBox::autoDeleteString() const +{ + return QStringLiteral("autodetect"); +} + +#include "moc_dictionarycombobox.cpp" diff -Nru kf5-messagelib-17.12.3/messagecomposer/src/widgets/dictionarycombobox.h kf5-messagelib-18.04.3/messagecomposer/src/widgets/dictionarycombobox.h --- kf5-messagelib-17.12.3/messagecomposer/src/widgets/dictionarycombobox.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/src/widgets/dictionarycombobox.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2003 Ingo Kloecker + * Copyright (c) 2008 Tom Albers + * Copyright (C) 2017-2018 Laurent Montel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA +*/ + +#ifndef SONNET_DICTIONARYCOMBOBOX_H +#define SONNET_DICTIONARYCOMBOBOX_H + +#include "messagecomposer_export.h" + +#include + +namespace MessageComposer +{ +class DictionaryComboBoxPrivate; +/** + * @short A combo box for selecting the dictionary used for spell checking. + * @author Ingo Kloecker + * @author Tom Albers + * @since 4.2 + **/ + +class MESSAGECOMPOSER_EXPORT DictionaryComboBox : public QComboBox +{ + Q_OBJECT +public: + + /** + * Constructor + */ + explicit DictionaryComboBox(QWidget *parent = nullptr); + + /** + * Destructor + */ + ~DictionaryComboBox(); + + /** + * Clears the widget and reloads the dictionaries from Sonnet. + * Remember to set the dictionary you want selected after calling this function. + */ + void reloadCombo(); + + /** + * Returns the current dictionary name, for example "German (Switzerland)" + */ + QString currentDictionaryName() const; + + /** + * Returns the current dictionary, for example "de_CH" + */ + QString currentDictionary() const; + + /** + * Sets the current dictionaryName to the given dictionaryName + */ + void setCurrentByDictionaryName(const QString &dictionaryName); + + /** + * Sets the current dictionary to the given dictionary + * Return true if dictionnary was found. + * @since 5.40 + * TODO merge with previous method in kf6 + */ + bool assignByDictionnary(const QString &dictionary); + + /** + * Sets the current dictionaryName to the given dictionaryName + * Return true if dictionnary was found. + * @since 5.40 + * TODO merge with previous method in kf6 + */ + bool assignDictionnaryName(const QString &name); + + /** + * Sets the current dictionary to the given dictionary. + */ + void setCurrentByDictionary(const QString &dictionary); + + + QString autoDeleteString() const; + +Q_SIGNALS: + /** + * @em Emitted whenever the current dictionary changes. Either + * by user intervention or on setCurrentByDictionaryName() or on + * setCurrentByDictionary(). For example "de_CH". + */ + void dictionaryChanged(const QString &dictionary); + + /** + * @em Emitted whenever the current dictionary changes. Either + * by user intervention or on setCurrentByDictionaryName() or on + * setCurrentByDictionary(). For example "German (Switzerland)". + */ + void dictionaryNameChanged(const QString &dictionaryName); + +private: + DictionaryComboBoxPrivate *const d; +}; + +} + +#endif diff -Nru kf5-messagelib-17.12.3/messagecomposer/tests/testcomposerlineedit.cpp kf5-messagelib-18.04.3/messagecomposer/tests/testcomposerlineedit.cpp --- kf5-messagelib-17.12.3/messagecomposer/tests/testcomposerlineedit.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecomposer/tests/testcomposerlineedit.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Montel Laurent + Copyright (c) 2015-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messagecore/autotests/attachmentupdatejobtest.cpp kf5-messagelib-18.04.3/messagecore/autotests/attachmentupdatejobtest.cpp --- kf5-messagelib-17.12.3/messagecore/autotests/attachmentupdatejobtest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/autotests/attachmentupdatejobtest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messagecore/autotests/attachmentupdatejobtest.h kf5-messagelib-18.04.3/messagecore/autotests/attachmentupdatejobtest.h --- kf5-messagelib-17.12.3/messagecore/autotests/attachmentupdatejobtest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/autotests/attachmentupdatejobtest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messagecore/autotests/mailinglisttest.cpp kf5-messagelib-18.04.3/messagecore/autotests/mailinglisttest.cpp --- kf5-messagelib-17.12.3/messagecore/autotests/mailinglisttest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/autotests/mailinglisttest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messagecore/autotests/mailinglisttest.h kf5-messagelib-18.04.3/messagecore/autotests/mailinglisttest.h --- kf5-messagelib-17.12.3/messagecore/autotests/mailinglisttest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/autotests/mailinglisttest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentcompressjob.h kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentcompressjob.h --- kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentcompressjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentcompressjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -48,7 +48,7 @@ /** * Destroys the attachment compress job. */ - virtual ~AttachmentCompressJob(); + ~AttachmentCompressJob() override; /** * Starts the attachment compress job. diff -Nru kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentfromfolderjob.h kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentfromfolderjob.h --- kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentfromfolderjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentfromfolderjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -43,7 +43,7 @@ * Destroys the job. */ - ~AttachmentFromFolderJob(); + ~AttachmentFromFolderJob() override; /** * Sets the @p compression method, either KZip::Deflate or KZip::NoCompression. diff -Nru kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentfrommimecontentjob.h kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentfrommimecontentjob.h --- kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentfrommimecontentjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentfrommimecontentjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -50,7 +50,7 @@ /** * Destroys the job. */ - ~AttachmentFromMimeContentJob(); + ~AttachmentFromMimeContentJob() override; /** * Sets the mime @p content to load the attachment from. diff -Nru kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentfromurlbasejob.h kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentfromurlbasejob.h --- kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentfromurlbasejob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentfromurlbasejob.h 2018-07-06 05:43:41.000000000 +0000 @@ -32,7 +32,7 @@ public: explicit AttachmentFromUrlBaseJob(const QUrl &url = QUrl(), QObject *parent = nullptr); - virtual ~AttachmentFromUrlBaseJob(); + ~AttachmentFromUrlBaseJob() override; /** * Returns the url that will be loaded as attachment. diff -Nru kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentfromurljob.h kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentfromurljob.h --- kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentfromurljob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentfromurljob.h 2018-07-06 05:43:41.000000000 +0000 @@ -46,7 +46,7 @@ /** * Destroys the job. */ - ~AttachmentFromUrlJob(); + ~AttachmentFromUrlJob() override; protected Q_SLOTS: void doStart() override; diff -Nru kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentfromurlutils.cpp kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentfromurlutils.cpp --- kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentfromurlutils.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentfromurlutils.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Laurent Montel + Copyright (C) 2014-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentfromurlutils.h kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentfromurlutils.h --- kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentfromurlutils.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentfromurlutils.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Laurent Montel + Copyright (C) 2014-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentloadjob.h kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentloadjob.h --- kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentloadjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentloadjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -47,7 +47,7 @@ /** * Destroys the attachment load job. */ - virtual ~AttachmentLoadJob(); + ~AttachmentLoadJob() override; /** * Starts the attachment load job. diff -Nru kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentpropertiesdialog.cpp kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentpropertiesdialog.cpp --- kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentpropertiesdialog.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentpropertiesdialog.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -112,8 +112,8 @@ } else { // Update the icon when the selected mime type changes. - connect(ui->mimeType, SIGNAL(currentIndexChanged(QString)), - q, SLOT(mimeTypeChanged(QString))); + connect(ui->mimeType, QOverload::of(&QComboBox::currentIndexChanged), + q, [this](const QString &str) { mimeTypeChanged(str); }); populateMimeTypes(); populateEncodings(); buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Help, q); @@ -199,11 +199,9 @@ "message.

"); if (mReadOnly) { - uiReadOnly->mimeType->setWhatsThis(msgMimeType); uiReadOnly->size->setWhatsThis(msgSize); uiReadOnly->name->setWhatsThis(msgName); uiReadOnly->encoding->setWhatsThis(msgEncoding); - uiReadOnly->description->setWhatsThis(msgDescription); } else { ui->mimeType->setWhatsThis(msgMimeType); ui->size->setWhatsThis(msgSize); @@ -308,7 +306,7 @@ mPart->setEncrypted(ui->encrypt->isChecked()); mPart->setInline(ui->autoDisplay->isChecked()); - if (ui->mimeType->currentText().startsWith(QStringLiteral("message")) + if (ui->mimeType->currentText().startsWith(QLatin1String("message")) && ui->encoding->itemData(ui->encoding->currentIndex()) != KMime::Headers::CE7Bit && ui->encoding->itemData(ui->encoding->currentIndex()) != KMime::Headers::CE8Bit) { qCWarning(MESSAGECORE_LOG) << "Encoding on message/rfc822 must be \"7bit\" or \"8bit\"."; diff -Nru kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentpropertiesdialog.h kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentpropertiesdialog.h --- kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentpropertiesdialog.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentpropertiesdialog.h 2018-07-06 05:43:41.000000000 +0000 @@ -63,7 +63,7 @@ /** * Destroys the attachment properties dialog. */ - virtual ~AttachmentPropertiesDialog(); + ~AttachmentPropertiesDialog() override; /** * Returns the modified attachment. @@ -98,8 +98,6 @@ //@cond PRIVATE class Private; Private *const d; - - Q_PRIVATE_SLOT(d, void mimeTypeChanged(const QString &)) //@endcond }; } diff -Nru kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentupdatejob.cpp kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentupdatejob.cpp --- kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentupdatejob.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentupdatejob.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Laurent Montel + Copyright (C) 2014-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentupdatejob.h kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentupdatejob.h --- kf5-messagelib-17.12.3/messagecore/src/attachment/attachmentupdatejob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/src/attachment/attachmentupdatejob.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Laurent Montel + Copyright (C) 2014-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -30,7 +30,7 @@ Q_OBJECT public: AttachmentUpdateJob(const AttachmentPart::Ptr &part, QObject *parent = nullptr); - ~AttachmentUpdateJob(); + ~AttachmentUpdateJob() override; void start() override; AttachmentPart::Ptr originalPart() const; diff -Nru kf5-messagelib-17.12.3/messagecore/src/settings/messagecoresettings.h kf5-messagelib-18.04.3/messagecore/src/settings/messagecoresettings.h --- kf5-messagelib-17.12.3/messagecore/src/settings/messagecoresettings.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/src/settings/messagecoresettings.h 2018-07-06 05:43:41.000000000 +0000 @@ -34,7 +34,7 @@ private: MessageCoreSettings(); - virtual ~MessageCoreSettings(); + ~MessageCoreSettings() override; static MessageCoreSettings *mSelf; }; } diff -Nru kf5-messagelib-17.12.3/messagecore/src/utils/stringutil.cpp kf5-messagelib-18.04.3/messagecore/src/utils/stringutil.cpp --- kf5-messagelib-17.12.3/messagecore/src/utils/stringutil.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagecore/src/utils/stringutil.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel Copyright 2009 Thomas McGuire This program is free software; you can redistribute it and/or @@ -183,8 +183,7 @@ values.insertMulti(queryItem.first, queryItem.second); } - QStringList to; - to << KEmailAddress::decodeMailtoUrl(url); + QStringList to = {KEmailAddress::decodeMailtoUrl(url)}; const QString toStr = values.value(QStringLiteral("to")); if (!toStr.isEmpty()) { @@ -294,9 +293,9 @@ { QString result; - unsigned int strLength(str.length()); + int strLength(str.length()); result.reserve(6 * strLength); // maximal possible length - for (unsigned int i = 0; i < strLength; ++i) { + for (int i = 0; i < strLength; ++i) { switch (str[i].toLatin1()) { case '<': result += QLatin1String("<"); @@ -382,15 +381,22 @@ bool expandableInserted = false; KIdentityManagement::IdentityManager *im = KIdentityManagement::IdentityManager::self(); + const QString i18nMe = i18nc("signal that this email is defined in my identity", "Me"); + const bool onlyOneIdentity = (im->identities().count() == 1); for (const KMime::Types::Mailbox &mailbox : mailboxList) { - if (!mailbox.prettyAddress().isEmpty()) { + const QString prettyAddressStr = mailbox.prettyAddress(); + if (!prettyAddressStr.isEmpty()) { numberAddresses++; if (expandable == ExpandableAddresses && !expandableInserted && numberAddresses > collapseNumber) { - result = QLatin1String("") + result; - const QString visibility = QStringLiteral(" style=\"display:none;\""); - - result += QLatin1String("..."); + const QString actualListAddress = result; + QString shortListAddress = actualListAddress; + if (link == ShowLink) { + shortListAddress.truncate(result.length() - 2); + } + result = QStringLiteral("").arg(fieldName) + shortListAddress; + result += QStringLiteral("").arg(fieldName); expandableInserted = true; + result += QStringLiteral("").arg(fieldName) + actualListAddress; } if (link == ShowLink) { @@ -398,13 +404,13 @@ + QString::fromLatin1(QUrl::toPercentEncoding(KEmailAddress::encodeMailtoUrl(mailbox.prettyAddress(KMime::Types::Mailbox::QuoteWhenNecessary)).path())) + QLatin1String("\" ") + cssStyle + QLatin1Char('>'); } - const bool foundMe = (im->identities().count() == 1) && (im->identityForAddress(mailbox.prettyAddress()) != KIdentityManagement::Identity::null()); - const QString i18nMe = i18nc("signal that this email is defined in my identity", "Me"); + const bool foundMe = onlyOneIdentity && (im->identityForAddress(prettyAddressStr) != KIdentityManagement::Identity::null()); + if (display == DisplayNameOnly) { if (!mailbox.name().isEmpty()) { // Fallback to the email address when the name is not set. result += foundMe ? i18nMe : quoteHtmlChars(mailbox.name(), true); } else { - result += foundMe ? i18nMe : quoteHtmlChars(mailbox.prettyAddress(), true); + result += foundMe ? i18nMe : quoteHtmlChars(prettyAddressStr, true); } } else { result += foundMe ? i18nMe : quoteHtmlChars(mailbox.prettyAddress(KMime::Types::Mailbox::QuoteWhenNecessary), true); @@ -415,13 +421,12 @@ } } - // cut of the trailing ", " if (link == ShowLink) { result.truncate(result.length() - 2); } if (expandableInserted) { - result += QLatin1String(""); + result += QStringLiteral("").arg(fieldName); } return result; } @@ -587,8 +592,8 @@ return wildString; } - unsigned int strLength(wildString.length()); - for (uint i = 0; i < strLength;) { + int strLength(wildString.length()); + for (int i = 0; i < strLength;) { QChar ch = wildString[i++]; if (ch == QLatin1Char('%') && i < strLength) { ch = wildString[i++]; @@ -599,8 +604,8 @@ break; } - uint j = 0; - const unsigned int strLength(fromDisplayString.length()); + int j = 0; + const int strLength(fromDisplayString.length()); for (; j < strLength && fromDisplayString[j] > QLatin1Char(' '); ++j) { } for (; j < strLength && fromDisplayString[j] <= QLatin1Char(' '); ++j) { diff -Nru kf5-messagelib-17.12.3/messagelist/autotests/quicksearchwarningtest.cpp kf5-messagelib-18.04.3/messagelist/autotests/quicksearchwarningtest.cpp --- kf5-messagelib-17.12.3/messagelist/autotests/quicksearchwarningtest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/autotests/quicksearchwarningtest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Montel Laurent + Copyright (c) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messagelist/autotests/quicksearchwarningtest.h kf5-messagelib-18.04.3/messagelist/autotests/quicksearchwarningtest.h --- kf5-messagelib-17.12.3/messagelist/autotests/quicksearchwarningtest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/autotests/quicksearchwarningtest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Montel Laurent + Copyright (c) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messagelist/autotests/searchcollectionindexingwarningtest.cpp kf5-messagelib-18.04.3/messagelist/autotests/searchcollectionindexingwarningtest.cpp --- kf5-messagelib-17.12.3/messagelist/autotests/searchcollectionindexingwarningtest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/autotests/searchcollectionindexingwarningtest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messagelist/autotests/searchcollectionindexingwarningtest.h kf5-messagelib-18.04.3/messagelist/autotests/searchcollectionindexingwarningtest.h --- kf5-messagelib-17.12.3/messagelist/autotests/searchcollectionindexingwarningtest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/autotests/searchcollectionindexingwarningtest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messagelist/autotests/searchlinestatustest.cpp kf5-messagelib-18.04.3/messagelist/autotests/searchlinestatustest.cpp --- kf5-messagelib-17.12.3/messagelist/autotests/searchlinestatustest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/autotests/searchlinestatustest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messagelist/autotests/searchlinestatustest.h kf5-messagelib-18.04.3/messagelist/autotests/searchlinestatustest.h --- kf5-messagelib-17.12.3/messagelist/autotests/searchlinestatustest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/autotests/searchlinestatustest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/aggregation.cpp kf5-messagelib-18.04.3/messagelist/src/core/aggregation.cpp --- kf5-messagelib-17.12.3/messagelist/src/core/aggregation.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/aggregation.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -79,7 +79,7 @@ } stream >> val; - mGrouping = (Grouping)val; + mGrouping = static_cast(val); switch (mGrouping) { case NoGrouping: case GroupByDate: @@ -92,7 +92,6 @@ default: // b0rken return false; - break; } stream >> val; // Formerly contained group sorting @@ -124,7 +123,6 @@ default: // b0rken return false; - break; } stream >> val; @@ -138,7 +136,6 @@ default: // b0rken return false; - break; } stream >> val; @@ -154,7 +151,6 @@ default: // b0rken return false; - break; } stream >> val; // Formely contained message sorting @@ -171,7 +167,6 @@ default: // b0rken return false; - break; } return true; diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/aggregation.h kf5-messagelib-18.04.3/messagelist/src/core/aggregation.h --- kf5-messagelib-17.12.3/messagelist/src/core/aggregation.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/aggregation.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_AGGREGATION_H__ -#define __MESSAGELIST_CORE_AGGREGATION_H__ +#ifndef MESSAGELIST_CORE_AGGREGATION_H +#define MESSAGELIST_CORE_AGGREGATION_H class QDataStream; @@ -27,7 +27,7 @@ #include #include -#include +#include "core/optionset.h" namespace MessageList { namespace Core { @@ -296,4 +296,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_AGGREGATION_H__ +#endif //!__MESSAGELIST_CORE_AGGREGATION_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/delegate.h kf5-messagelib-18.04.3/messagelist/src/core/delegate.h --- kf5-messagelib-17.12.3/messagelist/src/core/delegate.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/delegate.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,10 +18,10 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_DELEGATE_H__ -#define __MESSAGELIST_CORE_DELEGATE_H__ +#ifndef MESSAGELIST_CORE_DELEGATE_H +#define MESSAGELIST_CORE_DELEGATE_H -#include +#include "core/themedelegate.h" namespace MessageList { namespace Core { @@ -32,7 +32,7 @@ Q_OBJECT public: explicit Delegate(View *pParent); - ~Delegate(); + ~Delegate() override; protected: /** @@ -43,4 +43,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_DELEGATE_H__ +#endif //!__MESSAGELIST_CORE_DELEGATE_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/enums.h kf5-messagelib-18.04.3/messagelist/src/core/enums.h --- kf5-messagelib-17.12.3/messagelist/src/core/enums.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/enums.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_ENUMS_H__ -#define __MESSAGELIST_CORE_ENUMS_H__ +#ifndef MESSAGELIST_CORE_ENUMS_H +#define MESSAGELIST_CORE_ENUMS_H namespace MessageList { namespace Core { @@ -63,4 +63,4 @@ } } -#endif //!__MESSAGELIST_CORE_ENUMS_H__ +#endif //!__MESSAGELIST_CORE_ENUMS_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/filter.h kf5-messagelib-18.04.3/messagelist/src/core/filter.h --- kf5-messagelib-17.12.3/messagelist/src/core/filter.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/filter.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_FILTER_H__ -#define __MESSAGELIST_CORE_FILTER_H__ +#ifndef MESSAGELIST_CORE_FILTER_H +#define MESSAGELIST_CORE_FILTER_H #include #include @@ -129,4 +129,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_FILTER_H__ +#endif //!__MESSAGELIST_CORE_FILTER_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/groupheaderitem.h kf5-messagelib-18.04.3/messagelist/src/core/groupheaderitem.h --- kf5-messagelib-17.12.3/messagelist/src/core/groupheaderitem.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/groupheaderitem.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,12 +18,12 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_GROUPHEADERITEM_H__ -#define __MESSAGELIST_CORE_GROUPHEADERITEM_H__ +#ifndef MESSAGELIST_CORE_GROUPHEADERITEM_H +#define MESSAGELIST_CORE_GROUPHEADERITEM_H #include -#include +#include "core/item.h" namespace MessageList { namespace Core { @@ -31,7 +31,7 @@ { public: explicit GroupHeaderItem(const QString &label); - virtual ~GroupHeaderItem(); + ~GroupHeaderItem() override; const QString &label() const; void setLabel(const QString &label); @@ -42,4 +42,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_GROUPHEADERITEM_H__ +#endif //!__MESSAGELIST_CORE_GROUPHEADERITEM_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/item.h kf5-messagelib-18.04.3/messagelist/src/core/item.h --- kf5-messagelib-17.12.3/messagelist/src/core/item.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/item.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_ITEM_H__ -#define __MESSAGELIST_CORE_ITEM_H__ +#ifndef MESSAGELIST_CORE_ITEM_H +#define MESSAGELIST_CORE_ITEM_H #include #include @@ -410,4 +410,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_ITEM_H__ +#endif //!__MESSAGELIST_CORE_ITEM_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/item_p.h kf5-messagelib-18.04.3/messagelist/src/core/item_p.h --- kf5-messagelib-17.12.3/messagelist/src/core/item_p.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/item_p.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_ITEM_P_H__ -#define __MESSAGELIST_CORE_ITEM_P_H__ +#ifndef MESSAGELIST_CORE_ITEM_P_H +#define MESSAGELIST_CORE_ITEM_P_H #include "core/item.h" @@ -506,4 +506,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_ITEM_P_H__ +#endif //!__MESSAGELIST_CORE_ITEM_P_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/manager.h kf5-messagelib-18.04.3/messagelist/src/core/manager.h --- kf5-messagelib-17.12.3/messagelist/src/core/manager.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/manager.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,10 +18,10 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_MANAGER_H__ -#define __MESSAGELIST_CORE_MANAGER_H__ +#ifndef MESSAGELIST_CORE_MANAGER_H +#define MESSAGELIST_CORE_MANAGER_H -#include +#include "core/sortorder.h" #include #include #include @@ -174,4 +174,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_MANAGER_H__ +#endif //!__MESSAGELIST_CORE_MANAGER_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/messageitem.h kf5-messagelib-18.04.3/messagelist/src/core/messageitem.h --- kf5-messagelib-17.12.3/messagelist/src/core/messageitem.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/messageitem.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,11 +18,11 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_MESSAGEITEM_H__ -#define __MESSAGELIST_CORE_MESSAGEITEM_H__ +#ifndef MESSAGELIST_CORE_MESSAGEITEM_H +#define MESSAGELIST_CORE_MESSAGEITEM_H -#include -#include +#include "core/item.h" +#include "core/modelinvariantindex.h" #include #include @@ -232,4 +232,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_MESSAGEITEM_H__ +#endif //!__MESSAGELIST_CORE_MESSAGEITEM_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/messageitemsetmanager.h kf5-messagelib-18.04.3/messagelist/src/core/messageitemsetmanager.h --- kf5-messagelib-17.12.3/messagelist/src/core/messageitemsetmanager.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/messageitemsetmanager.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_MESSAGEITEMSETMANAGER_H__ -#define __MESSAGELIST_CORE_MESSAGEITEMSETMANAGER_H__ +#ifndef MESSAGELIST_CORE_MESSAGEITEMSETMANAGER_H +#define MESSAGELIST_CORE_MESSAGEITEMSETMANAGER_H #include #include @@ -62,4 +62,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_MESSAGEITEMSETMANAGER_H__ +#endif //!__MESSAGELIST_CORE_MESSAGEITEMSETMANAGER_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/model.cpp kf5-messagelib-18.04.3/messagelist/src/core/model.cpp --- kf5-messagelib-17.12.3/messagelist/src/core/model.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/model.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -2758,11 +2758,13 @@ } // Update the newest/oldest message, since we might be supposed to select those later - if (!mOldestItem || mOldestItem->date() > mi->date()) { - mOldestItem = mi; - } - if (!mNewestItem || mNewestItem->date() < mi->date()) { - mNewestItem = mi; + if (mi->date() != static_cast(-1)) { + if (!mOldestItem || mOldestItem->date() > mi->date()) { + mOldestItem = mi; + } + if (!mNewestItem || mNewestItem->date() < mi->date()) { + mNewestItem = mi; + } } // Ok.. it passed the initial checks: we will not be discarding it. @@ -3488,7 +3490,6 @@ case ViewItemJobInterrupted: // current job interrupted by timeout: propagate status to caller return ViewItemJobInterrupted; - break; case ViewItemJobCompleted: // pass 3 has been completed job->setCurrentPass(ViewItemJob::Pass4); @@ -3517,7 +3518,6 @@ case ViewItemJobInterrupted: // current job interrupted by timeout: propagate status to caller return ViewItemJobInterrupted; - break; case ViewItemJobCompleted: // pass 4 has been completed job->setCurrentPass(ViewItemJob::Pass5); @@ -3967,7 +3967,7 @@ // deal with selection below break; default: - qCWarning(MESSAGELIST_LOG) << "ERROR: Unrecognized pre-selection mode " << (int)mPreSelectionMode; + qCWarning(MESSAGELIST_LOG) << "ERROR: Unrecognized pre-selection mode " << static_cast(mPreSelectionMode); break; } diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/model.h kf5-messagelib-18.04.3/messagelist/src/core/model.h --- kf5-messagelib-17.12.3/messagelist/src/core/model.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/model.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,17 +18,15 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_MODEL_H__ -#define __MESSAGELIST_CORE_MODEL_H__ +#ifndef MESSAGELIST_CORE_MODEL_H +#define MESSAGELIST_CORE_MODEL_H #include #include #include #include -#include #include -#include #include // time_t @@ -45,6 +43,8 @@ class StorageModel; class View; class ModelPrivate; +class SortOrder; +class Aggregation; /** * This class manages the huge tree of displayable objects: GroupHeaderItems and MessageItems. @@ -77,7 +77,7 @@ /** * Destroys the mighty model along with the tree of items it manages. */ - ~Model(); + ~Model() override; /** * Returns the StorageModel currently set. @@ -222,4 +222,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_MODEL_H__ +#endif //!__MESSAGELIST_CORE_MODEL_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/modelinvariantindex.h kf5-messagelib-18.04.3/messagelist/src/core/modelinvariantindex.h --- kf5-messagelib-17.12.3/messagelist/src/core/modelinvariantindex.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/modelinvariantindex.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_MODELINVARIANTINDEX_H__ -#define __MESSAGELIST_CORE_MODELINVARIANTINDEX_H__ +#ifndef MESSAGELIST_CORE_MODELINVARIANTINDEX_H +#define MESSAGELIST_CORE_MODELINVARIANTINDEX_H #include // defines uint, at least. @@ -71,4 +71,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_MODELINVARIANTINDEX_H__ +#endif //!__MESSAGELIST_CORE_MODELINVARIANTINDEX_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/modelinvariantindex_p.h kf5-messagelib-18.04.3/messagelist/src/core/modelinvariantindex_p.h --- kf5-messagelib-17.12.3/messagelist/src/core/modelinvariantindex_p.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/modelinvariantindex_p.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_MODELINVARIANTINDEX_P_H__ -#define __MESSAGELIST_CORE_MODELINVARIANTINDEX_P_H__ +#ifndef MESSAGELIST_CORE_MODELINVARIANTINDEX_P_H +#define MESSAGELIST_CORE_MODELINVARIANTINDEX_P_H #include "core/modelinvariantindex.h" @@ -61,4 +61,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_MODELINVARIANTINDEX_P_H__ +#endif //!__MESSAGELIST_CORE_MODELINVARIANTINDEX_P_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/modelinvariantrowmapper.h kf5-messagelib-18.04.3/messagelist/src/core/modelinvariantrowmapper.h --- kf5-messagelib-17.12.3/messagelist/src/core/modelinvariantrowmapper.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/modelinvariantrowmapper.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_MODELINVARIANTROWMAPPER_H__ -#define __MESSAGELIST_CORE_MODELINVARIANTROWMAPPER_H__ +#ifndef MESSAGELIST_CORE_MODELINVARIANTROWMAPPER_H +#define MESSAGELIST_CORE_MODELINVARIANTROWMAPPER_H #include #include @@ -91,7 +91,7 @@ public: explicit ModelInvariantRowMapper(); - virtual ~ModelInvariantRowMapper(); + ~ModelInvariantRowMapper() override; /** * Sets the maximum time we can spend inside a single lazy update step. @@ -186,4 +186,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_MODELINVARIANTROWMAPPER_H__ +#endif //!__MESSAGELIST_CORE_MODELINVARIANTROWMAPPER_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/modelinvariantrowmapper_p.h kf5-messagelib-18.04.3/messagelist/src/core/modelinvariantrowmapper_p.h --- kf5-messagelib-17.12.3/messagelist/src/core/modelinvariantrowmapper_p.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/modelinvariantrowmapper_p.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_MODELINVARIANTROWMAPPER_P_H__ -#define __MESSAGELIST_CORE_MODELINVARIANTROWMAPPER_P_H__ +#ifndef MESSAGELIST_CORE_MODELINVARIANTROWMAPPER_P_H +#define MESSAGELIST_CORE_MODELINVARIANTROWMAPPER_P_H #include "core/modelinvariantrowmapper.h" @@ -74,4 +74,4 @@ } // Core } // MessageList -#endif //!__MESSAGELIST_CORE_MODELINVARIANTROWMAPPER_P_H__ +#endif //!__MESSAGELIST_CORE_MODELINVARIANTROWMAPPER_P_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/model_p.h kf5-messagelib-18.04.3/messagelist/src/core/model_p.h --- kf5-messagelib-17.12.3/messagelist/src/core/model_p.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/model_p.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_MODEL_P_H__ -#define __MESSAGELIST_CORE_MODEL_P_H__ +#ifndef MESSAGELIST_CORE_MODEL_P_H +#define MESSAGELIST_CORE_MODEL_P_H #include "model.h" #include "threadingcache.h" @@ -451,4 +451,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_MODEL_P_H__ +#endif //!__MESSAGELIST_CORE_MODEL_P_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/optionset.h kf5-messagelib-18.04.3/messagelist/src/core/optionset.h --- kf5-messagelib-17.12.3/messagelist/src/core/optionset.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/optionset.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_OPTIONSET_H__ -#define __MESSAGELIST_CORE_OPTIONSET_H__ +#ifndef MESSAGELIST_CORE_OPTIONSET_H +#define MESSAGELIST_CORE_OPTIONSET_H #include @@ -148,4 +148,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_OPTIONSET_H__ +#endif //!__MESSAGELIST_CORE_OPTIONSET_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/sortorder.cpp kf5-messagelib-18.04.3/messagelist/src/core/sortorder.cpp --- kf5-messagelib-17.12.3/messagelist/src/core/sortorder.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/sortorder.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -327,7 +327,6 @@ default: // b0rken return false; - break; } return true; diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/sortorder.h kf5-messagelib-18.04.3/messagelist/src/core/sortorder.h --- kf5-messagelib-17.12.3/messagelist/src/core/sortorder.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/sortorder.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_SORTORDER_H__ -#define __MESSAGELIST_CORE_SORTORDER_H__ +#ifndef MESSAGELIST_CORE_SORTORDER_H +#define MESSAGELIST_CORE_SORTORDER_H #include @@ -85,7 +85,7 @@ // Warning: Never add enum entries in the middle: always add them at the end (numeric values are stored in configuration) }; - explicit SortOrder(); + SortOrder(); /** * Returns the GroupSorting @@ -220,4 +220,4 @@ } // namespace Core } // namespace MessageList -#endif // __MESSAGELIST_CORE_SORTORDER_H__ +#endif // MESSAGELIST_CORE_SORTORDER_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/storagemodelbase.h kf5-messagelib-18.04.3/messagelist/src/core/storagemodelbase.h --- kf5-messagelib-17.12.3/messagelist/src/core/storagemodelbase.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/storagemodelbase.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_STORAGEMODELBASE_H__ -#define __MESSAGELIST_CORE_STORAGEMODELBASE_H__ +#ifndef MESSAGELIST_CORE_STORAGEMODELBASE_H +#define MESSAGELIST_CORE_STORAGEMODELBASE_H #include @@ -122,4 +122,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_STORAGEMODEL_H__ +#endif //!__MESSAGELIST_CORE_STORAGEMODEL_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/theme.cpp kf5-messagelib-18.04.3/messagelist/src/core/theme.cpp --- kf5-messagelib-17.12.3/messagelist/src/core/theme.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/theme.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -818,9 +818,9 @@ stream << mPixmapName; stream << mVisibleByDefault; stream << mIsSenderOrReceiver; - stream << (int)mMessageSorting; + stream << static_cast(mMessageSorting); - stream << (int)mGroupHeaderRows.count(); + stream << static_cast(mGroupHeaderRows.count()); int cnt = mGroupHeaderRows.count(); @@ -830,7 +830,7 @@ } cnt = mMessageRows.count(); - stream << (int)cnt; + stream << static_cast(cnt); for (int i = 0; i < cnt; ++i) { Row *row = mMessageRows.at(i); @@ -1147,7 +1147,7 @@ int val; stream >> val; - mGroupHeaderBackgroundMode = (GroupHeaderBackgroundMode)val; + mGroupHeaderBackgroundMode = static_cast(val); switch (mGroupHeaderBackgroundMode) { case Transparent: case AutoColor: @@ -1157,13 +1157,12 @@ default: qCDebug(MESSAGELIST_LOG) << "Invalid theme group header background mode"; return false; // b0rken - break; } stream >> mGroupHeaderBackgroundColor; stream >> val; - mGroupHeaderBackgroundStyle = (GroupHeaderBackgroundStyle)val; + mGroupHeaderBackgroundStyle = static_cast(val); switch (mGroupHeaderBackgroundStyle) { case PlainRect: case PlainJoinedRect: @@ -1178,7 +1177,6 @@ default: qCDebug(MESSAGELIST_LOG) << "Invalid theme group header background style"; return false; // b0rken - break; } stream >> val; @@ -1191,7 +1189,6 @@ default: qCDebug(MESSAGELIST_LOG) << "Invalid theme view header policy"; return false; // b0rken - break; } if (themeVersion >= gThemeMinimumVersionWithIconSizeField) { diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/themedelegate.h kf5-messagelib-18.04.3/messagelist/src/core/themedelegate.h --- kf5-messagelib-17.12.3/messagelist/src/core/themedelegate.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/themedelegate.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,15 +18,15 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_THEMEDELEGATE_H__ -#define __MESSAGELIST_CORE_THEMEDELEGATE_H__ +#ifndef MESSAGELIST_CORE_THEMEDELEGATE_H +#define MESSAGELIST_CORE_THEMEDELEGATE_H #include #include #include -#include -#include +#include "core/theme.h" +#include "core/item.h" class QAbstractItemView; @@ -44,7 +44,7 @@ public: explicit ThemeDelegate(QAbstractItemView *parent); - ~ThemeDelegate(); + ~ThemeDelegate() override; /** * Called when the global fonts change (from systemsettings) */ @@ -203,4 +203,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_SKINDELEGATE_H__ +#endif //!__MESSAGELIST_CORE_SKINDELEGATE_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/theme.h kf5-messagelib-18.04.3/messagelist/src/core/theme.h --- kf5-messagelib-17.12.3/messagelist/src/core/theme.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/theme.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_THEME_H__ -#define __MESSAGELIST_CORE_THEME_H__ +#ifndef MESSAGELIST_CORE_THEME_H +#define MESSAGELIST_CORE_THEME_H #include #include @@ -1021,4 +1021,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_SKIN_H__ +#endif //!__MESSAGELIST_CORE_SKIN_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/view.cpp kf5-messagelib-18.04.3/messagelist/src/core/view.cpp --- kf5-messagelib-17.12.3/messagelist/src/core/view.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/view.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -44,7 +44,6 @@ #include #include #include -#include #include #include #include @@ -723,7 +722,6 @@ // the menu for the columns QMenu menu; - QSignalMapper *showColumnSignalMapper = new QSignalMapper(&menu); int idx = 0; for (const auto col : qAsConst(columns)) { QAction *act = menu.addAction(col->label()); @@ -732,12 +730,10 @@ if (idx == 0) { act->setEnabled(false); } - QObject::connect(act, SIGNAL(triggered()), showColumnSignalMapper, SLOT(map())); - showColumnSignalMapper->setMapping(act, idx); + QObject::connect(act, &QAction::triggered, this, [this, idx] {slotShowHideColumn(idx);}); idx++; } - QObject::connect(showColumnSignalMapper, SIGNAL(mapped(int)), this, SLOT(slotShowHideColumn(int))); menu.addSeparator(); { diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/view.h kf5-messagelib-18.04.3/messagelist/src/core/view.h --- kf5-messagelib-17.12.3/messagelist/src/core/view.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/view.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_VIEW_H__ -#define __MESSAGELIST_CORE_VIEW_H__ +#ifndef MESSAGELIST_CORE_VIEW_H +#define MESSAGELIST_CORE_VIEW_H #include #include @@ -60,7 +60,7 @@ Q_OBJECT public: explicit View(Widget *parent); - ~View(); + ~View() override; /** * Returns the Model attacched to this View. You probably never need to manipulate @@ -646,4 +646,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_VIEW_H__ +#endif //!__MESSAGELIST_CORE_VIEW_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/widgetbase.cpp kf5-messagelib-18.04.3/messagelist/src/core/widgetbase.cpp --- kf5-messagelib-17.12.3/messagelist/src/core/widgetbase.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/widgetbase.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -145,6 +145,7 @@ connect(d->quickSearchLine, &QuickSearchLine::searchEditTextEdited, this, &Widget::searchEditTextEdited); connect(d->quickSearchLine, &QuickSearchLine::searchOptionChanged, this, &Widget::searchEditTextEdited); connect(d->quickSearchLine, &QuickSearchLine::statusButtonsClicked, this, &Widget::slotStatusButtonsClicked); + connect(d->quickSearchLine, &QuickSearchLine::forceLostFocus, this, &Widget::forceLostFocus); g->addWidget(d->quickSearchLine, 0); d->quickSearchWarning = new QuickSearchWarning(this); g->addWidget(d->quickSearchWarning, 0); diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/widgetbase.h kf5-messagelib-18.04.3/messagelist/src/core/widgetbase.h --- kf5-messagelib-17.12.3/messagelist/src/core/widgetbase.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/widgetbase.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,16 +18,15 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_CORE_WIDGETBASE_H__ -#define __MESSAGELIST_CORE_WIDGETBASE_H__ +#ifndef MESSAGELIST_CORE_WIDGETBASE_H +#define MESSAGELIST_CORE_WIDGETBASE_H #include #include #include -#include -#include -#include +#include +#include class QLineEdit; class QActionGroup; @@ -225,6 +224,7 @@ * could be useful */ void statusMessage(const QString &message); + void forceLostFocus(); protected Q_SLOTS: /** @@ -267,4 +267,4 @@ } // namespace Core } // namespace MessageList -#endif //!__MESSAGELIST_CORE_WIDGET_H__ +#endif //!__MESSAGELIST_CORE_WIDGET_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/widgets/quicksearchline.cpp kf5-messagelib-18.04.3/messagelist/src/core/widgets/quicksearchline.cpp --- kf5-messagelib-17.12.3/messagelist/src/core/widgets/quicksearchline.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/widgets/quicksearchline.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by @@ -20,7 +20,7 @@ #include "quicksearchline.h" #include "messagelistsettings.h" - +#include #include #include "searchlinestatus.h" @@ -50,6 +50,7 @@ mSearchEdit = new SearchLineStatus(this); connect(mSearchEdit, &SearchLineStatus::filterActionChanged, this, &QuickSearchLine::slotFilterActionChanged); connect(mSearchEdit, &SearchLineStatus::searchOptionChanged, this, &QuickSearchLine::searchOptionChanged); + connect(mSearchEdit, &SearchLineStatus::forceLostFocus, this, &QuickSearchLine::forceLostFocus); mSearchEdit->setPlaceholderText(i18nc("Search for messages.", "Search")); mSearchEdit->setObjectName(QStringLiteral("quicksearch")); mSearchEdit->setClearButtonEnabled(true); @@ -86,7 +87,7 @@ minimumStringLength = 5; } if (!text.trimmed().isEmpty()) { - if (text.length() >= minimumStringLength) { + if (KStringHandler::logicalLength(text) >= minimumStringLength) { Q_EMIT searchEditTextEdited(text); } } else { diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/widgets/quicksearchline.h kf5-messagelib-18.04.3/messagelist/src/core/widgets/quicksearchline.h --- kf5-messagelib-17.12.3/messagelist/src/core/widgets/quicksearchline.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/widgets/quicksearchline.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by @@ -35,7 +35,7 @@ Q_OBJECT public: explicit QuickSearchLine(QWidget *parent = nullptr); - ~QuickSearchLine(); + ~QuickSearchLine() override; enum SearchOption { SearchEveryWhere = 1, @@ -72,6 +72,7 @@ void searchEditTextEdited(const QString &); void searchOptionChanged(); void statusButtonsClicked(); + void forceLostFocus(); protected: bool eventFilter(QObject *object, QEvent *e) override; diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/widgets/quicksearchwarning.cpp kf5-messagelib-18.04.3/messagelist/src/core/widgets/quicksearchwarning.cpp --- kf5-messagelib-17.12.3/messagelist/src/core/widgets/quicksearchwarning.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/widgets/quicksearchwarning.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Montel Laurent + Copyright (c) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/widgets/quicksearchwarning.h kf5-messagelib-18.04.3/messagelist/src/core/widgets/quicksearchwarning.h --- kf5-messagelib-17.12.3/messagelist/src/core/widgets/quicksearchwarning.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/widgets/quicksearchwarning.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Montel Laurent + Copyright (c) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/widgets/searchlinestatus.cpp kf5-messagelib-18.04.3/messagelist/src/core/widgets/searchlinestatus.cpp --- kf5-messagelib-17.12.3/messagelist/src/core/widgets/searchlinestatus.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/widgets/searchlinestatus.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as @@ -29,6 +29,7 @@ #include #include #include +#include #include static const char qLineEditclearButtonActionNameC[] = "_q_qlineeditclearaction"; @@ -43,10 +44,10 @@ , mFilterMenu(nullptr) , mContainsOutboundMessages(false) { - QCompleter *completer = new QCompleter(this); + mCompleter = new QCompleter(this); mCompleterListModel = new QStringListModel(this); - completer->setModel(mCompleterListModel); - setCompleter(completer); + mCompleter->setModel(mCompleterListModel); + setCompleter(mCompleter); setClearButtonEnabled(true); initializeActions(); @@ -63,6 +64,21 @@ { } +void SearchLineStatus::keyPressEvent(QKeyEvent *e) +{ + if (e->key() == Qt::Key_Escape) { + qDebug() << " void SearchLineStatus::keyPressEvent(QKeyEvent *e)" << mCompleter->widget(); + if (mCompleter->popup()->isVisible()) { + QLineEdit::keyPressEvent(e); + } else { + Q_EMIT forceLostFocus(); + qDebug() << " void SearchLineStatus::keyPressEvent(QKeyEvent *e)ESCAPre"; + } + } else { + QLineEdit::keyPressEvent(e); + } +} + void SearchLineStatus::slotClear() { Q_EMIT clearButtonClicked(); diff -Nru kf5-messagelib-17.12.3/messagelist/src/core/widgets/searchlinestatus.h kf5-messagelib-18.04.3/messagelist/src/core/widgets/searchlinestatus.h --- kf5-messagelib-17.12.3/messagelist/src/core/widgets/searchlinestatus.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/core/widgets/searchlinestatus.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as @@ -47,9 +47,11 @@ void filterActionChanged(const QList &lst); void searchOptionChanged(); void clearButtonClicked(); + void forceLostFocus(); protected: void contextMenuEvent(QContextMenuEvent *e) override; + void keyPressEvent(QKeyEvent *e) override; private Q_SLOTS: void slotToggledLockAction(); @@ -72,9 +74,10 @@ bool mHasFilter; QIcon mWithoutFilter; QIcon mWithFilter; - QAction *mLockAction; - QAction *mFiltersAction; - QMenu *mFilterMenu; + QAction *mLockAction = nullptr; + QAction *mFiltersAction = nullptr; + QMenu *mFilterMenu = nullptr; + QCompleter *mCompleter = nullptr; QList mFilterListActions; QAction *mSearchEveryWhereAction; QAction *mSearchAgainstBodyAction; diff -Nru kf5-messagelib-17.12.3/messagelist/src/messagelist_private_export.h kf5-messagelib-18.04.3/messagelist/src/messagelist_private_export.h --- kf5-messagelib-17.12.3/messagelist/src/messagelist_private_export.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/messagelist_private_export.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* This file is part of the KDE project - Copyright (C) 2017 Laurent Montel + Copyright (C) 2017-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messagelist/src/messagelistutil.cpp kf5-messagelib-18.04.3/messagelist/src/messagelistutil.cpp --- kf5-messagelib-17.12.3/messagelist/src/messagelistutil.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/messagelistutil.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,6 +1,6 @@ /* This file is part of KMail, the KDE mail client. - Copyright (c) 2011-2017 Montel Laurent + Copyright (c) 2011-2018 Montel Laurent KMail is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as @@ -153,6 +153,13 @@ int numLines = 0; const int maxLines = 5; const QStringList lines = content.split(QLatin1Char('\n')); + if (lines.isEmpty()) { + return QString(); + } + if (lines.count() == 1 && content.length() > 100) { + return content.left(100); + + } QString ret; for (const QString &line : lines) { const QString lineTrimmed = line.trimmed(); diff -Nru kf5-messagelib-17.12.3/messagelist/src/messagelistutil.h kf5-messagelib-18.04.3/messagelist/src/messagelistutil.h --- kf5-messagelib-17.12.3/messagelist/src/messagelistutil.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/messagelistutil.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,6 +1,6 @@ /* This file is part of KMail, the KDE mail client. - Copyright (c) 2011-2017 Montel Laurent + Copyright (c) 2011-2018 Montel Laurent KMail is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messagelist/src/messagelistutil_p.h kf5-messagelib-18.04.3/messagelist/src/messagelistutil_p.h --- kf5-messagelib-17.12.3/messagelist/src/messagelistutil_p.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/messagelistutil_p.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,6 +1,6 @@ /* This file is part of KMail, the KDE mail client. - Copyright (c) 2011-2017 Montel Laurent + Copyright (c) 2011-2018 Montel Laurent KMail is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messagelist/src/pane.cpp kf5-messagelib-18.04.3/messagelist/src/pane.cpp --- kf5-messagelib-17.12.3/messagelist/src/pane.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/pane.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -164,19 +164,18 @@ this, [this]() {d->onCloseTabClicked(); }); setTabsClosable(true); - connect(this, SIGNAL(tabCloseRequested(int)), this, SLOT(slotTabCloseRequested(int))); + connect(this, &Pane::tabCloseRequested, this, [this](int index) { d->slotTabCloseRequested(index);}); readConfig(restoreSession); setMovable(true); connect(d->mSelectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(onSelectionChanged(QItemSelection,QItemSelection))); - connect(this, SIGNAL(currentChanged(int)), - this, SLOT(onCurrentTabChanged())); + connect(this, &Pane::currentChanged, + this, [this]() { d->onCurrentTabChanged(); }); setContextMenuPolicy(Qt::CustomContextMenu); - connect(this, SIGNAL(customContextMenuRequested(QPoint)), - this, SLOT(onTabContextMenuRequest(QPoint))); + connect(this, &Pane::customContextMenuRequested, this, [this](const QPoint &point) { d->onTabContextMenuRequest(point);}); connect(MessageListSettings::self(), SIGNAL(configChanged()), this, SLOT(updateTabControls())); @@ -189,6 +188,7 @@ Pane::~Pane() { + saveCurrentSelection(); writeConfig(true); delete d; } @@ -200,7 +200,7 @@ QAction *action = new QAction(i18n("Activate Tab %1", i), q); mXmlGuiClient->actionCollection()->addAction(actionname, action); mXmlGuiClient->actionCollection()->setDefaultShortcut(action, QKeySequence(QStringLiteral("Alt+%1").arg(i))); - connect(action, SIGNAL(triggered(bool)), q, SLOT(activateTab())); + connect(action, &QAction::triggered, q, [this]() { activateTab(); }); } void Pane::Private::slotTabCloseRequested(int index) @@ -220,11 +220,13 @@ showHideQuicksearch->setChecked(MessageListSettings::showQuickSearch()); d->mXmlGuiClient->actionCollection()->addAction(QStringLiteral("show_quick_search"), showHideQuicksearch); - connect(showHideQuicksearch, SIGNAL(triggered(bool)), this, SLOT(changeQuicksearchVisibility(bool))); + connect(showHideQuicksearch, &KToggleAction::triggered, this, [this](bool state) { d->changeQuicksearchVisibility(state); }); for (int i = 0; i < count(); ++i) { Widget *w = qobject_cast(widget(i)); - w->setXmlGuiClient(d->mXmlGuiClient); + if (w) { + w->setXmlGuiClient(d->mXmlGuiClient); + } } // Setup "View->Message List" actions. @@ -252,29 +254,29 @@ d->mCloseTabAction = new QAction(i18n("Close Tab"), this); d->mXmlGuiClient->actionCollection()->addAction(QStringLiteral("close_current_tab"), d->mCloseTabAction); d->mXmlGuiClient->actionCollection()->setDefaultShortcuts(d->mCloseTabAction, QList() << QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_W) << QKeySequence(Qt::CTRL + Qt::Key_W)); - connect(d->mCloseTabAction, SIGNAL(triggered(bool)), SLOT(onCloseTabClicked())); + connect(d->mCloseTabAction, &QAction::triggered, this, [this]() { d->onCloseTabClicked(); }); d->mActionMenu->addAction(d->mCloseTabAction); d->mCloseTabAction->setEnabled(false); d->mActivateNextTabAction = new QAction(i18n("Activate Next Tab"), this); d->mXmlGuiClient->actionCollection()->addAction(QStringLiteral("activate_next_tab"), d->mActivateNextTabAction); d->mActivateNextTabAction->setEnabled(false); - connect(d->mActivateNextTabAction, SIGNAL(triggered(bool)), SLOT(activateNextTab())); + connect(d->mActivateNextTabAction, &QAction::triggered, [this]() { d->activateNextTab(); }); d->mActivatePreviousTabAction = new QAction(i18n("Activate Previous Tab"), this); d->mXmlGuiClient->actionCollection()->addAction(QStringLiteral("activate_previous_tab"), d->mActivatePreviousTabAction); d->mActivatePreviousTabAction->setEnabled(false); - connect(d->mActivatePreviousTabAction, SIGNAL(triggered(bool)), SLOT(activatePreviousTab())); + connect(d->mActivatePreviousTabAction, &QAction::triggered, this, [this]() { d->activatePreviousTab(); }); d->mMoveTabLeftAction = new QAction(i18n("Move Tab Left"), this); d->mXmlGuiClient->actionCollection()->addAction(QStringLiteral("move_tab_left"), d->mMoveTabLeftAction); d->mMoveTabLeftAction->setEnabled(false); - connect(d->mMoveTabLeftAction, SIGNAL(triggered(bool)), SLOT(moveTabLeft())); + connect(d->mMoveTabLeftAction, &QAction::triggered, this, [this]() { d->moveTabLeft(); }); d->mMoveTabRightAction = new QAction(i18n("Move Tab Right"), this); d->mXmlGuiClient->actionCollection()->addAction(QStringLiteral("move_tab_right"), d->mMoveTabRightAction); d->mMoveTabRightAction->setEnabled(false); - connect(d->mMoveTabRightAction, SIGNAL(triggered(bool)), SLOT(moveTabRight())); + connect(d->mMoveTabRightAction, &QAction::triggered, this, [this]() { d->moveTabRight(); }); } } @@ -605,6 +607,11 @@ return; } + Widget *wWidget = qobject_cast(w); + if (wWidget) { + wWidget->saveCurrentSelection(); + } + delete w; updateTabControls(); } @@ -613,7 +620,9 @@ { for (int i = 0; i < q->count(); ++i) { Widget *w = qobject_cast(q->widget(i)); - w->changeQuicksearchVisibility(show); + if (w) { + w->changeQuicksearchVisibility(show); + } } } @@ -683,10 +692,13 @@ } Widget *other = qobject_cast(q->widget(i)); - widgets << other; + if (other) { + widgets << other; + } } foreach (Widget *other, widgets) { + other->saveCurrentSelection(); delete other; } @@ -730,7 +742,7 @@ { for (int i = 0; i < count(); ++i) { Widget *w = qobject_cast(widget(i)); - if (w->currentCollection() == collection) { + if (w && (w->currentCollection() == collection)) { const int index = indexOf(w); setTabText(index, label); setTabIcon(index, icon); @@ -770,6 +782,9 @@ connect(w, &Core::Widget::statusMessage, this, &Pane::statusMessage); + connect(w, &Core::Widget::forceLostFocus, + this, &Pane::forceLostFocus); + d->updateTabControls(); setCurrentWidget(w); return s; @@ -1055,7 +1070,9 @@ { for (int i = 0; i < count(); ++i) { Widget *w = qobject_cast(widget(i)); - w->saveCurrentSelection(); + if (w) { + w->saveCurrentSelection(); + } } } @@ -1063,7 +1080,9 @@ { for (int i = 0; i < count(); ++i) { Widget *w = qobject_cast(widget(i)); - w->populateStatusFilterCombo(); + if (w) { + w->populateStatusFilterCombo(); + } } } @@ -1083,9 +1102,11 @@ for (int i = 0; i < count(); ++i) { Widget *w = qobject_cast(widget(i)); - KConfigGroup grp(MessageList::MessageListSettings::self()->config(), QStringLiteral("MessageListTab%1").arg(i)); - grp.writeEntry(QStringLiteral("collectionId"), w->currentCollection().id()); - grp.writeEntry(QStringLiteral("HeaderState"), w->view()->header()->saveState()); + if (w) { + KConfigGroup grp(MessageList::MessageListSettings::self()->config(), QStringLiteral("MessageListTab%1").arg(i)); + grp.writeEntry(QStringLiteral("collectionId"), w->currentCollection().id()); + grp.writeEntry(QStringLiteral("HeaderState"), w->view()->header()->saveState()); + } } } conf.sync(); @@ -1131,7 +1152,9 @@ KConfigGroup grp(MessageList::MessageListSettings::self()->config(), QStringLiteral("MessageListTab%1").arg(index)); if (grp.exists()) { Widget *w = qobject_cast(widget(index)); - w->view()->header()->restoreState(grp.readEntry(QStringLiteral("HeaderState"), QByteArray())); + if (w) { + w->view()->header()->restoreState(grp.readEntry(QStringLiteral("HeaderState"), QByteArray())); + } } } @@ -1178,7 +1201,9 @@ { for (int i = 0; i < count(); ++i) { Widget *w = qobject_cast(widget(i)); - w->populateStatusFilterCombo(); + if (w) { + w->populateStatusFilterCombo(); + } } } diff -Nru kf5-messagelib-17.12.3/messagelist/src/pane.h kf5-messagelib-18.04.3/messagelist/src/pane.h --- kf5-messagelib-17.12.3/messagelist/src/pane.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/pane.h 2018-07-06 05:43:41.000000000 +0000 @@ -16,8 +16,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifndef __MESSAGELIST_PANE_H__ -#define __MESSAGELIST_PANE_H__ +#ifndef MESSAGELIST_PANE_H +#define MESSAGELIST_PANE_H #include #include @@ -61,7 +61,7 @@ * Create a Pane wrapping the specified model and selection. */ explicit Pane(bool restoreSession, QAbstractItemModel *model, QItemSelectionModel *selectionModel, QWidget *parent = nullptr); - ~Pane(); + ~Pane() override; virtual MessageList::StorageModel *createStorageModel(QAbstractItemModel *model, QItemSelectionModel *selectionModel, QObject *parent); @@ -428,23 +428,16 @@ */ void currentTabChanged(); + void forceLostFocus(); + private: void restoreHeaderSettings(int index); void readConfig(bool restoreSession); Q_PRIVATE_SLOT(d, void onSelectionChanged(const QItemSelection &, const QItemSelection &)) - Q_PRIVATE_SLOT(d, void onCloseTabClicked()) - Q_PRIVATE_SLOT(d, void activateTab()) - Q_PRIVATE_SLOT(d, void moveTabLeft()) - Q_PRIVATE_SLOT(d, void moveTabRight()) - Q_PRIVATE_SLOT(d, void activateNextTab()) - Q_PRIVATE_SLOT(d, void activatePreviousTab()) Q_PRIVATE_SLOT(d, void closeTab(QWidget *)) - Q_PRIVATE_SLOT(d, void onCurrentTabChanged()) - Q_PRIVATE_SLOT(d, void onTabContextMenuRequest(const QPoint &)) Q_PRIVATE_SLOT(d, void updateTabControls()) Q_PRIVATE_SLOT(d, void changeQuicksearchVisibility(bool)) - Q_PRIVATE_SLOT(d, void slotTabCloseRequested(int index)) bool eventFilter(QObject *obj, QEvent *event) override; @@ -453,4 +446,4 @@ }; } // namespace MessageList -#endif //!__MESSAGELIST_PANE_H__ +#endif //!__MESSAGELIST_PANE_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/storagemodel.cpp kf5-messagelib-18.04.3/messagelist/src/storagemodel.cpp --- kf5-messagelib-17.12.3/messagelist/src/storagemodel.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/storagemodel.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -107,8 +107,8 @@ qCDebug(MESSAGELIST_LOG) << "Using model:" << model->metaObject()->className(); - connect(d->mModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(onSourceDataChanged(QModelIndex,QModelIndex))); + connect(d->mModel, &QAbstractItemModel::dataChanged, + this, [this](const QModelIndex &id1, const QModelIndex &id2) { d->onSourceDataChanged(id1, id2);}); connect(d->mModel, &QAbstractItemModel::layoutAboutToBeChanged, this, &StorageModel::layoutAboutToBeChanged); connect(d->mModel, &QAbstractItemModel::layoutChanged, this, &StorageModel::layoutChanged); diff -Nru kf5-messagelib-17.12.3/messagelist/src/storagemodel.h kf5-messagelib-18.04.3/messagelist/src/storagemodel.h --- kf5-messagelib-17.12.3/messagelist/src/storagemodel.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/storagemodel.h 2018-07-06 05:43:41.000000000 +0000 @@ -16,8 +16,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifndef __MESSAGELIST_STORAGEMODEL_H__ -#define __MESSAGELIST_STORAGEMODEL_H__ +#ifndef MESSAGELIST_STORAGEMODEL_H +#define MESSAGELIST_STORAGEMODEL_H #include #include @@ -51,7 +51,7 @@ * Create a StorageModel wrapping the specified folder. */ explicit StorageModel(QAbstractItemModel *model, QItemSelectionModel *selectionModel, QObject *parent = nullptr); - ~StorageModel(); + ~StorageModel() override; Akonadi::Collection::List displayedCollections() const; @@ -91,4 +91,4 @@ }; } // namespace MessageList -#endif //!__MESSAGELIST_STORAGEMODEL_H__ +#endif //!__MESSAGELIST_STORAGEMODEL_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/aggregationcombobox.h kf5-messagelib-18.04.3/messagelist/src/utils/aggregationcombobox.h --- kf5-messagelib-17.12.3/messagelist/src/utils/aggregationcombobox.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/aggregationcombobox.h 2018-07-06 05:43:41.000000000 +0000 @@ -16,8 +16,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef __MESSAGELIST_UTILS_AGGREGATIONCOMBOBOX_H__ -#define __MESSAGELIST_UTILS_AGGREGATIONCOMBOBOX_H__ +#ifndef MESSAGELIST_UTILS_AGGREGATIONCOMBOBOX_H +#define MESSAGELIST_UTILS_AGGREGATIONCOMBOBOX_H #include #include @@ -62,4 +62,4 @@ } // namespace Utils } // namespace MessageList -#endif //!__MESSAGELIST_UTILS_AGGREGATIONCOMBOBOX_H__ +#endif //!__MESSAGELIST_UTILS_AGGREGATIONCOMBOBOX_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/aggregationcombobox_p.h kf5-messagelib-18.04.3/messagelist/src/utils/aggregationcombobox_p.h --- kf5-messagelib-17.12.3/messagelist/src/utils/aggregationcombobox_p.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/aggregationcombobox_p.h 2018-07-06 05:43:41.000000000 +0000 @@ -16,8 +16,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef __MESSAGELIST_UTILS_AGGREGATIONCOMBOBOX_P_H__ -#define __MESSAGELIST_UTILS_AGGREGATIONCOMBOBOX_P_H__ +#ifndef MESSAGELIST_UTILS_AGGREGATIONCOMBOBOX_P_H +#define MESSAGELIST_UTILS_AGGREGATIONCOMBOBOX_P_H namespace MessageList { namespace Core { @@ -47,4 +47,4 @@ } // namespace Utils } // namespace MessageList -#endif //!__MESSAGELIST_UTILS_AGGREGATIONCOMBOBOX_P_H__ +#endif //!__MESSAGELIST_UTILS_AGGREGATIONCOMBOBOX_P_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/aggregationconfigbutton.h kf5-messagelib-18.04.3/messagelist/src/utils/aggregationconfigbutton.h --- kf5-messagelib-17.12.3/messagelist/src/utils/aggregationconfigbutton.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/aggregationconfigbutton.h 2018-07-06 05:43:41.000000000 +0000 @@ -16,8 +16,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef __MESSAGELIST_UTILS_AGGREGATIONCONFIGBUTTON_H__ -#define __MESSAGELIST_UTILS_AGGREGATIONCONFIGBUTTON_H__ +#ifndef MESSAGELIST_UTILS_AGGREGATIONCONFIGBUTTON_H +#define MESSAGELIST_UTILS_AGGREGATIONCONFIGBUTTON_H #include #include @@ -51,11 +51,9 @@ void configureDialogCompleted(); private: - Q_PRIVATE_SLOT(d, void slotConfigureAggregations()) - AggregationConfigButtonPrivate *const d; }; } // namespace Utils } // namespace MessageList -#endif //!__MESSAGELIST_UTILS_AGGREGATIONCONFIGBUTTON_H__ +#endif //!__MESSAGELIST_UTILS_AGGREGATIONCONFIGBUTTON_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/aggregationeditor.cpp kf5-messagelib-18.04.3/messagelist/src/utils/aggregationeditor.cpp --- kf5-messagelib-17.12.3/messagelist/src/utils/aggregationeditor.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/aggregationeditor.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -154,27 +154,27 @@ mCurrentAggregation->setDescription(descriptionEdit()->toPlainText()); mCurrentAggregation->setGrouping( - (Aggregation::Grouping)ComboBoxUtils::getIntegerOptionComboValue(mGroupingCombo, 0) + static_cast(ComboBoxUtils::getIntegerOptionComboValue(mGroupingCombo, 0)) ); mCurrentAggregation->setGroupExpandPolicy( - (Aggregation::GroupExpandPolicy)ComboBoxUtils::getIntegerOptionComboValue(mGroupExpandPolicyCombo, 0) + static_cast(ComboBoxUtils::getIntegerOptionComboValue(mGroupExpandPolicyCombo, 0)) ); mCurrentAggregation->setThreading( - (Aggregation::Threading)ComboBoxUtils::getIntegerOptionComboValue(mThreadingCombo, 0) + static_cast(ComboBoxUtils::getIntegerOptionComboValue(mThreadingCombo, 0)) ); mCurrentAggregation->setThreadLeader( - (Aggregation::ThreadLeader)ComboBoxUtils::getIntegerOptionComboValue(mThreadLeaderCombo, 0) + static_cast(ComboBoxUtils::getIntegerOptionComboValue(mThreadLeaderCombo, 0)) ); mCurrentAggregation->setThreadExpandPolicy( - (Aggregation::ThreadExpandPolicy)ComboBoxUtils::getIntegerOptionComboValue(mThreadExpandPolicyCombo, 0) + static_cast(ComboBoxUtils::getIntegerOptionComboValue(mThreadExpandPolicyCombo, 0)) ); mCurrentAggregation->setFillViewStrategy( - (Aggregation::FillViewStrategy)ComboBoxUtils::getIntegerOptionComboValue(mFillViewStrategyCombo, 0) + static_cast(ComboBoxUtils::getIntegerOptionComboValue(mFillViewStrategyCombo, 0)) ); } diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/aggregationeditor.h kf5-messagelib-18.04.3/messagelist/src/utils/aggregationeditor.h --- kf5-messagelib-17.12.3/messagelist/src/utils/aggregationeditor.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/aggregationeditor.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_UTILS_AGGREGATIONEDITOR_H__ -#define __MESSAGELIST_UTILS_AGGREGATIONEDITOR_H__ +#ifndef MESSAGELIST_UTILS_AGGREGATIONEDITOR_H +#define MESSAGELIST_UTILS_AGGREGATIONEDITOR_H #include @@ -41,7 +41,7 @@ Q_OBJECT public: explicit AggregationEditor(QWidget *parent); - ~AggregationEditor(); + ~AggregationEditor() override; private: Core::Aggregation *mCurrentAggregation = nullptr; // shallow, may be null! @@ -108,4 +108,4 @@ } // namespace Utils } // namespace MessageList -#endif //!__MESSAGELIST_UTILS_AGGREGATIONEDITOR_H__ +#endif //!__MESSAGELIST_UTILS_AGGREGATIONEDITOR_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/comboboxutils.h kf5-messagelib-18.04.3/messagelist/src/utils/comboboxutils.h --- kf5-messagelib-17.12.3/messagelist/src/utils/comboboxutils.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/comboboxutils.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_UTILS_COMBOBOXUTILS_H__ -#define __MESSAGELIST_UTILS_COMBOBOXUTILS_H__ +#ifndef MESSAGELIST_UTILS_COMBOBOXUTILS_H +#define MESSAGELIST_UTILS_COMBOBOXUTILS_H #include #include @@ -54,4 +54,4 @@ } // namespace Utils } // namespace MessageList -#endif //!__MESSAGELIST_UTILS_COMBOBOXUTILS_H__ +#endif //!__MESSAGELIST_UTILS_COMBOBOXUTILS_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/configureaggregationsdialog.cpp kf5-messagelib-18.04.3/messagelist/src/utils/configureaggregationsdialog.cpp --- kf5-messagelib-17.12.3/messagelist/src/utils/configureaggregationsdialog.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/configureaggregationsdialog.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -169,8 +169,7 @@ d->mEditor = new AggregationEditor(base); g->addWidget(d->mEditor, 8, 0, 1, 2); - connect(d->mEditor, SIGNAL(aggregationNameChanged()), - SLOT(editedAggregationNameChanged())); + connect(d->mEditor, &AggregationEditor::aggregationNameChanged, this, [this]() { d->editedAggregationNameChanged(); }); g->setColumnStretch(0, 1); g->setRowStretch(7, 1); diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/configureaggregationsdialog.h kf5-messagelib-18.04.3/messagelist/src/utils/configureaggregationsdialog.h --- kf5-messagelib-17.12.3/messagelist/src/utils/configureaggregationsdialog.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/configureaggregationsdialog.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_UTILS_CONFIGUREAGGREGATIONSDIALOG_H__ -#define __MESSAGELIST_UTILS_CONFIGUREAGGREGATIONSDIALOG_H__ +#ifndef MESSAGELIST_UTILS_CONFIGUREAGGREGATIONSDIALOG_H +#define MESSAGELIST_UTILS_CONFIGUREAGGREGATIONSDIALOG_H #include @@ -51,13 +51,10 @@ void okClicked(); private: - Q_PRIVATE_SLOT(d, void aggregationListItemClicked(QListWidgetItem *cur)) - Q_PRIVATE_SLOT(d, void editedAggregationNameChanged()) - class Private; Private *const d; }; } // namespace Utils } // namespace MessageList -#endif //!__MESSAGELIST_UTILS_CONFIGUREAGGREGATIONSDIALOG_H__ +#endif //!__MESSAGELIST_UTILS_CONFIGUREAGGREGATIONSDIALOG_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/configureaggregationsdialog_p.h kf5-messagelib-18.04.3/messagelist/src/utils/configureaggregationsdialog_p.h --- kf5-messagelib-17.12.3/messagelist/src/utils/configureaggregationsdialog_p.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/configureaggregationsdialog_p.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_UTILS_CONFIGUREAGGREGATIONSDIALOG_P_H__ -#define __MESSAGELIST_UTILS_CONFIGUREAGGREGATIONSDIALOG_P_H__ +#ifndef MESSAGELIST_UTILS_CONFIGUREAGGREGATIONSDIALOG_P_H +#define MESSAGELIST_UTILS_CONFIGUREAGGREGATIONSDIALOG_P_H #include "utils/configureaggregationsdialog.h" @@ -81,4 +81,4 @@ } // namespace Utils } // namespace MessageList -#endif //!__MESSAGELIST_UTILS_CONFIGUREAGGREGATIONSDIALOG_P_H__ +#endif //!__MESSAGELIST_UTILS_CONFIGUREAGGREGATIONSDIALOG_P_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/configurethemesdialog.cpp kf5-messagelib-18.04.3/messagelist/src/utils/configurethemesdialog.cpp --- kf5-messagelib-17.12.3/messagelist/src/utils/configurethemesdialog.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/configurethemesdialog.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -118,8 +118,8 @@ d->mThemeList->setSortingEnabled(true); g->addWidget(d->mThemeList, 0, 0, 7, 1); - connect(d->mThemeList, SIGNAL(itemClicked(QListWidgetItem*)), - SLOT(themeListItemClicked(QListWidgetItem*))); + connect(d->mThemeList, &ThemeListWidget::itemClicked, + this, [this](QListWidgetItem *item) { d->themeListItemClicked(item); }); d->mNewThemeButton = new QPushButton(i18n("New Theme"), base); d->mNewThemeButton->setIcon(QIcon::fromTheme(QStringLiteral("document-new"))); @@ -133,8 +133,7 @@ d->mCloneThemeButton->setIconSize(QSize(KIconLoader::SizeSmall, KIconLoader::SizeSmall)); g->addWidget(d->mCloneThemeButton, 1, 1); - connect(d->mCloneThemeButton, SIGNAL(clicked()), - SLOT(cloneThemeButtonClicked())); + connect(d->mCloneThemeButton, &QPushButton::clicked, this, [this]() { d->cloneThemeButtonClicked(); }); QFrame *f = new QFrame(base); f->setFrameStyle(QFrame::Sunken | QFrame::HLine); @@ -144,13 +143,11 @@ d->mExportThemeButton = new QPushButton(i18n("Export Theme..."), base); g->addWidget(d->mExportThemeButton, 3, 1); - connect(d->mExportThemeButton, SIGNAL(clicked()), - SLOT(exportThemeButtonClicked())); + connect(d->mExportThemeButton, &QPushButton::clicked, this, [this]() { d->exportThemeButtonClicked(); }); d->mImportThemeButton = new QPushButton(i18n("Import Theme..."), base); g->addWidget(d->mImportThemeButton, 4, 1); - connect(d->mImportThemeButton, SIGNAL(clicked()), - SLOT(importThemeButtonClicked())); + connect(d->mImportThemeButton, &QPushButton::clicked, this, [this]() { d->importThemeButtonClicked(); }); f = new QFrame(base); f->setFrameStyle(QFrame::Sunken | QFrame::HLine); @@ -162,18 +159,17 @@ d->mDeleteThemeButton->setIconSize(QSize(KIconLoader::SizeSmall, KIconLoader::SizeSmall)); g->addWidget(d->mDeleteThemeButton, 6, 1); - connect(d->mDeleteThemeButton, SIGNAL(clicked()), SLOT(deleteThemeButtonClicked())); + connect(d->mDeleteThemeButton, &QPushButton::clicked, this, [this]() { d->deleteThemeButtonClicked(); }); d->mEditor = new ThemeEditor(base); g->addWidget(d->mEditor, 8, 0, 1, 2); - connect(d->mEditor, SIGNAL(themeNameChanged()), - SLOT(editedThemeNameChanged())); + connect(d->mEditor, &ThemeEditor::themeNameChanged, this, [this]() { d->editedThemeNameChanged(); }); g->setColumnStretch(0, 1); g->setRowStretch(4, 1); - connect(okButton, SIGNAL(clicked()), SLOT(okButtonClicked())); + connect(okButton, &QPushButton::clicked, this, [this]() { d->okButtonClicked(); } ); d->fillThemeList(); } diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/configurethemesdialog.h kf5-messagelib-18.04.3/messagelist/src/utils/configurethemesdialog.h --- kf5-messagelib-17.12.3/messagelist/src/utils/configurethemesdialog.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/configurethemesdialog.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_UTILS_CONFIGURETHEMESDIALOG_H__ -#define __MESSAGELIST_UTILS_CONFIGURETHEMESDIALOG_H__ +#ifndef MESSAGELIST_UTILS_CONFIGURETHEMESDIALOG_H +#define MESSAGELIST_UTILS_CONFIGURETHEMESDIALOG_H #include @@ -41,18 +41,10 @@ void okClicked(); private: - Q_PRIVATE_SLOT(d, void themeListItemClicked(QListWidgetItem *)) - Q_PRIVATE_SLOT(d, void cloneThemeButtonClicked()) - Q_PRIVATE_SLOT(d, void deleteThemeButtonClicked()) - Q_PRIVATE_SLOT(d, void editedThemeNameChanged()) - Q_PRIVATE_SLOT(d, void okButtonClicked()) - Q_PRIVATE_SLOT(d, void importThemeButtonClicked()) - Q_PRIVATE_SLOT(d, void exportThemeButtonClicked()) - class Private; Private *const d; }; } // namespace Utils } // namespace MessageList -#endif //!__MESSAGELIST_UTILS_CONFIGURESKINSDIALOG_H__ +#endif //!__MESSAGELIST_UTILS_CONFIGURESKINSDIALOG_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/configurethemesdialog_p.h kf5-messagelib-18.04.3/messagelist/src/utils/configurethemesdialog_p.h --- kf5-messagelib-17.12.3/messagelist/src/utils/configurethemesdialog_p.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/configurethemesdialog_p.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_UTILS_CONFIGURETHEMESDIALOG_P_H__ -#define __MESSAGELIST_UTILS_CONFIGURETHEMESDIALOG_P_H__ +#ifndef MESSAGELIST_UTILS_CONFIGURETHEMESDIALOG_P_H +#define MESSAGELIST_UTILS_CONFIGURETHEMESDIALOG_P_H #include "utils/configurethemesdialog.h" @@ -70,4 +70,4 @@ } // namespace Utils } // namespace MessageList -#endif //!__MESSAGELIST_UTILS_CONFIGURESKINSDIALOG_P_H__ +#endif //!__MESSAGELIST_UTILS_CONFIGURESKINSDIALOG_P_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/optionseteditor.h kf5-messagelib-18.04.3/messagelist/src/utils/optionseteditor.h --- kf5-messagelib-17.12.3/messagelist/src/utils/optionseteditor.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/optionseteditor.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_UTILS_OPTIONSETEDITOR_H__ -#define __MESSAGELIST_UTILS_OPTIONSETEDITOR_H__ +#ifndef MESSAGELIST_UTILS_OPTIONSETEDITOR_H +#define MESSAGELIST_UTILS_OPTIONSETEDITOR_H #include @@ -72,4 +72,4 @@ } // namespace Utils } // namespace MessageList -#endif //!__MESSAGELIST_UTILS_OPTIONSETEDITOR_H__ +#endif //!__MESSAGELIST_UTILS_OPTIONSETEDITOR_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/themecombobox.h kf5-messagelib-18.04.3/messagelist/src/utils/themecombobox.h --- kf5-messagelib-17.12.3/messagelist/src/utils/themecombobox.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/themecombobox.h 2018-07-06 05:43:41.000000000 +0000 @@ -16,8 +16,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef __MESSAGELIST_UTILS_THEMECOMBOBOX_H__ -#define __MESSAGELIST_UTILS_THEMECOMBOBOX_H__ +#ifndef MESSAGELIST_UTILS_THEMECOMBOBOX_H +#define MESSAGELIST_UTILS_THEMECOMBOBOX_H #include #include @@ -62,4 +62,4 @@ } // namespace Utils } // namespace MessageList -#endif //!__MESSAGELIST_UTILS_THEMECOMBOBOX_H__ +#endif //!__MESSAGELIST_UTILS_THEMECOMBOBOX_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/themecombobox_p.h kf5-messagelib-18.04.3/messagelist/src/utils/themecombobox_p.h --- kf5-messagelib-17.12.3/messagelist/src/utils/themecombobox_p.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/themecombobox_p.h 2018-07-06 05:43:41.000000000 +0000 @@ -16,8 +16,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef __MESSAGELIST_UTILS_THEMECOMBOBOX_P_H__ -#define __MESSAGELIST_UTILS_THEMECOMBOBOX_P_H__ +#ifndef MESSAGELIST_UTILS_THEMECOMBOBOX_P_H +#define MESSAGELIST_UTILS_THEMECOMBOBOX_P_H namespace MessageList { namespace Core { @@ -47,4 +47,4 @@ } // namespace Utils } // namespace MessageList -#endif //!__MESSAGELIST_UTILS_THEMECOMBOBOX_P_H__ +#endif //!__MESSAGELIST_UTILS_THEMECOMBOBOX_P_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/themeconfigbutton.h kf5-messagelib-18.04.3/messagelist/src/utils/themeconfigbutton.h --- kf5-messagelib-17.12.3/messagelist/src/utils/themeconfigbutton.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/themeconfigbutton.h 2018-07-06 05:43:41.000000000 +0000 @@ -16,8 +16,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef __MESSAGELIST_UTILS_THEMECONFIGBUTTON_H__ -#define __MESSAGELIST_UTILS_THEMECONFIGBUTTON_H__ +#ifndef MESSAGELIST_UTILS_THEMECONFIGBUTTON_H +#define MESSAGELIST_UTILS_THEMECONFIGBUTTON_H #include #include @@ -55,4 +55,4 @@ } // namespace Utils } // namespace MessageList -#endif //!__MESSAGELIST_UTILS_THEMECONFIGBUTTON_H__ +#endif //!__MESSAGELIST_UTILS_THEMECONFIGBUTTON_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/utils/themeeditor.h kf5-messagelib-18.04.3/messagelist/src/utils/themeeditor.h --- kf5-messagelib-17.12.3/messagelist/src/utils/themeeditor.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/utils/themeeditor.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,12 +18,12 @@ * *******************************************************************************/ -#ifndef __MESSAGELIST_UTILS_THEMEEDITOR_H__ -#define __MESSAGELIST_UTILS_THEMEEDITOR_H__ +#ifndef MESSAGELIST_UTILS_THEMEEDITOR_H +#define MESSAGELIST_UTILS_THEMEEDITOR_H -#include -#include -#include +#include "utils/optionseteditor.h" +#include "core/themedelegate.h" +#include "core/theme.h" #include #include @@ -231,4 +231,4 @@ } // namespace Utils } // namespace MessageList -#endif //!__MESSAGELIST_UTILS_SKINEDITOR_H__ +#endif //!__MESSAGELIST_UTILS_SKINEDITOR_H diff -Nru kf5-messagelib-17.12.3/messagelist/src/widget.cpp kf5-messagelib-18.04.3/messagelist/src/widget.cpp --- kf5-messagelib-17.12.3/messagelist/src/widget.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/widget.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -418,7 +418,7 @@ action = DragCopy; } else { action = DragCancel; - int keybstate = QApplication::keyboardModifiers(); + const auto keybstate = QApplication::keyboardModifiers(); if (keybstate & Qt::CTRL) { action = DragCopy; } else if (keybstate & Qt::SHIFT) { diff -Nru kf5-messagelib-17.12.3/messagelist/src/widget.h kf5-messagelib-18.04.3/messagelist/src/widget.h --- kf5-messagelib-17.12.3/messagelist/src/widget.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messagelist/src/widget.h 2018-07-06 05:43:41.000000000 +0000 @@ -16,13 +16,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifndef __MESSAGELIST_WIDGET_H__ -#define __MESSAGELIST_WIDGET_H__ +#ifndef MESSAGELIST_WIDGET_H +#define MESSAGELIST_WIDGET_H -#include -#include -#include -#include +#include +#include +#include #include #include @@ -51,7 +50,7 @@ * Create a new message list widget. */ explicit Widget(QWidget *parent); - ~Widget(); + ~Widget() override; /** * Sets the XML GUI client which the view is used in. @@ -410,4 +409,4 @@ }; } // namespace MessageList -#endif //!__MESSAGELIST_WIDGET_H__ +#endif //!__MESSAGELIST_WIDGET_H diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/CMakeLists.txt kf5-messagelib-18.04.3/messageviewer/autotests/CMakeLists.txt --- kf5-messagelib-17.12.3/messageviewer/autotests/CMakeLists.txt 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/CMakeLists.txt 2018-07-06 05:43:41.000000000 +0000 @@ -1,12 +1,17 @@ set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}) +add_definitions( -DMAIL_DATA_DIR="${CMAKE_SOURCE_DIR}/mimetreeparser/autotests/data" ) add_definitions( -DGRANTLEETHEME_DATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/data" ) + +set(test_libmessageviewer_SRCS) +ecm_qt_declare_logging_category(test_libmessageviewer_SRCS HEADER messageviewer_debug.h IDENTIFIER MESSAGEVIEWER_LOG CATEGORY_NAME org.kde.pim.messageviewer) + # convenience macro to add qtest unit tests macro(add_messageviewer_unittest _source) get_filename_component(_name ${_source} NAME_WE) - ecm_add_test(${_source} + ecm_add_test(${_source} setupenv.cpp util.cpp TEST_NAME ${_name} NAME_PREFIX "messageviewer-" - LINK_LIBRARIES KF5::MessageViewer KF5::Libkleo QGpgme Qt5::Test KF5::KIOCore KF5::Mime KF5::AkonadiCore KF5::CalendarCore + LINK_LIBRARIES KF5::MessageViewer KF5::Libkleo QGpgme Qt5::Test KF5::KIOCore KF5::Mime KF5::AkonadiCore KF5::CalendarCore KF5::WebEngineViewer ) endmacro () @@ -20,11 +25,12 @@ endmacro () add_messageviewer_unittest( messagedisplayformatattributetest.cpp ) +add_messageviewer_unittest(urlhandlermanagertest.cpp) # convenience macro to add qtest unit tests macro(add_messageviewer_mailsourceviewbrowserwidget_unittest _source) get_filename_component(_name ${_source} NAME_WE) - ecm_add_test(${_source} ../src/widgets/mailsourceviewtextbrowserwidget.cpp ../src/findbar/findbarsourceview.cpp + ecm_add_test(${_source} ../src/widgets/mailsourceviewtextbrowserwidget.cpp ../src/findbar/findbarsourceview.cpp ${test_libmessageviewer_SRCS} TEST_NAME ${_name} NAME_PREFIX "messageviewer-" LINK_LIBRARIES Qt5::Test Qt5::Gui Qt5::Widgets KF5::KIOCore KF5::Mime KF5::AkonadiCore KF5::CalendarCore KF5::PimTextEdit KF5::PimCommon KF5::MessageViewer KF5::WebEngineViewer KF5::SyntaxHighlighting KF5::I18n KF5::IconThemes diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/mailsourceviewtextbrowserwidgettest.cpp kf5-messagelib-18.04.3/messageviewer/autotests/mailsourceviewtextbrowserwidgettest.cpp --- kf5-messagelib-17.12.3/messageviewer/autotests/mailsourceviewtextbrowserwidgettest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/mailsourceviewtextbrowserwidgettest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/mailsourceviewtextbrowserwidgettest.h kf5-messagelib-18.04.3/messageviewer/autotests/mailsourceviewtextbrowserwidgettest.h --- kf5-messagelib-17.12.3/messageviewer/autotests/mailsourceviewtextbrowserwidgettest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/mailsourceviewtextbrowserwidgettest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/messagedisplayformatattributetest.cpp kf5-messagelib-18.04.3/messageviewer/autotests/messagedisplayformatattributetest.cpp --- kf5-messagelib-17.12.3/messageviewer/autotests/messagedisplayformatattributetest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/messagedisplayformatattributetest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/messagedisplayformatattributetest.h kf5-messagelib-18.04.3/messageviewer/autotests/messagedisplayformatattributetest.h --- kf5-messagelib-17.12.3/messageviewer/autotests/messagedisplayformatattributetest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/messagedisplayformatattributetest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/setupenv.cpp kf5-messagelib-18.04.3/messageviewer/autotests/setupenv.cpp --- kf5-messagelib-17.12.3/messageviewer/autotests/setupenv.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/setupenv.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -27,8 +27,8 @@ void MessageViewer::Test::setupEnv() { - setenv("LC_ALL", "C", 1); - setenv("KDEHOME", QFile::encodeName(QDir::homePath() + QString::fromLatin1( - "/.qttest")).constData(), 1); + qputenv("LC_ALL", "C"); + qputenv("KDEHOME", QFile::encodeName(QDir::homePath() + QString::fromLatin1( + "/.qttest")).constData()); QStandardPaths::setTestModeEnabled(true); } diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/setupenv.h kf5-messagelib-18.04.3/messageviewer/autotests/setupenv.h --- kf5-messagelib-17.12.3/messageviewer/autotests/setupenv.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/setupenv.h 2018-07-06 05:43:41.000000000 +0000 @@ -21,10 +21,6 @@ #ifndef MESSAGECORE_TESTS_UTIL_H #define MESSAGECORE_TESTS_UTIL_H -#include -#include -#include - namespace MessageViewer { namespace Test { /** diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/urlhandlermanagertest.cpp kf5-messagelib-18.04.3/messageviewer/autotests/urlhandlermanagertest.cpp --- kf5-messagelib-17.12.3/messageviewer/autotests/urlhandlermanagertest.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/urlhandlermanagertest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,127 @@ +/* + Copyright (c) 2017 Sandro Knauß + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "urlhandlermanagertest.h" + +#include "util.h" +#include "viewer/viewer.h" +#include "viewer/viewer_p.h" +#include "viewer/urlhandlermanager_p.h" + +#include +#include + +#include + +#include + +using namespace MessageViewer; + +class TestBodyPartURLHandler : public Interface::BodyPartURLHandler +{ +public: + void testPath(QString path) const + { + QCOMPARE(path, mPath); + } + + void testViewer(MessageViewer::Viewer *viewerInstance) const + { + QCOMPARE(viewerInstance, mViewerInstance); + } + + void testContent(KMime::Content *content) const + { + QCOMPARE(content, mContent); + } + + bool handleClick(MessageViewer::Viewer *viewerInstance, MimeTreeParser::Interface::BodyPart *part, const QString &path) const override + { + testContent(part->content()); + testViewer(viewerInstance); + testPath(path); + return mHandleClick; + } + + bool handleContextMenuRequest(MimeTreeParser::Interface::BodyPart *part, const QString &path, const QPoint &p) const override + { + Q_UNUSED(p); + testContent(part->content()); + testPath(path); + return mHandleContextMenuRequest; + } + + QString statusBarMessage(MimeTreeParser::Interface::BodyPart *part, const QString &path) const override + { + testContent(part->content()); + testPath(path); + return mStatusBarMessageRet; + } + + QString mPath; + QString mStatusBarMessageRet; + bool mHandleClick; + bool mHandleContextMenuRequest; + MessageViewer::Viewer *mViewerInstance; + KMime::Content *mContent; +}; + +BodyPartUrlHandlerManagerTest::BodyPartUrlHandlerManagerTest(QObject *parent) + : QObject(parent) +{ +} + +void BodyPartUrlHandlerManagerTest::testHandleClick_data() +{ + QTest::addColumn("url"); + QTest::addColumn("path"); + QTest::addColumn("index"); + QTest::addColumn("ret"); + + QTest::newRow("completly_empty") << "" << QStringLiteral("") << KMime::ContentIndex() << false; + QTest::newRow("empty") << "x-kmail:" << QStringLiteral("") << KMime::ContentIndex() << false; + QTest::newRow("pgpkey") << "x-kmail:/bodypart/1234/2/pgpkey" << QStringLiteral("pgpkey") << KMime::ContentIndex(QStringLiteral("2")) << true; + QTest::newRow("test") << "x-kmail:/bodypart/1234/1/test" << QStringLiteral("test") << KMime::ContentIndex(QStringLiteral("1")) << true; + QTest::newRow("test_with_arguments") << "x-kmail:/bodypart/1234/1/test?foo=qua" << QStringLiteral("test?foo=qua") << KMime::ContentIndex(QStringLiteral("1")) << true; +} + +void BodyPartUrlHandlerManagerTest::testHandleClick() +{ + QFETCH(QString, url); + QFETCH(QString, path); + QFETCH(KMime::ContentIndex, index); + QFETCH(bool, ret); + + BodyPartURLHandlerManager manager; + TestBodyPartURLHandler handler; + + manager.registerHandler(&handler, QStringLiteral("")); + Viewer v(nullptr); + ViewerPrivate vp(&v, nullptr, nullptr); + const KMime::Message::Ptr msg(Test::readAndParseMail(QStringLiteral("encapsulated-with-attachment.mbox"))); + vp.setMessage(msg, MimeTreeParser::Delayed); + + handler.mViewerInstance = &v; + handler.mPath = path; + handler.mHandleClick = true; + handler.mContent = msg->content(index); + + QCOMPARE(manager.handleClick(QUrl(url), &vp), ret); + manager.unregisterHandler(&handler); +} + +QTEST_MAIN(BodyPartUrlHandlerManagerTest) diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/urlhandlermanagertest.h kf5-messagelib-18.04.3/messageviewer/autotests/urlhandlermanagertest.h --- kf5-messagelib-17.12.3/messageviewer/autotests/urlhandlermanagertest.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/urlhandlermanagertest.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,34 @@ +/* + Copyright (c) 2017 Sandro Knauß + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef BODYPARTURLHANDLERMANAGERTEST_H +#define BODYPARTURLHANDLERMANAGERTEST_H + +#include + +class BodyPartUrlHandlerManagerTest : public QObject +{ + Q_OBJECT +public: + explicit BodyPartUrlHandlerManagerTest(QObject *parent = nullptr); + +private Q_SLOTS: + void testHandleClick_data(); + void testHandleClick(); +}; + +#endif // BODYPARTURLHANDLERMANAGERTEST_H diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/util.cpp kf5-messagelib-18.04.3/messageviewer/autotests/util.cpp --- kf5-messagelib-17.12.3/messageviewer/autotests/util.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/util.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,34 @@ +/* + Copyright (c) 2010 Thomas McGuire + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. +*/ +#include "util.h" + +#include +#include + +KMime::Message::Ptr MessageViewer::Test::readAndParseMail(const QString &mailFile) +{ + QFile file(QStringLiteral(MAIL_DATA_DIR) + QLatin1Char('/') + mailFile); + Q_ASSERT(file.open(QIODevice::ReadOnly)); + const QByteArray data = KMime::CRLFtoLF(file.readAll()); + Q_ASSERT(!data.isEmpty()); + KMime::Message::Ptr msg(new KMime::Message); + msg->setContent(data); + msg->parse(); + return msg; +} diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/util.h kf5-messagelib-18.04.3/messageviewer/autotests/util.h --- kf5-messagelib-17.12.3/messageviewer/autotests/util.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/util.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,31 @@ +/* + Copyright (c) 2010 Thomas McGuire + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. +*/ + +#ifndef MESSAGEVIEWER_TESTS_UTIL_H +#define MESSAGEVIEWER_TESTS_UTIL_H + +#include + +namespace MessageViewer { +namespace Test { +KMime::Message::Ptr readAndParseMail(const QString &mailFile); +} +} + +#endif //__MESSAGEVIEWER_TESTS_UTIL_H diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/viewergrantleethemesupporttest.cpp kf5-messagelib-18.04.3/messageviewer/autotests/viewergrantleethemesupporttest.cpp --- kf5-messagelib-17.12.3/messageviewer/autotests/viewergrantleethemesupporttest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/viewergrantleethemesupporttest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2017 Montel Laurent + Copyright (C) 2017-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as @@ -48,7 +48,7 @@ MessageViewer::Viewer *viewer = new MessageViewer::Viewer(nullptr, nullptr, new KActionCollection( this)); viewer->show(); - QTest::qWaitForWindowExposed(viewer); + QVERIFY(QTest::qWaitForWindowExposed(viewer)); } QTEST_MAIN(ViewerGrantleeThemeSupportTest) diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/viewergrantleethemesupporttest.h kf5-messagelib-18.04.3/messageviewer/autotests/viewergrantleethemesupporttest.h --- kf5-messagelib-17.12.3/messageviewer/autotests/viewergrantleethemesupporttest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/viewergrantleethemesupporttest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2017 Montel Laurent + Copyright (C) 2017-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/viewertest.cpp kf5-messagelib-18.04.3/messageviewer/autotests/viewertest.cpp --- kf5-messagelib-17.12.3/messageviewer/autotests/viewertest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/viewertest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as @@ -30,7 +30,7 @@ MessageViewer::Viewer *viewer = new MessageViewer::Viewer(nullptr, nullptr, new KActionCollection( this)); viewer->show(); - QTest::qWaitForWindowExposed(viewer); + QVERIFY(QTest::qWaitForWindowExposed(viewer)); QWidget *mViewer = viewer->findChild(QStringLiteral("mViewer")); QVERIFY(mViewer); diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/viewertest.h kf5-messagelib-18.04.3/messageviewer/autotests/viewertest.h --- kf5-messagelib-17.12.3/messageviewer/autotests/viewertest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/viewertest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messageviewer/autotests/zoomactionmenutest.h kf5-messagelib-18.04.3/messageviewer/autotests/zoomactionmenutest.h --- kf5-messagelib-17.12.3/messageviewer/autotests/zoomactionmenutest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/autotests/zoomactionmenutest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Montel Laurent + Copyright (c) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messageviewer/KF5MessageViewerConfig.cmake.in kf5-messagelib-18.04.3/messageviewer/KF5MessageViewerConfig.cmake.in --- kf5-messagelib-17.12.3/messageviewer/KF5MessageViewerConfig.cmake.in 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/KF5MessageViewerConfig.cmake.in 2018-07-06 05:43:41.000000000 +0000 @@ -6,5 +6,6 @@ find_dependency(KF5Akonadi "@AKONADIMIME_LIB_VERSION@") find_dependency(KF5Mime "@KMIME_LIB_VERSION@") find_dependency(KF5Contacts "@KCONTACTS_LIB_VERSION@") +find_dependency(KF5Libkleo "@LIBKLEO_LIB_VERSION@") include("${CMAKE_CURRENT_LIST_DIR}/KF5MessageViewerTargets.cmake") diff -Nru kf5-messagelib-17.12.3/messageviewer/src/antispam/antispamconfig.cpp kf5-messagelib-18.04.3/messageviewer/src/antispam/antispamconfig.cpp --- kf5-messagelib-17.12.3/messageviewer/src/antispam/antispamconfig.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/antispam/antispamconfig.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -64,8 +64,8 @@ KConfig config(QStringLiteral("kmail.antispamrc")); config.setReadDefaults(true); KConfigGroup general(&config, "General"); - unsigned int totalTools = general.readEntry("tools", 0); - for (unsigned int i = 1; i <= totalTools; ++i) { + int totalTools = general.readEntry("tools", 0); + for (int i = 1; i <= totalTools; ++i) { KConfigGroup tool(&config, QStringLiteral("Spamtool #%1").arg(i)); if (tool.hasKey("ScoreHeader")) { const QString name = tool.readEntry("ScoreName"); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/antispam/antispamconfig.h kf5-messagelib-18.04.3/messageviewer/src/antispam/antispamconfig.h --- kf5-messagelib-17.12.3/messageviewer/src/antispam/antispamconfig.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/antispam/antispamconfig.h 2018-07-06 05:43:41.000000000 +0000 @@ -31,8 +31,8 @@ your version. */ -#ifndef __MESSAGEVIEWER_ANTISPAMCONFIG_H__ -#define __MESSAGEVIEWER_ANTISPAMCONFIG_H__ +#ifndef MESSAGEVIEWER_ANTISPAMCONFIG_H +#define MESSAGEVIEWER_ANTISPAMCONFIG_H #include #include @@ -156,4 +156,4 @@ }; } -#endif // __MESSAGEVIEWER_ANTISPAMCONFIG_H__ +#endif // MESSAGEVIEWER_ANTISPAMCONFIG_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/antispam/spamheaderanalyzer.h kf5-messagelib-18.04.3/messageviewer/src/antispam/spamheaderanalyzer.h --- kf5-messagelib-17.12.3/messageviewer/src/antispam/spamheaderanalyzer.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/antispam/spamheaderanalyzer.h 2018-07-06 05:43:41.000000000 +0000 @@ -31,8 +31,8 @@ your version. */ -#ifndef __MESSAGEVIEWER_SPAMHEADERANALYZER_H__ -#define __MESSAGEVIEWER_SPAMHEADERANALYZER_H__ +#ifndef MESSAGEVIEWER_SPAMHEADERANALYZER_H +#define MESSAGEVIEWER_SPAMHEADERANALYZER_H #include @@ -142,4 +142,4 @@ }; } -#endif // __SPAMHEADERANALYZER_H__ +#endif // SPAMHEADERANALYZER_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/CMakeLists.txt kf5-messagelib-18.04.3/messageviewer/src/CMakeLists.txt --- kf5-messagelib-17.12.3/messageviewer/src/CMakeLists.txt 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/CMakeLists.txt 2018-07-06 05:43:41.000000000 +0000 @@ -40,6 +40,7 @@ add_subdirectory(viewer/webengine/tests) add_subdirectory(messagepartthemes/default/autotests) add_subdirectory(viewer/webengine/autotests) + add_subdirectory(widgets/autotests/) endif() add_subdirectory(pics) add_subdirectory(kconf_update) @@ -55,10 +56,12 @@ viewer/webengine/loadexternalreferencesurlinterceptor/loadexternalreferencesurlinterceptor.cpp viewer/webengine/cidreferencesurlinterceptor/cidreferencesurlinterceptor.cpp viewer/webengine/blockexternalresourcesurlinterceptor/blockexternalresourcesurlinterceptor.cpp + viewer/webengine/blockmailtrackingurlinterceptor/blockmailtrackingurlinterceptor.cpp viewer/webengine/mailwebenginescript.cpp ) set(libmessageviewer_viewer_SRCS + viewer/attachmentstrategy.cpp viewer/csshelper.cpp viewer/csshelperbase.cpp viewer/editorwatcher.cpp @@ -82,6 +85,8 @@ widgets/openattachmentfolderwidget.cpp widgets/mailsourceviewtextbrowserwidget.cpp widgets/submittedformwarningwidget.cpp + widgets/mailtrackingwarningwidget.cpp + widgets/mailtrackingdetailsdialog.cpp ) set(libmessageviewer_widgets_webengine_SRCS @@ -134,13 +139,18 @@ htmlwriter/webengineembedpart.cpp ) +set(libmessageviewer_htmlwriter_SRCS + ${libmessageviewer_htmlwriter_webengine_SRCS} + htmlwriter/bufferedhtmlwriter.cpp + htmlwriter/filehtmlwriter.cpp + ) + set(libmessageviewer_antispam_SRCS antispam/spamheaderanalyzer.cpp antispam/antispamconfig.cpp ) set(libmessageviewer_job_SRCS - job/attachmenteditjob.cpp job/modifymessagedisplayformatjob.cpp ) @@ -165,9 +175,13 @@ messagepartthemes/default/messagepartrendererfactory.cpp ) +set(libmessageviewer_interfaces_SRCS + interfaces/htmlwriter.cpp + ) + set(libmessageviewer_SRCS ${libmessageviewer_messagepartthemes_default_SRCS} - ${libmessageviewer_htmlwriter_webengine_SRCS} + ${libmessageviewer_htmlwriter_SRCS} ${libmessageviewer_messagepartthemes_SRCS} ${libmessageviewer_scamdetection_webengine_SRCS} ${libmessageviewer_widgets_webengine_SRCS} @@ -182,6 +196,7 @@ ${libmessageviewer_viewerplugins_SRCS} settings/messageviewersettings.cpp ${libmessageviewer_mailviewer_SRCS} + ${libmessageviewer_interfaces_SRCS} ) qt5_add_resources(libmessageviewer_SRCS messagepartthemes.qrc) @@ -222,7 +237,6 @@ KF5::LibkdepimAkonadi KF5::GrantleeTheme KF5::KaddressbookGrantlee - Grantlee5::Templates KF5::MailTransportAkonadi KF5::Mime KF5::Mbox @@ -275,6 +289,7 @@ ecm_generate_headers(MessageViewer_Camelcaseviewer_HEADERS HEADER_NAMES + AttachmentStrategy Viewer CSSHelperBase CSSHelper @@ -317,6 +332,7 @@ ecm_generate_headers(MessageViewer_Camelcaseinterfaces_HEADERS HEADER_NAMES + HtmlWriter BodyPartURLHandler URLHandler REQUIRED_HEADERS MessageViewer_interfaces_HEADERS @@ -324,6 +340,15 @@ RELATIVE interfaces ) +ecm_generate_headers(MessageViewer_Camelcasehtmlwriter_HEADERS + HEADER_NAMES + BufferedHtmlWriter + FileHtmlWriter + REQUIRED_HEADERS MessageViewer_htmlwriter_HEADERS + PREFIX MessageViewer + RELATIVE htmlwriter + ) + ecm_generate_headers(MessageViewer_Camelcasesettings_HEADERS HEADER_NAMES MessageViewerSettings @@ -387,6 +412,7 @@ ${MessageViewer_Camelcasesettings_HEADERS} ${MessageViewer_Camelcaseutils_HEADERS} ${MessageViewer_Camelcaseinterfaces_HEADERS} + ${MessageViewer_Camelcasehtmlwriter_HEADERS} ${MessageViewer_Camelcaseviewer_HEADERS} ${MessageViewer_Camelcasewidgets_HEADERS} ${MessageViewer_Camelcaseantispam_HEADERS} @@ -405,6 +431,7 @@ ${MessageViewer_header_HEADERS} ${MessageViewer_utils_HEADERS} ${MessageViewer_interfaces_HEADERS} + ${MessageViewer_htmlwriter_HEADERS} ${MessageViewer_HEADERS} ${MessageViewer_viewer_HEADERS} ${MessageViewer_widgets_HEADERS} diff -Nru kf5-messagelib-17.12.3/messageviewer/src/findbar/findbarsourceview.cpp kf5-messagelib-18.04.3/messageviewer/src/findbar/findbarsourceview.cpp --- kf5-messagelib-17.12.3/messageviewer/src/findbar/findbarsourceview.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/findbar/findbarsourceview.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (C) 2011-2017 Laurent Montel +/* Copyright (C) 2011-2018 Laurent Montel * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/findbar/findbarsourceview.h kf5-messagelib-18.04.3/messageviewer/src/findbar/findbarsourceview.h --- kf5-messagelib-17.12.3/messageviewer/src/findbar/findbarsourceview.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/findbar/findbarsourceview.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (C) 2011-2017 Laurent Montel +/* Copyright (C) 2011-2018 Laurent Montel * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -30,7 +30,7 @@ public: explicit FindBarSourceView(QPlainTextEdit *view, QWidget *parent = nullptr); - ~FindBarSourceView(); + ~FindBarSourceView() override; private: explicit FindBarSourceView(QWidget *parent) diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/contactdisplaymessagememento.cpp kf5-messagelib-18.04.3/messageviewer/src/header/contactdisplaymessagememento.cpp --- kf5-messagelib-17.12.3/messageviewer/src/header/contactdisplaymessagememento.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/contactdisplaymessagememento.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2017 Laurent Montel + * Copyright (C) 2012-2018 Laurent Montel * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -176,7 +176,7 @@ { const QStringList customs = addressee.customs(); for (const QString &custom : customs) { - if (custom.contains(QStringLiteral("MailPreferedFormatting"))) { + if (custom.contains(QLatin1String("MailPreferedFormatting"))) { const QString value = addressee.custom(QStringLiteral("KADDRESSBOOK"), QStringLiteral( "MailPreferedFormatting")); @@ -187,7 +187,7 @@ } else { mForceDisplayTo = Viewer::UseGlobalSetting; } - } else if (custom.contains(QStringLiteral("MailAllowToRemoteContent"))) { + } else if (custom.contains(QLatin1String("MailAllowToRemoteContent"))) { const QString value = addressee.custom(QStringLiteral("KADDRESSBOOK"), QStringLiteral( "MailAllowToRemoteContent")); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/contactdisplaymessagememento.h kf5-messagelib-18.04.3/messageviewer/src/header/contactdisplaymessagememento.h --- kf5-messagelib-17.12.3/messageviewer/src/header/contactdisplaymessagememento.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/contactdisplaymessagememento.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2017 Laurent Montel +/* Copyright (C) 2012-2018 Laurent Montel * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -42,7 +42,7 @@ Q_OBJECT public: explicit ContactDisplayMessageMemento(const QString &emailAddress); - ~ContactDisplayMessageMemento(); + ~ContactDisplayMessageMemento() override; void processAddress(const KContacts::Addressee &addressee); bool allowToRemoteContent() const; KContacts::Picture photo() const; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/grantleeheaderformatter.cpp kf5-messagelib-18.04.3/messageviewer/src/header/grantleeheaderformatter.cpp --- kf5-messagelib-17.12.3/messageviewer/src/header/grantleeheaderformatter.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/grantleeheaderformatter.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -325,6 +325,8 @@ const bool messageHasAttachment = KMime::hasAttachment(message); headerObject.insert(QStringLiteral("hasAttachment"), messageHasAttachment); + headerObject.insert(QStringLiteral("attachmentHtml"), style->attachmentHtml()); + if (messageHasAttachment) { const QString iconPath = MessageViewer::IconNameCache::instance()->iconPath(QStringLiteral( diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/grantleeheaderformatter.h kf5-messagelib-18.04.3/messageviewer/src/header/grantleeheaderformatter.h --- kf5-messagelib-17.12.3/messageviewer/src/header/grantleeheaderformatter.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/grantleeheaderformatter.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/grantleeheaderstyle.cpp kf5-messagelib-18.04.3/messageviewer/src/header/grantleeheaderstyle.cpp --- kf5-messagelib-17.12.3/messageviewer/src/header/grantleeheaderstyle.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/grantleeheaderstyle.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -73,11 +73,6 @@ return d->mGrantleeFormatter->toHtml(settings); } -bool GrantleeHeaderStyle::hasAttachmentQuickList() const -{ - return true; -} - bool GrantleeHeaderStyle::showMailAction() const { return d->mShowMailAction; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/grantleeheaderstyle.h kf5-messagelib-18.04.3/messageviewer/src/header/grantleeheaderstyle.h --- kf5-messagelib-17.12.3/messageviewer/src/header/grantleeheaderstyle.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/grantleeheaderstyle.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -28,15 +28,13 @@ { public: GrantleeHeaderStyle(); - ~GrantleeHeaderStyle(); + ~GrantleeHeaderStyle() override; public: const char *name() const override; QString format(KMime::Message *message) const override; - bool hasAttachmentQuickList() const override; - bool showMailAction() const; void setShowMailAction(bool showAction); private: diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/grantleeheaderteststyle.cpp kf5-messagelib-18.04.3/messageviewer/src/header/grantleeheaderteststyle.cpp --- kf5-messagelib-17.12.3/messageviewer/src/header/grantleeheaderteststyle.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/grantleeheaderteststyle.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -84,8 +84,3 @@ { d->mExtraDisplay = extraDisplay; } - -bool GrantleeHeaderTestStyle::hasAttachmentQuickList() const -{ - return true; -} diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/grantleeheaderteststyle.h kf5-messagelib-18.04.3/messageviewer/src/header/grantleeheaderteststyle.h --- kf5-messagelib-17.12.3/messageviewer/src/header/grantleeheaderteststyle.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/grantleeheaderteststyle.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -30,7 +30,7 @@ friend class GrantleeHeaderStyle; public: GrantleeHeaderTestStyle(); - ~GrantleeHeaderTestStyle(); + ~GrantleeHeaderTestStyle() override; public: const char *name() const override; @@ -41,8 +41,6 @@ void setMainFilename(const QString &); void setExtraDisplayHeaders(const QStringList &); - bool hasAttachmentQuickList() const override; - private: GrantleeHeaderTestStylePrivate *const d; }; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/headerstrategy.cpp kf5-messagelib-18.04.3/messageviewer/src/header/headerstrategy.cpp --- kf5-messagelib-17.12.3/messageviewer/src/header/headerstrategy.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/headerstrategy.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -4,7 +4,7 @@ This file is part of KMail, the KDE mail client. Copyright (c) 2003 Marc Mutz - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel KMail is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/headerstrategy.h kf5-messagelib-18.04.3/messageviewer/src/header/headerstrategy.h --- kf5-messagelib-17.12.3/messageviewer/src/header/headerstrategy.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/headerstrategy.h 2018-07-06 05:43:41.000000000 +0000 @@ -29,8 +29,8 @@ your version. */ -#ifndef __MESSAGEVIEWER_HEADERSTRATEGY_H__ -#define __MESSAGEVIEWER_HEADERSTRATEGY_H__ +#ifndef MESSAGEVIEWER_HEADERSTRATEGY_H +#define MESSAGEVIEWER_HEADERSTRATEGY_H #include "messageviewer_export.h" #include @@ -68,4 +68,4 @@ }; } -#endif // __MESSAGEVIEWER_HEADERSTRATEGY_H__ +#endif // MESSAGEVIEWER_HEADERSTRATEGY_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/headerstyle.cpp kf5-messagelib-18.04.3/messageviewer/src/header/headerstyle.cpp --- kf5-messagelib-17.12.3/messageviewer/src/header/headerstyle.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/headerstyle.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -4,7 +4,7 @@ This file is part of KMail, the KDE mail client. Copyright (c) 2003 Marc Mutz - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel KMail is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as @@ -59,6 +59,7 @@ const HeaderStrategy *mStrategy = nullptr; QString mVCardName; QString mCollectionName; + QString mAttachmentHtml; MimeTreeParser::NodeHelper *mNodeHelper = nullptr; QObject *mSourceObject = nullptr; Akonadi::MessageStatus mMessageStatus; @@ -79,9 +80,14 @@ delete d; } -bool HeaderStyle::hasAttachmentQuickList() const +void HeaderStyle::setAttachmentHtml(const QString &html) { - return false; + d->mAttachmentHtml = html; +} + +QString HeaderStyle::attachmentHtml() const +{ + return d->mAttachmentHtml; } void HeaderStyle::setMessagePath(const QString &path) diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/headerstyle.h kf5-messagelib-18.04.3/messageviewer/src/header/headerstyle.h --- kf5-messagelib-17.12.3/messageviewer/src/header/headerstyle.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/headerstyle.h 2018-07-06 05:43:41.000000000 +0000 @@ -4,7 +4,7 @@ This file is part of KMail, the KDE mail client. Copyright (c) 2003 Marc Mutz - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel KMail is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as @@ -31,8 +31,8 @@ your version. */ -#ifndef __MESSAGEVIEWER_HEADERSTYLE_H__ -#define __MESSAGEVIEWER_HEADERSTYLE_H__ +#ifndef MESSAGEVIEWER_HEADERSTYLE_H +#define MESSAGEVIEWER_HEADERSTYLE_H #include "messageviewer_export.h" @@ -81,9 +81,6 @@ // virtual QString format(KMime::Message *message) const = 0; - // Should return true if this style has an attachment quick list - virtual bool hasAttachmentQuickList() const; - void setMessagePath(const QString &path); QString messagePath() const; @@ -122,9 +119,11 @@ bool showEmoticons() const; void setShowEmoticons(bool b); + void setAttachmentHtml(const QString &html); + QString attachmentHtml() const; private: HeaderStylePrivate *const d; }; } -#endif // __MESSAGEVIEWER_HEADERSTYLE_H__ +#endif // MESSAGEVIEWER_HEADERSTYLE_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/headerstyleinterface.cpp kf5-messagelib-18.04.3/messageviewer/src/header/headerstyleinterface.cpp --- kf5-messagelib-17.12.3/messageviewer/src/header/headerstyleinterface.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/headerstyleinterface.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/headerstyleinterface.h kf5-messagelib-18.04.3/messageviewer/src/header/headerstyleinterface.h --- kf5-messagelib-17.12.3/messageviewer/src/header/headerstyleinterface.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/headerstyleinterface.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -35,7 +35,7 @@ Q_OBJECT public: explicit HeaderStyleInterface(MessageViewer::HeaderStylePlugin *, QObject *parent = nullptr); - virtual ~HeaderStyleInterface(); + ~HeaderStyleInterface() override; QList action() const; virtual void createAction(KActionMenu *menu, QActionGroup *actionGroup, KActionCollection *ac) = 0; virtual void activateAction() = 0; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/headerstylemenumanager.cpp kf5-messagelib-18.04.3/messageviewer/src/header/headerstylemenumanager.cpp --- kf5-messagelib-17.12.3/messageviewer/src/header/headerstylemenumanager.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/headerstylemenumanager.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/headerstylemenumanager.h kf5-messagelib-18.04.3/messageviewer/src/header/headerstylemenumanager.h --- kf5-messagelib-17.12.3/messageviewer/src/header/headerstylemenumanager.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/headerstylemenumanager.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/headerstyleplugin.cpp kf5-messagelib-18.04.3/messageviewer/src/header/headerstyleplugin.cpp --- kf5-messagelib-17.12.3/messageviewer/src/header/headerstyleplugin.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/headerstyleplugin.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/headerstyleplugin.h kf5-messagelib-18.04.3/messageviewer/src/header/headerstyleplugin.h --- kf5-messagelib-17.12.3/messageviewer/src/header/headerstyleplugin.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/headerstyleplugin.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/headerstylepluginmanager.cpp kf5-messagelib-18.04.3/messageviewer/src/header/headerstylepluginmanager.cpp --- kf5-messagelib-17.12.3/messageviewer/src/header/headerstylepluginmanager.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/headerstylepluginmanager.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -92,7 +92,7 @@ const QVector plugins = KPluginLoader::findPlugins(QStringLiteral("messageviewer"), []( const KPluginMetaData &md) { - return md.serviceTypes().contains(QStringLiteral("MessageViewerHeaderStyle/Plugin")); + return md.serviceTypes().contains(QLatin1String("MessageViewerHeaderStyle/Plugin")); }); QVectorIterator i(plugins); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/headerstylepluginmanager.h kf5-messagelib-18.04.3/messageviewer/src/header/headerstylepluginmanager.h --- kf5-messagelib-17.12.3/messageviewer/src/header/headerstylepluginmanager.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/headerstylepluginmanager.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/headerstyle_util.cpp kf5-messagelib-18.04.3/messageviewer/src/header/headerstyle_util.cpp --- kf5-messagelib-17.12.3/messageviewer/src/header/headerstyle_util.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/headerstyle_util.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -59,17 +59,19 @@ QString HeaderStyleUtil::strToHtml(const QString &str, KTextToHTML::Options flags) const { - return KTextToHTML::convertToHtml(str, flags); + return KTextToHTML::convertToHtml(str, flags, 4096, 512); } // Prepare the date string (when printing always use the localized date) QString HeaderStyleUtil::dateString(KMime::Message *message, bool printing, HeaderStyleUtilDateFormat dateFormat) const { const QDateTime dateTime = message->date()->dateTime(); - const time_t unixTime = dateTime.toTime_t(); if (!dateTime.isValid()) { + qCDebug(MESSAGEVIEWER_LOG) << "Unable to parse date"; return i18nc("Unknown date", "Unknown"); } + + const time_t unixTime = dateTime.toTime_t(); if (printing) { return KMime::DateFormatter::formatDate(KMime::DateFormatter::Localized, unixTime); } else { @@ -343,7 +345,7 @@ } else if (!photoMemento->photo().url().isEmpty()) { settings.photoURL = photoMemento->photo().url(); if (settings.photoURL.startsWith(QLatin1Char('/'))) { - settings.photoURL.prepend(QStringLiteral("file:")); + settings.photoURL.prepend(QLatin1String("file:")); } } else if (!photoMemento->gravatarPixmap().isNull()) { const QImage photo = photoMemento->gravatarPixmap().toImage(); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/headerstyle_util.h kf5-messagelib-18.04.3/messageviewer/src/header/headerstyle_util.h --- kf5-messagelib-17.12.3/messageviewer/src/header/headerstyle_util.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/headerstyle_util.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/plainheaderstyle.cpp kf5-messagelib-18.04.3/messageviewer/src/header/plainheaderstyle.cpp --- kf5-messagelib-17.12.3/messageviewer/src/header/plainheaderstyle.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/plainheaderstyle.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/plainheaderstyle.h kf5-messagelib-18.04.3/messageviewer/src/header/plainheaderstyle.h --- kf5-messagelib-17.12.3/messageviewer/src/header/plainheaderstyle.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/plainheaderstyle.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -28,7 +28,7 @@ { public: PlainHeaderStyle(); - ~PlainHeaderStyle(); + ~PlainHeaderStyle() override; public: const char *name() const override; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/richheaderstrategy.cpp kf5-messagelib-18.04.3/messageviewer/src/header/richheaderstrategy.cpp --- kf5-messagelib-17.12.3/messageviewer/src/header/richheaderstrategy.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/richheaderstrategy.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -4,7 +4,7 @@ This file is part of KMail, the KDE mail client. Copyright (c) 2003 Marc Mutz - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel KMail is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messageviewer/src/header/richheaderstrategy.h kf5-messagelib-18.04.3/messageviewer/src/header/richheaderstrategy.h --- kf5-messagelib-17.12.3/messageviewer/src/header/richheaderstrategy.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/header/richheaderstrategy.h 2018-07-06 05:43:41.000000000 +0000 @@ -4,7 +4,7 @@ This file is part of KMail, the KDE mail client. Copyright (c) 2003 Marc Mutz - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel KMail is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as @@ -53,7 +53,7 @@ { public: RichHeaderStrategy(); - ~RichHeaderStrategy(); + ~RichHeaderStrategy() override; public: const char *name() const override diff -Nru kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/autotests/webengineembedparttest.cpp kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/autotests/webengineembedparttest.cpp --- kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/autotests/webengineembedparttest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/autotests/webengineembedparttest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/autotests/webengineembedparttest.h kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/autotests/webengineembedparttest.h --- kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/autotests/webengineembedparttest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/autotests/webengineembedparttest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/autotests/webengineparthtmlwritertest.h kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/autotests/webengineparthtmlwritertest.h --- kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/autotests/webengineparthtmlwritertest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/autotests/webengineparthtmlwritertest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/bufferedhtmlwriter.cpp kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/bufferedhtmlwriter.cpp --- kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/bufferedhtmlwriter.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/bufferedhtmlwriter.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,77 @@ +/* + Copyright (c) 2017 Volker Krause + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. +*/ + +#include "bufferedhtmlwriter.h" + +using namespace MessageViewer; + +BufferedHtmlWriter::BufferedHtmlWriter() + : m_buffer(&m_data) +{ +} + +BufferedHtmlWriter::~BufferedHtmlWriter() +{ + HtmlWriter::end(); +} + +void BufferedHtmlWriter::begin() +{ + m_buffer.open(QBuffer::WriteOnly); + HtmlWriter::begin(); +} + +void BufferedHtmlWriter::end() +{ + HtmlWriter::end(); + m_buffer.close(); +} + +void BufferedHtmlWriter::reset() +{ + HtmlWriter::reset(); + m_buffer.close(); + clear(); +} + +QIODevice *BufferedHtmlWriter::device() const +{ + return const_cast(&m_buffer); +} + +void BufferedHtmlWriter::extraHead(const QString &str) +{ + Q_UNUSED(str); +} + +void BufferedHtmlWriter::embedPart(const QByteArray &contentId, const QString &url) +{ + Q_UNUSED(contentId); + Q_UNUSED(url); +} + +QByteArray BufferedHtmlWriter::data() const +{ + return m_data; +} + +void BufferedHtmlWriter::clear() +{ + m_data.clear(); +} diff -Nru kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/bufferedhtmlwriter.h kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/bufferedhtmlwriter.h --- kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/bufferedhtmlwriter.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/bufferedhtmlwriter.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,58 @@ +/* + Copyright (c) 2017 Volker Krause + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. +*/ + +#ifndef MESSAGEVIEWER_BUFFEREDHTMLWRITER_H +#define MESSAGEVIEWER_BUFFEREDHTMLWRITER_H + +#include "messageviewer_export.h" +#include + +#include +#include + +namespace MessageViewer { +/** + * QBuffer-backed HtmlWriter + */ +class MESSAGEVIEWER_EXPORT BufferedHtmlWriter : public HtmlWriter +{ +public: + BufferedHtmlWriter(); + ~BufferedHtmlWriter() override; + + void begin() override; + void end() override; + void reset() override; + QIODevice *device() const override; + + QByteArray data() const; + void clear(); + + void extraHead(const QString &str) override; + void embedPart(const QByteArray &contentId, const QString &url) override; + +protected: + QByteArray m_data; + +private: + QBuffer m_buffer; +}; +} + +#endif // MESSAGEVIEWER_BUFFEREDHTMLWRITER_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/filehtmlwriter.cpp kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/filehtmlwriter.cpp --- kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/filehtmlwriter.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/filehtmlwriter.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,89 @@ +/* -*- c++ -*- + filehtmlwriter.cpp + + This file is part of KMail, the KDE mail client. + Copyright (c) 2003 Marc Mutz + + KMail is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation. + + KMail is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + In addition, as a special exception, the copyright holders give + permission to link the code of this program with any edition of + the Qt library by Trolltech AS, Norway (or with modified versions + of Qt that use the same license as Qt), and distribute linked + combinations including the two. You must obey the GNU General + Public License in all respects for all of the code used other than + Qt. If you modify this file, you may extend this exception to + your version of the file, but you are not obligated to do so. If + you do not wish to do so, delete this exception statement from + your version. +*/ + +#include "filehtmlwriter.h" +#include "messageviewer_debug.h" + +using namespace MessageViewer; + +FileHtmlWriter::FileHtmlWriter(const QString &filename) + : mFile(filename.isEmpty() ? QStringLiteral("filehtmlwriter.out") : filename) +{ +} + +FileHtmlWriter::~FileHtmlWriter() +{ + if (mFile.isOpen()) { + qCWarning(MESSAGEVIEWER_LOG) << "FileHtmlWriter: file still open!"; + HtmlWriter::end(); + mFile.close(); + } +} + +void FileHtmlWriter::begin() +{ + if (mFile.isOpen()) { + qCWarning(MESSAGEVIEWER_LOG) << "FileHtmlWriter: file still open!"; + mFile.close(); + } + if (!mFile.open(QIODevice::WriteOnly)) { + qCWarning(MESSAGEVIEWER_LOG) << "FileHtmlWriter: Cannot open file" << mFile.fileName(); + } + HtmlWriter::begin(); +} + +void FileHtmlWriter::end() +{ + HtmlWriter::end(); + mFile.close(); +} + +void FileHtmlWriter::reset() +{ + HtmlWriter::reset(); + if (mFile.isOpen()) { + mFile.close(); + } +} + +QIODevice *FileHtmlWriter::device() const +{ + return const_cast(&mFile); +} + +void FileHtmlWriter::embedPart(const QByteArray &contentId, const QString &url) +{ + *stream() << "" << endl; +} + +void FileHtmlWriter::extraHead(const QString &) +{ +} diff -Nru kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/filehtmlwriter.h kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/filehtmlwriter.h --- kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/filehtmlwriter.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/filehtmlwriter.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,59 @@ +/* -*- c++ -*- + filehtmlwriter.h + + This file is part of KMail, the KDE mail client. + Copyright (c) 2003 Marc Mutz + + KMail is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation. + + KMail is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + In addition, as a special exception, the copyright holders give + permission to link the code of this program with any edition of + the Qt library by Trolltech AS, Norway (or with modified versions + of Qt that use the same license as Qt), and distribute linked + combinations including the two. You must obey the GNU General + Public License in all respects for all of the code used other than + Qt. If you modify this file, you may extend this exception to + your version of the file, but you are not obligated to do so. If + you do not wish to do so, delete this exception statement from + your version. +*/ + +#ifndef MESSAGEVIEWER_FILEHTMLWRITER_H +#define MESSAGEVIEWER_FILEHTMLWRITER_H + +#include "messageviewer_export.h" +#include + +#include + +namespace MessageViewer { +class MESSAGEVIEWER_EXPORT FileHtmlWriter : public HtmlWriter +{ +public: + explicit FileHtmlWriter(const QString &filename); + ~FileHtmlWriter() override; + + void begin() override; + void end() override; + void reset() override; + QIODevice *device() const override; + void embedPart(const QByteArray &contentId, const QString &url) override; + void extraHead(const QString &str) override; + +private: + QFile mFile; +}; +} // namespace MessageViewer + +#endif // MESSAGEVIEWER_FILEHTMLWRITER_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/webengineembedpart.cpp kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/webengineembedpart.cpp --- kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/webengineembedpart.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/webengineembedpart.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/webengineembedpart.h kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/webengineembedpart.h --- kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/webengineembedpart.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/webengineembedpart.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/webengineparthtmlwriter.cpp kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/webengineparthtmlwriter.cpp --- kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/webengineparthtmlwriter.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/webengineparthtmlwriter.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/webengineparthtmlwriter.h kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/webengineparthtmlwriter.h --- kf5-messagelib-17.12.3/messageviewer/src/htmlwriter/webengineparthtmlwriter.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/htmlwriter/webengineparthtmlwriter.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as @@ -17,7 +17,7 @@ #ifndef WEBENGINEPARTHTMLWRITER_H #define WEBENGINEPARTHTMLWRITER_H -#include +#include "bufferedhtmlwriter.h" #include #include @@ -28,12 +28,12 @@ } namespace MessageViewer { -class WebEnginePartHtmlWriter : public QObject, public MimeTreeParser::BufferedHtmlWriter +class WebEnginePartHtmlWriter : public QObject, public BufferedHtmlWriter { Q_OBJECT public: explicit WebEnginePartHtmlWriter(MailWebEngineView *view, QObject *parent = nullptr); - ~WebEnginePartHtmlWriter(); + ~WebEnginePartHtmlWriter() override; void begin() override; void end() override; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/interfaces/bodyparturlhandler.h kf5-messagelib-18.04.3/messageviewer/src/interfaces/bodyparturlhandler.h --- kf5-messagelib-17.12.3/messageviewer/src/interfaces/bodyparturlhandler.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/interfaces/bodyparturlhandler.h 2018-07-06 05:43:41.000000000 +0000 @@ -30,8 +30,8 @@ your version. */ -#ifndef __KMAIL_INTERFACE_BODYPARTURLHANDLER_H__ -#define __KMAIL_INTERFACE_BODYPARTURLHANDLER_H__ +#ifndef KMAIL_INTERFACE_BODYPARTURLHANDLER_H +#define KMAIL_INTERFACE_BODYPARTURLHANDLER_H class QString; class QPoint; @@ -107,4 +107,4 @@ } // namespace Interface } -#endif // __KMAIL_INTERFACES_BODYPARTURLHANDLER_H__ +#endif // KMAIL_INTERFACES_BODYPARTURLHANDLER_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/interfaces/htmlwriter.cpp kf5-messagelib-18.04.3/messageviewer/src/interfaces/htmlwriter.cpp --- kf5-messagelib-17.12.3/messageviewer/src/interfaces/htmlwriter.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/interfaces/htmlwriter.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,67 @@ +/* + Copyright (c) 2017 Volker Krause + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. +*/ + +#include "htmlwriter.h" + +#include + +using namespace MessageViewer; + +HtmlWriter::HtmlWriter() = default; +HtmlWriter::~HtmlWriter() = default; + +void HtmlWriter::begin() +{ + if (!m_stream) { + m_stream.reset(new QTextStream()); + } + m_stream->setDevice(device()); + m_stream->setCodec("UTF-8"); +} + +void HtmlWriter::write(const QString &html) +{ + Q_ASSERT(m_stream); + if (!m_stream) { + return; + } + *stream() << html; +} + +void HtmlWriter::end() +{ + if (!m_stream) { + return; + } + m_stream->flush(); + m_stream->setDevice(nullptr); +} + +void HtmlWriter::reset() +{ + if (!m_stream) { + return; + } + m_stream->setDevice(nullptr); +} + +QTextStream *HtmlWriter::stream() const +{ + return m_stream.get(); +} diff -Nru kf5-messagelib-17.12.3/messageviewer/src/interfaces/htmlwriter.h kf5-messagelib-18.04.3/messageviewer/src/interfaces/htmlwriter.h --- kf5-messagelib-17.12.3/messageviewer/src/interfaces/htmlwriter.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/interfaces/htmlwriter.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,105 @@ +/* -*- c++ -*- + interfaces/htmlwriter.h + + This file is part of KMail's plugin interface. + Copyright (c) 2003 Marc Mutz + + KMail is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + KMail is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + In addition, as a special exception, the copyright holders give + permission to link the code of this program with any edition of + the Qt library by Trolltech AS, Norway (or with modified versions + of Qt that use the same license as Qt), and distribute linked + combinations including the two. You must obey the GNU General + Public License in all respects for all of the code used other than + Qt. If you modify this file, you may extend this exception to + your version of the file, but you are not obligated to do so. If + you do not wish to do so, delete this exception statement from + your version. +*/ + +#ifndef MESSAGEVIEWER_INTERFACES_HTMLWRITER_H +#define MESSAGEVIEWER_INTERFACES_HTMLWRITER_H + +#include "messageviewer_export.h" + +#include +#include + +class QByteArray; +class QIODevice; +class QString; +class QTextStream; + +namespace MessageViewer { +/** + * @short An interface for HTML sinks. + * @author Marc Mutz + * + */ +class MESSAGEVIEWER_EXPORT HtmlWriter +{ +public: + HtmlWriter(); + virtual ~HtmlWriter(); + + /** Signal the begin of stuff to write. + * Sub-classes should open device() in a writable mode here and then + * call the base class. + */ + virtual void begin(); + + /** Write out a chunk of text. No HTML escaping is performed. + * @deprecated use stream() instead + */ + void write(const QString &html); + + /** Signal the end of stuff to write. + * Sub-classes should call the base class and then close device() here. + */ + virtual void end(); + + /** + * Stop all possibly pending processing in order to be able to + * call #begin() again. + * Sub-classes should call the base class and then reset device() here. + */ + virtual void reset(); + + /** Returns the QIODevice backing this HtmlWriter instance. + * Before writing to this directly, make sure to flush stream(). + */ + virtual QIODevice *device() const = 0; + + /** Returns a QTextStream on device(). + * Use this for writing QString data, rather than local string + * concatenations. + */ + QTextStream *stream() const; + + /** + * Embed a part with Content-ID @p contentId, using url @p url. + */ + virtual void embedPart(const QByteArray &contentId, const QString &url) = 0; + + virtual void extraHead(const QString &str) = 0; + +private: + Q_DISABLE_COPY(HtmlWriter) + mutable std::unique_ptr m_stream; +}; +} + +#endif // MESSAGEVIEWER_INTERFACES_HTMLWRITER_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/interfaces/urlhandler.h kf5-messagelib-18.04.3/messageviewer/src/interfaces/urlhandler.h --- kf5-messagelib-17.12.3/messageviewer/src/interfaces/urlhandler.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/interfaces/urlhandler.h 2018-07-06 05:43:41.000000000 +0000 @@ -29,8 +29,8 @@ your version. */ -#ifndef __KMAIL_INTERFACES_URLHANDLER_H__ -#define __KMAIL_INTERFACES_URLHANDLER_H__ +#ifndef KMAIL_INTERFACES_URLHANDLER_H +#define KMAIL_INTERFACES_URLHANDLER_H #include @@ -116,4 +116,4 @@ }; } -#endif // __KMAIL_INTERFACES_URLHANDLER_H__ +#endif // KMAIL_INTERFACES_URLHANDLER_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/job/attachmenteditjob.cpp kf5-messagelib-18.04.3/messageviewer/src/job/attachmenteditjob.cpp --- kf5-messagelib-17.12.3/messageviewer/src/job/attachmenteditjob.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/job/attachmenteditjob.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,143 +0,0 @@ -/* - Copyright (C) 2014-2017 Laurent Montel - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include "attachmenteditjob.h" -#include "messageviewer_debug.h" -#include "viewer/editorwatcher.h" -#include -#include -#include -#include -#include -#include -#include - -using namespace MessageViewer; - -AttachmentEditJob::AttachmentEditJob(Akonadi::Session *session, QObject *parent) - : QObject(parent) - , mShowWarning(true) - , mMainWindow(nullptr) - , mSession(session) -{ -} - -AttachmentEditJob::~AttachmentEditJob() -{ - qCDebug(MESSAGEVIEWER_LOG) << " AttachmentEditJob::~AttachmentEditJob()"; -} - -bool AttachmentEditJob::addAttachment(KMime::Content *node, bool showWarning) -{ - if (showWarning && KMessageBox::warningContinueCancel(mMainWindow, - i18n( - "Modifying an attachment might invalidate any digital signature on this message."), - i18n("Edit Attachment"), - KGuiItem(i18n("Edit"), - QStringLiteral( - "document-properties")), - KStandardGuiItem::cancel(), - QStringLiteral( - "EditAttachmentSignatureWarning")) - != KMessageBox::Continue) { - return false; - } - - QTemporaryFile file; - file.setAutoRemove(false); - if (!file.open()) { - qCWarning(MESSAGEVIEWER_LOG) << "Edit Attachment: Unable to open temp file."; - return true; - } - file.write(node->decodedContent()); - file.flush(); - - EditorWatcher *watcher - = new EditorWatcher(QUrl::fromLocalFile(file.fileName()), - QLatin1String(node->contentType()->mimeType()), - MessageViewer::EditorWatcher::NoOpenWithDialog, this, mMainWindow); - mEditorWatchers[ watcher ] = node; - - connect(watcher, &EditorWatcher::editDone, this, &AttachmentEditJob::slotAttachmentEditDone); - - if ((watcher->start() != EditorWatcher::NoError)) { - removeEditorWatcher(watcher, file.fileName()); - } - return true; -} - -void AttachmentEditJob::setMainWindow(QWidget *mainWindow) -{ - mMainWindow = mainWindow; -} - -void AttachmentEditJob::slotAttachmentEditDone(MessageViewer::EditorWatcher *editorWatcher) -{ - const QString name = editorWatcher->url().path(); - if (editorWatcher->fileChanged()) { - QFile file(name); - if (file.open(QIODevice::ReadOnly)) { - QByteArray data = file.readAll(); - KMime::Content *node = mEditorWatchers[editorWatcher]; - node->setBody(data); - file.close(); - - mMessageItem.setPayloadFromData(mMessage->encodedContent()); - Akonadi::ItemModifyJob *job = new Akonadi::ItemModifyJob(mMessageItem, mSession); - connect(job, &KJob::result, this, &AttachmentEditJob::slotItemModifiedResult); - removeEditorWatcher(editorWatcher, name); - } - } else { - removeEditorWatcher(editorWatcher, name); - canDeleteJob(); - } -} - -void AttachmentEditJob::setMessageItem(const Akonadi::Item &messageItem) -{ - mMessageItem = messageItem; -} - -void AttachmentEditJob::slotItemModifiedResult(KJob *job) -{ - if (job->error()) { - qCDebug(MESSAGEVIEWER_LOG) << "Item update failed:" << job->errorString(); - } else { - Q_EMIT refreshMessage(mMessageItem); - } - canDeleteJob(); -} - -void AttachmentEditJob::canDeleteJob() -{ - if (mEditorWatchers.isEmpty()) { - deleteLater(); - } -} - -void AttachmentEditJob::removeEditorWatcher(MessageViewer::EditorWatcher *editorWatcher, const QString &name) -{ - mEditorWatchers.remove(editorWatcher); - QFile::remove(name); -} - -void AttachmentEditJob::setMessage(const KMime::Message::Ptr &message) -{ - mMessage = message; -} diff -Nru kf5-messagelib-17.12.3/messageviewer/src/job/attachmenteditjob.h kf5-messagelib-18.04.3/messageviewer/src/job/attachmenteditjob.h --- kf5-messagelib-17.12.3/messageviewer/src/job/attachmenteditjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/job/attachmenteditjob.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* - Copyright (C) 2014-2017 Laurent Montel - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef ATTACHMENTEDITJOB_H -#define ATTACHMENTEDITJOB_H - -#include -#include -#include -#include -namespace KMime { -class Content; -} -namespace Akonadi { -class Session; -} -namespace MessageViewer { -class EditorWatcher; -class AttachmentEditJob : public QObject -{ - Q_OBJECT -public: - explicit AttachmentEditJob(Akonadi::Session *session, QObject *parent = nullptr); - ~AttachmentEditJob(); - - void setMainWindow(QWidget *mainWindow); - - void setMessageItem(const Akonadi::Item &messageItem); - - bool addAttachment(KMime::Content *node, bool showWarning); - - void canDeleteJob(); - - void setMessage(const KMime::Message::Ptr &message); - -Q_SIGNALS: - void refreshMessage(const Akonadi::Item &item); -private: - void slotAttachmentEditDone(MessageViewer::EditorWatcher *editorWatcher); - void slotItemModifiedResult(KJob *); - void removeEditorWatcher(MessageViewer::EditorWatcher *editorWatcher, const QString &name); - QHash mEditorWatchers; - Akonadi::Item mMessageItem; - KMime::Message::Ptr mMessage; - bool mShowWarning = false; - QWidget *mMainWindow = nullptr; - Akonadi::Session *mSession = nullptr; -}; -} - -#endif // ATTACHMENTEDITJOB_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/job/modifymessagedisplayformatjob.cpp kf5-messagelib-18.04.3/messageviewer/src/job/modifymessagedisplayformatjob.cpp --- kf5-messagelib-17.12.3/messageviewer/src/job/modifymessagedisplayformatjob.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/job/modifymessagedisplayformatjob.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Laurent Montel + Copyright (C) 2014-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/job/modifymessagedisplayformatjob.h kf5-messagelib-18.04.3/messageviewer/src/job/modifymessagedisplayformatjob.h --- kf5-messagelib-17.12.3/messageviewer/src/job/modifymessagedisplayformatjob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/job/modifymessagedisplayformatjob.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Laurent Montel + Copyright (C) 2014-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/converthtmltoplaintexttest.cpp kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/converthtmltoplaintexttest.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/converthtmltoplaintexttest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/converthtmltoplaintexttest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Montel Laurent + Copyright (c) 2015-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/converthtmltoplaintexttest.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/converthtmltoplaintexttest.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/converthtmltoplaintexttest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/converthtmltoplaintexttest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Montel Laurent + Copyright (c) 2015-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/objecttreeparsertest.cpp kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/objecttreeparsertest.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/objecttreeparsertest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/objecttreeparsertest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -21,7 +21,7 @@ #include "setupenv.h" #include -#include +#include #include #include @@ -92,7 +92,7 @@ QCOMPARE(msg->contents().size(), 2); // Parse the message - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; NodeHelper nodeHelper; @@ -130,7 +130,7 @@ false).constData(), "Simple Mail Without Content-Type Header"); QCOMPARE(msg->contents().size(), 0); - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; NodeHelper nodeHelper; @@ -150,7 +150,7 @@ QCOMPARE(msg->subject()->as7BitString(false).constData(), "inlinepgpencrypted"); QCOMPARE(msg->contents().size(), 0); - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; NodeHelper nodeHelper; @@ -177,7 +177,7 @@ QCOMPARE(msg->subject()->as7BitString(false).constData(), "test"); QCOMPARE(msg->contents().size(), 0); - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; NodeHelper nodeHelper; @@ -205,7 +205,7 @@ otp.parseObjectTree(msg.data()); QCOMPARE(otp.plainTextContent().toLatin1().data(), "Some HTML text"); - QVERIFY(otp.htmlContent().contains(QStringLiteral( + QVERIFY(otp.htmlContent().contains(QLatin1String( "Some HTML text"))); QCOMPARE(otp.htmlContentCharset().data(), "windows-1252"); } @@ -217,7 +217,7 @@ QCOMPARE(msg->subject()->as7BitString(false).constData(), "HTML test"); QCOMPARE(msg->contents().size(), 2); - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); @@ -245,7 +245,7 @@ otp.parseObjectTree(msg.data()); QVERIFY(otp.plainTextContent().isEmpty()); - QVERIFY(otp.htmlContent().contains(QStringLiteral("SOME HTML text."))); + QVERIFY(otp.htmlContent().contains(QLatin1String("SOME HTML text."))); } void ObjectTreeParserTester::test_HTMLOnlyText() @@ -255,7 +255,7 @@ QCOMPARE(msg->subject()->as7BitString(false).constData(), "HTML test"); QCOMPARE(msg->contents().size(), 0); - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); @@ -266,7 +266,7 @@ testWriter.end(); QVERIFY(otp.plainTextContent().isEmpty()); - QVERIFY(otp.htmlContent().contains(QStringLiteral("SOME HTML text."))); + QVERIFY(otp.htmlContent().contains(QLatin1String("SOME HTML text."))); QVERIFY(testWriter.data().contains("This is an HTML message. For security reasons, only the raw HTML code is shown.")); QVERIFY(testWriter.data().contains("SOME* HTML text.
")); } @@ -279,7 +279,7 @@ QCOMPARE(msg->contents().size(), 0); { - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); @@ -289,12 +289,12 @@ testWriter.end(); QVERIFY(otp.plainTextContent().isEmpty()); - QVERIFY(otp.htmlContent().contains(QStringLiteral("SOME HTML text."))); + QVERIFY(otp.htmlContent().contains(QLatin1String("SOME HTML text."))); QVERIFY(testWriter.data().contains("SOME HTML text.")); QVERIFY(testWriter.data().contains("This HTML message may contain external references to images etc. For security/privacy reasons external references are not loaded.")); } { - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); @@ -304,7 +304,7 @@ otp.parseObjectTree(msg.data()); testWriter.end(); - QVERIFY(otp.htmlContent().contains(QStringLiteral("SOME HTML text."))); + QVERIFY(otp.htmlContent().contains(QLatin1String("SOME HTML text."))); QVERIFY(testWriter.data().contains("SOME HTML text.")); QVERIFY(!testWriter.data().contains("This HTML message may contain external references to images etc. For security/privacy reasons external references are not loaded.")); } @@ -315,7 +315,7 @@ KMime::Message::Ptr msg = Test::readAndParseMail(QStringLiteral("alternative.mbox")); QCOMPARE(msg->contents().size(), 2); { - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); @@ -326,13 +326,13 @@ testWriter.end(); QVERIFY(otp.htmlContent().isEmpty()); - QVERIFY(otp.plainTextContent().contains(QStringLiteral( + QVERIFY(otp.plainTextContent().contains(QLatin1String( "If you can see this text it means that your email client couldn't display our newsletter properly."))); QVERIFY(testWriter.data().contains("If you can see this text it means that your email client couldn't display our newsletter properly.")); } { - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); @@ -342,9 +342,9 @@ otp.parseObjectTree(msg.data()); testWriter.end(); - QVERIFY(otp.plainTextContent().contains(QStringLiteral( + QVERIFY(otp.plainTextContent().contains(QLatin1String( "If you can see this text it means that your email client couldn't display our newsletter properly."))); - QVERIFY(otp.htmlContent().contains(QStringLiteral( + QVERIFY(otp.htmlContent().contains(QLatin1String( "Some HTML text

"))); QVERIFY(testWriter.data().contains("Some HTML text

")); } @@ -352,7 +352,7 @@ msg = Test::readAndParseMail(QStringLiteral("alternative-notext.mbox")); QCOMPARE(msg->contents().size(), 1); { - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); @@ -368,7 +368,7 @@ } { - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); @@ -379,7 +379,7 @@ testWriter.end(); QVERIFY(otp.plainTextContent().isEmpty()); - QVERIFY(otp.htmlContent().contains(QStringLiteral( + QVERIFY(otp.htmlContent().contains(QLatin1String( "Some HTML text

"))); QVERIFY(testWriter.data().contains("Some HTML text

")); } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/quotehtmltest.cpp kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/quotehtmltest.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/quotehtmltest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/quotehtmltest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -22,7 +22,8 @@ #include "setupenv.h" #include -#include +#include +#include #include #include #include @@ -33,6 +34,85 @@ QTEST_GUILESS_MAIN(QuoteHtmlTest) +class MyRenderContext : public MessageViewer::RenderContext +{ +public: + virtual ~MyRenderContext() + { + } + + CSSHelperBase *cssHelper() const override + { + return mCssHelper; + } + + void renderSubParts(const MimeTreeParser::MessagePart::Ptr &msgPart, HtmlWriter *htmlWriter) override + { + Q_UNUSED(msgPart); + Q_UNUSED(htmlWriter); + } + + bool isHiddenHint(const MimeTreeParser::MessagePart::Ptr &msgPart) override + { + Q_UNUSED(msgPart); + return false; + } + + MimeTreeParser::IconType displayHint(const MimeTreeParser::MessagePart::Ptr &msgPart) override + { + Q_UNUSED(msgPart); + return MimeTreeParser::IconType::NoIcon; + } + + bool showEmoticons() const override + { + return false; + } + + bool isPrinting() const override + { + return false; + } + + bool htmlLoadExternal() const override + { + return false; + } + + bool showExpandQuotesMark() const override + { + return mShowExpandQuotesMark; + } + + bool showOnlyOneMimePart() const override + { + return false; + } + + bool showSignatureDetails() const override + { + return false; + } + + int levelQuote() const override + { + return mLevelQuote; + } + + bool mShowExpandQuotesMark = false; + int mLevelQuote = 1; + CSSHelperBase *mCssHelper = nullptr; + +protected: + bool renderWithFactory(const QMetaObject *mo, const MimeTreeParser::MessagePart::Ptr &msgPart, HtmlWriter *writer) override + { + Q_UNUSED(mo); + Q_UNUSED(msgPart); + Q_UNUSED(writer); + return false; + } +}; + void QuoteHtmlTest::initTestCase() { MessageViewer::Test::setupEnv(); @@ -138,11 +218,14 @@ QFETCH(QString, result); QFETCH(bool, showExpandQuotesMark); QFETCH(int, quotelevel); - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; Test::CSSHelper testCSSHelper; - Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); - emptySource.setShowExpandQuotesMark(showExpandQuotesMark); - emptySource.setLevelQuote(quotelevel); - - QCOMPARE(quotedHTML(data, &emptySource, &testCSSHelper), result); + MyRenderContext context; + context.mCssHelper = &testCSSHelper; + context.mLevelQuote = quotelevel; + context.mShowExpandQuotesMark = showExpandQuotesMark; + testWriter.begin(); + quotedHTML(data, &context, &testWriter); + testWriter.end(); + QCOMPARE(testWriter.data(), result.toUtf8()); } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/rendertest.cpp kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/rendertest.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/rendertest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/rendertest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -23,7 +23,7 @@ #include "testcsshelper.h" #include "util.h" -#include +#include #include #include @@ -311,7 +311,7 @@ const KMime::Message::Ptr msg(Test::readAndParseMail(mailFileName)); // render the mail - MimeTreeParser::FileHtmlWriter fileWriter(outFileName); + FileHtmlWriter fileWriter(outFileName); QImage paintDevice; Test::TestCSSHelper cssHelper(&paintDevice); MimeTreeParser::NodeHelper nodeHelper; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/rendertest.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/rendertest.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/rendertest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/rendertest.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef __MESSAGEVIEWER_TEST_RENDERTEST_H__ -#define __MESSAGEVIEWER_TEST_RENDERTEST_H__ +#ifndef MESSAGEVIEWER_TEST_RENDERTEST_H +#define MESSAGEVIEWER_TEST_RENDERTEST_H #include #include diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/setupenv.cpp kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/setupenv.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/setupenv.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/setupenv.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -30,9 +30,9 @@ void MessageViewer::Test::setupEnv() { - setenv("KDEHOME", QFile::encodeName(QDir::homePath() + QString::fromLatin1( - "/.qttest")).constData(), 1); - setenv("TZ", "UTC", 1); + qputenv("KDEHOME", QFile::encodeName(QDir::homePath() + QString::fromLatin1( + "/.qttest")).constData()); + qputenv("TZ", "UTC"); QStandardPaths::setTestModeEnabled(true); QIcon::setThemeName(QStringLiteral("breeze")); QLocale::setDefault(QLocale(QStringLiteral("en_US"))); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/setupenv.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/setupenv.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/setupenv.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/setupenv.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,15 +18,15 @@ 02110-1301, USA. */ -#ifndef __MESSAGEVIEWER_TESTS_SETUPENV_H__ -#define __MESSAGEVIEWER_TESTS_SETUPENV_H__ +#ifndef MESSAGEVIEWER_TESTS_SETUPENV_H +#define MESSAGEVIEWER_TESTS_SETUPENV_H #include -#include #include #include +#include #include namespace MessageViewer { @@ -43,7 +43,7 @@ class ObjectTreeSource : public MessageViewer::EmptySource { public: - ObjectTreeSource(MimeTreeParser::HtmlWriter *writer, MessageViewer::CSSHelperBase *cssHelper) + ObjectTreeSource(HtmlWriter *writer, MessageViewer::CSSHelperBase *cssHelper) : mWriter(writer) , mCSSHelper(cssHelper) , mAttachmentStrategy(QStringLiteral("smart")) @@ -56,12 +56,12 @@ { } - MimeTreeParser::HtmlWriter *htmlWriter() override + HtmlWriter *htmlWriter() const override { return mWriter; } - CSSHelperBase *cssHelper() override + CSSHelperBase *cssHelper() const override { return mCSSHelper; } @@ -81,9 +81,9 @@ mAttachmentStrategy = strategy; } - const MimeTreeParser::AttachmentStrategy *attachmentStrategy() override + const AttachmentStrategy *attachmentStrategy() const override { - return MimeTreeParser::AttachmentStrategy::create(mAttachmentStrategy); + return AttachmentStrategy::create(mAttachmentStrategy); } bool autoImportKeys() const override @@ -169,7 +169,7 @@ } private: - MimeTreeParser::HtmlWriter *mWriter; + HtmlWriter *mWriter; MessageViewer::CSSHelperBase *mCSSHelper; QString mAttachmentStrategy; MimeTreeParser::BodyPartFormatterFactory mBodyPartFormatterFactory; @@ -183,4 +183,4 @@ } } -#endif //__MESSAGEVIEWER_TESTS_SETUPENV_H__ +#endif //__MESSAGEVIEWER_TESTS_SETUPENV_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/showonlymimeparttest.cpp kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/showonlymimeparttest.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/showonlymimeparttest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/showonlymimeparttest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -24,9 +24,9 @@ #include "setupenv.h" #include "testcsshelper.h" -#include #include #include +#include #include #include @@ -66,20 +66,20 @@ const KMime::Message::Ptr msg(Test::readAndParseMail(QStringLiteral("frametest.mbox"))); // render the mail - MimeTreeParser::FileHtmlWriter fileWriter(outFileName); + FileHtmlWriter fileWriter(outFileName); QImage paintDevice; Test::TestCSSHelper cssHelper(&paintDevice); MimeTreeParser::NodeHelper nodeHelper; Test::ObjectTreeSource testSource(&fileWriter, &cssHelper); - MimeTreeParser::ObjectTreeParser otp(&testSource, &nodeHelper, showOnlyMimePart); + MimeTreeParser::ObjectTreeParser otp(&testSource, &nodeHelper); fileWriter.begin(); fileWriter.write(cssHelper.htmlHead(false)); QVERIFY(msg->contents().size() > content); - otp.parseObjectTree(msg->contents().at(content)); + otp.parseObjectTree(msg->contents().at(content), showOnlyMimePart); fileWriter.write(QStringLiteral("")); fileWriter.end(); @@ -113,20 +113,20 @@ const KMime::Message::Ptr msg(Test::readAndParseMail(QStringLiteral("html-multipart-related.mbox"))); // render the mail - MimeTreeParser::FileHtmlWriter fileWriter(outFileName); + FileHtmlWriter fileWriter(outFileName); QImage paintDevice; Test::TestCSSHelper cssHelper(&paintDevice); MimeTreeParser::NodeHelper nodeHelper; Test::ObjectTreeSource testSource(&fileWriter, &cssHelper); - MimeTreeParser::ObjectTreeParser otp(&testSource, &nodeHelper, showOnlyMimePart); + MimeTreeParser::ObjectTreeParser otp(&testSource, &nodeHelper); fileWriter.begin(); fileWriter.write(cssHelper.htmlHead(false)); QVERIFY(msg->contents().size() > content); - otp.parseObjectTree(msg->contents().at(content)); + otp.parseObjectTree(msg->contents().at(content), showOnlyMimePart); fileWriter.write(QStringLiteral("")); fileWriter.end(); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/showonlymimeparttest.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/showonlymimeparttest.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/showonlymimeparttest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/showonlymimeparttest.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ along with this program. If not, see . */ -#ifndef __MESSAGEVIEWER_TEST_SHOWONLYMIMEPARTTEST_H__ -#define __MESSAGEVIEWER_TEST_SHOWONLYMIMEPARTTEST_H__ +#ifndef MESSAGEVIEWER_TEST_SHOWONLYMIMEPARTTEST_H +#define MESSAGEVIEWER_TEST_SHOWONLYMIMEPARTTEST_H #include diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/testcsshelper.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/testcsshelper.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/testcsshelper.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/testcsshelper.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MESSSAGEVIEWER_TESTCSSHELPER_H__ -#define __MESSSAGEVIEWER_TESTCSSHELPER_H__ +#ifndef MESSSAGEVIEWER_TESTCSSHELPER_H +#define MESSSAGEVIEWER_TESTCSSHELPER_H #include @@ -28,10 +28,10 @@ { public: explicit TestCSSHelper(const QPaintDevice *pd); - virtual ~TestCSSHelper(); + ~TestCSSHelper() override; QString htmlHead(bool fixed) const override; }; } } -#endif // __MESSSAGEVIEWER_TESTCSSHELPER_H__ +#endif // MESSSAGEVIEWER_TESTCSSHELPER_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.cpp kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -24,7 +24,7 @@ #include #include -#include +#include #include @@ -54,7 +54,7 @@ = Test::readAndParseMail(QStringLiteral("signed-forward-openpgp-signed-encrypted.mbox")); MimeTreeParser::NodeHelper nodeHelper; - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); @@ -78,7 +78,7 @@ = Test::readAndParseMail(QStringLiteral("forward-openpgp-signed-encrypted.mbox")); MimeTreeParser::NodeHelper nodeHelper; - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); @@ -313,7 +313,7 @@ KMime::Message::Ptr originalMessage = Test::readAndParseMail(mailFileName); MimeTreeParser::NodeHelper nodeHelper; - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); @@ -338,7 +338,7 @@ KMime::Message::Ptr originalMessage = Test::readAndParseMail(QStringLiteral("smime-cert.mbox")); MimeTreeParser::NodeHelper nodeHelper; - MimeTreeParser::BufferedHtmlWriter testWriter; + BufferedHtmlWriter testWriter; testWriter.begin(); Test::CSSHelper testCSSHelper; Test::ObjectTreeSource emptySource(&testWriter, &testCSSHelper); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/unencryptedmessagetest.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,8 +18,8 @@ 02110-1301, USA. */ -#ifndef __MESSAGEVIEWER_TESTS_UNENCRYPTEDMESSSAGE_H__ -#define __MESSAGEVIEWER_TESTS_UNENCRYPTEDMESSSAGE_H__ +#ifndef MESSAGEVIEWER_TESTS_UNENCRYPTEDMESSSAGE_H +#define MESSAGEVIEWER_TESTS_UNENCRYPTEDMESSSAGE_H #include @@ -43,4 +43,4 @@ void testSMimeAutoCertImport(); }; -#endif //__MESSAGEVIEWER_TESTS_UNENCRYPTEDMESSSAGE_H__ +#endif //__MESSAGEVIEWER_TESTS_UNENCRYPTEDMESSSAGE_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/util.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/util.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/autotests/util.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/autotests/util.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,10 +17,10 @@ 02110-1301, USA. */ -#ifndef __MESSAGEVIEWER_TESTS_UTIL_H__ -#define __MESSAGEVIEWER_TESTS_UTIL_H__ +#ifndef MESSAGEVIEWER_TESTS_UTIL_H +#define MESSAGEVIEWER_TESTS_UTIL_H -#include +#include "interfaces/htmlwriter.h" #include #include @@ -57,4 +57,4 @@ } } -#endif //__MESSAGEVIEWER_TESTS_UTIL_H__ +#endif //__MESSAGEVIEWER_TESTS_UTIL_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/converthtmltoplaintext.cpp kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/converthtmltoplaintext.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/converthtmltoplaintext.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/converthtmltoplaintext.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Montel Laurent + Copyright (c) 2015-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/converthtmltoplaintext.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/converthtmltoplaintext.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/converthtmltoplaintext.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/converthtmltoplaintext.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Montel Laurent + Copyright (c) 2015-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by @@ -18,8 +18,8 @@ */ -#ifndef __MIMETREEPARSER_CONVERTHTMLTOPLAINTEXT_H__ -#define __MIMETREEPARSER_CONVERTHTMLTOPLAINTEXT_H__ +#ifndef MIMETREEPARSER_CONVERTHTMLTOPLAINTEXT_H +#define MIMETREEPARSER_CONVERTHTMLTOPLAINTEXT_H #include namespace MimeTreeParser { @@ -40,4 +40,4 @@ }; } -#endif // __MIMETREEPARSER_CONVERTHTMLTOPLAINTEXT_H__ +#endif // MIMETREEPARSER_CONVERTHTMLTOPLAINTEXT_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/defaultrenderer.cpp kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/defaultrenderer.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/defaultrenderer.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/defaultrenderer.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -30,10 +30,11 @@ #include "utils/iconnamecache.h" #include "utils/mimetype.h" +#include "viewer/attachmentstrategy.h" #include "viewer/csshelperbase.h" #include "messagepartrenderermanager.h" -#include +#include "htmlwriter/bufferedhtmlwriter.h" #include #include #include @@ -239,10 +240,10 @@ bool containsExternalReferences(const QString &str, const QString &extraHead) { - const bool hasBaseInHeader = extraHead.contains(QStringLiteral( + const bool hasBaseInHeader = extraHead.contains(QLatin1String( "isAttachment()) { aBlock = HTMLBlock::Ptr(new AttachmentMarkBlock(htmlWriter, mp->attachmentContent())); } - if (mp->isRoot()) { rBlock = HTMLBlock::Ptr(new RootBlock(htmlWriter)); } @@ -379,9 +377,9 @@ c.insert(QStringLiteral("block"), &block); block.setProperty("link", - mp->nodeHelper()->asHREF(mp->mMessage.data(), QStringLiteral("body"))); + mp->nodeHelper()->asHREF(mp->message().data(), QStringLiteral("body"))); - c.insert(QStringLiteral("msgHeader"), mp->source()->createMessageHeader(mp->mMessage.data())); + c.insert(QStringLiteral("msgHeader"), mCreateMessageHeader(mp->message().data())); c.insert(QStringLiteral("content"), QVariant::fromValue([this, mp, htmlWriter](Grantlee::OutputStream *) { renderSubParts(mp, htmlWriter); })); @@ -404,15 +402,14 @@ c.insert(QStringLiteral("block"), &block); auto preferredMode = mp->source()->preferredMode(); - bool isHtmlPreferred = (preferredMode == Util::Html) || (preferredMode == Util::MultipartHtml); - const bool isPrinting = mp->source()->isPrinting(); + const bool isHtmlPreferred = (preferredMode == MimeTreeParser::Util::Html) || (preferredMode == MimeTreeParser::Util::MultipartHtml); block.setProperty("htmlMail", isHtmlPreferred); - block.setProperty("loadExternal", mp->source()->htmlLoadExternal()); - block.setProperty("isPrinting", isPrinting); + block.setProperty("loadExternal", htmlLoadExternal()); + block.setProperty("isPrinting", isPrinting()); { QString extraHead; //laurent: FIXME port to async method webengine - QString bodyText = processHtml(mp->mBodyHTML, extraHead); + QString bodyText = processHtml(mp->bodyHtml(), extraHead); if (isHtmlPreferred) { mp->nodeHelper()->setNodeDisplayedEmbedded(mp->content(), true); @@ -426,12 +423,12 @@ { ConvertHtmlToPlainText convert; - convert.setHtmlString(mp->mBodyHTML); + convert.setHtmlString(mp->bodyHtml()); QString plaintext = convert.generatePlainText(); plaintext.replace(QLatin1Char('\n'), QStringLiteral("
")); c.insert(QStringLiteral("plaintext"), plaintext); } - mp->source()->setHtmlMode(Util::Html, QList() << Util::Html << Util::Normal); + mp->source()->setHtmlMode(MimeTreeParser::Util::Html, QList() << MimeTreeParser::Util::Html << MimeTreeParser::Util::Normal); HTMLBlock::Ptr aBlock; if (mp->isAttachment()) { @@ -465,10 +462,10 @@ })); } - c.insert(QStringLiteral("cryptoProto"), QVariant::fromValue(mp->mCryptoProto)); - if (!mp->mDecryptRecipients.empty()) { + c.insert(QStringLiteral("cryptoProto"), QVariant::fromValue(mp->cryptoProto())); + if (!mp->decryptRecipients().empty()) { c.insert(QStringLiteral("decryptedRecipients"), - QVariant::fromValue(mp->mDecryptRecipients)); + QVariant::fromValue(mp->decryptRecipients())); } c.insert(QStringLiteral("block"), &block); @@ -480,7 +477,7 @@ "document-decrypt"), KIconLoader::Small)).url()); block.setProperty("errorText", metaData.errorText); - block.setProperty("noSecKey", mp->mNoSecKey); + block.setProperty("noSecKey", mp->isNoSecKey()); Grantlee::OutputStream s(htmlWriter->stream()); t->render(&s, &c); @@ -490,7 +487,7 @@ { KMime::Content *node = mp->content(); const auto metaData = *mp->partMetaData(); - auto cryptoProto = mp->mCryptoProto; + auto cryptoProto = mp->cryptoProto(); const bool isSMIME = cryptoProto && (cryptoProto == QGpgME::smime()); @@ -519,7 +516,7 @@ block.setProperty("inProgress", metaData.inProgress); block.setProperty("errorText", metaData.errorText); - block.setProperty("detailHeader", mp->source()->showSignatureDetails()); + block.setProperty("detailHeader", showSignatureDetails()); block.setProperty("printing", false); block.setProperty("addr", metaData.signerMailAddresses.join(QLatin1Char(','))); block.setProperty("technicalProblem", metaData.technicalProblem); @@ -626,7 +623,7 @@ mClass = QStringLiteral("signOkKeyOk"); // extra hint for green case // that email addresses in DN do not match fromAddress - QString msgFrom(KEmailAddress::extractEmailAddress(mp->mFromAddress)); + QString msgFrom(KEmailAddress::extractEmailAddress(mp->fromAddress())); QString certificate; if (metaData.keyId.isEmpty()) { certificate = i18n("certificate"); @@ -657,7 +654,7 @@ for (QStringList::ConstIterator it = blockAddrs.constBegin(); it != end; ++it) { if (!bStart) { - greenCaseWarning.append(QStringLiteral(",
   ")); + greenCaseWarning.append(QLatin1String(",
   ")); } bStart = false; @@ -791,9 +788,9 @@ } } } - MimeMessagePart::Ptr part(mp->mChildParts.first()); - if (mp->mChildParts.contains(mode)) { - part = mp->mChildParts[mode]; + MimeMessagePart::Ptr part(mp->childParts().first()); + if (mp->childParts().contains(mode)) { + part = mp->childParts()[mode]; } render(part, htmlWriter); @@ -801,7 +798,7 @@ void DefaultRendererPrivate::render(const CertMessagePart::Ptr &mp, HtmlWriter *htmlWriter) { - const GpgME::ImportResult &importResult(mp->mImportResult); + const GpgME::ImportResult &importResult(mp->importResult()); Grantlee::Template t = MessageViewer::MessagePartRendererManager::self()->loadByName(QStringLiteral( ":/certmessagepart.html")); Grantlee::Context c = MessageViewer::MessagePartRendererManager::self()->createContext(); @@ -851,6 +848,16 @@ { const QString className = QString::fromUtf8(msgPart->metaObject()->className()); + if (isHiddenHint(msgPart)) { + QByteArray cid = msgPart->content()->contentID()->identifier(); + auto mp = msgPart.dynamicCast(); + if (!cid.isEmpty() && mp) { + QString fileName = mp->temporaryFilePath(); + QString href = QUrl::fromLocalFile(fileName).url(); + htmlWriter->embedPart(cid, href); + } + } + if (renderWithFactory(msgPart, htmlWriter)) { return; } @@ -901,8 +908,166 @@ } } -DefaultRenderer::DefaultRenderer(const MimeTreeParser::MessagePart::Ptr &msgPart, CSSHelperBase *cssHelper, MimeTreeParser::HtmlWriter *writer) - : d(new MimeTreeParser::DefaultRendererPrivate(msgPart, cssHelper, writer, MessagePartRendererFactory::instance())) +bool DefaultRendererPrivate::isHiddenHint(const MimeTreeParser::MessagePart::Ptr &msgPart) +{ + auto mp = msgPart.dynamicCast(); + auto content = msgPart->content(); + + if (!mp || !content) { + return false; + } + + if (mShowOnlyOneMimePart && mMsgPart.data() == msgPart->parentPart()) { + if (mMsgPart->subParts().at(0) == msgPart.data()) { + return false; + } + } + + if (msgPart->nodeHelper()->isNodeDisplayedHidden(content)) { + return true; + } + + const AttachmentStrategy *const as = mAttachmentStrategy; + const bool defaultHidden(as && as->defaultDisplay(content) == AttachmentStrategy::None); + auto preferredMode = source()->preferredMode(); + bool isHtmlPreferred = (preferredMode == MimeTreeParser::Util::Html) || (preferredMode == MimeTreeParser::Util::MultipartHtml); + + QByteArray mediaType("text"); + if (content->contentType(false) && !content->contentType()->mediaType().isEmpty() + && !content->contentType()->subType().isEmpty()) { + mediaType = content->contentType()->mediaType(); + } + const bool isTextPart = (mediaType == QByteArrayLiteral("text")); + + bool defaultAsIcon = true; + if (!mp->neverDisplayInline()) { + if (as) { + defaultAsIcon = as->defaultDisplay(content) == AttachmentStrategy::AsIcon; + } + } + + // neither image nor text -> show as icon + if (!mp->isImage() && !isTextPart) { + defaultAsIcon = true; + } + + bool hidden(false); + if (isTextPart) { + hidden = defaultHidden; + } else { + if (mp->isImage() && isHtmlPreferred + && content->parent() && content->parent()->contentType(false)->subType() == "related") { + hidden = true; + } else { + hidden = defaultHidden && content->parent(); + hidden |= defaultAsIcon && defaultHidden; + } + } + msgPart->nodeHelper()->setNodeDisplayedHidden(content, hidden); + return hidden; +} + +MimeTreeParser::IconType DefaultRendererPrivate::displayHint(const MimeTreeParser::MessagePart::Ptr &msgPart) +{ + auto mp = msgPart.dynamicCast(); + auto content = msgPart->content(); + + if (!content || !mp) { + return MimeTreeParser::IconType::NoIcon; + } + + const AttachmentStrategy *const as = mAttachmentStrategy; + const bool defaultDisplayHidden(as && as->defaultDisplay(content) == AttachmentStrategy::None); + const bool defaultDisplayInline(as && as->defaultDisplay(content) == AttachmentStrategy::Inline); + const bool defaultDisplayAsIcon(as && as->defaultDisplay(content) == AttachmentStrategy::AsIcon); + const bool showOnlyOneMimePart(mShowOnlyOneMimePart); + auto preferredMode = source()->preferredMode(); + bool isHtmlPreferred = (preferredMode == MimeTreeParser::Util::Html) || (preferredMode == MimeTreeParser::Util::MultipartHtml); + + QByteArray mediaType("text"); + if (content->contentType(false) && !content->contentType()->mediaType().isEmpty() + && !content->contentType()->subType().isEmpty()) { + mediaType = content->contentType()->mediaType(); + } + const bool isTextPart = (mediaType == QByteArrayLiteral("text")); + + bool defaultAsIcon = true; + if (!mp->neverDisplayInline()) { + if (as) { + defaultAsIcon = defaultDisplayAsIcon; + } + } + if (mp->isImage() && showOnlyOneMimePart && !mp->neverDisplayInline()) { + defaultAsIcon = false; + } + + // neither image nor text -> show as icon + if (!mp->isImage() && !isTextPart) { + defaultAsIcon = true; + } + + if (isTextPart) { + if (as && !defaultDisplayInline) { + return MimeTreeParser::IconExternal; + } + return MimeTreeParser::NoIcon; + } else { + if (mp->isImage() && isHtmlPreferred + && content->parent() && content->parent()->contentType(false)->subType() == "related") { + return MimeTreeParser::IconInline; + } + + if (defaultDisplayHidden && !showOnlyOneMimePart && content->parent()) { + return MimeTreeParser::IconInline; + } + + if (defaultAsIcon) { + return MimeTreeParser::IconExternal; + } else if (mp->isImage()) { + return MimeTreeParser::IconInline; + } + } + + return MimeTreeParser::NoIcon; +} + +bool DefaultRendererPrivate::showEmoticons() const +{ + return mShowEmoticons; +} + +bool DefaultRendererPrivate::isPrinting() const +{ + return mIsPrinting; +} + +bool DefaultRendererPrivate::htmlLoadExternal() const +{ + return mHtmlLoadExternal; +} + +bool DefaultRendererPrivate::showExpandQuotesMark() const +{ + return mShowExpandQuotesMark; +} + +bool DefaultRendererPrivate::showOnlyOneMimePart() const +{ + return mShowOnlyOneMimePart; +} + +bool DefaultRendererPrivate::showSignatureDetails() const +{ + return mShowSignatureDetails; +} + +int DefaultRendererPrivate::levelQuote() const +{ + return mLevelQuote; +} + +DefaultRenderer::DefaultRenderer(CSSHelperBase *cssHelper) + : d(new DefaultRendererPrivate(cssHelper, MessagePartRendererFactory::instance())) { } @@ -910,3 +1075,70 @@ { delete d; } + +void DefaultRenderer::setShowOnlyOneMimePart(bool onlyOneMimePart) +{ + d->mShowOnlyOneMimePart = onlyOneMimePart; +} + +void DefaultRenderer::setAttachmentStrategy(const AttachmentStrategy *strategy) +{ + d->mAttachmentStrategy = strategy; +} + +void DefaultRenderer::setShowEmoticons(bool showEmoticons) +{ + d->mShowEmoticons = showEmoticons; +} + +void DefaultRenderer::setIsPrinting(bool isPrinting) +{ + d->mIsPrinting = isPrinting; +} + +void DefaultRenderer::setShowExpandQuotesMark(bool showExpandQuotesMark) +{ + d->mShowExpandQuotesMark = showExpandQuotesMark; +} + +void DefaultRenderer::setShowSignatureDetails(bool showSignatureDetails) +{ + d->mShowSignatureDetails = showSignatureDetails; +} + +void DefaultRenderer::setLevelQuote(int levelQuote) +{ + d->mLevelQuote = levelQuote; +} + +void DefaultRenderer::setHtmlLoadExternal(bool htmlLoadExternal) +{ + d->mHtmlLoadExternal = htmlLoadExternal; +} + +void DefaultRenderer::setCreateMessageHeader(std::function createMessageHeader) +{ + d->mCreateMessageHeader = createMessageHeader; +} + +QString renderTreeHelper(const MimeTreeParser::MessagePart::Ptr &messagePart, QString indent) +{ + const QString line + = QStringLiteral("%1 * %3\n").arg(indent, + QString::fromUtf8(messagePart->metaObject()->className())); + QString ret = line; + + indent += QStringLiteral(" "); + foreach (const auto &subPart, messagePart->subParts()) { + ret += renderTreeHelper(subPart, indent); + } + return ret; +} + +void DefaultRenderer::render(const MimeTreeParser::MessagePart::Ptr &msgPart, HtmlWriter *writer) +{ + qCDebug(MESSAGEVIEWER_LOG) << "MimeTreeParser structure:"; + qCDebug(MESSAGEVIEWER_LOG) << qPrintable(renderTreeHelper(msgPart, QString())); + d->mMsgPart = msgPart; + d->renderFactory(d->mMsgPart, writer); +} diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/defaultrenderer.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/defaultrenderer.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/defaultrenderer.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/defaultrenderer.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,29 +17,46 @@ 02110-1301, USA. */ -#ifndef __MESSAGEVIEWER_DEFAULTRENDERER_H__ -#define __MESSAGEVIEWER_DEFAULTRENDERER_H__ +#ifndef MESSAGEVIEWER_DEFAULTRENDERER_H +#define MESSAGEVIEWER_DEFAULTRENDERER_H #include +#include + +namespace KMime { +class Message; +} + namespace MimeTreeParser { -class DefaultRendererPrivate; -class HtmlWriter; class MessagePart; typedef QSharedPointer MessagePartPtr; } namespace MessageViewer { +class DefaultRendererPrivate; +class HtmlWriter; +class AttachmentStrategy; class CSSHelperBase; class DefaultRenderer { public: - DefaultRenderer(const MimeTreeParser::MessagePartPtr &msgPart, CSSHelperBase *cssHelder, MimeTreeParser::HtmlWriter *writer); + DefaultRenderer(CSSHelperBase *cssHelder); ~DefaultRenderer(); + void setShowOnlyOneMimePart(bool onlyOneMimePart); + void setAttachmentStrategy(const AttachmentStrategy *strategy); + void setShowEmoticons(bool showEmoticons); + void setIsPrinting(bool isPrinting); + void setShowExpandQuotesMark(bool showExpandQuotesMark); + void setShowSignatureDetails(bool showSignatureDetails); + void setLevelQuote(int levelQuote); + void setHtmlLoadExternal(bool htmlLoadExternal); + void setCreateMessageHeader(std::function); + void render(const MimeTreeParser::MessagePartPtr &msgPart, HtmlWriter *writer); private: - MimeTreeParser::DefaultRendererPrivate *d; + DefaultRendererPrivate *d; }; } -#endif //__MIMETREEPARSER_MAILRENDERER_H__ +#endif //__MESSAGEVIEWER_MAILRENDERER_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/defaultrenderer_p.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/defaultrenderer_p.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/defaultrenderer_p.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/defaultrenderer_p.h 2018-07-06 05:43:41.000000000 +0000 @@ -16,53 +16,70 @@ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifndef __MESSAGEVIEWER_DEFAULTRENDERER_P_H__ -#define __MESSAGEVIEWER_DEFAULTRENDERER_P_H__ +#ifndef MESSAGEVIEWER_DEFAULTRENDERER_P_H +#define MESSAGEVIEWER_DEFAULTRENDERER_P_H #include "defaultrenderer.h" #include "messagepartrendererbase.h" #include -using namespace MimeTreeParser; -using namespace MessageViewer; - namespace MessageViewer { +class AttachmentStrategy; class MessagePartRendererFactory; class CSSHelperBase; class HtmlWriter; -} -namespace MimeTreeParser { -class DefaultRendererPrivate : public MessageViewer::RenderContext +class DefaultRendererPrivate : public RenderContext { public: - DefaultRendererPrivate(const MessagePart::Ptr &msgPart, CSSHelperBase *cssHelper, HtmlWriter *writer, const MessagePartRendererFactory *rendererFactory); - ~DefaultRendererPrivate(); + DefaultRendererPrivate(CSSHelperBase *cssHelper, const MessagePartRendererFactory *rendererFactory); + ~DefaultRendererPrivate() override; CSSHelperBase *cssHelper() const override; - Interface::ObjectTreeSource *source() const; + MimeTreeParser::Interface::ObjectTreeSource *source() const; - void renderSubParts(const MessagePart::Ptr &msgPart, HtmlWriter *htmlWriter) override; + void renderSubParts(const MimeTreeParser::MessagePart::Ptr &msgPart, HtmlWriter *htmlWriter) override; - void render(const MessagePartList::Ptr &mp, HtmlWriter *htmlWriter); - void render(const MimeMessagePart::Ptr &mp, HtmlWriter *htmlWriter); - void render(const EncapsulatedRfc822MessagePart::Ptr &mp, HtmlWriter *htmlWriter); - void render(const HtmlMessagePart::Ptr &mp, HtmlWriter *htmlWriter); - void renderEncrypted(const EncryptedMessagePart::Ptr &mp, HtmlWriter *htmlWriter); - void renderSigned(const SignedMessagePart::Ptr &mp, HtmlWriter *htmlWriter); - void render(const SignedMessagePart::Ptr &mp, HtmlWriter *htmlWriter); - void render(const EncryptedMessagePart::Ptr &mp, HtmlWriter *htmlWriter); - void render(const AlternativeMessagePart::Ptr &mp, HtmlWriter *htmlWriter); - void render(const CertMessagePart::Ptr &mp, HtmlWriter *htmlWriter); - bool renderWithFactory(const QMetaObject *mo, const MessagePart::Ptr &msgPart, HtmlWriter *writer) override; + void render(const MimeTreeParser::MessagePartList::Ptr &mp, HtmlWriter *htmlWriter); + void render(const MimeTreeParser::MimeMessagePart::Ptr &mp, HtmlWriter *htmlWriter); + void render(const MimeTreeParser::EncapsulatedRfc822MessagePart::Ptr &mp, HtmlWriter *htmlWriter); + void render(const MimeTreeParser::HtmlMessagePart::Ptr &mp, HtmlWriter *htmlWriter); + void renderEncrypted(const MimeTreeParser::EncryptedMessagePart::Ptr &mp, HtmlWriter *htmlWriter); + void renderSigned(const MimeTreeParser::SignedMessagePart::Ptr &mp, HtmlWriter *htmlWriter); + void render(const MimeTreeParser::SignedMessagePart::Ptr &mp, HtmlWriter *htmlWriter); + void render(const MimeTreeParser::EncryptedMessagePart::Ptr &mp, HtmlWriter *htmlWriter); + void render(const MimeTreeParser::AlternativeMessagePart::Ptr &mp, HtmlWriter *htmlWriter); + void render(const MimeTreeParser::CertMessagePart::Ptr &mp, HtmlWriter *htmlWriter); + bool renderWithFactory(const QMetaObject *mo, const MimeTreeParser::MessagePart::Ptr &msgPart, HtmlWriter *writer) override; using RenderContext::renderWithFactory; - void renderFactory(const MessagePart::Ptr &msgPart, HtmlWriter *htmlWriter); + void renderFactory(const MimeTreeParser::MessagePart::Ptr &msgPart, HtmlWriter *htmlWriter); + + bool isHiddenHint(const MimeTreeParser::MessagePart::Ptr &msgPart) override; + MimeTreeParser::IconType displayHint(const MimeTreeParser::MessagePart::Ptr &msgPart) override; + bool showEmoticons() const override; + bool isPrinting() const override; + bool htmlLoadExternal() const override; + bool showExpandQuotesMark() const override; + bool showOnlyOneMimePart() const override; + bool showSignatureDetails() const override; + int levelQuote() const override; - MessagePart::Ptr mMsgPart; + MimeTreeParser::MessagePart::Ptr mMsgPart; CSSHelperBase *mCSSHelper = nullptr; - const MessageViewer::MessagePartRendererFactory *mRendererFactory = nullptr; + const MessagePartRendererFactory *mRendererFactory = nullptr; + const AttachmentStrategy *mAttachmentStrategy = nullptr; + std::function mCreateMessageHeader; + + int mLevelQuote = 1; + + bool mShowEmoticons = false; + bool mIsPrinting = false; + bool mHtmlLoadExternal = false; + bool mShowExpandQuotesMark = false; + bool mShowOnlyOneMimePart = false; + bool mShowSignatureDetails = false; }; } #endif diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/htmlblock.cpp kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/htmlblock.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/htmlblock.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/htmlblock.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -26,7 +26,7 @@ #include -using namespace MimeTreeParser; +using namespace MessageViewer; HTMLBlock::HTMLBlock() : entered(false) @@ -60,7 +60,7 @@ return QString(); } -AttachmentMarkBlock::AttachmentMarkBlock(MimeTreeParser::HtmlWriter *writer, KMime::Content *node) +AttachmentMarkBlock::AttachmentMarkBlock(HtmlWriter *writer, KMime::Content *node) : mNode(node) , mWriter(writer) { diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/htmlblock.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/htmlblock.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/htmlblock.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/htmlblock.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_HTMLBLOCK_H__ -#define __MIMETREEPARSER_HTMLBLOCK_H__ +#ifndef MIMETREEPARSER_HTMLBLOCK_H +#define MIMETREEPARSER_HTMLBLOCK_H #include "messageviewer_export.h" @@ -29,7 +29,7 @@ class Content; } -namespace MimeTreeParser { +namespace MessageViewer { class HtmlWriter; class MESSAGEVIEWER_EXPORT HTMLBlock @@ -58,7 +58,7 @@ class MESSAGEVIEWER_EXPORT AttachmentMarkBlock : public HTMLBlock { public: - AttachmentMarkBlock(MimeTreeParser::HtmlWriter *writer, KMime::Content *node); + AttachmentMarkBlock(HtmlWriter *writer, KMime::Content *node); virtual ~AttachmentMarkBlock(); protected: @@ -79,7 +79,7 @@ class RootBlock : public HTMLBlock { public: - RootBlock(MimeTreeParser::HtmlWriter *writer); + RootBlock(HtmlWriter *writer); virtual ~RootBlock(); protected: @@ -93,4 +93,4 @@ HtmlWriter *mWriter = nullptr; }; } -#endif //__MIMETREEPARSER_HTMLBLOCK_H__ +#endif //__MIMETREEPARSER_HTMLBLOCK_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/messagepartrendererbase.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/messagepartrendererbase.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/messagepartrendererbase.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/messagepartrendererbase.h 2018-07-06 05:43:41.000000000 +0000 @@ -27,8 +27,8 @@ your version. */ -#ifndef __MESSAGEVIEWER_MESSAGEPARTRENDERERBASE_H__ -#define __MESSAGEVIEWER_MESSAGEPARTRENDERERBASE_H__ +#ifndef MESSAGEVIEWER_MESSAGEPARTRENDERERBASE_H +#define MESSAGEVIEWER_MESSAGEPARTRENDERERBASE_H #include "messageviewer_export.h" @@ -39,12 +39,9 @@ #include -namespace MimeTreeParser { -class HtmlWriter; -} - namespace MessageViewer { class CSSHelperBase; +class HtmlWriter; class MESSAGEVIEWER_EXPORT RenderContext { @@ -53,20 +50,30 @@ virtual CSSHelperBase *cssHelper() const = 0; template - inline bool renderWithFactory(const MimeTreeParser::MessagePart::Ptr &msgPart, MimeTreeParser::HtmlWriter *writer) + inline bool renderWithFactory(const MimeTreeParser::MessagePart::Ptr &msgPart, HtmlWriter *writer) { return renderWithFactory(&T::staticMetaObject, msgPart, writer); } - inline bool renderWithFactory(const MimeTreeParser::MessagePart::Ptr &msgPart, MimeTreeParser::HtmlWriter *writer) + inline bool renderWithFactory(const MimeTreeParser::MessagePart::Ptr &msgPart, HtmlWriter *writer) { return renderWithFactory(msgPart->metaObject(), msgPart, writer); } - virtual void renderSubParts(const MimeTreeParser::MessagePart::Ptr &msgPart, MimeTreeParser::HtmlWriter *htmlWriter) = 0; + virtual void renderSubParts(const MimeTreeParser::MessagePart::Ptr &msgPart, HtmlWriter *htmlWriter) = 0; + + virtual bool isHiddenHint(const MimeTreeParser::MessagePart::Ptr &msgPart) = 0; + virtual MimeTreeParser::IconType displayHint(const MimeTreeParser::MessagePart::Ptr &msgPart) = 0; + virtual bool showEmoticons() const = 0; + virtual bool isPrinting() const = 0; + virtual bool htmlLoadExternal() const = 0; + virtual bool showExpandQuotesMark() const = 0; + virtual bool showOnlyOneMimePart() const = 0; + virtual bool showSignatureDetails() const = 0; + virtual int levelQuote() const = 0; protected: - virtual bool renderWithFactory(const QMetaObject *mo, const MimeTreeParser::MessagePart::Ptr &msgPart, MimeTreeParser::HtmlWriter *writer) = 0; + virtual bool renderWithFactory(const QMetaObject *mo, const MimeTreeParser::MessagePart::Ptr &msgPart, HtmlWriter *writer) = 0; }; class MESSAGEVIEWER_EXPORT MessagePartRendererBase @@ -74,7 +81,7 @@ public: MessagePartRendererBase(); virtual ~MessagePartRendererBase(); - virtual bool render(const MimeTreeParser::MessagePart::Ptr &, MimeTreeParser::HtmlWriter *htmlWriter, RenderContext *context) + virtual bool render(const MimeTreeParser::MessagePart::Ptr &, HtmlWriter *htmlWriter, RenderContext *context) const = 0; }; } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/messagepartrendererfactory_p.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/messagepartrendererfactory_p.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/messagepartrendererfactory_p.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/messagepartrendererfactory_p.h 2018-07-06 05:43:41.000000000 +0000 @@ -27,8 +27,8 @@ your version. */ -#ifndef __MESSAGEVIEWER_MESSAGEPARTRENDERERBASEFACTORY_P_H__ -#define __MESSAGEVIEWER_MESSAGEPARTRENDERERBASEFACTORY_P_H__ +#ifndef MESSAGEVIEWER_MESSAGEPARTRENDERERBASEFACTORY_P_H +#define MESSAGEVIEWER_MESSAGEPARTRENDERERBASEFACTORY_P_H #include #include diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.cpp kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/messagepartrenderermanager.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/attachmentmessagepartrenderer.cpp kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/attachmentmessagepartrenderer.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/attachmentmessagepartrenderer.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/attachmentmessagepartrenderer.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -22,11 +22,10 @@ #include "quotehtml.h" #include "utils/mimetype.h" -#include "../defaultrenderer_p.h" #include "../messagepartrenderermanager.h" #include -#include +#include "interfaces/htmlwriter.h" #include #include @@ -42,19 +41,19 @@ { } -bool AttachmentMessagePartRenderer::render(const MimeTreeParser::MessagePartPtr &msgPart, MimeTreeParser::HtmlWriter *htmlWriter, RenderContext *context) const +bool AttachmentMessagePartRenderer::render(const MimeTreeParser::MessagePartPtr &msgPart, HtmlWriter *htmlWriter, RenderContext *context) const { - auto mp = msgPart.dynamicCast(); + auto mp = msgPart.dynamicCast(); if (!mp) { return false; } KMime::Content *node = mp->content(); - if (mp->isHidden()) { + if (context->isHiddenHint(msgPart)) { return true; } - const auto tmpAsIcon = mp->asIcon(); + const auto tmpAsIcon = context->displayHint(msgPart); if (tmpAsIcon == MimeTreeParser::NoIcon) { return context->renderWithFactory(mp, htmlWriter); @@ -73,7 +72,7 @@ } else { iconPath = MessageViewer::Util::iconPathForContent(node, KIconLoader::Desktop); if (iconPath.right(14) == QLatin1String("mime_empty.png")) { - NodeHelper::magicSetType(node); + MimeTreeParser::NodeHelper::magicSetType(node); iconPath = MessageViewer::Util::iconPathForContent(node, KIconLoader::Desktop); } } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/attachmentmessagepartrenderer.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/attachmentmessagepartrenderer.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/attachmentmessagepartrenderer.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/attachmentmessagepartrenderer.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MESSAGEVIEWER_DEFAULTRENDERER_ATTACHMENTMESSAGEPARTRENDERER_H__ -#define __MESSAGEVIEWER_DEFAULTRENDERER_ATTACHMENTMESSAGEPARTRENDERER_H__ +#ifndef MESSAGEVIEWER_DEFAULTRENDERER_ATTACHMENTMESSAGEPARTRENDERER_H +#define MESSAGEVIEWER_DEFAULTRENDERER_ATTACHMENTMESSAGEPARTRENDERER_H #include "../messagepartrendererbase.h" @@ -27,8 +27,8 @@ { public: AttachmentMessagePartRenderer(); - virtual ~AttachmentMessagePartRenderer(); - bool render(const MimeTreeParser::MessagePartPtr &msgPart, MimeTreeParser::HtmlWriter *htmlWriter, RenderContext *context) const override; + ~AttachmentMessagePartRenderer() override; + bool render(const MimeTreeParser::MessagePartPtr &msgPart, HtmlWriter *htmlWriter, RenderContext *context) const override; }; } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/messagepartrenderer.cpp kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/messagepartrenderer.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/messagepartrenderer.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/messagepartrenderer.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -24,7 +24,7 @@ #include "../htmlblock.h" #include "../defaultrenderer_p.h" -#include +#include "interfaces/htmlwriter.h" using namespace MessageViewer; @@ -36,14 +36,13 @@ { } -bool MessagePartRenderer::render(const MimeTreeParser::MessagePartPtr &msgPart, MimeTreeParser::HtmlWriter *htmlWriter, RenderContext *context) const +bool MessagePartRenderer::render(const MimeTreeParser::MessagePartPtr &msgPart, HtmlWriter *htmlWriter, RenderContext *context) const { - MimeTreeParser::AttachmentMarkBlock block(nullptr, msgPart->attachmentContent()); + AttachmentMarkBlock block(nullptr, msgPart->attachmentContent()); if (msgPart->isAttachment()) { htmlWriter->write(block.enter()); } - - htmlWriter->write(quotedHTML(msgPart->text(), msgPart->source(), context->cssHelper())); + quotedHTML(msgPart->text(), context, htmlWriter); htmlWriter->write(block.exit()); return true; } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/messagepartrenderer.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/messagepartrenderer.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/messagepartrenderer.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/messagepartrenderer.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MESSAGEVIEWER_DEFAULTRENDERER_MESSAGEPARTRENDERER_H__ -#define __MESSAGEVIEWER_DEFAULTRENDERER_MESSAGEPARTRENDERER_H__ +#ifndef MESSAGEVIEWER_DEFAULTRENDERER_MESSAGEPARTRENDERER_H +#define MESSAGEVIEWER_DEFAULTRENDERER_MESSAGEPARTRENDERER_H #include "../messagepartrendererbase.h" @@ -29,8 +29,8 @@ { public: MessagePartRenderer(); - virtual ~MessagePartRenderer(); - bool render(const MimeTreeParser::MessagePartPtr &msgPart, MimeTreeParser::HtmlWriter *htmlWriter, RenderContext *context) const override; + ~MessagePartRenderer() override; + bool render(const MimeTreeParser::MessagePartPtr &msgPart, HtmlWriter *htmlWriter, RenderContext *context) const override; }; } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/quotehtml.cpp kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/quotehtml.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/quotehtml.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/quotehtml.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -22,7 +22,8 @@ #include "utils/iconnamecache.h" #include "viewer/csshelperbase.h" -#include +#include +#include #include @@ -106,15 +107,16 @@ return prevLineLength + wordLength + 1 < WRAP_COL; } -QString quotedHTML(const QString &s, MimeTreeParser::Interface::ObjectTreeSource *source, MessageViewer::CSSHelperBase *cssHelper) +void quotedHTML(const QString &s, MessageViewer::RenderContext *context, MessageViewer::HtmlWriter *htmlWriter) { + const auto cssHelper = context->cssHelper(); Q_ASSERT(cssHelper); KTextToHTML::Options convertFlags = KTextToHTML::PreserveSpaces | KTextToHTML::HighlightText; - if (source->showEmoticons()) { + if (context->showEmoticons()) { convertFlags |= KTextToHTML::ReplaceSmileys; } - QString htmlStr; + const QString normalStartTag = cssHelper->nonQuotedFontTag(); QString quoteFontTag[3]; QString deepQuoteFontTag[3]; @@ -143,7 +145,7 @@ QString collapseIconPath; QString expandIconPath; - if (source->showExpandQuotesMark()) { + if (context->showExpandQuotesMark()) { collapseIconPath = MessageViewer::IconNameCache::instance()->iconPathFromLocal(QStringLiteral( "quotecollapse.png")); expandIconPath @@ -191,68 +193,66 @@ bool actHidden = false; // This quoted line needs be hidden - if (source->showExpandQuotesMark() && source->levelQuote() >= 0 - && source->levelQuote() <= actQuoteLevel) { + if (context->showExpandQuotesMark() && context->levelQuote() >= 0 + && context->levelQuote() <= actQuoteLevel) { actHidden = true; } if (actQuoteLevel != currQuoteLevel) { /* finish last quotelevel */ if (currQuoteLevel == -1) { - htmlStr.append(normalEndTag); + htmlWriter->write(normalEndTag); } else if (currQuoteLevel >= 0 && !curHidden) { - htmlStr.append(quoteEnd); + htmlWriter->write(quoteEnd); } //Close blockquote if (previousQuoteDepth > actQuoteLevel) { - htmlStr += cssHelper->addEndBlockQuote(previousQuoteDepth - actQuoteLevel); + htmlWriter->write(cssHelper->addEndBlockQuote(previousQuoteDepth - actQuoteLevel)); } /* start new quotelevel */ if (actQuoteLevel == -1) { - htmlStr += normalStartTag; + htmlWriter->write(normalStartTag); } else { - if (source->showExpandQuotesMark()) { + if (context->showExpandQuotesMark()) { // Add blockquote if (previousQuoteDepth < actQuoteLevel) { - htmlStr - += cssHelper->addStartBlockQuote(actQuoteLevel - previousQuoteDepth); + htmlWriter->write(cssHelper->addStartBlockQuote(actQuoteLevel - previousQuoteDepth)); } if (actHidden) { //only show the QuoteMark when is the first line of the level hidden if (!curHidden) { //Expand all quotes - htmlStr += QLatin1String("
"); - htmlStr += QStringLiteral("" - "") - .arg(-1) - .arg(expandIconPath); - htmlStr += QLatin1String("

"); + htmlWriter->write(QLatin1String("
")); + htmlWriter->write(QStringLiteral("" + "") + .arg(-1) + .arg(expandIconPath)); + htmlWriter->write(QLatin1String("

")); } } else { - htmlStr += QLatin1String("
"); - htmlStr += QStringLiteral("" - "") - .arg(actQuoteLevel) - .arg(collapseIconPath); - htmlStr += QLatin1String("
"); + htmlWriter->write(QLatin1String("
")); + htmlWriter->write(QStringLiteral("" + "") + .arg(actQuoteLevel) + .arg(collapseIconPath)); + htmlWriter->write(QLatin1String("
")); if (actQuoteLevel < 3) { - htmlStr += quoteFontTag[actQuoteLevel]; + htmlWriter->write(quoteFontTag[actQuoteLevel]); } else { - htmlStr += deepQuoteFontTag[actQuoteLevel % 3]; + htmlWriter->write(deepQuoteFontTag[actQuoteLevel % 3]); } } } else { // Add blockquote if (previousQuoteDepth < actQuoteLevel) { - htmlStr - += cssHelper->addStartBlockQuote(actQuoteLevel - previousQuoteDepth); + htmlWriter->write(cssHelper->addStartBlockQuote(actQuoteLevel - previousQuoteDepth)); } if (actQuoteLevel < 3) { - htmlStr += quoteFontTag[actQuoteLevel]; + htmlWriter->write(quoteFontTag[actQuoteLevel]); } else { - htmlStr += deepQuoteFontTag[actQuoteLevel % 3]; + htmlWriter->write(deepQuoteFontTag[actQuoteLevel % 3]); } } } @@ -267,34 +267,31 @@ if (startNewPara) { paraIsRTL = line.isRightToLeft(); } - htmlStr += QStringLiteral("
").arg(paraIsRTL ? QStringLiteral( - "rtl") : QStringLiteral("ltr")); + htmlWriter->write(QStringLiteral("
") + .arg(paraIsRTL ? QStringLiteral("rtl") : QStringLiteral("ltr"))); // if quoteLengh == 0 && foundQuote => a simple quote if (foundQuote) { quoteLength++; const int rightString = (line.length()) - quoteLength; if (rightString > 0) { - htmlStr += QStringLiteral("%1").arg(line.left( - quoteLength)); - htmlStr += QStringLiteral("").arg(cssHelper->quoteColorName( - actQuoteLevel)) - + KTextToHTML::convertToHtml(line.right( - rightString), - convertFlags) + QStringLiteral( - ""); + htmlWriter->write(QStringLiteral("%1") + .arg(line.left(quoteLength))); + htmlWriter->write(QStringLiteral("") + .arg(cssHelper->quoteColorName(actQuoteLevel))); + htmlWriter->write(KTextToHTML::convertToHtml(line.right(rightString), convertFlags, 4096, 512)); + htmlWriter->write(QStringLiteral("")); } else { - htmlStr - += QStringLiteral("%1").arg(line.left( - quoteLength)); + htmlWriter->write(QStringLiteral("%1") + .arg(line.left(quoteLength))); } } else { - htmlStr += KTextToHTML::convertToHtml(line, convertFlags); + htmlWriter->write(KTextToHTML::convertToHtml(line, convertFlags, 4096, 512)); } - htmlStr += QLatin1String("
"); + htmlWriter->write(QLatin1String("
")); startNewPara = looksLikeParaBreak(s, pos); } else { - htmlStr += QLatin1String("
"); + htmlWriter->write(QLatin1String("
")); // after an empty line, always start a new paragraph startNewPara = true; } @@ -304,13 +301,8 @@ /* really finish the last quotelevel */ if (currQuoteLevel == -1) { - htmlStr.append(normalEndTag); + htmlWriter->write(normalEndTag); } else { - htmlStr += quoteEnd + cssHelper->addEndBlockQuote(currQuoteLevel + 1); + htmlWriter->write(quoteEnd + cssHelper->addEndBlockQuote(currQuoteLevel + 1)); } - - // qCDebug(MESSAGEVIEWER_LOG) << "========================================\n" - // << htmlStr - // << "\n======================================\n"; - return htmlStr; } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/quotehtml.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/quotehtml.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/quotehtml.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/quotehtml.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,21 +17,16 @@ 02110-1301, USA. */ -#ifndef __MESSAGEVIEWER_DEFAULTRENDERER_QUOTEHTML_H__ -#define __MESSAGEVIEWER_DEFAULTRENDERER_QUOTEHTML_H__ +#ifndef MESSAGEVIEWER_DEFAULTRENDERER_QUOTEHTML_H +#define MESSAGEVIEWER_DEFAULTRENDERER_QUOTEHTML_H #include -namespace MimeTreeParser { -namespace Interface { -class ObjectTreeSource; -} -} - namespace MessageViewer { -class CSSHelperBase; +class HtmlWriter; +class RenderContext; } -QString quotedHTML(const QString &s, MimeTreeParser::Interface::ObjectTreeSource *source, MessageViewer::CSSHelperBase *cssHelper); +void quotedHTML(const QString &s, MessageViewer::RenderContext *context, MessageViewer::HtmlWriter *htmlWriter); #endif diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/textmessagepartrenderer.cpp kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/textmessagepartrenderer.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/textmessagepartrenderer.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/textmessagepartrenderer.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -21,11 +21,10 @@ #include "quotehtml.h" -#include "../defaultrenderer_p.h" #include "../messagepartrenderermanager.h" #include -#include +#include "interfaces/htmlwriter.h" #include #include @@ -40,21 +39,27 @@ { } -bool TextMessagePartRenderer::render(const MimeTreeParser::MessagePartPtr &msgPart, MimeTreeParser::HtmlWriter *htmlWriter, RenderContext *context) const +bool TextMessagePartRenderer::render(const MimeTreeParser::MessagePartPtr &msgPart, HtmlWriter *htmlWriter, RenderContext *context) const { Q_UNUSED(context); - auto mp = msgPart.dynamicCast(); + auto mp = msgPart.dynamicCast(); if (!mp) { return false; } - if (mp->isHidden()) { + if (context->isHiddenHint(msgPart)) { return true; } + const auto tmpAsIcon = context->displayHint(msgPart); + if (tmpAsIcon != MimeTreeParser::NoIcon) { + return context->renderWithFactory(mp, htmlWriter); + } + Grantlee::Template t; Grantlee::Context c = MessagePartRendererManager::self()->createContext(); c.insert(QStringLiteral("block"), msgPart.data()); + c.insert(QStringLiteral("showOnlyOneMimePart"), context->showOnlyOneMimePart()); c.insert(QStringLiteral("content"), QVariant::fromValue([mp, htmlWriter, context](Grantlee::OutputStream *) { context->renderSubParts(mp, htmlWriter); })); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/textmessagepartrenderer.h kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/textmessagepartrenderer.h --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/plugins/textmessagepartrenderer.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/plugins/textmessagepartrenderer.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MESSAGEVIEWER_DEFAULTRENDERER_TEXTMESSAGEPARTRENDERER_H__ -#define __MESSAGEVIEWER_DEFAULTRENDERER_TEXTMESSAGEPARTRENDERER_H__ +#ifndef MESSAGEVIEWER_DEFAULTRENDERER_TEXTMESSAGEPARTRENDERER_H +#define MESSAGEVIEWER_DEFAULTRENDERER_TEXTMESSAGEPARTRENDERER_H #include "../messagepartrendererbase.h" @@ -27,8 +27,8 @@ { public: TextMessagePartRenderer(); - virtual ~TextMessagePartRenderer(); - bool render(const MimeTreeParser::MessagePartPtr &msgPart, MimeTreeParser::HtmlWriter *htmlWriter, RenderContext *context) const override; + ~TextMessagePartRenderer() override; + bool render(const MimeTreeParser::MessagePartPtr &msgPart, HtmlWriter *htmlWriter, RenderContext *context) const override; }; } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/templates/textmessagepart.html kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/templates/textmessagepart.html --- kf5-messagelib-17.12.3/messageviewer/src/messagepartthemes/default/templates/textmessagepart.html 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messagepartthemes/default/templates/textmessagepart.html 2018-07-06 05:43:41.000000000 +0000 @@ -2,7 +2,7 @@
{% endif %} -{% if block.showTextFrame %} +{% if not showOnlyOneMimePart and not block.isFirstTextPart and block.hasLabel %}
diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstrategy.cpp kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstrategy.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstrategy.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstrategy.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Montel Laurent + Copyright (C) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstrategy.h kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstrategy.h --- kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstrategy.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstrategy.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Montel Laurent + Copyright (C) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -27,7 +27,7 @@ { public: DefaultGrantleeHeaderStrategy(); - ~DefaultGrantleeHeaderStrategy(); + ~DefaultGrantleeHeaderStrategy() override; public: const char *name() const override diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleinterface.cpp kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleinterface.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleinterface.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleinterface.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Montel Laurent + Copyright (C) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleinterface.h kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleinterface.h --- kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleinterface.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleinterface.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Montel Laurent + Copyright (C) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -29,7 +29,7 @@ Q_OBJECT public: explicit DefaultGrantleeHeaderStyleInterface(HeaderStylePlugin *plugin, QObject *parent = nullptr); - ~DefaultGrantleeHeaderStyleInterface(); + ~DefaultGrantleeHeaderStyleInterface() override; void createAction(KActionMenu *menu, QActionGroup *actionGroup, KActionCollection *ac) override; void activateAction() override; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleplugin.cpp kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleplugin.cpp --- kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleplugin.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleplugin.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Montel Laurent + Copyright (C) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -25,10 +25,9 @@ #include using namespace MessageViewer; -K_PLUGIN_FACTORY_WITH_JSON(MessageViewerDefaultGrantleeHeaderStylePluginFactory, - "messageviewer_defaultgrantleeheaderstyleplugin.json", - registerPlugin(); - ) + +K_PLUGIN_CLASS_WITH_JSON(DefaultGrantleeHeaderStylePlugin, + "messageviewer_defaultgrantleeheaderstyleplugin.json") DefaultGrantleeHeaderStylePlugin::DefaultGrantleeHeaderStylePlugin(QObject *parent, const QList &) : MessageViewer::HeaderStylePlugin(parent) diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleplugin.h kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleplugin.h --- kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleplugin.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/defaultgrantleeheaderstyleplugin.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Montel Laurent + Copyright (C) 2015-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -31,7 +31,7 @@ Q_OBJECT public: explicit DefaultGrantleeHeaderStylePlugin(QObject *parent = nullptr, const QList & = QList()); - ~DefaultGrantleeHeaderStylePlugin(); + ~DefaultGrantleeHeaderStylePlugin() override; HeaderStyle *headerStyle() const override; HeaderStrategy *headerStrategy() const override; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/messageviewer_defaultgrantleeheaderstyleplugin.json kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/messageviewer_defaultgrantleeheaderstyleplugin.json --- kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/messageviewer_defaultgrantleeheaderstyleplugin.json 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/messageviewer_defaultgrantleeheaderstyleplugin.json 2018-07-06 05:43:41.000000000 +0000 @@ -1,13 +1,15 @@ { "KPlugin": { "Description": "This plugin provides a default Grantlee mail header.", - "Description[ca@valencia]": "Este connector proporciona una capçalera «Grantlee» predeterminada al correu.", + "Description[ar]": "توفّر هذه الملحقة ترويسة بريد «غرانتلي» مبدئيّة.", + "Description[ca@valencia]": "Aquest connector proporciona una capçalera «Grantlee» predeterminada al correu.", "Description[ca]": "Aquest connector proporciona una capçalera «Grantlee» predeterminada al correu.", "Description[cs]": "Tento modul poskytuje výchozí hlavičku e-mailu Grantlee.", "Description[de]": "Mit diesem Modul können Sie ein Vorspann-Design „Standard-Grantlee“ definieren", "Description[es]": "Este complemento proporciona un encabezado de correo predeterminado Grantlee.", "Description[fi]": "Tämä liitännäinen mahdollistaa oletusarvoisen Grantlee-viestiotsakkeen.", "Description[fr]": "Ce module complémentaire fournit un style d'en-tête Grantlee par défaut.", + "Description[gl]": "Este complemento fornece unha cabeceira de correo predeterminada de Grantlee.", "Description[it]": "Questa estensione fornisce un'intestazione predefinita per la posta basata su Grantlee.", "Description[ko]": "이 플러그인은 기본 Grantlee 메일 헤더를 제공합니다.", "Description[nl]": "Deze plug-in biedt een standaard Grantlee e-mailkop.", @@ -27,6 +29,7 @@ "Description[zh_CN]": "此插件提供默认 Grantlee 邮件头。", "EnabledByDefault": "true", "Name": "Default Grantlee Header Style", + "Name[ar]": "نمط ترويسات «غرانتلي» المبدئيّ", "Name[ca@valencia]": "Estil de capçalera «Grantlee» predeterminat", "Name[ca]": "Estil de capçalera «Grantlee» predeterminat", "Name[cs]": "Výchozí styl hlavičky Grantlee", @@ -36,6 +39,7 @@ "Name[et]": "Grantlee vaikimisi päisestiil", "Name[fi]": "Oletusarvoinen Grantlee-otsaketyyli", "Name[fr]": "Style d'en-tête Grantlee par défaut", + "Name[gl]": "Estilo de cabeceira predeterminado de Grantlee", "Name[it]": "Stile con intestazioni di Grantlee predefinito", "Name[ko]": "기본 Grantlee 헤더 스타일", "Name[nl]": "Stijl met standaard Grantlee header", diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/theme/5.2/header.html kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/theme/5.2/header.html --- kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/theme/5.2/header.html 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/theme/5.2/header.html 2018-07-06 05:43:41.000000000 +0000 @@ -85,6 +85,6 @@ {% endif %} -
+
{{ header.attachmentHtml|safe }}
diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/theme/5.2/kmail_default.desktop kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/theme/5.2/kmail_default.desktop --- kf5-messagelib-17.12.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/theme/5.2/kmail_default.desktop 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messageviewerheaderplugins/defaultgrantleeheaderstyleplugin/theme/5.2/kmail_default.desktop 2018-07-06 05:43:41.000000000 +0000 @@ -2,6 +2,7 @@ Author=KMail 5.2 Default Theme AuthorEmail=montel@kde.org Description=KMail Default Theme 5.2 (Based on Breeze Flat author Kristofer Rickheden Gustavsson) +Description[ar]=سمة «بريدك» المبدئيّة ٥٫٢ (مبنيّة على ”نسيم مسطّح“ لمؤلّفها Kristofer Rickheden Gustavsson) Description[ca]=Tema per omissió pel KMail 5.2 (basat en la Brisa Flat de l'autor Kristofer Rickheden Gustavsson) Description[ca@valencia]=Tema per omissió pel KMail 5.2 (basat en la Brisa Flat de l'autor Kristofer Rickheden Gustavsson) Description[da]=KMail standardtema 5.2 (baseret på Breeze Flat, ophavsmand Kristofer Rickheden Gustavsson) @@ -11,6 +12,7 @@ Description[et]=KMaili vaiketeema 5.2 (aluseks on Breeze Flat, autor Kristofer Rickheden Gustavsson) Description[fi]=KMailin oletusteema 5.2 (jonka pohjana on Kristofer Rickheden Gustavssonin Breeze Flat) Description[fr]=Thème par défaut de KMail 5.2 (partant de Brise, auteur Kristofer Rickheden Gustavsson) +Description[gl]=Versión 5.2 do tema predeterminado de KMail (baseado en Breeze Flat, obra de Kristofer Rickheden Gustavsson). Description[it]=Tema predefinito di KMail 5.2 (basato su Breeze Flat di Kristofer Rickheden Gustavsson) Description[ko]=KMail 기본 테마 5.2(Kristofer Rickheden Gustavsson의 Breeze Flat 테마 기반) Description[nl]=KMail standaard thema 5.2 (gebaseerd op de auteur van Breeze Flat Kristofer Rickheden Gustavsson) @@ -29,6 +31,7 @@ Description[zh_CN]=KMail 默认主题 5.2 (基于微风扁平化作者 Kristofer Rickheden Gustavsson) FileName=header.html Name=KMail 5.2 +Name[ar]=بريدك ٥٫٢ Name[ast]=KMail 5.2 Name[ca]=KMail 5.2 Name[ca@valencia]=KMail 5.2 @@ -40,6 +43,7 @@ Name[et]=KMail 5.2 Name[fi]=KMail 5.2 Name[fr]=KMail 5.2 +Name[gl]=KMail 5.2 Name[ia]=KMail 5.2 Name[it]=KMail 5.2 Name[ko]=KMail 5.2 diff -Nru kf5-messagelib-17.12.3/messageviewer/src/messageviewer_private_export.h kf5-messagelib-18.04.3/messageviewer/src/messageviewer_private_export.h --- kf5-messagelib-17.12.3/messageviewer/src/messageviewer_private_export.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/messageviewer_private_export.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,34 @@ +/* This file is part of the KDE project + Copyright (C) 2017 Sandro Knauß + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef MESSAGEVIEWERPRIVATE_EXPORT_H +#define MESSAGEVIEWERPRIVATE_EXPORT_H + +#include "messageviewer_export.h" + +/* Classes which are exported only for unit tests */ +#ifdef BUILD_TESTING + #ifndef MESSAGEVIEWER_TESTS_EXPORT + #define MESSAGEVIEWER_TESTS_EXPORT MESSAGEVIEWER_EXPORT + # endif +#else /* not compiling tests */ + #define MESSAGEVIEWER_TESTS_EXPORT +#endif + +#endif diff -Nru kf5-messagelib-17.12.3/messageviewer/src/notify/messageviewer.notifyrc kf5-messagelib-18.04.3/messageviewer/src/notify/messageviewer.notifyrc --- kf5-messagelib-17.12.3/messageviewer/src/notify/messageviewer.notifyrc 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/notify/messageviewer.notifyrc 2018-07-06 05:43:41.000000000 +0000 @@ -1,6 +1,7 @@ [Global] IconName=kmail Comment=Message Viewer +Comment[ar]=عارض الرّسائل Comment[ca]=Visor del missatge Comment[ca@valencia]=Visor del missatge Comment[cs]=Prohlížeč zpráv @@ -11,7 +12,7 @@ Comment[et]=Kirjade näitaja Comment[fi]=Viestikatselin Comment[fr]=Afficheur de messages -Comment[gl]=Visor de mensaxes +Comment[gl]=Visor de mensaxes. Comment[ia]=Visor de Message Comment[it]=Visualizzatore del messaggio Comment[ko]=메시지 뷰어 @@ -35,6 +36,7 @@ [Event/adblock-list-download-done] Name=New Ad-Block list download done +Name[ar]=تمّ تنزيل قائمة «حاجب إعلانات» جديدة Name[ca]=La baixada de la nova llista de bloqueig publicitari ha finalitzat Name[ca@valencia]=La baixada de la nova llista de bloqueig publicitari ha finalitzat Name[cs]=Stažení nového seznamu pro Ad-Block dokončeno @@ -68,6 +70,7 @@ Name[x-test]=xxNew Ad-Block list download donexx Name[zh_CN]=新的广告屏蔽列表下载完成 Comment=New Ad-Block list download done +Comment[ar]=تمّ تنزيل قائمة «حاجب إعلانات» جديدة Comment[ca]=La baixada de la nova llista de bloqueig publicitari ha finalitzat Comment[ca@valencia]=La baixada de la nova llista de bloqueig publicitari ha finalitzat Comment[cs]=Stažení nového seznamu pro Ad-Block dokončeno @@ -78,7 +81,7 @@ Comment[et]=Uus AdBlocki loend on alla laaditud Comment[fi]=Uuden mainosestoluettelon lataus valmis Comment[fr]=Téléchargement de la nouvelle liste Ad-Block terminé -Comment[gl]=Rematou a descarga da lista nova de Ad-Block +Comment[gl]=Rematou a descarga da lista nova de Ad-Block. Comment[ia]=Discargamento de nove lista de Ad-Block (bloco de reclame) terminate Comment[it]=Scaricamente completato della nuova lista Ad-Block Comment[ko]=새 광고 차단 목록을 다운로드함 @@ -104,6 +107,7 @@ [Event/adblock-list-download-failed] Name=New Ad-Block list download failed +Name[ar]=فشل تنزيل قائمة «حاجب إعلانات» جديدة Name[ca]=La baixada de la nova llista de bloqueig publicitari ha fallat Name[ca@valencia]=La baixada de la nova llista de bloqueig publicitari ha fallat Name[cs]=Stažení nového seznamu pro Ad-Block selhalo @@ -136,6 +140,7 @@ Name[x-test]=xxNew Ad-Block list download failedxx Name[zh_CN]=新的广告屏蔽列表下载失败 Comment=New Ad-Block list download failed +Comment[ar]=فشل تنزيل قائمة «حاجب إعلانات» جديدة Comment[ca]=La baixada de la nova llista de bloqueig publicitari ha fallat Comment[ca@valencia]=La baixada de la nova llista de bloqueig publicitari ha fallat Comment[cs]=Stažení nového seznamu pro Ad-Block selhalo @@ -146,7 +151,7 @@ Comment[et]=Uue AdBlocki loendi allalaadimine nurjus Comment[fi]=Uuden mainosestoluettelon lataus epäonnistui Comment[fr]=Impossible de télécharger la nouvelle liste Ad-Block -Comment[gl]=Fallou a descarga da lista nova de Ad-Block +Comment[gl]=Fallou a descarga da lista nova de Ad-Block. Comment[ia]=Discargamento de nove lista de Ad-Block (bloco de reclame) falleva Comment[it]=Scaricamente non riuscito della nuova lista Ad-Block Comment[ko]=새 광고 차단 목록 다운로드 실패 diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/autotests/scamattributetest.cpp kf5-messagelib-18.04.3/messageviewer/src/scamdetection/autotests/scamattributetest.cpp --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/autotests/scamattributetest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/autotests/scamattributetest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/autotests/scamattributetest.h kf5-messagelib-18.04.3/messageviewer/src/scamdetection/autotests/scamattributetest.h --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/autotests/scamattributetest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/autotests/scamattributetest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/autotests/scamdetectionwebenginetest.cpp kf5-messagelib-18.04.3/messageviewer/src/scamdetection/autotests/scamdetectionwebenginetest.cpp --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/autotests/scamdetectionwebenginetest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/autotests/scamdetectionwebenginetest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -116,9 +116,40 @@ "test") << true; QTest::newRow("numeric scam4") << QStringLiteral( "test") << true; - QTest::newRow("numeric no scam5") << QStringLiteral( + QTest::newRow("numeric scam5") << QStringLiteral( "http://baseball2.2ndhalfplays.com/nested/attribs") - << false; + << true; + + QTest::newRow("scam") << QStringLiteral( + "https://www.bli.com/manager/dedicated/index.html#/billing/mean") + << true; + + QTest::newRow("scam-amp") << QStringLiteral( + "https://bugs.kde.org/enter_bug.cgi?format=guided&amp;product=gcompris
") + << false; + + QTest::newRow("scam-encoded-url1") << QStringLiteral( + "https://github.com/KDAB/KDStateMachineEditor.git|1.2") + << false; + + QTest::newRow("scam-lowercase") << QStringLiteral( + "http://www.Kde.org") + << false; + QTest::newRow("scam-lowercase-2") << QStringLiteral( + "http://www.Kde.org/KDE/bla") + << false; + QTest::newRow("scam-lowercase-3") << QStringLiteral( + "http://code.qt.io/cgit/%7bnon-gerrit%7d/qt-labs/opencl.git") + << false; + + + QTest::newRow("toplevelrepo") << QStringLiteral( + "https://www.amazon.fr/gp/../gp/goldbox/ref=pe_btn/?nocache=1510065600354") + << false; + + QTest::newRow("toplevelrepo2") << QStringLiteral( + "https://www.amazon.fr/gp/goldbox/ref=pe_btn/?nocache=1510065600354") + << false; } void ScamDetectionWebEngineTest::scamtest() diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/autotests/scamdetectionwebenginetest.h kf5-messagelib-18.04.3/messageviewer/src/scamdetection/autotests/scamdetectionwebenginetest.h --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/autotests/scamdetectionwebenginetest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/autotests/scamdetectionwebenginetest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamattribute.cpp kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamattribute.cpp --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamattribute.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamattribute.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2017 Montel Laurent + Copyright (c) 2013-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamattribute.h kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamattribute.h --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamattribute.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamattribute.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2017 Montel Laurent + Copyright (c) 2013-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by @@ -29,7 +29,7 @@ { public: explicit ScamAttribute(); - ~ScamAttribute(); + ~ScamAttribute() override; ScamAttribute *clone() const override; QByteArray type() const override; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamcheckshorturl.cpp kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamcheckshorturl.cpp --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamcheckshorturl.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamcheckshorturl.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2017 Montel Laurent + Copyright (c) 2013-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamcheckshorturl.h kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamcheckshorturl.h --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamcheckshorturl.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamcheckshorturl.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2017 Montel Laurent + Copyright (c) 2013-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamcheckshorturlmanager.cpp kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamcheckshorturlmanager.cpp --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamcheckshorturlmanager.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamcheckshorturlmanager.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamcheckshorturlmanager.h kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamcheckshorturlmanager.h --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamcheckshorturlmanager.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamcheckshorturlmanager.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamdetectiondetailsdialog.cpp kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamdetectiondetailsdialog.cpp --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamdetectiondetailsdialog.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamdetectiondetailsdialog.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2017 Montel Laurent + Copyright (c) 2013-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by @@ -86,8 +86,8 @@ QTextStream ts(&file); ts.setCodec("UTF-8"); QString htmlStr = mDetails->toHtml(); - htmlStr.replace(QStringLiteral("meta name=\"qrichtext\" content=\"1\""), - QStringLiteral( + htmlStr.replace(QLatin1String("meta name=\"qrichtext\" content=\"1\""), + QLatin1String( "meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"")); ts << htmlStr; file.close(); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamdetectiondetailsdialog.h kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamdetectiondetailsdialog.h --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamdetectiondetailsdialog.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamdetectiondetailsdialog.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2017 Montel Laurent + Copyright (c) 2013-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamdetectionwarningwidget.cpp kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamdetectionwarningwidget.cpp --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamdetectionwarningwidget.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamdetectionwarningwidget.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2017 Montel Laurent + Copyright (c) 2013-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamdetectionwarningwidget.h kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamdetectionwarningwidget.h --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamdetectionwarningwidget.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamdetectionwarningwidget.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2017 Montel Laurent + Copyright (c) 2013-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by @@ -21,13 +21,13 @@ #ifndef SCAMDETECTIONWARNINGWIDGET_H #define SCAMDETECTIONWARNINGWIDGET_H -#include "messageviewer_export.h" +#include "messageviewer_private_export.h" #include namespace MessageViewer { class ScamDetectionWarningWidgetPrivate; -class MESSAGEVIEWER_EXPORT ScamDetectionWarningWidget : public KMessageWidget +class MESSAGEVIEWER_TESTS_EXPORT ScamDetectionWarningWidget : public KMessageWidget { Q_OBJECT public: diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamdetectionwebengine.cpp kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamdetectionwebengine.cpp --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamdetectionwebengine.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamdetectionwebengine.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by @@ -114,10 +114,10 @@ const QString href = mapVariant.value(QStringLiteral("src")).toString(); const QUrl url(href); if (!title.isEmpty()) { - if (title.startsWith(QStringLiteral("http:")) - || title.startsWith(QStringLiteral("https:")) - || title.startsWith(QStringLiteral("www."))) { - if (title.startsWith(QStringLiteral("www."))) { + if (title.startsWith(QLatin1String("http:")) + || title.startsWith(QLatin1String("https:")) + || title.startsWith(QLatin1String("www."))) { + if (title.startsWith(QLatin1String("www."))) { const QString completUrl = url.scheme() + QLatin1String("://") + title; if (completUrl != href && href != (completUrl + QLatin1Char('/'))) { @@ -141,7 +141,7 @@ if (!foundScam) { //2) detect if url href has ip and not server name. const QString hostname = url.host(); - if (hostname.contains(ip4regExp) && !hostname.contains(QStringLiteral("127.0.0.1"))) { //hostname + if (hostname.contains(ip4regExp) && !hostname.contains(QLatin1String("127.0.0.1"))) { //hostname d->mDetails += QLatin1String("
  • ") + i18n( "This email contains a link which points to a numerical IP address (%1) instead of a typical textual website address. This is often the case in scam emails.", addWarningColor(hostname)) + QLatin1String("
  • "); @@ -151,14 +151,14 @@ "This email contains a link which points to a hexadecimal IP address (%1) instead of a typical textual website address. This is often the case in scam emails.", addWarningColor(hostname)) + QLatin1String(""); foundScam = true; - } else if (url.toString().contains(QStringLiteral("url?q="))) { //4) redirect url. + } else if (url.toString().contains(QLatin1String("url?q="))) { //4) redirect url. d->mDetails += QLatin1String("
  • ") + i18n( "This email contains a link (%1) which has a redirection", addWarningColor(url.toString())) + QLatin1String("
  • "); foundScam = true; } else if ((url.toString().count(QStringLiteral("http://")) > 1) || (url.toString().count(QStringLiteral("https://")) > 1)) { //5) more that 1 http in url. - if (!url.toString().contains(QStringLiteral("kmail:showAuditLog"))) { + if (!url.toString().contains(QLatin1String("kmail:showAuditLog"))) { d->mDetails += QLatin1String("
  • ") + i18n( "This email contains a link (%1) which contains multiple http://. This is often the case in scam emails.", addWarningColor(url.toString())) + QLatin1String("
  • "); @@ -175,6 +175,31 @@ foundScam = true; } } + if (!foundScam) { + const QString text = QUrl(mapVariant.value(QStringLiteral("text")).toString()).toDisplayString(); + if (!text.isEmpty()) { + if (text.startsWith(QLatin1String("http:/")) || text.startsWith(QLatin1String("https:/"))) { + if (text != href) { + if (href != (text + QLatin1Char('/'))) { + if (href.toHtmlEscaped() != text) { + //qDebug() << " href: " << href << "text: " << text; + + if (QString::fromUtf8(QUrl(text).toEncoded()) != href) { + if (QUrl(href).toDisplayString() != text) { + if (QUrl::fromUserInput(text).toDisplayString(QUrl::NormalizePathSegments) != href) { + d->mDetails += QLatin1String("
  • ") + i18n( + "This email contains a link which reads as '%1' in the text, but actually points to '%2'. This is often the case in scam emails to mislead the recipient", + addWarningColor(text), addWarningColor(href)) + QLatin1String("
  • "); + foundScam = true; + } + } + } + } + } + } + } + } + } } if (mapResult.value(QStringLiteral("forms")).toInt() > 0) { d->mDetails += QLatin1String("
  • ") + i18n( @@ -183,7 +208,7 @@ foundScam = true; } d->mDetails += QLatin1String(""); - //qDebug()<<" d->mDetails "<< d->mDetails; + // qDebug()<<" d->mDetails "<< d->mDetails; if (foundScam) { Q_EMIT messageMayBeAScam(); } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamdetectionwebengine.h kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamdetectionwebengine.h --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamdetectionwebengine.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamdetectionwebengine.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamexpandurljob.cpp kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamexpandurljob.cpp --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamexpandurljob.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamexpandurljob.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamexpandurljob.h kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamexpandurljob.h --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/scamexpandurljob.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/scamexpandurljob.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/tests/scamdetectionwebengine_gui.cpp kf5-messagelib-18.04.3/messageviewer/src/scamdetection/tests/scamdetectionwebengine_gui.cpp --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/tests/scamdetectionwebengine_gui.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/tests/scamdetectionwebengine_gui.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/scamdetection/tests/scamdetectionwebengine_gui.h kf5-messagelib-18.04.3/messageviewer/src/scamdetection/tests/scamdetectionwebengine_gui.h --- kf5-messagelib-17.12.3/messageviewer/src/scamdetection/tests/scamdetectionwebengine_gui.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/scamdetection/tests/scamdetectionwebengine_gui.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/settings/messageviewer.kcfg.cmake kf5-messagelib-18.04.3/messageviewer/src/settings/messageviewer.kcfg.cmake --- kf5-messagelib-17.12.3/messageviewer/src/settings/messageviewer.kcfg.cmake 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/settings/messageviewer.kcfg.cmake 2018-07-06 05:43:41.000000000 +0000 @@ -51,13 +51,13 @@ false + + true + + false - - true - - false @@ -74,10 +74,6 @@ Enable this option to show quoted text with a smaller font. - - false - - false diff -Nru kf5-messagelib-17.12.3/messageviewer/src/settings/messageviewersettings.h kf5-messagelib-18.04.3/messageviewer/src/settings/messageviewersettings.h --- kf5-messagelib-17.12.3/messageviewer/src/settings/messageviewersettings.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/settings/messageviewersettings.h 2018-07-06 05:43:41.000000000 +0000 @@ -47,7 +47,7 @@ private: MessageViewerSettings(); - virtual ~MessageViewerSettings(); + ~MessageViewerSettings() override; static MessageViewerSettings *mSelf; QTimer *mConfigSyncTimer = nullptr; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/ui/settings.ui kf5-messagelib-18.04.3/messageviewer/src/ui/settings.ui --- kf5-messagelib-17.12.3/messageviewer/src/ui/settings.ui 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/ui/settings.ui 2018-07-06 05:43:41.000000000 +0000 @@ -93,13 +93,6 @@ - - - Show &HTML Side Bar - - - - Reduce font size for &quoted text @@ -224,7 +217,6 @@ kcfg_AccessKeyEnabled - kcfg_showColorBar kcfg_ShrinkQuotes kcfg_ShowExpandQuotesMark kcfg_CollapseQuoteLevelSpin diff -Nru kf5-messagelib-17.12.3/messageviewer/src/utils/iconnamecache.h kf5-messagelib-18.04.3/messageviewer/src/utils/iconnamecache.h --- kf5-messagelib-17.12.3/messageviewer/src/utils/iconnamecache.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/utils/iconnamecache.h 2018-07-06 05:43:41.000000000 +0000 @@ -16,8 +16,8 @@ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifndef __MESSAGEVIEWER_ICONNAMECACHE_H__ -#define __MESSAGEVIEWER_ICONNAMECACHE_H__ +#ifndef MESSAGEVIEWER_ICONNAMECACHE_H +#define MESSAGEVIEWER_ICONNAMECACHE_H #include #include diff -Nru kf5-messagelib-17.12.3/messageviewer/src/utils/markmessagereadhandler.h kf5-messagelib-18.04.3/messageviewer/src/utils/markmessagereadhandler.h --- kf5-messagelib-17.12.3/messageviewer/src/utils/markmessagereadhandler.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/utils/markmessagereadhandler.h 2018-07-06 05:43:41.000000000 +0000 @@ -47,7 +47,7 @@ /** * Destroys the mark message read handler. */ - ~MarkMessageReadHandler(); + ~MarkMessageReadHandler() override; /** * @copydoc AbstractMessageLoadedHandler::setItem() diff -Nru kf5-messagelib-17.12.3/messageviewer/src/utils/messageviewerutil.cpp kf5-messagelib-18.04.3/messageviewer/src/utils/messageviewerutil.cpp --- kf5-messagelib-17.12.3/messageviewer/src/utils/messageviewerutil.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/utils/messageviewerutil.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -128,10 +128,11 @@ return result; } -bool Util::saveContents(QWidget *parent, const KMime::Content::List &contents, QUrl ¤tFolder) +bool Util::saveContents(QWidget *parent, const KMime::Content::List &contents, QList &urlList) { QUrl url, dirUrl; QString recentDirClass; + QUrl currentFolder; const bool multiple = (contents.count() > 1); if (multiple) { // get the dir @@ -268,6 +269,8 @@ const bool result = saveContent(parent, content, curUrl); if (!result) { globalResult = result; + } else { + urlList.append(curUrl); } } } @@ -422,23 +425,19 @@ return true; } -bool Util::saveAttachments(const KMime::Content::List &contents, QWidget *parent, QUrl ¤tFolder) +bool Util::saveAttachments(const KMime::Content::List &contents, QWidget *parent, QList &urlList) { if (contents.isEmpty()) { KMessageBox::information(parent, i18n("Found no attachments to save.")); return false; } - return Util::saveContents(parent, contents, currentFolder); + return Util::saveContents(parent, contents, urlList); } -bool Util::saveMessageInMbox(const Akonadi::Item::List &retrievedMsgs, QWidget *parent, bool appendMessages) +QString Util::generateMboxFileName(const Akonadi::Item &msgBase) { QString fileName; - if (retrievedMsgs.isEmpty()) { - return true; - } - const Akonadi::Item msgBase = retrievedMsgs.first(); if (msgBase.hasPayload()) { fileName @@ -454,6 +453,16 @@ if (!fileName.endsWith(QLatin1String(".mbox"))) { fileName += QLatin1String(".mbox"); } + return fileName; +} + +bool Util::saveMessageInMboxAndGetUrl(QUrl &url, const Akonadi::Item::List &retrievedMsgs, QWidget *parent, bool appendMessages) +{ + if (retrievedMsgs.isEmpty()) { + return false; + } + const Akonadi::Item msgBase = retrievedMsgs.first(); + QString fileName = generateMboxFileName(msgBase); const QString filter = i18n("email messages (*.mbox);;all files (*)"); @@ -500,15 +509,22 @@ i18n("Error saving message")); return false; } - QUrl url = QUrl::fromLocalFile(saveFileName); - if (url.isLocalFile()) { - KRecentDirs::add(fileClass, url.adjusted( + QUrl localUrl = QUrl::fromLocalFile(saveFileName); + if (localUrl.isLocalFile()) { + KRecentDirs::add(fileClass, localUrl.adjusted( QUrl::RemoveFilename | QUrl::StripTrailingSlash).path()); } + url = localUrl; } return true; } +bool Util::saveMessageInMbox(const Akonadi::Item::List &retrievedMsgs, QWidget *parent, bool appendMessages) +{ + QUrl url; + return saveMessageInMboxAndGetUrl(url, retrievedMsgs, parent, appendMessages); +} + QAction *Util::createAppAction(const KService::Ptr &service, bool singleOffer, QActionGroup *actionGroup, QObject *parent) { QString actionName(service->name().replace(QLatin1Char('&'), QStringLiteral("&&"))); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/utils/messageviewerutil.h kf5-messagelib-18.04.3/messageviewer/src/utils/messageviewerutil.h --- kf5-messagelib-17.12.3/messageviewer/src/utils/messageviewerutil.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/utils/messageviewerutil.h 2018-07-06 05:43:41.000000000 +0000 @@ -59,9 +59,10 @@ namespace Util { // return true if we should proceed, false if we should abort bool MESSAGEVIEWER_EXPORT checkOverwrite(const QUrl &url, QWidget *w); +MESSAGEVIEWER_EXPORT bool saveMessageInMboxAndGetUrl(QUrl &url, const Akonadi::Item::List &retrievedMsgs, QWidget *parent, bool appendMessages = false); MESSAGEVIEWER_EXPORT bool saveMessageInMbox(const Akonadi::Item::List &retrievedMsgs, QWidget *parent, bool appendMessages = false); - -MESSAGEVIEWER_EXPORT bool saveAttachments(const KMime::Content::List &contents, QWidget *parent, QUrl ¤tFolder); +MESSAGEVIEWER_EXPORT QString generateMboxFileName(const Akonadi::Item &msgBase); +MESSAGEVIEWER_EXPORT bool saveAttachments(const KMime::Content::List &contents, QWidget *parent, QList &saveUrl); MESSAGEVIEWER_EXPORT QAction *createAppAction(const KService::Ptr &service, bool singleOffer, QActionGroup *actionGroup, QObject *parent); } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/utils/messageviewerutil_p.h kf5-messagelib-18.04.3/messageviewer/src/utils/messageviewerutil_p.h --- kf5-messagelib-17.12.3/messageviewer/src/utils/messageviewerutil_p.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/utils/messageviewerutil_p.h 2018-07-06 05:43:41.000000000 +0000 @@ -52,7 +52,7 @@ KMime::Content::List allContents(const KMime::Content *message); -bool saveContents(QWidget *parent, const KMime::Content::List &contents, QUrl ¤tFolder); +bool saveContents(QWidget *parent, const KMime::Content::List &contents, QList &urlList); bool saveContent(QWidget *parent, KMime::Content *content, const QUrl &url); } } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/utils/mimetype.h kf5-messagelib-18.04.3/messageviewer/src/utils/mimetype.h --- kf5-messagelib-17.12.3/messageviewer/src/utils/mimetype.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/utils/mimetype.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifndef __MESSAGEVIEWER_UTIL_MIMETYPE_H__ -#define __MESSAGEVIEWER_UTIL_MIMETYPE_H__ +#ifndef MESSAGEVIEWER_UTIL_MIMETYPE_H +#define MESSAGEVIEWER_UTIL_MIMETYPE_H #include "messageviewer_export.h" diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/attachmentstrategy.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/attachmentstrategy.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/attachmentstrategy.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/attachmentstrategy.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,371 @@ +/* -*- c++ -*- + attachmentstrategy.cpp + + This file is part of KMail, the KDE mail client. + Copyright (c) 2003 Marc Mutz + Copyright (C) 2009 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.net + Copyright (c) 2009 Andras Mantia + + KMail is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation. + + KMail is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + In addition, as a special exception, the copyright holders give + permission to link the code of this program with any edition of + the Qt library by Trolltech AS, Norway (or with modified versions + of Qt that use the same license as Qt), and distribute linked + combinations including the two. You must obey the GNU General + Public License in all respects for all of the code used other than + Qt. If you modify this file, you may extend this exception to + your version of the file, but you are not obligated to do so. If + you do not wish to do so, delete this exception statement from + your version. +*/ + +#include "attachmentstrategy.h" + +#include +#include + +#include + +#include + +#include "messageviewer_debug.h" + +using namespace MessageViewer; + +static AttachmentStrategy::Display smartDisplay(KMime::Content *node) +{ + const auto cd = node->contentDisposition(false); + + if (cd && cd->disposition() == KMime::Headers::CDinline) { + // explict "inline" disposition: + return AttachmentStrategy::Inline; + } + if (cd && cd->disposition() == KMime::Headers::CDattachment) { + // explicit "attachment" disposition: + return AttachmentStrategy::AsIcon; + } + + const auto ct = node->contentType(false); + if (ct && ct->isText() && ct->name().trimmed().isEmpty() + && (!cd || cd->filename().trimmed().isEmpty())) { + // text/* w/o filename parameter: + return AttachmentStrategy::Inline; + } + return AttachmentStrategy::AsIcon; +} + +// +// IconicAttachmentStrategy: +// show everything but the first text/plain body as icons +// + +class IconicAttachmentStrategy : public AttachmentStrategy +{ + friend class AttachmentStrategy; +protected: + IconicAttachmentStrategy() : AttachmentStrategy() + { + } + + virtual ~IconicAttachmentStrategy() + { + } + +public: + const char *name() const override + { + return "iconic"; + } + + bool inlineNestedMessages() const override + { + return false; + } + + Display defaultDisplay(KMime::Content *node) const override + { + if (node->contentType()->isText() + && (!node->parent() + || (node->contentDisposition()->filename().trimmed().isEmpty() + && node->contentType()->name().trimmed().isEmpty()))) { + // text/* w/o filename parameter: + return Inline; + } + return AsIcon; + } +}; + +// +// SmartAttachmentStrategy: +// in addition to Iconic, show all body parts +// with content-disposition == "inline" and +// all text parts without a filename or name parameter inline +// + +class SmartAttachmentStrategy : public AttachmentStrategy +{ + friend class AttachmentStrategy; +protected: + SmartAttachmentStrategy() : AttachmentStrategy() + { + } + + virtual ~SmartAttachmentStrategy() + { + } + +public: + const char *name() const override + { + return "smart"; + } + + bool inlineNestedMessages() const override + { + return true; + } + + Display defaultDisplay(KMime::Content *node) const override + { + return smartDisplay(node); + } +}; + +// +// InlinedAttachmentStrategy: +// show everything possible inline +// + +class InlinedAttachmentStrategy : public AttachmentStrategy +{ + friend class AttachmentStrategy; +protected: + InlinedAttachmentStrategy() : AttachmentStrategy() + { + } + + virtual ~InlinedAttachmentStrategy() + { + } + +public: + const char *name() const override + { + return "inlined"; + } + + bool inlineNestedMessages() const override + { + return true; + } + + Display defaultDisplay(KMime::Content *) const override + { + return Inline; + } +}; + +// +// HiddenAttachmentStrategy +// show nothing except the first text/plain body part _at all_ +// + +class HiddenAttachmentStrategy : public AttachmentStrategy +{ + friend class AttachmentStrategy; +protected: + HiddenAttachmentStrategy() : AttachmentStrategy() + { + } + + virtual ~HiddenAttachmentStrategy() + { + } + +public: + const char *name() const override + { + return "hidden"; + } + + bool inlineNestedMessages() const override + { + return false; + } + + Display defaultDisplay(KMime::Content *node) const override + { + if (node->contentType()->isText() + && node->contentDisposition()->filename().trimmed().isEmpty() + && node->contentType()->name().trimmed().isEmpty()) { + // text/* w/o filename parameter: + return Inline; + } + if (!node->parent()) { + return Inline; + } + + if (node->parent() && node->parent()->contentType()->isMultipart() + && node->parent()->contentType()->subType() == "related") { + return Inline; + } + + return None; + } +}; + +class HeaderOnlyAttachmentStrategy : public AttachmentStrategy +{ + friend class AttachmentStrategy; +protected: + HeaderOnlyAttachmentStrategy() : AttachmentStrategy() + { + } + + virtual ~HeaderOnlyAttachmentStrategy() + { + } + +public: + const char *name() const override + { + return "headerOnly"; + } + + bool inlineNestedMessages() const override + { + return true; + } + + Display defaultDisplay(KMime::Content *node) const override + { + if (MimeTreeParser::NodeHelper::isInEncapsulatedMessage(node)) { + return smartDisplay(node); + } + + if (!MimeTreeParser::Util::labelForContent(node).isEmpty() && QIcon::hasThemeIcon(MimeTreeParser::Util::iconNameForContent(node)) && !MimeTreeParser::Util::isTypeBlacklisted(node)) { + return None; + } + return smartDisplay(node); + } + + bool requiresAttachmentListInHeader() const override + { + return true; + } +}; + +// +// AttachmentStrategy abstract base: +// + +AttachmentStrategy::AttachmentStrategy() +{ +} + +AttachmentStrategy::~AttachmentStrategy() +{ +} + +const AttachmentStrategy *AttachmentStrategy::create(Type type) +{ + switch (type) { + case Iconic: + return iconic(); + case Smart: + return smart(); + case Inlined: + return inlined(); + case Hidden: + return hidden(); + case HeaderOnly: + return headerOnly(); + } + qCCritical(MESSAGEVIEWER_LOG) << "Unknown attachment startegy ( type ==" + << (int)type << ") requested!"; + return nullptr; // make compiler happy +} + +const AttachmentStrategy *AttachmentStrategy::create(const QString &type) +{ + const QString lowerType = type.toLower(); + if (lowerType == QLatin1String("iconic")) { + return iconic(); + } + //if ( lowerType == "smart" ) return smart(); // not needed, see below + if (lowerType == QLatin1String("inlined")) { + return inlined(); + } + if (lowerType == QLatin1String("hidden")) { + return hidden(); + } + if (lowerType == QLatin1String("headeronly")) { + return headerOnly(); + } + // don't kFatal here, b/c the strings are user-provided + // (KConfig), so fail gracefully to the default: + return smart(); +} + +static const AttachmentStrategy *iconicStrategy = nullptr; +static const AttachmentStrategy *smartStrategy = nullptr; +static const AttachmentStrategy *inlinedStrategy = nullptr; +static const AttachmentStrategy *hiddenStrategy = nullptr; +static const AttachmentStrategy *headerOnlyStrategy = nullptr; + +const AttachmentStrategy *AttachmentStrategy::iconic() +{ + if (!iconicStrategy) { + iconicStrategy = new IconicAttachmentStrategy(); + } + return iconicStrategy; +} + +const AttachmentStrategy *AttachmentStrategy::smart() +{ + if (!smartStrategy) { + smartStrategy = new SmartAttachmentStrategy(); + } + return smartStrategy; +} + +const AttachmentStrategy *AttachmentStrategy::inlined() +{ + if (!inlinedStrategy) { + inlinedStrategy = new InlinedAttachmentStrategy(); + } + return inlinedStrategy; +} + +const AttachmentStrategy *AttachmentStrategy::hidden() +{ + if (!hiddenStrategy) { + hiddenStrategy = new HiddenAttachmentStrategy(); + } + return hiddenStrategy; +} + +const AttachmentStrategy *AttachmentStrategy::headerOnly() +{ + if (!headerOnlyStrategy) { + headerOnlyStrategy = new HeaderOnlyAttachmentStrategy(); + } + return headerOnlyStrategy; +} + +bool AttachmentStrategy::requiresAttachmentListInHeader() const +{ + return false; +} diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/attachmentstrategy.h kf5-messagelib-18.04.3/messageviewer/src/viewer/attachmentstrategy.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/attachmentstrategy.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/attachmentstrategy.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,88 @@ +/* -*- c++ -*- + attachmentstrategy.h + + This file is part of KMail, the KDE mail client. + Copyright (c) 2003 Marc Mutz + Copyright (C) 2009 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.net + Copyright (c) 2009 Andras Mantia + + KMail is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation. + + KMail is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + In addition, as a special exception, the copyright holders give + permission to link the code of this program with any edition of + the Qt library by Trolltech AS, Norway (or with modified versions + of Qt that use the same license as Qt), and distribute linked + combinations including the two. You must obey the GNU General + Public License in all respects for all of the code used other than + Qt. If you modify this file, you may extend this exception to + your version of the file, but you are not obligated to do so. If + you do not wish to do so, delete this exception statement from + your version. +*/ + +#ifndef MESSAGEVIEWER_ATTACHMENTSTRATEGY_H +#define MESSAGEVIEWER_ATTACHMENTSTRATEGY_H + +#include "messageviewer_export.h" + +class QString; +namespace KMime { +class Content; +} + +namespace MessageViewer { +class MESSAGEVIEWER_EXPORT AttachmentStrategy +{ +protected: + AttachmentStrategy(); + virtual ~AttachmentStrategy(); + +public: + // + // Factory methods: + // + enum Type { + Iconic, Smart, Inlined, Hidden, HeaderOnly + }; + + static const AttachmentStrategy *create(Type type); + static const AttachmentStrategy *create(const QString &type); + + static const AttachmentStrategy *iconic(); + static const AttachmentStrategy *smart(); + static const AttachmentStrategy *inlined(); + static const AttachmentStrategy *hidden(); + static const AttachmentStrategy *headerOnly(); + + // + // Navigation methods: + // + + virtual const char *name() const = 0; + + // + // Bahavioural: + // + + enum Display { + None, AsIcon, Inline + }; + + virtual bool inlineNestedMessages() const = 0; + virtual Display defaultDisplay(KMime::Content *node) const = 0; + virtual bool requiresAttachmentListInHeader() const; +}; +} + +#endif // MIMETREEPARSER_ATTACHMENTSTRATEGY_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/csshelperbase.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/csshelperbase.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/csshelperbase.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/csshelperbase.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -30,10 +30,12 @@ */ #include "csshelperbase.h" +#include "utils/iconnamecache.h" #include #include #include +#include namespace MessageViewer { namespace { @@ -74,6 +76,10 @@ , mPaintDevice(pd) { recalculatePGPColors(); + const QString imgSrcShow = QStringLiteral("quicklistOpened.png"); + const QString imgSrcHide = QStringLiteral("quicklistClosed.png"); + imgShowUrl = QUrl::fromLocalFile(MessageViewer::IconNameCache::instance()->iconPathFromLocal(imgSrcShow)).url(); + imgHideUrl = QUrl::fromLocalFile(MessageViewer::IconNameCache::instance()->iconPathFromLocal(imgSrcHide)).url(); } CSSHelperBase::~CSSHelperBase() @@ -192,6 +198,22 @@ } } +QString CSSHelperBase::fullAddressList() const +{ + QString css = QStringLiteral("input[type=checkbox].addresslist_checkbox {display: none}\n" + ".addresslist_label_short {border: 1px; border-radius: 5px; padding: 0px 10px 0px 10px; white-space: nowrap}\n" + ".addresslist_label_full {border: 1px; border-radius: 5px; padding: 0px 10px 0px 10px; white-space: nowrap}\n"); + css += QStringLiteral(".addresslist_label_short {background-image:url(%1);\nbackground-repeat: no-repeat}\n").arg(imgShowUrl); + css += QStringLiteral(".addresslist_label_full {background-image:url(%1);\nbackground-repeat: no-repeat}\n\n").arg(imgHideUrl); + for (const QString &str : {QStringLiteral("Cc"), QStringLiteral("To"), QStringLiteral("Bcc")}) { + css += QStringLiteral("input ~ span.fullFull%1AddressList {display: block}\n" + "input ~ span.shortFull%1AddressList {display: none}\n" + "input:checked ~ span.fullFull%1AddressList {display: none}\n" + "input:checked ~ span.shortFull%1AddressList {display: block}\n\n").arg(str); + } + return css; +} + QString CSSHelperBase::nonQuotedFontTag() const { return QStringLiteral("
    "); @@ -307,7 +329,7 @@ .arg(headerFont, pal.color(QPalette::Background).name(), pal.color(QPalette::Foreground).name()) - + quoteCSS; + + quoteCSS + fullAddressList(); } QString CSSHelperBase::quoteCssDefinition() const @@ -597,7 +619,7 @@ pal.color(QPalette::Foreground).name(), pal.color(QPalette::Background).name()) .arg(pal.color(QPalette::Mid).name()) - + quoteCSS; + + quoteCSS + fullAddressList(); } QString CSSHelperBase::commonCssDefinitions() const @@ -707,16 +729,6 @@ " background-color: transparent ! important;\n" "}\n\n" - "span.pimsmileytext {\n" - " position: absolute;\n" - " top: 0px;\n" - " left: 0px;\n" - " visibility: hidden;\n" - "}\n\n" - - "img.pimsmileyimg {\n" - "}\n\n" - "div.quotelevelmark {\n" " position: absolute;\n" " margin-left:-10px;\n" diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/csshelperbase.h kf5-messagelib-18.04.3/messageviewer/src/viewer/csshelperbase.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/csshelperbase.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/csshelperbase.h 2018-07-06 05:43:41.000000000 +0000 @@ -29,13 +29,14 @@ your version. */ -#ifndef __MIMETREEPARSER_CSSHELPERBASE_H__ -#define __MIMETREEPARSER_CSSHELPERBASE_H__ +#ifndef MIMETREEPARSER_CSSHELPERBASE_H +#define MIMETREEPARSER_CSSHELPERBASE_H #include "messageviewer_export.h" #include #include +#include class QString; class QPaintDevice; @@ -119,6 +120,9 @@ // color of frame of warning preceding the source of HTML messages QColor cHtmlWarning; + QString imgShowUrl; + QString imgHideUrl; + private: QString quoteCssDefinition() const; int fontSize(bool fixed, bool print = false) const; @@ -128,6 +132,7 @@ QString screenCssDefinitions(const CSSHelperBase *helper, bool fixed) const; // returns CSS rules common to both screen and print media types QString commonCssDefinitions() const; + QString fullAddressList() const; private: const QPaintDevice *mPaintDevice = nullptr; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/csshelper.h kf5-messagelib-18.04.3/messageviewer/src/viewer/csshelper.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/csshelper.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/csshelper.h 2018-07-06 05:43:41.000000000 +0000 @@ -29,8 +29,8 @@ your version. */ -#ifndef __MESSAGEVIEWER_CSSHELPER_H__ -#define __MESSAGEVIEWER_CSSHELPER_H__ +#ifndef MESSAGEVIEWER_CSSHELPER_H +#define MESSAGEVIEWER_CSSHELPER_H #include @@ -41,7 +41,7 @@ { public: explicit CSSHelper(const QPaintDevice *pd); - virtual ~CSSHelper(); + ~CSSHelper() override; /** @return HTML head including style sheet definitions and the >body< tag */ @@ -49,4 +49,4 @@ }; } -#endif // __MESSAGEVIEWER_CSSHELPER_H__ +#endif // MESSAGEVIEWER_CSSHELPER_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/editorwatcher.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/editorwatcher.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/editorwatcher.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/editorwatcher.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -214,7 +214,7 @@ // check if it's a mime type that's mostly handled read-only const bool isReadOnlyMimeType = (readOnlyMimeTypes.contains(mMimeType) - || mMimeType.startsWith(QStringLiteral("image/"))); + || mMimeType.startsWith(QLatin1String("image/"))); // nobody can edit that fast, we seem to be unable to detect // when the editor will be closed diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/messagedisplayformatattribute.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/messagedisplayformatattribute.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/messagedisplayformatattribute.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/messagedisplayformatattribute.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2017 Montel Laurent + Copyright (c) 2013-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/messagedisplayformatattribute.h kf5-messagelib-18.04.3/messageviewer/src/viewer/messagedisplayformatattribute.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/messagedisplayformatattribute.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/messagedisplayformatattribute.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2017 Montel Laurent + Copyright (c) 2013-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by @@ -31,7 +31,7 @@ { public: explicit MessageDisplayFormatAttribute(); - ~MessageDisplayFormatAttribute(); + ~MessageDisplayFormatAttribute() override; MessageDisplayFormatAttribute *clone() const override; QByteArray type() const override; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/mimeparttree/mimeparttreeview.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/mimeparttree/mimeparttreeview.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/mimeparttree/mimeparttreeview.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/mimeparttree/mimeparttreeview.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Laurent Montel + Copyright (C) 2014-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/mimeparttree/mimeparttreeview.h kf5-messagelib-18.04.3/messageviewer/src/viewer/mimeparttree/mimeparttreeview.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/mimeparttree/mimeparttreeview.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/mimeparttree/mimeparttreeview.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Laurent Montel + Copyright (C) 2014-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/mimeparttree/mimetreemodel.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/mimeparttree/mimetreemodel.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/mimeparttree/mimetreemodel.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/mimeparttree/mimetreemodel.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -120,7 +120,7 @@ mimeType = MimeTreeParser::Util::mimetype(name); } - if (mimeType.isValid() && mimeType.name().startsWith(QStringLiteral("multipart/"))) { + if (mimeType.isValid() && mimeType.name().startsWith(QLatin1String("multipart/"))) { return QIcon::fromTheme(QStringLiteral("folder")); } else if (!iconName.isEmpty() && iconName != QStringLiteral("unknown")) { return QIcon::fromTheme(iconName); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/mimeparttree/mimetreemodel.h kf5-messagelib-18.04.3/messageviewer/src/viewer/mimeparttree/mimetreemodel.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/mimeparttree/mimetreemodel.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/mimeparttree/mimetreemodel.h 2018-07-06 05:43:41.000000000 +0000 @@ -44,7 +44,7 @@ UserRole = Qt::UserRole + 100 }; explicit MimeTreeModel(QObject *parent = nullptr); - ~MimeTreeModel(); + ~MimeTreeModel() override; void setRoot(KMime::Content *root); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/objecttreeemptysource.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/objecttreeemptysource.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/objecttreeemptysource.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/objecttreeemptysource.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -18,15 +18,17 @@ */ #include "objecttreeemptysource.h" +#include "viewer/attachmentstrategy.h" #include "viewer/viewer_p.h" #include "viewer/csshelperbase.h" -#include #include #include #include "messagepartthemes/default/defaultrenderer.h" +#include "messageviewer_debug.h" + using namespace MessageViewer; namespace MessageViewer { @@ -34,11 +36,10 @@ { public: EmptySourcePrivate() - : mAllowDecryption(false) { } - bool mAllowDecryption; + bool mAllowDecryption = false; }; } @@ -63,11 +64,6 @@ return false; } -bool EmptySource::showSignatureDetails() const -{ - return false; -} - void EmptySource::setHtmlMode(MimeTreeParser::Util::HtmlMode mode, const QList &availableModes) { Q_UNUSED(mode); @@ -84,11 +80,6 @@ d->mAllowDecryption = allowDecryption; } -int EmptySource::levelQuote() const -{ - return 1; -} - const QTextCodec *EmptySource::overrideCodec() { return nullptr; @@ -100,17 +91,17 @@ return QString(); //do nothing } -const MimeTreeParser::AttachmentStrategy *EmptySource::attachmentStrategy() +const AttachmentStrategy *EmptySource::attachmentStrategy() const { - return MimeTreeParser::AttachmentStrategy::smart(); + return AttachmentStrategy::smart(); } -MimeTreeParser::HtmlWriter *EmptySource::htmlWriter() +HtmlWriter *EmptySource::htmlWriter() const { return nullptr; } -CSSHelperBase *EmptySource::cssHelper() +CSSHelperBase *EmptySource::cssHelper() const { return nullptr; } @@ -120,27 +111,53 @@ return true; } -bool EmptySource::showEmoticons() const +const MimeTreeParser::BodyPartFormatterFactory *EmptySource::bodyPartFormatterFactory() +{ + return MimeTreeParser::BodyPartFormatterFactory::instance(); +} + +void EmptySource::render(const MimeTreeParser::MessagePartPtr &msgPart, bool showOnlyOneMimePart) +{ + if (!htmlWriter()) { + qCWarning(MESSAGEVIEWER_LOG) << "no htmlWriter - skipping rendering."; + return; + } + + auto renderer = DefaultRenderer(cssHelper()); + renderer.setAttachmentStrategy(attachmentStrategy()); + renderer.setCreateMessageHeader(std::bind(&EmptySource::createMessageHeader, this, std::placeholders::_1)); + renderer.setHtmlLoadExternal(htmlLoadExternal()); + renderer.setIsPrinting(isPrinting()); + renderer.setLevelQuote(levelQuote()); + renderer.setShowEmoticons(showEmoticons()); + renderer.setShowExpandQuotesMark(showExpandQuotesMark()); + renderer.setShowOnlyOneMimePart(showOnlyOneMimePart); + renderer.setShowSignatureDetails(showSignatureDetails()); + + renderer.render(msgPart, htmlWriter()); +} + +bool EmptySource::isPrinting() const { return false; } -bool EmptySource::showExpandQuotesMark() const +bool EmptySource::showEmoticons() const { return false; } -const MimeTreeParser::BodyPartFormatterFactory *EmptySource::bodyPartFormatterFactory() +bool EmptySource::showExpandQuotesMark() const { - return MimeTreeParser::BodyPartFormatterFactory::instance(); + return false; } -bool EmptySource::isPrinting() const +bool EmptySource::showSignatureDetails() const { return false; } -void EmptySource::render(const MimeTreeParser::MessagePartPtr &msgPart, MimeTreeParser::HtmlWriter *htmlWriter) +int EmptySource::levelQuote() const { - DefaultRenderer(msgPart, cssHelper(), htmlWriter); + return 1; } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/objecttreeemptysource.h kf5-messagelib-18.04.3/messageviewer/src/viewer/objecttreeemptysource.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/objecttreeemptysource.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/objecttreeemptysource.h 2018-07-06 05:43:41.000000000 +0000 @@ -25,7 +25,9 @@ class QString; namespace MessageViewer { +class AttachmentStrategy; class CSSHelperBase; +class HtmlWriter; /** An ObjectTreeSource that does not work on anything */ class EmptySourcePrivate; @@ -33,26 +35,28 @@ { public: EmptySource(); - ~EmptySource(); + ~EmptySource() override; bool decryptMessage() const override; - bool htmlLoadExternal() const override; - bool showSignatureDetails() const override; void setHtmlMode(MimeTreeParser::Util::HtmlMode mode, const QList &availableModes) override; MimeTreeParser::Util::HtmlMode preferredMode() const override; void setAllowDecryption(bool allowDecryption); - int levelQuote() const override; const QTextCodec *overrideCodec() override; - QString createMessageHeader(KMime::Message *message) override; - const MimeTreeParser::AttachmentStrategy *attachmentStrategy() override; - MimeTreeParser::HtmlWriter *htmlWriter() override; - virtual CSSHelperBase *cssHelper(); - + virtual QString createMessageHeader(KMime::Message *message); bool autoImportKeys() const override; - bool showEmoticons() const override; - bool showExpandQuotesMark() const override; + const MimeTreeParser::BodyPartFormatterFactory *bodyPartFormatterFactory() override; - void render(const MimeTreeParser::MessagePartPtr &msgPart, MimeTreeParser::HtmlWriter *htmlWriter) override; - bool isPrinting() const override; + void render(const MimeTreeParser::MessagePartPtr &msgPart, bool showOnlyOneMimePart) override; + + virtual const AttachmentStrategy *attachmentStrategy() const; + virtual HtmlWriter *htmlWriter() const; + virtual CSSHelperBase *cssHelper() const; + /** Return true if external sources should be loaded in a html mail */ + virtual bool htmlLoadExternal() const; + virtual bool showSignatureDetails() const; + virtual bool showEmoticons() const; + virtual bool showExpandQuotesMark() const; + virtual bool isPrinting() const; + virtual int levelQuote() const; private: EmptySourcePrivate *const d; }; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/objecttreeviewersource.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/objecttreeviewersource.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/objecttreeviewersource.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/objecttreeviewersource.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -31,7 +31,7 @@ using namespace MessageViewer; MailViewerSource::MailViewerSource(ViewerPrivate *viewer) - : MimeTreeParser::Interface::ObjectTreeSource() + : MessageViewer::EmptySource() , mViewer(viewer) { } @@ -57,6 +57,12 @@ void MailViewerSource::setHtmlMode(MimeTreeParser::Util::HtmlMode mode, const QList &availableModes) { +// qDebug() << " void MailViewerSource::setHtmlMode(MimeTreeParser::Util::HtmlMode mode, const QList &availableModes)"; +// for (int i = 0; i < availableModes.count(); ++i) { +// qDebug() << "MailViewerSource::setHtmlMode Mode " << MimeTreeParser::Util::htmlModeToString(availableModes.at(i)); +// } +// qDebug() << "MailViewerSource::setHtmlMode prefered " << MimeTreeParser::Util::htmlModeToString(mode); + mViewer->mColorBar->setAvailableModes(availableModes); mViewer->mColorBar->setMode(mode); } @@ -91,15 +97,20 @@ QString MailViewerSource::createMessageHeader(KMime::Message *message) { - return mViewer->writeMsgHeader(message); + return mViewer->writeMessageHeader(message); } -const MimeTreeParser::AttachmentStrategy *MailViewerSource::attachmentStrategy() +const AttachmentStrategy *MailViewerSource::attachmentStrategy() const { return mViewer->attachmentStrategy(); } -MimeTreeParser::HtmlWriter *MailViewerSource::htmlWriter() +CSSHelperBase *MailViewerSource::cssHelper() const +{ + return mViewer->cssHelper(); +} + +HtmlWriter *MailViewerSource::htmlWriter() const { return mViewer->htmlWriter(); } @@ -119,17 +130,7 @@ return MessageViewer::MessageViewerSettings::self()->showExpandQuotesMark(); } -const MimeTreeParser::BodyPartFormatterFactory *MailViewerSource::bodyPartFormatterFactory() -{ - return MimeTreeParser::BodyPartFormatterFactory::instance(); -} - bool MailViewerSource::isPrinting() const { return mViewer->mPrinting; } - -void MailViewerSource::render(const MimeTreeParser::MessagePartPtr &msgPart, MimeTreeParser::HtmlWriter *htmlWriter) -{ - DefaultRenderer(msgPart, mViewer->cssHelper(), htmlWriter); -} diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/objecttreeviewersource.h kf5-messagelib-18.04.3/messageviewer/src/viewer/objecttreeviewersource.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/objecttreeviewersource.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/objecttreeviewersource.h 2018-07-06 05:43:41.000000000 +0000 @@ -20,35 +20,36 @@ #ifndef MAILVIEWER_OBJECTTREEVIEWERSOURCE_H #define MAILVIEWER_OBJECTTREEVIEWERSOURCE_H -#include +#include "objecttreeemptysource.h" class QString; namespace MessageViewer { +class AttachmentStrategy; +class HtmlWriter; class ViewerPrivate; /** An ObjectTreeParser source working on a MailViewer object */ -class MailViewerSource : public MimeTreeParser::Interface::ObjectTreeSource +class MailViewerSource : public MessageViewer::EmptySource { public: explicit MailViewerSource(ViewerPrivate *viewer); - ~MailViewerSource(); + ~MailViewerSource() override; bool decryptMessage() const override; bool htmlLoadExternal() const override; - bool showSignatureDetails() const override; void setHtmlMode(MimeTreeParser::Util::HtmlMode mode, const QList &availableModes) override; MimeTreeParser::Util::HtmlMode preferredMode() const override; int levelQuote() const override; const QTextCodec *overrideCodec() override; QString createMessageHeader(KMime::Message *message) override; - const MimeTreeParser::AttachmentStrategy *attachmentStrategy() override; - MimeTreeParser::HtmlWriter *htmlWriter() override; + const AttachmentStrategy *attachmentStrategy() const override; + HtmlWriter *htmlWriter() const override; + CSSHelperBase *cssHelper() const override; bool autoImportKeys() const override; + bool showSignatureDetails() const override; bool showEmoticons() const override; bool showExpandQuotesMark() const override; - const MimeTreeParser::BodyPartFormatterFactory *bodyPartFormatterFactory() override; - void render(const MimeTreeParser::MessagePartPtr &msgPart, MimeTreeParser::HtmlWriter *htmlWriter) override; bool isPrinting() const override; private: ViewerPrivate *mViewer = nullptr; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/stl_util.h kf5-messagelib-18.04.3/messageviewer/src/viewer/stl_util.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/stl_util.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/stl_util.h 2018-07-06 05:43:41.000000000 +0000 @@ -29,8 +29,8 @@ your version. */ -#ifndef __KDEPIM__MESSAGEVIEWER__STL_UTIL_H__ -#define __KDEPIM__MESSAGEVIEWER__STL_UTIL_H__ +#ifndef KDEPIM__MESSAGEVIEWER__STL_UTIL_H +#define KDEPIM__MESSAGEVIEWER__STL_UTIL_H namespace MessageViewer { template @@ -43,4 +43,4 @@ }; } -#endif // __KDEPIM__MESSAGEVIEWER__STL_UTIL_H__ +#endif // KDEPIM__MESSAGEVIEWER__STL_UTIL_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/urlhandlermanager.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/urlhandlermanager.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/urlhandlermanager.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/urlhandlermanager.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -32,8 +32,8 @@ */ #include "urlhandlermanager.h" +#include "urlhandlermanager_p.h" #include "messageviewer_debug.h" -#include "messageviewer/urlhandler.h" #include "interfaces/bodyparturlhandler.h" #include "utils/mimetype.h" #include "viewer/viewer_p.h" @@ -52,6 +52,8 @@ #include #include +#include +#include "messageflags.h" #include #include @@ -82,285 +84,13 @@ URLHandlerManager *URLHandlerManager::self = nullptr; -namespace { -class KMailProtocolURLHandler : public MimeTreeParser::URLHandler -{ -public: - KMailProtocolURLHandler() : MimeTreeParser::URLHandler() - { - } - - ~KMailProtocolURLHandler() - { - } - - bool handleClick(const QUrl &, ViewerPrivate *) const override; - bool handleContextMenuRequest(const QUrl &url, const QPoint &, ViewerPrivate *) const override - { - return url.scheme() == QLatin1String("kmail"); - } - - QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; -}; - -class ExpandCollapseQuoteURLManager : public MimeTreeParser::URLHandler -{ -public: - ExpandCollapseQuoteURLManager() : MimeTreeParser::URLHandler() - { - } - - ~ExpandCollapseQuoteURLManager() - { - } - - bool handleClick(const QUrl &, ViewerPrivate *) const override; - bool handleDrag(const QUrl &url, ViewerPrivate *window) const override; - bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override - { - return false; - } - - QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; -}; - -class SMimeURLHandler : public MimeTreeParser::URLHandler -{ -public: - SMimeURLHandler() : MimeTreeParser::URLHandler() - { - } - - ~SMimeURLHandler() - { - } - - bool handleClick(const QUrl &, ViewerPrivate *) const override; - bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override - { - return false; - } - - QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; -}; - -class MailToURLHandler : public MimeTreeParser::URLHandler -{ -public: - MailToURLHandler() : MimeTreeParser::URLHandler() - { - } - - ~MailToURLHandler() - { - } - - bool handleClick(const QUrl &, ViewerPrivate *) const override - { - return false; - } - - bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override - { - return false; - } - - QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; -}; - -class ContactUidURLHandler : public MimeTreeParser::URLHandler -{ -public: - ContactUidURLHandler() : MimeTreeParser::URLHandler() - { - } - - ~ContactUidURLHandler() - { - } - - bool handleClick(const QUrl &, ViewerPrivate *) const override; - bool handleContextMenuRequest(const QUrl &url, const QPoint &p, ViewerPrivate *) const override; - QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; -}; - -class HtmlAnchorHandler : public MimeTreeParser::URLHandler -{ -public: - HtmlAnchorHandler() : MimeTreeParser::URLHandler() - { - } - - ~HtmlAnchorHandler() - { - } - - bool handleClick(const QUrl &, ViewerPrivate *) const override; - bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override - { - return false; - } - - QString statusBarMessage(const QUrl &, ViewerPrivate *) const override - { - return QString(); - } -}; - -class AttachmentURLHandler : public MimeTreeParser::URLHandler -{ -public: - AttachmentURLHandler() : MimeTreeParser::URLHandler() - { - } - - ~AttachmentURLHandler() - { - } - - bool handleClick(const QUrl &, ViewerPrivate *) const override; - bool handleShiftClick(const QUrl &, ViewerPrivate *window) const override; - bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override; - bool handleDrag(const QUrl &url, ViewerPrivate *window) const override; - bool willHandleDrag(const QUrl &url, ViewerPrivate *window) const override; - QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; -private: - KMime::Content *nodeForUrl(const QUrl &url, ViewerPrivate *w) const; - bool attachmentIsInHeader(const QUrl &url) const; -}; - -class ShowAuditLogURLHandler : public MimeTreeParser::URLHandler -{ -public: - ShowAuditLogURLHandler() : MimeTreeParser::URLHandler() - { - } - - ~ShowAuditLogURLHandler() - { - } - - bool handleClick(const QUrl &, ViewerPrivate *) const override; - bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override; - QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; - bool handleDrag(const QUrl &url, ViewerPrivate *window) const override; -}; - -// Handler that prevents dragging of internal images added by KMail, such as the envelope image -// in the enterprise header -class InternalImageURLHandler : public MimeTreeParser::URLHandler -{ -public: - InternalImageURLHandler() : MimeTreeParser::URLHandler() - { - } - - ~InternalImageURLHandler() - { - } - - bool handleDrag(const QUrl &url, ViewerPrivate *window) const override; - bool willHandleDrag(const QUrl &url, ViewerPrivate *window) const override; - bool handleClick(const QUrl &, ViewerPrivate *) const override - { - return false; - } - - bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override - { - return false; - } - - QString statusBarMessage(const QUrl &, ViewerPrivate *) const override - { - return QString(); - } -}; - -class EmbeddedImageURLHandler : public MimeTreeParser::URLHandler -{ -public: - EmbeddedImageURLHandler() : MimeTreeParser::URLHandler() - { - } - - ~EmbeddedImageURLHandler() - { - } - - bool handleDrag(const QUrl &url, ViewerPrivate *window) const override; - bool willHandleDrag(const QUrl &url, ViewerPrivate *window) const override; - bool handleClick(const QUrl &, ViewerPrivate *) const override - { - return false; - } - - bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override - { - return false; - } - - QString statusBarMessage(const QUrl &url, ViewerPrivate *) const override - { - Q_UNUSED(url); - return QString(); - } -}; - -class KRunURLHandler : public MimeTreeParser::URLHandler -{ -public: - KRunURLHandler() : MimeTreeParser::URLHandler() - { - } - - ~KRunURLHandler() - { - } - - bool handleClick(const QUrl &, ViewerPrivate *) const override; - bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override - { - return false; - } - - QString statusBarMessage(const QUrl &, ViewerPrivate *) const override - { - return QString(); - } -}; -} // anon namespace - // // // BodyPartURLHandlerManager // // -class URLHandlerManager::BodyPartURLHandlerManager : public MimeTreeParser::URLHandler -{ -public: - BodyPartURLHandlerManager() : MimeTreeParser::URLHandler() - { - } - - ~BodyPartURLHandlerManager(); - - bool handleClick(const QUrl &, ViewerPrivate *) const override; - bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override; - QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; - - void registerHandler(const Interface::BodyPartURLHandler *handler, const QString &mimeType); - void unregisterHandler(const Interface::BodyPartURLHandler *handler); - -private: - QVector handlersForPart(KMime::Content *node) const; - - typedef QHash > BodyPartHandlerList; - BodyPartHandlerList mHandlers; -}; - -URLHandlerManager::BodyPartURLHandlerManager::~BodyPartURLHandlerManager() +BodyPartURLHandlerManager::~BodyPartURLHandlerManager() { for_each(mHandlers.begin(), mHandlers.end(), [](QVector &handlers) { @@ -369,7 +99,7 @@ }); } -void URLHandlerManager::BodyPartURLHandlerManager::registerHandler( +void BodyPartURLHandlerManager::registerHandler( const Interface::BodyPartURLHandler *handler, const QString &mimeType) { if (!handler) { @@ -384,7 +114,7 @@ it->push_back(handler); } -void URLHandlerManager::BodyPartURLHandlerManager::unregisterHandler( +void BodyPartURLHandlerManager::unregisterHandler( const Interface::BodyPartURLHandler *handler) { // don't delete them, only remove them from the list! @@ -411,7 +141,7 @@ // urlPath format is: /bodypart/// qCDebug(MESSAGEVIEWER_LOG) << "BodyPartURLHandler: urlPath ==" << urlPath; - if (!urlPath.startsWith(QStringLiteral("/bodypart/"))) { + if (!urlPath.startsWith(QLatin1String("/bodypart/"))) { return nullptr; } @@ -428,7 +158,7 @@ return w->nodeFromUrl(QUrl(urlParts.at(1))); } -QVector URLHandlerManager::BodyPartURLHandlerManager::handlersForPart(KMime::Content *node) const +QVector BodyPartURLHandlerManager::handlersForPart(KMime::Content *node) const { if (auto ct = node->contentType(false)) { const auto mimeType = ct->mimeType(); @@ -440,7 +170,7 @@ return {}; } -bool URLHandlerManager::BodyPartURLHandlerManager::handleClick(const QUrl &url, ViewerPrivate *w) const +bool BodyPartURLHandlerManager::handleClick(const QUrl &url, ViewerPrivate *w) const { QString path; KMime::Content *node = partNodeFromXKMailUrl(url, w, &path); @@ -462,7 +192,7 @@ return false; } -bool URLHandlerManager::BodyPartURLHandlerManager::handleContextMenuRequest(const QUrl &url, const QPoint &p, ViewerPrivate *w) const +bool BodyPartURLHandlerManager::handleContextMenuRequest(const QUrl &url, const QPoint &p, ViewerPrivate *w) const { QString path; KMime::Content *node = partNodeFromXKMailUrl(url, w, &path); @@ -483,7 +213,7 @@ return false; } -QString URLHandlerManager::BodyPartURLHandlerManager::statusBarMessage(const QUrl &url, ViewerPrivate *w) const +QString BodyPartURLHandlerManager::statusBarMessage(const QUrl &url, ViewerPrivate *w) const { QString path; KMime::Content *node = partNodeFromXKMailUrl(url, w, &path); @@ -644,7 +374,6 @@ // // -namespace { bool KMailProtocolURLHandler::handleClick(const QUrl &url, ViewerPrivate *w) const { if (url.scheme() == QLatin1String("kmail")) { @@ -684,24 +413,6 @@ } else if (urlPath == QLatin1String("hideEncryptionDetails")) { w->setHideEncryptionDetails(true); return true; - } else if (urlPath == QLatin1String("showAttachmentQuicklist")) { - w->setShowAttachmentQuicklist(false); - return true; - } else if (urlPath == QLatin1String("hideAttachmentQuicklist")) { - w->setShowAttachmentQuicklist(true); - return true; - } else if (urlPath == QLatin1String("showFullToAddressList")) { - w->setFullToAddressList(false); - return true; - } else if (urlPath == QLatin1String("hideFullToAddressList")) { - w->setFullToAddressList(true); - return true; - } else if (urlPath == QLatin1String("showFullCcAddressList")) { - w->setFullCcAddressList(false); - return true; - } else if (urlPath == QLatin1String("hideFullCcAddressList")) { - w->setFullCcAddressList(true); - return true; } } return false; @@ -729,18 +440,6 @@ return i18n("Show encryption details."); } else if (urlPath == QLatin1String("hideEncryptionDetails")) { return i18n("Hide encryption details."); - } else if (urlPath == QLatin1String("showAttachmentQuicklist")) { - return i18n("Hide attachment list."); - } else if (urlPath == QLatin1String("hideAttachmentQuicklist")) { - return i18n("Show attachment list."); - } else if (urlPath == QLatin1String("showFullToAddressList")) { - return i18n("Hide full \"To\" list"); - } else if (urlPath == QLatin1String("hideFullToAddressList")) { - return i18n("Show full \"To\" list"); - } else if (urlPath == QLatin1String("showFullCcAddressList")) { - return i18n("Hide full \"Cc\" list"); - } else if (urlPath == QLatin1String("hideFullCcAddressList")) { - return i18n("Show full \"Cc\" list"); } else { return QString(); } @@ -749,9 +448,7 @@ } return QString(); } -} -namespace { bool ExpandCollapseQuoteURLManager::handleClick(const QUrl &url, ViewerPrivate *w) const { // kmail:levelquote/?num -> the level quote to collapse. @@ -789,7 +486,6 @@ } return QString(); } -} bool foundSMIMEData(const QString &aUrl, QString &displayName, QString &libName, QString &keyId) { @@ -828,7 +524,6 @@ return !keyId.isEmpty(); } -namespace { bool SMimeURLHandler::handleClick(const QUrl &url, ViewerPrivate *w) const { if (!url.hasFragment()) { @@ -862,9 +557,7 @@ } return i18n("Show certificate 0x%1", keyId); } -} -namespace { bool HtmlAnchorHandler::handleClick(const QUrl &url, ViewerPrivate *w) const { if (!url.host().isEmpty() || !url.hasFragment()) { @@ -874,9 +567,7 @@ w->scrollToAnchor(url.fragment()); return true; } -} -namespace { QString MailToURLHandler::statusBarMessage(const QUrl &url, ViewerPrivate *) const { if (url.scheme() == QLatin1String("mailto")) { @@ -884,9 +575,7 @@ } return QString(); } -} -namespace { static QString searchFullEmailByUid(const QString &uid) { QString fullEmail; @@ -925,17 +614,17 @@ return false; } - QMenu *menu = new QMenu(); + QMenu menu; QAction *open - = menu->addAction(QIcon::fromTheme(QStringLiteral("view-pim-contacts")), - i18n("&Open in Address Book")); + = menu.addAction(QIcon::fromTheme(QStringLiteral("view-pim-contacts")), + i18n("&Open in Address Book")); #ifndef QT_NO_CLIPBOARD QAction *copy - = menu->addAction(QIcon::fromTheme(QStringLiteral("edit-copy")), - i18n("&Copy Email Address")); + = menu.addAction(QIcon::fromTheme(QStringLiteral("edit-copy")), + i18n("&Copy Email Address")); #endif - QAction *a = menu->exec(p); + QAction *a = menu.exec(p); if (a == open) { runKAddressBook(url); #ifndef QT_NO_CLIPBOARD @@ -949,7 +638,6 @@ } #endif } - delete menu; return true; } @@ -962,9 +650,7 @@ return QString(); } } -} -namespace { KMime::Content *AttachmentURLHandler::nodeForUrl(const QUrl &url, ViewerPrivate *w) const { if (!w || !w->mMessage) { @@ -1015,9 +701,28 @@ if (!window) { return false; } - QUrl currentUrl; - if (Util::saveContents(window->viewer(), KMime::Content::List() << node, currentUrl)) { - window->viewer()->showOpenAttachmentFolderWidget(currentUrl); + if (node->contentType()->mimeType() == "text/x-moz-deleted") { + return false; + } + + const bool isEncapsulatedMessage = node->parent() && node->parent()->bodyIsMessage(); + if (isEncapsulatedMessage) { + KMime::Message::Ptr message = KMime::Message::Ptr(new KMime::Message); + message->setContent(node->parent()->bodyAsMessage()->encodedContent()); + message->parse(); + Akonadi::Item item; + item.setPayload(message); + Akonadi::MessageFlags::copyMessageFlags(*message, item); + item.setMimeType(KMime::Message::mimeType()); + QUrl url; + if (MessageViewer::Util::saveMessageInMboxAndGetUrl(url, Akonadi::Item::List() << item, window->viewer())) { + window->viewer()->showOpenAttachmentFolderWidget(QList() << url); + } + } else { + QList urlList; + if (Util::saveContents(window->viewer(), KMime::Content::List() << node, urlList)) { + window->viewer()->showOpenAttachmentFolderWidget(urlList); + } } return true; @@ -1035,15 +740,49 @@ if (!node) { return false; } - if (node->header()) { - if (!node->contents().isEmpty()) { - node = node->contents().constFirst(); - window->nodeHelper()->writeNodeToTempFile(node); - } + if (node->contentType()->mimeType() == "text/x-moz-deleted") { + return false; } - const QUrl tUrl = window->nodeHelper()->tempFileUrlFromNode(node); + QString fileName; + QUrl tUrl; + const bool isEncapsulatedMessage = node->parent() && node->parent()->bodyIsMessage(); + if (isEncapsulatedMessage) { + KMime::Message::Ptr message = KMime::Message::Ptr(new KMime::Message); + message->setContent(node->parent()->bodyAsMessage()->encodedContent()); + message->parse(); + Akonadi::Item item; + item.setPayload(message); + Akonadi::MessageFlags::copyMessageFlags(*message, item); + item.setMimeType(KMime::Message::mimeType()); + fileName = window->nodeHelper()->writeFileToTempFile(node, Util::generateMboxFileName(item)); + + KMBox::MBox mbox; + QFile::remove(fileName); - const QString fileName = tUrl.path(); + if (!mbox.load(fileName)) { + qCWarning(MESSAGEVIEWER_LOG) << "MBOX: Impossible to open file"; + return false; + } + mbox.appendMessage(item.payload()); + + if (!mbox.save()) { + qCWarning(MESSAGEVIEWER_LOG) << "MBOX: Impossible to save file"; + return false; + } + tUrl = QUrl::fromLocalFile(fileName); + } else { + if (node->header()) { + if (!node->contents().isEmpty()) { + node = node->contents().constLast(); + fileName = window->nodeHelper()->writeNodeToTempFile(node); + tUrl = QUrl::fromLocalFile(fileName); + } + } + if (fileName.isEmpty()) { + tUrl = window->nodeHelper()->tempFileUrlFromNode(node); + fileName = tUrl.path(); + } + } if (!fileName.isEmpty()) { QFile f(fileName); f.setPermissions( @@ -1094,9 +833,7 @@ } return i18n("Unnamed attachment"); } -} -namespace { static QString extractAuditLog(const QUrl &url) { if (url.scheme() != QLatin1String("kmail") @@ -1140,9 +877,7 @@ Q_UNUSED(window); return true; } -} -namespace { bool InternalImageURLHandler::handleDrag(const QUrl &url, ViewerPrivate *window) const { Q_UNUSED(window); @@ -1156,7 +891,7 @@ bool InternalImageURLHandler::willHandleDrag(const QUrl &url, ViewerPrivate *window) const { Q_UNUSED(window); - if (url.scheme() == QLatin1String("data") && url.path().startsWith(QStringLiteral("image"))) { + if (url.scheme() == QLatin1String("data") && url.path().startsWith(QLatin1String("image"))) { return true; } @@ -1165,9 +900,7 @@ QStandardPaths::LocateDirectory); return url.path().contains(imagePath); } -} -namespace { bool KRunURLHandler::handleClick(const QUrl &url, ViewerPrivate *w) const { const QString scheme(url.scheme()); @@ -1201,7 +934,6 @@ return false; } } -} bool EmbeddedImageURLHandler::handleDrag(const QUrl &url, ViewerPrivate *window) const { diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/urlhandlermanager.h kf5-messagelib-18.04.3/messageviewer/src/viewer/urlhandlermanager.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/urlhandlermanager.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/urlhandlermanager.h 2018-07-06 05:43:41.000000000 +0000 @@ -31,8 +31,10 @@ your version. */ -#ifndef __MESSAGEVIEWER_URLHANDLERMANAGER_H__ -#define __MESSAGEVIEWER_URLHANDLERMANAGER_H__ +#ifndef MESSAGEVIEWER_URLHANDLERMANAGER_H +#define MESSAGEVIEWER_URLHANDLERMANAGER_H + +#include "messageviewer_private_export.h" #include @@ -49,12 +51,12 @@ class BodyPartURLHandler; } class ViewerPrivate; - +class BodyPartURLHandlerManager; /** * @short Singleton to manage the list of URLHandlers * @author Marc Mutz */ -class URLHandlerManager +class MESSAGEVIEWER_TESTS_EXPORT URLHandlerManager { static URLHandlerManager *self; @@ -80,9 +82,8 @@ private: typedef QVector HandlerList; HandlerList mHandlers; - class BodyPartURLHandlerManager; BodyPartURLHandlerManager *mBodyPartURLHandlerManager = nullptr; }; } -#endif // __MESSAGEVIEWER_URLHANDLERMANAGER_H__ +#endif // MESSAGEVIEWER_URLHANDLERMANAGER_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/urlhandlermanager_p.h kf5-messagelib-18.04.3/messageviewer/src/viewer/urlhandlermanager_p.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/urlhandlermanager_p.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/urlhandlermanager_p.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,300 @@ +/* + Copyright (C) 2017 Sandro Knauß + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +#ifndef MESSAGEVIEWER_URLHANDLERMANAGER_P_H +#define MESSAGEVIEWER_URLHANDLERMANAGER_P_H + +#include "urlhandlermanager.h" +#include + +namespace KMime { +class Content; +} + +namespace MessageViewer { +class MESSAGEVIEWER_TESTS_EXPORT BodyPartURLHandlerManager : public MimeTreeParser::URLHandler +{ +public: + BodyPartURLHandlerManager() : MimeTreeParser::URLHandler() + { + } + + ~BodyPartURLHandlerManager() override; + + bool handleClick(const QUrl &, ViewerPrivate *) const override; + bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override; + QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; + + void registerHandler(const Interface::BodyPartURLHandler *handler, const QString &mimeType); + void unregisterHandler(const Interface::BodyPartURLHandler *handler); + +private: + QVector handlersForPart(KMime::Content *node) const; + + typedef QHash > BodyPartHandlerList; + BodyPartHandlerList mHandlers; +}; + +class MESSAGEVIEWER_TESTS_EXPORT KMailProtocolURLHandler : public MimeTreeParser::URLHandler +{ +public: + KMailProtocolURLHandler() : MimeTreeParser::URLHandler() + { + } + + ~KMailProtocolURLHandler() override + { + } + + bool handleClick(const QUrl &, ViewerPrivate *) const override; + bool handleContextMenuRequest(const QUrl &url, const QPoint &, ViewerPrivate *) const override + { + return url.scheme() == QLatin1String("kmail"); + } + + QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; +}; + +class MESSAGEVIEWER_TESTS_EXPORT ExpandCollapseQuoteURLManager : public MimeTreeParser::URLHandler +{ +public: + ExpandCollapseQuoteURLManager() : MimeTreeParser::URLHandler() + { + } + + ~ExpandCollapseQuoteURLManager() override + { + } + + bool handleClick(const QUrl &, ViewerPrivate *) const override; + bool handleDrag(const QUrl &url, ViewerPrivate *window) const override; + bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override + { + return false; + } + + QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; +}; + +class MESSAGEVIEWER_TESTS_EXPORT SMimeURLHandler : public MimeTreeParser::URLHandler +{ +public: + SMimeURLHandler() : MimeTreeParser::URLHandler() + { + } + + ~SMimeURLHandler() override + { + } + + bool handleClick(const QUrl &, ViewerPrivate *) const override; + bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override + { + return false; + } + + QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; +}; + +class MESSAGEVIEWER_TESTS_EXPORT MailToURLHandler : public MimeTreeParser::URLHandler +{ +public: + MailToURLHandler() : MimeTreeParser::URLHandler() + { + } + + ~MailToURLHandler() override + { + } + + bool handleClick(const QUrl &, ViewerPrivate *) const override + { + return false; + } + + bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override + { + return false; + } + + QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; +}; + +class MESSAGEVIEWER_TESTS_EXPORT ContactUidURLHandler : public MimeTreeParser::URLHandler +{ +public: + ContactUidURLHandler() : MimeTreeParser::URLHandler() + { + } + + ~ContactUidURLHandler() override + { + } + + bool handleClick(const QUrl &, ViewerPrivate *) const override; + bool handleContextMenuRequest(const QUrl &url, const QPoint &p, ViewerPrivate *) const override; + QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; +}; + +class MESSAGEVIEWER_TESTS_EXPORT HtmlAnchorHandler : public MimeTreeParser::URLHandler +{ +public: + HtmlAnchorHandler() : MimeTreeParser::URLHandler() + { + } + + ~HtmlAnchorHandler() override + { + } + + bool handleClick(const QUrl &, ViewerPrivate *) const override; + bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override + { + return false; + } + + QString statusBarMessage(const QUrl &, ViewerPrivate *) const override + { + return QString(); + } +}; + +class MESSAGEVIEWER_TESTS_EXPORT AttachmentURLHandler : public MimeTreeParser::URLHandler +{ +public: + AttachmentURLHandler() : MimeTreeParser::URLHandler() + { + } + + ~AttachmentURLHandler() override + { + } + + bool handleClick(const QUrl &, ViewerPrivate *) const override; + bool handleShiftClick(const QUrl &, ViewerPrivate *window) const override; + bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override; + bool handleDrag(const QUrl &url, ViewerPrivate *window) const override; + bool willHandleDrag(const QUrl &url, ViewerPrivate *window) const override; + QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; +private: + KMime::Content *nodeForUrl(const QUrl &url, ViewerPrivate *w) const; + bool attachmentIsInHeader(const QUrl &url) const; +}; + +class MESSAGEVIEWER_TESTS_EXPORT ShowAuditLogURLHandler : public MimeTreeParser::URLHandler +{ +public: + ShowAuditLogURLHandler() : MimeTreeParser::URLHandler() + { + } + + ~ShowAuditLogURLHandler() override + { + } + + bool handleClick(const QUrl &, ViewerPrivate *) const override; + bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override; + QString statusBarMessage(const QUrl &, ViewerPrivate *) const override; + bool handleDrag(const QUrl &url, ViewerPrivate *window) const override; +}; + +// Handler that prevents dragging of internal images added by KMail, such as the envelope image +// in the enterprise header +class MESSAGEVIEWER_TESTS_EXPORT InternalImageURLHandler : public MimeTreeParser::URLHandler +{ +public: + InternalImageURLHandler() : MimeTreeParser::URLHandler() + { + } + + ~InternalImageURLHandler() override + { + } + + bool handleDrag(const QUrl &url, ViewerPrivate *window) const override; + bool willHandleDrag(const QUrl &url, ViewerPrivate *window) const override; + bool handleClick(const QUrl &, ViewerPrivate *) const override + { + return false; + } + + bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override + { + return false; + } + + QString statusBarMessage(const QUrl &, ViewerPrivate *) const override + { + return QString(); + } +}; + +class MESSAGEVIEWER_TESTS_EXPORT EmbeddedImageURLHandler : public MimeTreeParser::URLHandler +{ +public: + EmbeddedImageURLHandler() : MimeTreeParser::URLHandler() + { + } + + ~EmbeddedImageURLHandler() override + { + } + + bool handleDrag(const QUrl &url, ViewerPrivate *window) const override; + bool willHandleDrag(const QUrl &url, ViewerPrivate *window) const override; + bool handleClick(const QUrl &, ViewerPrivate *) const override + { + return false; + } + + bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override + { + return false; + } + + QString statusBarMessage(const QUrl &url, ViewerPrivate *) const override + { + Q_UNUSED(url); + return QString(); + } +}; + +class MESSAGEVIEWER_TESTS_EXPORT KRunURLHandler : public MimeTreeParser::URLHandler +{ +public: + KRunURLHandler() : MimeTreeParser::URLHandler() + { + } + + ~KRunURLHandler() override + { + } + + bool handleClick(const QUrl &, ViewerPrivate *) const override; + bool handleContextMenuRequest(const QUrl &, const QPoint &, ViewerPrivate *) const override + { + return false; + } + + QString statusBarMessage(const QUrl &, ViewerPrivate *) const override + { + return QString(); + } +}; +} +#endif // MESSAGEVIEWER_URLHANDLERMANAGER_P_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/viewer.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/viewer.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/viewer.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/viewer.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -3,7 +3,7 @@ Copyright (c) 1997 Markus Wuebben Copyright (C) 2009 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.net Copyright (c) 2009 Andras Mantia - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -140,7 +140,9 @@ d->setMessageItem(item, updateMode); } else { Akonadi::ItemFetchJob *job = createFetchJob(item); - connect(job, SIGNAL(result(KJob*)), d, SLOT(itemFetchResult(KJob*))); + connect(job, &Akonadi::ItemFetchJob::result, [this, d](KJob *job) { + d->itemFetchResult(job); + }); d->displaySplashPage(i18n("Loading message...")); } } @@ -284,10 +286,16 @@ d->setDisplayFormatMessageOverwrite(format); } -void Viewer::setHtmlLoadExtOverride(bool override) +void Viewer::setHtmlLoadExtDefault(bool loadExtDefault) { Q_D(Viewer); - d->setHtmlLoadExtOverride(override); + d->setHtmlLoadExtDefault(loadExtDefault); +} + +void Viewer::setHtmlLoadExtOverride(bool loadExtOverride) +{ + Q_D(Viewer); + d->setHtmlLoadExtOverride(loadExtOverride); } bool Viewer::htmlLoadExtOverride() const @@ -363,13 +371,13 @@ d->slotFind(); } -const MimeTreeParser::AttachmentStrategy *Viewer::attachmentStrategy() const +const AttachmentStrategy *Viewer::attachmentStrategy() const { Q_D(const Viewer); return d->attachmentStrategy(); } -void Viewer::setAttachmentStrategy(const MimeTreeParser::AttachmentStrategy *strategy) +void Viewer::setAttachmentStrategy(const AttachmentStrategy *strategy) { Q_D(Viewer); d->setAttachmentStrategy(strategy); @@ -655,10 +663,10 @@ return d->setPluginName(pluginName); } -void Viewer::showOpenAttachmentFolderWidget(const QUrl &url) +void Viewer::showOpenAttachmentFolderWidget(const QList &urls) { Q_D(Viewer); - d->showOpenAttachmentFolderWidget(url); + d->showOpenAttachmentFolderWidget(urls); } QList Viewer::viewerPluginActionList(ViewerPluginInterface::SpecificFeatureTypes features) diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/viewer.h kf5-messagelib-18.04.3/messageviewer/src/viewer/viewer.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/viewer.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/viewer.h 2018-07-06 05:43:41.000000000 +0000 @@ -36,10 +36,6 @@ class ItemFetchJob; } -namespace MimeTreeParser { -class AttachmentStrategy; -} - class KActionCollection; class QAction; class KToggleAction; @@ -57,6 +53,7 @@ namespace MessageViewer { class WebHitTestResult; +class AttachmentStrategy; class HeaderStylePlugin; class CSSHelper; class ViewerPrivate; @@ -113,7 +110,7 @@ * @param f window flags */ explicit Viewer(QWidget *parent, QWidget *widget = nullptr, KActionCollection *actionCollection = nullptr); - virtual ~Viewer(); + ~Viewer() override; /** * Returns the current message displayed in the viewer. @@ -135,16 +132,15 @@ enum AttachmentAction { Open = 1, - OpenWith = 2, - View = 3, - Save = 4, - Properties = 5, - Delete = 6, - Edit = 7, - Copy = 8, - ScrollTo = 9, - ReplyMessageToAuthor = 10, - ReplyMessageToAll = 11 + OpenWith, + View, + Save, + Properties, + Delete, + Copy, + ScrollTo, + ReplyMessageToAuthor, + ReplyMessageToAll }; enum ResourceOnlineMode { @@ -213,8 +209,19 @@ /** Get the load external references override setting */ bool htmlLoadExtOverride() const; - /** Override default load external references setting */ - void setHtmlLoadExtOverride(bool override); + /** Default behavior for loading external references. + * Use this for specifying the external reference loading behavior as + * specified in the user settings. + * @see setHtmlLoadExtOverride + */ + void setHtmlLoadExtDefault(bool loadExtDefault); + + /** Override default load external references setting + * @warning This must only be called when the user has explicitly + * been asked to retrieve external references! + * @see setHtmlLoadExtDefault + */ + void setHtmlLoadExtOverride(bool loadExtOverride); /** Is html mail to be supported? Takes into account override */ bool htmlMail() const; @@ -247,8 +254,8 @@ * Initiates a delete, by sending a signal to delete the message item */ void deleteMessage(); - const MimeTreeParser::AttachmentStrategy *attachmentStrategy() const; - void setAttachmentStrategy(const MimeTreeParser::AttachmentStrategy *strategy); + const AttachmentStrategy *attachmentStrategy() const; + void setAttachmentStrategy(const AttachmentStrategy *strategy); QString overrideEncoding() const; void setOverrideEncoding(const QString &encoding); @@ -317,7 +324,7 @@ void saveMainFrameScreenshotInFile(const QString &filename); bool mimePartTreeIsEmpty() const; - void showOpenAttachmentFolderWidget(const QUrl &url); + void showOpenAttachmentFolderWidget(const QList &urls); QList viewerPluginActionList( MessageViewer::ViewerPluginInterface::SpecificFeatureTypes features); QList interceptorUrlActions(const WebEngineViewer::WebHitTestResult &result) const; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/viewer_p.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/viewer_p.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/viewer_p.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/viewer_p.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -3,7 +3,7 @@ Copyright (C) 2009 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.net Copyright (c) 2009 Andras Mantia Copyright (c) 2010 Torgny Nyblom - Copyright (C) 2011-2017 Laurent Montel + Copyright (C) 2011-2018 Laurent Montel This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,9 +35,8 @@ #include "messageviewer/headerstyle.h" #include "messageviewer/headerstrategy.h" #include "kpimtextedit/slidecontainer.h" -#include "Gravatar/GravatarCache" -#include "gravatarsettings.h" -#include "job/attachmenteditjob.h" +#include +#include #include "job/modifymessagedisplayformatjob.h" #include "config-messageviewer.h" #include "webengine/mailwebenginescript.h" @@ -72,6 +71,7 @@ #include #include #include +#include #include @@ -80,7 +80,6 @@ #include #include #include -#include #include #include #include @@ -106,6 +105,7 @@ #include "csshelper.h" #include "settings/messageviewersettings.h" #include "widgets/htmlstatusbar.h" +#include "viewer/attachmentstrategy.h" #include "viewer/mimeparttree/mimetreemodel.h" #include "viewer/urlhandlermanager.h" #include "messageviewer/messageviewerutil.h" @@ -121,9 +121,8 @@ #include "widgets/submittedformwarningwidget.h" #include -#include #include -#include +#include "interfaces/htmlwriter.h" #include #include @@ -146,6 +145,7 @@ #include #include #include +#include #include #include @@ -206,7 +206,6 @@ , mHtmlWriter(nullptr) , mDecrytMessageOverwrite(false) , mShowSignatureDetails(false) - , mShowAttachmentQuicklist(true) , mForceEmoticons(true) , mRecursionCountForDisplayMessage(0) , mCurrentContent(nullptr) @@ -244,7 +243,7 @@ mDisplayFormatMessageOverwrite = MessageViewer::Viewer::UseGlobalSetting; mHtmlLoadExtOverride = false; - mHtmlLoadExternalGlobalSetting = false; + mHtmlLoadExternalDefaultSetting = false; mHtmlMailGlobalSetting = false; mUpdateReaderWinTimer.setObjectName(QStringLiteral("mUpdateReaderWinTimer")); @@ -376,9 +375,9 @@ const int choice = dialog->exec(); delete dialog; if (choice == AttachmentDialog::Save) { - QUrl currentUrl; - if (Util::saveContents(mMainWindow, KMime::Content::List() << node, currentUrl)) { - showOpenAttachmentFolderWidget(currentUrl); + QList urlList; + if (Util::saveContents(mMainWindow, KMime::Content::List() << node, urlList)) { + showOpenAttachmentFolderWidget(urlList); } } else if (choice == AttachmentDialog::Open) { // Open if (offer) { @@ -478,17 +477,6 @@ } } -void ViewerPrivate::editAttachment(KMime::Content *node, bool showWarning) -{ - MessageViewer::AttachmentEditJob *job = new MessageViewer::AttachmentEditJob(mSession, this); - connect(job, &AttachmentEditJob::refreshMessage, this, &ViewerPrivate::slotRefreshMessage); - job->setMainWindow(mMainWindow); - job->setMessageItem(mMessageItem); - job->setMessage(mMessage); - job->addAttachment(node, showWarning); - job->canDeleteJob(); -} - void ViewerPrivate::scrollToAnchor(const QString &anchor) { mViewer->scrollToAnchor(anchor); @@ -594,25 +582,27 @@ { Q_UNUSED(name); prepareHandleAttachment(node); - QMenu *menu = new QMenu(); bool deletedAttachment = false; if (node->contentType(false)) { deletedAttachment = (node->contentType()->mimeType() == "text/x-moz-deleted"); } - const QString contentTypeStr = QLatin1String(node->contentType()->mimeType()); + //Not necessary to show popup menu when attachment was removed + if (deletedAttachment) { + return; + } - QSignalMapper *attachmentMapper = new QSignalMapper(menu); - connect(attachmentMapper, SIGNAL(mapped(int)), - this, SLOT(slotHandleAttachment(int))); + QMenu menu; + const QString contentTypeStr = QLatin1String(node->contentType()->mimeType()); QAction *action - = menu->addAction(QIcon::fromTheme(QStringLiteral("document-open")), i18nc("to open", - "Open")); + = menu.addAction(QIcon::fromTheme(QStringLiteral("document-open")), i18nc("to open", + "Open")); action->setEnabled(!deletedAttachment); - connect(action, SIGNAL(triggered(bool)), attachmentMapper, SLOT(map())); - attachmentMapper->setMapping(action, Viewer::Open); + connect(action, &QAction::triggered, this, [this]() { + slotHandleAttachment(Viewer::Open); + }); if (!deletedAttachment) { - createOpenWithMenu(menu, contentTypeStr, true); + createOpenWithMenu(&menu, contentTypeStr, true); } QMimeDatabase mimeDb; @@ -622,40 +612,35 @@ if ((contentTypeStr == QLatin1String("text/plain")) || (contentTypeStr == QLatin1String("image/png")) || (contentTypeStr == QLatin1String("image/jpeg")) - || parentMimeType.contains(QStringLiteral("text/plain")) - || parentMimeType.contains(QStringLiteral("image/png")) - || parentMimeType.contains(QStringLiteral("image/jpeg")) + || parentMimeType.contains(QLatin1String("text/plain")) + || parentMimeType.contains(QLatin1String("image/png")) + || parentMimeType.contains(QLatin1String("image/jpeg")) ) { - action = menu->addAction(i18nc("to view something", "View")); + action = menu.addAction(i18nc("to view something", "View")); action->setEnabled(!deletedAttachment); - connect(action, SIGNAL(triggered(bool)), attachmentMapper, SLOT(map())); - attachmentMapper->setMapping(action, Viewer::View); + connect(action, &QAction::triggered, this, [this]() { + slotHandleAttachment(Viewer::View); + }); } } -#if 0 //Reimplement in the future - const bool attachmentInHeader = mViewer->isAttachmentInjectionPoint(globalPos); - const bool hasScrollbar = mViewer->hasVerticalScrollBar(); - if (attachmentInHeader && hasScrollbar) { -#else - action = menu->addAction(i18n("Scroll To")); - connect(action, SIGNAL(triggered(bool)), attachmentMapper, SLOT(map())); - attachmentMapper->setMapping(action, Viewer::ScrollTo); -#endif -#if 0 - } -#endif + action = menu.addAction(i18n("Scroll To")); + connect(action, &QAction::triggered, this, [this]() { + slotHandleAttachment(Viewer::ScrollTo); + }); - action = menu->addAction(QIcon::fromTheme(QStringLiteral("document-save-as")), i18n( - "Save As...")); + action = menu.addAction(QIcon::fromTheme(QStringLiteral("document-save-as")), i18n( + "Save As...")); action->setEnabled(!deletedAttachment); - connect(action, SIGNAL(triggered(bool)), attachmentMapper, SLOT(map())); - attachmentMapper->setMapping(action, Viewer::Save); + connect(action, &QAction::triggered, this, [this]() { + slotHandleAttachment(Viewer::Save); + }); - action = menu->addAction(QIcon::fromTheme(QStringLiteral("edit-copy")), i18n("Copy")); + action = menu.addAction(QIcon::fromTheme(QStringLiteral("edit-copy")), i18n("Copy")); action->setEnabled(!deletedAttachment); - connect(action, SIGNAL(triggered(bool)), attachmentMapper, SLOT(map())); - attachmentMapper->setMapping(action, Viewer::Copy); + connect(action, &QAction::triggered, this, [this]() { + slotHandleAttachment(Viewer::Copy); + }); const bool isEncapsulatedMessage = node->parent() && node->parent()->bodyIsMessage(); const bool canChange = mMessageItem.isValid() && mMessageItem.parentCollection().isValid() @@ -663,19 +648,13 @@ != Akonadi::Collection::ReadOnly) && !isEncapsulatedMessage; - if (MessageViewer::MessageViewerSettings::self()->allowAttachmentEditing()) { - action - = menu->addAction(QIcon::fromTheme(QStringLiteral("document-properties")), i18n( - "Edit Attachment")); - connect(action, SIGNAL(triggered()), attachmentMapper, SLOT(map())); - attachmentMapper->setMapping(action, Viewer::Edit); - action->setEnabled(canChange); - } action - = menu->addAction(QIcon::fromTheme(QStringLiteral("edit-delete")), - i18n("Delete Attachment")); - connect(action, SIGNAL(triggered()), attachmentMapper, SLOT(map())); - attachmentMapper->setMapping(action, Viewer::Delete); + = menu.addAction(QIcon::fromTheme(QStringLiteral("edit-delete")), + i18n("Delete Attachment")); + connect(action, &QAction::triggered, this, [this]() { + slotHandleAttachment(Viewer::Delete); + }); + action->setEnabled(canChange && !deletedAttachment); #if 0 menu->addSeparator(); @@ -683,22 +662,24 @@ action = menu->addAction(QIcon::fromTheme(QStringLiteral("mail-reply-sender")), i18n("Reply To Author")); - connect(action, SIGNAL(triggered()), attachmentMapper, SLOT(map())); - attachmentMapper->setMapping(action, Viewer::ReplyMessageToAuthor); + connect(action, &QAction::triggered, this, [this]() { + slotHandleAttachment(Viewer::ReplyMessageToAuthor); + }); menu->addSeparator(); action = menu->addAction(QIcon::fromTheme(QStringLiteral("mail-reply-all")), i18n( "Reply To All")); - connect(action, SIGNAL(triggered()), attachmentMapper, SLOT(map())); - attachmentMapper->setMapping(action, Viewer::ReplyMessageToAll); + connect(action, &QAction::triggered, this, [this]() { + slotHandleAttachment(Viewer::ReplyMessageToAll); + }); #endif - menu->addSeparator(); - action = menu->addAction(i18n("Properties")); - connect(action, SIGNAL(triggered(bool)), attachmentMapper, SLOT(map())); - attachmentMapper->setMapping(action, Viewer::Properties); - menu->exec(globalPos); - delete menu; + menu.addSeparator(); + action = menu.addAction(i18n("Properties")); + connect(action, &QAction::triggered, this, [this]() { + slotHandleAttachment(Viewer::Properties); + }); + menu.exec(globalPos); } void ViewerPrivate::prepareHandleAttachment(KMime::Content *node) @@ -711,7 +692,7 @@ QFileInfo atmFileInfo(atmFileName); // tempfile name is /TMP/attachmentsRANDOM/atmFileInfo.fileName()" - const QString tmpPath = QDir::tempPath() + QLatin1Char('/') + QLatin1String("attachments"); + const QString tmpPath = QDir::tempPath() + QLatin1String("/attachments"); QDir().mkpath(tmpPath); QTemporaryDir *linkDir = new QTemporaryDir(tmpPath); QString linkPath = linkDir->path() + QLatin1Char('/') + atmFileInfo.fileName(); @@ -814,7 +795,7 @@ return mForceEmoticons; } -MimeTreeParser::HtmlWriter *ViewerPrivate::htmlWriter() const +HtmlWriter *ViewerPrivate::htmlWriter() const { return mHtmlWriter; } @@ -951,18 +932,13 @@ mPartHtmlWriter.data(), &WebEnginePartHtmlWriter::finished, this, &ViewerPrivate::slotMessageRendered, Qt::UniqueConnection); - const QString html = attachmentInjectionHtml(); - const QString js - = html.isEmpty() ? QString() : MessageViewer::MailWebEngineScript::injectAttachments(html, QStringLiteral( - "attachmentInjectionPoint")); - mViewer->addScript(js, QStringLiteral("attachment_injection"), QWebEngineScript::DocumentReady); - htmlWriter()->end(); } void ViewerPrivate::parseContent(KMime::Content *content) { assert(content != nullptr); + mNodeHelper->removeTempFiles(); // Check if any part of this message is a v-card // v-cards can be either text/x-vcard or text/directory, so we need to check @@ -985,17 +961,16 @@ KMime::Message *message = dynamic_cast(content); if (message) { - htmlWriter()->write(writeMsgHeader(message, hasVCard ? vCardContent : nullptr, true)); + htmlWriter()->write(writeMessageHeader(message, hasVCard ? vCardContent : nullptr, true)); } // Pass control to the OTP now, which does the real work - mNodeHelper->removeTempFiles(); mNodeHelper->setNodeUnprocessed(mMessage.data(), true); MailViewerSource otpSource(this); - MimeTreeParser::ObjectTreeParser otp(&otpSource, mNodeHelper, - mMessage.data() != content /* show only single node */); + MimeTreeParser::ObjectTreeParser otp(&otpSource, mNodeHelper); + //TODO: needs to end up in renderer: mMessage.data() != content /* show only single node */); otp.setAllowAsync(!mPrinting); - otp.parseObjectTree(content); + otp.parseObjectTree(content, mMessage.data() != content /* parse/show only single node */); // TODO: Setting the signature state to nodehelper is not enough, it should actually // be added to the store, so that the message list correctly displays the signature state @@ -1017,10 +992,10 @@ showHideMimeTree(); } -QString ViewerPrivate::writeMsgHeader(KMime::Message *aMsg, KMime::Content *vCardNode, bool topLevel) +QString ViewerPrivate::writeMessageHeader(KMime::Message *aMsg, KMime::Content *vCardNode, bool topLevel) { if (!headerStylePlugin()) { - qCCritical(MESSAGEVIEWER_LOG) << "trying to writeMsgHeader() without a header style set!"; + qCCritical(MESSAGEVIEWER_LOG) << "trying to writeMessageHeader() without a header style set!"; return {}; } QString href; @@ -1035,6 +1010,7 @@ headerStylePlugin()->headerStyle()->setSourceObject(this); headerStylePlugin()->headerStyle()->setNodeHelper(mNodeHelper); headerStylePlugin()->headerStyle()->setMessagePath(mMessagePath); + headerStylePlugin()->headerStyle()->setAttachmentHtml(attachmentHtml()); if (mMessageItem.isValid()) { Akonadi::MessageStatus status; status.setStatusFromFlags(mMessageItem.flags()); @@ -1077,6 +1053,8 @@ &ViewerPrivate::slotMessageMayBeAScam); connect(mViewer, &MailWebEngineView::formSubmittedForbidden, this, &ViewerPrivate::slotFormSubmittedForbidden); + connect(mViewer, &MailWebEngineView::mailTrackingFound, this, + &ViewerPrivate::slotMailTrackingFound); connect(mScamDetectionWarning, &ScamDetectionWarningWidget::showDetails, mViewer, &MailWebEngineView::slotShowDetails); connect(mScamDetectionWarning, &ScamDetectionWarningWidget::moveMessageToTrash, this, @@ -1105,23 +1083,25 @@ delete mCSSHelper; mCSSHelper = new CSSHelper(mViewer); + mForceEmoticons = MessageViewer::MessageViewerSettings::self()->showEmoticons(); + if (mDisableEmoticonAction) { + mDisableEmoticonAction->setChecked(!mForceEmoticons); + } mUseFixedFont = MessageViewer::MessageViewerSettings::self()->useFixedFont(); if (mToggleFixFontAction) { mToggleFixFontAction->setChecked(mUseFixedFont); } mHtmlMailGlobalSetting = MessageViewer::MessageViewerSettings::self()->htmlMail(); - mHtmlLoadExternalGlobalSetting - = MessageViewer::MessageViewerSettings::self()->htmlLoadExternal(); readGravatarConfig(); if (mHeaderStyleMenuManager) { mHeaderStyleMenuManager->readConfig(); } - setAttachmentStrategy(MimeTreeParser::AttachmentStrategy::create(MessageViewer:: - MessageViewerSettings::self()-> - attachmentStrategy())); + setAttachmentStrategy(AttachmentStrategy::create(MessageViewer:: + MessageViewerSettings::self()-> + attachmentStrategy())); KToggleAction *raction = actionForAttachmentStrategy(attachmentStrategy()); if (raction) { raction->setChecked(true); @@ -1160,6 +1140,7 @@ void ViewerPrivate::writeConfig(bool sync) { + MessageViewer::MessageViewerSettings::self()->setShowEmoticons(mForceEmoticons); MessageViewer::MessageViewerSettings::self()->setUseFixedFont(mUseFixedFont); if (attachmentStrategy()) { MessageViewer::MessageViewerSettings::self()->setAttachmentStrategy(QLatin1String( @@ -1172,17 +1153,17 @@ } } -const MimeTreeParser::AttachmentStrategy *ViewerPrivate::attachmentStrategy() const +const AttachmentStrategy *ViewerPrivate::attachmentStrategy() const { return mAttachmentStrategy; } -void ViewerPrivate::setAttachmentStrategy(const MimeTreeParser::AttachmentStrategy *strategy) +void ViewerPrivate::setAttachmentStrategy(const AttachmentStrategy *strategy) { if (mAttachmentStrategy == strategy) { return; } - mAttachmentStrategy = strategy ? strategy : MimeTreeParser::AttachmentStrategy::smart(); + mAttachmentStrategy = strategy ? strategy : AttachmentStrategy::smart(); update(MimeTreeParser::Force); } @@ -1258,6 +1239,7 @@ void ViewerPrivate::resetStateForNewMessage() { + mHtmlLoadExtOverride = false; mClickedUrl.clear(); mImageUrl.clear(); enableMessageDisplay(); // just to make sure it's on @@ -1275,6 +1257,7 @@ mScamDetectionWarning->setVisible(false); mOpenAttachmentFolderWidget->setVisible(false); mSubmittedFormWarning->setVisible(false); + mMailTrackingWarning->hideAndClear(); if (mPrinting) { if (MessageViewer::MessageViewerSettings::self()->respectExpandCollapseSettings()) { @@ -1427,7 +1410,7 @@ } #endif - if (MessageViewer::MessageViewerSettings::self()->showColorBar() && mMsgDisplay) { + if (mMsgDisplay) { mColorBar->show(); } else { mColorBar->hide(); @@ -1485,6 +1468,10 @@ mSubmittedFormWarning->setObjectName(QStringLiteral("submittedformwarning")); readerBoxVBoxLayout->addWidget(mSubmittedFormWarning); + mMailTrackingWarning = new MailTrackingWarningWidget(readerBox); + mMailTrackingWarning->setObjectName(QStringLiteral("mailtrackingwarning")); + readerBoxVBoxLayout->addWidget(mMailTrackingWarning); + mScamDetectionWarning = new ScamDetectionWarningWidget(readerBox); mScamDetectionWarning->setObjectName(QStringLiteral("scandetectionwarning")); readerBoxVBoxLayout->addWidget(mScamDetectionWarning); @@ -1604,8 +1591,8 @@ i18n("&Set Encoding"), this); mSelectEncodingAction->setToolBarMode(KSelectAction::MenuMode); ac->addAction(QStringLiteral("encoding"), mSelectEncodingAction); - connect(mSelectEncodingAction, SIGNAL(triggered(int)), - SLOT(slotSetEncoding())); + connect(mSelectEncodingAction, QOverload::of(&KSelectAction::triggered), + this, &ViewerPrivate::slotSetEncoding); QStringList encodings = MimeTreeParser::NodeHelper::supportedEncodings(false); encodings.prepend(i18n("Auto")); mSelectEncodingAction->setItems(encodings); @@ -1807,18 +1794,10 @@ if (isAttachment) { popup.addAction(QIcon::fromTheme(QStringLiteral("edit-copy")), i18n("Copy"), this, &ViewerPrivate::slotAttachmentCopy); -#if 0 //FIXME Laurent Comment for the moment it crash see Bug 287177 - popup.addAction(QIcon::fromTheme("edit-delete"), i18n("Delete Attachment"), - this, SLOT(slotAttachmentDelete())); -#endif - if (MessageViewer::MessageViewerSettings::self()->allowAttachmentEditing()) { - popup.addAction(QIcon::fromTheme(QStringLiteral("document-properties")), - i18n("Edit Attachment"), - this, &ViewerPrivate::slotAttachmentEdit); - } } if (!content->isTopLevel()) { + popup.addSeparator(); popup.addAction(i18n("Properties"), this, &ViewerPrivate::slotAttachmentProperties); } } @@ -1827,21 +1806,21 @@ } KToggleAction *ViewerPrivate::actionForAttachmentStrategy( - const MimeTreeParser::AttachmentStrategy *as) + const AttachmentStrategy *as) { if (!mActionCollection) { return nullptr; } QString actionName; - if (as == MimeTreeParser::AttachmentStrategy::iconic()) { + if (as == AttachmentStrategy::iconic()) { actionName = QStringLiteral("view_attachments_as_icons"); - } else if (as == MimeTreeParser::AttachmentStrategy::smart()) { + } else if (as == AttachmentStrategy::smart()) { actionName = QStringLiteral("view_attachments_smart"); - } else if (as == MimeTreeParser::AttachmentStrategy::inlined()) { + } else if (as == AttachmentStrategy::inlined()) { actionName = QStringLiteral("view_attachments_inline"); - } else if (as == MimeTreeParser::AttachmentStrategy::hidden()) { + } else if (as == AttachmentStrategy::hidden()) { actionName = QStringLiteral("view_attachments_hide"); - } else if (as == MimeTreeParser::AttachmentStrategy::headerOnly()) { + } else if (as == AttachmentStrategy::headerOnly()) { actionName = QStringLiteral("view_attachments_headeronly"); } @@ -2157,6 +2136,10 @@ { const auto availableModes = mColorBar->availableModes(); const int availableModeSize(availableModes.size()); +// for (int i = 0; i < availableModeSize; ++i) { +// qDebug() << " Mode " << MimeTreeParser::Util::htmlModeToString(availableModes.at(i)); +// } +// qDebug() << " availableModeSize"<isNormal() || availableModeSize < 2) { return; } @@ -2165,6 +2148,11 @@ const int pos = (availableModes.indexOf(mode) + 1) % availableModeSize; setDisplayFormatMessageOverwrite(translateToDisplayFormat(availableModes[pos])); update(MimeTreeParser::Force); +// for (int i = 0; i < availableModeSize; ++i) { +// qDebug() << "AFTER Mode " << MimeTreeParser::Util::htmlModeToString(availableModes.at(i)); +// } + +// qDebug() << " Assign modes " << availableModes; mColorBar->setAvailableModes(availableModes); } @@ -2253,11 +2241,7 @@ htmlWriter()->reset(); //TODO: if the item doesn't have the payload fetched, try to fetch it? Maybe not here, but in setMessageItem. if (mMessage) { - if (MessageViewer::MessageViewerSettings::self()->showColorBar()) { - mColorBar->show(); - } else { - mColorBar->hide(); - } + mColorBar->show(); displayMessage(); } else if (mMessagePartNode) { setMessagePart(mMessagePartNode); @@ -2288,27 +2272,27 @@ void ViewerPrivate::slotIconicAttachments() { - setAttachmentStrategy(MimeTreeParser::AttachmentStrategy::iconic()); + setAttachmentStrategy(AttachmentStrategy::iconic()); } void ViewerPrivate::slotSmartAttachments() { - setAttachmentStrategy(MimeTreeParser::AttachmentStrategy::smart()); + setAttachmentStrategy(AttachmentStrategy::smart()); } void ViewerPrivate::slotInlineAttachments() { - setAttachmentStrategy(MimeTreeParser::AttachmentStrategy::inlined()); + setAttachmentStrategy(AttachmentStrategy::inlined()); } void ViewerPrivate::slotHideAttachments() { - setAttachmentStrategy(MimeTreeParser::AttachmentStrategy::hidden()); + setAttachmentStrategy(AttachmentStrategy::hidden()); } void ViewerPrivate::slotHeaderOnlyAttachments() { - setAttachmentStrategy(MimeTreeParser::AttachmentStrategy::headerOnly()); + setAttachmentStrategy(AttachmentStrategy::headerOnly()); } void ViewerPrivate::attachmentView(KMime::Content *atmNode) @@ -2439,57 +2423,23 @@ return mHeaderStylePlugin; } -QString ViewerPrivate::attachmentInjectionHtml() +QString ViewerPrivate::attachmentHtml() const { const QColor background = KColorScheme(QPalette::Active, KColorScheme::View).background().color(); QString html = renderAttachments(mMessage.data(), background); - if (html.isEmpty()) { - return QString(); - } + if (!html.isEmpty()) { + QString textAlign = QStringLiteral("right"); + + const bool isFancyTheme = (headerStylePlugin()->name() == QStringLiteral("fancy")); + if (isFancyTheme) { + textAlign = QStringLiteral("left"); + } - const QString listVisibility = !mShowAttachmentQuicklist ? QStringLiteral( - "style=\"display:none;\"") : QString(); - html = QStringLiteral("
    ").arg(listVisibility) + html - + QStringLiteral("
    "); - - const QString urlHandleShow = QStringLiteral("kmail:showAttachmentQuicklist"); - const QString imgSrcShow = QStringLiteral("quicklistClosed.png"); - const QString urlHandleHide = QStringLiteral("kmail:hideAttachmentQuicklist"); - const QString imgSrcHide = QStringLiteral("quicklistOpened.png"); - - //TODO make it as a virtual method - QString link; - QString textAlign = QStringLiteral("right"); - - const bool isFancyTheme = (headerStylePlugin()->name() == QStringLiteral("fancy")); - if (isFancyTheme) { - textAlign = QStringLiteral("left"); - } - - const QString visibility = QStringLiteral("style=\"display:none;\""); - link += QStringLiteral(""); - - html.prepend(link); - - if (isFancyTheme) { - html.prepend(QStringLiteral("
    %1 
    ").arg(i18n( - "Attachments:"))); + if (isFancyTheme) { + html.prepend(QStringLiteral("
    %1 
    ").arg(i18n( + "Attachments:"))); + } } return html; } @@ -2501,7 +2451,6 @@ // inject attachments in header view // we have to do that after the otp has run so we also see encrypted parts - toggleFullAddressList(); mViewer->scrollToRelativePosition(mViewer->relativePosition()); mViewer->clearRelativePosition(); } @@ -2548,9 +2497,9 @@ #endif } -void ViewerPrivate::showOpenAttachmentFolderWidget(const QUrl &url) +void ViewerPrivate::showOpenAttachmentFolderWidget(const QList &urls) { - mOpenAttachmentFolderWidget->setFolder(url); + mOpenAttachmentFolderWidget->setUrls(urls); mOpenAttachmentFolderWidget->slotShowWarning(); } @@ -2593,18 +2542,18 @@ void ViewerPrivate::slotAttachmentSaveAs() { const auto contents = selectedContents(); - QUrl currentUrl; - if (Util::saveAttachments(contents, mMainWindow, currentUrl)) { - showOpenAttachmentFolderWidget(currentUrl); + QList urlList; + if (Util::saveAttachments(contents, mMainWindow, urlList)) { + showOpenAttachmentFolderWidget(urlList); } } void ViewerPrivate::slotAttachmentSaveAll() { const auto contents = mMessage->attachments(); - QUrl currentUrl; - if (Util::saveAttachments(contents, mMainWindow, currentUrl)) { - showOpenAttachmentFolderWidget(currentUrl); + QList urlList; + if (Util::saveAttachments(contents, mMainWindow, urlList)) { + showOpenAttachmentFolderWidget(urlList); } } @@ -2671,46 +2620,6 @@ #endif } -void ViewerPrivate::slotAttachmentDelete() -{ - const auto contents = selectedContents(); - if (contents.isEmpty()) { - return; - } - - bool showWarning = true; - for (KMime::Content *content : contents) { - if (!deleteAttachment(content, showWarning)) { - return; - } - showWarning = false; - } - update(); -} - -void ViewerPrivate::slotAttachmentEdit() -{ - const auto contents = selectedContents(); - if (contents.isEmpty()) { - return; - } - - MessageViewer::AttachmentEditJob *job = new MessageViewer::AttachmentEditJob(mSession, this); - connect(job, &AttachmentEditJob::refreshMessage, this, &ViewerPrivate::slotRefreshMessage); - job->setMainWindow(mMainWindow); - job->setMessageItem(mMessageItem); - job->setMessage(mMessage); - - bool showWarning = true; - for (KMime::Content *content : contents) { - if (!job->addAttachment(content, showWarning)) { - break; - } - showWarning = false; - } - job->canDeleteJob(); -} - void ViewerPrivate::slotLevelQuote(int l) { if (mLevelQuote != l) { @@ -2728,18 +2637,29 @@ case Viewer::Delete: deleteAttachment(mCurrentContent); break; - case Viewer::Edit: - editAttachment(mCurrentContent); - break; case Viewer::Properties: attachmentProperties(mCurrentContent); break; case Viewer::Save: { - QUrl currentUrl; - if (Util::saveContents(mMainWindow, KMime::Content::List() << mCurrentContent, - currentUrl)) { - showOpenAttachmentFolderWidget(currentUrl); + const bool isEncapsulatedMessage = mCurrentContent->parent() && mCurrentContent->parent()->bodyIsMessage(); + if (isEncapsulatedMessage) { + KMime::Message::Ptr message = KMime::Message::Ptr(new KMime::Message); + message->setContent(mCurrentContent->parent()->bodyAsMessage()->encodedContent()); + message->parse(); + Akonadi::Item item; + item.setPayload(message); + Akonadi::MessageFlags::copyMessageFlags(*message, item); + item.setMimeType(KMime::Message::mimeType()); + QUrl url; + if (MessageViewer::Util::saveMessageInMboxAndGetUrl(url, Akonadi::Item::List() << item, mMainWindow)) { + showOpenAttachmentFolderWidget(QList() << url); + } + } else { + QList urlList; + if (Util::saveContents(mMainWindow, KMime::Content::List() << mCurrentContent, urlList)) { + showOpenAttachmentFolderWidget(urlList); + } } break; } @@ -2881,8 +2801,17 @@ bool ViewerPrivate::htmlLoadExternal() const { - return (mHtmlLoadExternalGlobalSetting && !mHtmlLoadExtOverride) - || (!mHtmlLoadExternalGlobalSetting && mHtmlLoadExtOverride); + if (!mNodeHelper || !mMessage) { + return mHtmlLoadExtOverride; + } + + // when displaying an encrypted message, only load external resources on explicit request + if (mNodeHelper->overallEncryptionState(mMessage.data()) != MimeTreeParser::KMMsgNotEncrypted) { + return mHtmlLoadExtOverride; + } + + return (mHtmlLoadExternalDefaultSetting && !mHtmlLoadExtOverride) + || (!mHtmlLoadExternalDefaultSetting && mHtmlLoadExtOverride); } void ViewerPrivate::setDisplayFormatMessageOverwrite(Viewer::DisplayFormatMessage format) @@ -2904,9 +2833,14 @@ return mDisplayFormatMessageOverwrite; } -void ViewerPrivate::setHtmlLoadExtOverride(bool override) +void ViewerPrivate::setHtmlLoadExtDefault(bool loadExtDefault) +{ + mHtmlLoadExternalDefaultSetting = loadExtDefault; +} + +void ViewerPrivate::setHtmlLoadExtOverride(bool loadExtOverride) { - mHtmlLoadExtOverride = override; + mHtmlLoadExtOverride = loadExtOverride; } bool ViewerPrivate::htmlLoadExtOverride() const @@ -2929,22 +2863,6 @@ mShowSignatureDetails = showDetails; } -void ViewerPrivate::setFullToAddressList(bool showFullTo) -{ - mViewer->executeHideShowToAddressScripts(showFullTo); -} - -void ViewerPrivate::setFullCcAddressList(bool showFullCc) -{ - mViewer->executeHideShowCcAddressScripts(showFullCc); -} - -void ViewerPrivate::setShowAttachmentQuicklist(bool showAttachmentQuicklist) -{ - mShowAttachmentQuicklist = showAttachmentQuicklist; - mViewer->executeHideShowAttachmentsScripts(mShowAttachmentQuicklist); -} - void ViewerPrivate::setHideEncryptionDetails(bool encDetails) { mViewer->executeHideShowEncryptionDetails(encDetails); @@ -2987,52 +2905,6 @@ } } -void ViewerPrivate::toggleFullAddressList() -{ - toggleFullAddressList(QStringLiteral("To")); - toggleFullAddressList(QStringLiteral("Cc")); -} - -QString ViewerPrivate::recipientsQuickListLinkHtml(const QString &field) -{ - const QString urlHandleShow = QLatin1String("kmail:hideFull") + field + QLatin1String( - "AddressList"); - const QString imgSrcShow = QStringLiteral("quicklistOpened.png"); - const QString urlHandleHide = QLatin1String("kmail:showFull") + field + QLatin1String( - "AddressList"); - const QString imgSrcHide = QStringLiteral("quicklistClosed.png"); - const QString visibility = QStringLiteral("style=\"display:none;\""); - - return QStringLiteral("") - +QStringLiteral("").arg(urlHandleShow).arg(field) - +QStringLiteral("\"%2\"").arg(QUrl::fromLocalFile(MessageViewer:: - IconNameCache:: - instance()-> - iconPathFromLocal( - imgSrcShow)).url(), - /*altTextShow*/ QString()) - +QStringLiteral("") - +QStringLiteral("").arg(urlHandleHide).arg(field). - arg(visibility) - +QStringLiteral("\"%2\"").arg(QUrl::fromLocalFile(MessageViewer:: - IconNameCache:: - instance()-> - iconPathFromLocal( - imgSrcHide)).url(), - /*altTextHide*/ QString()) - +QStringLiteral("") - +QStringLiteral(""); -} - -void ViewerPrivate::toggleFullAddressList(const QString &field) -{ - if (field == QLatin1String("To") || (field == QLatin1String("Cc"))) { - mViewer->toggleFullAddressList(field, - bind(&ViewerPrivate::recipientsQuickListLinkHtml, this, - field)); - } -} - void ViewerPrivate::itemFetchResult(KJob *job) { if (job->error()) { @@ -3205,6 +3077,11 @@ } } +void ViewerPrivate::slotMailTrackingFound(const MessageViewer::BlockMailTrackingUrlInterceptor::MailTrackerBlackList &blacklist) +{ + mMailTrackingWarning->addTracker(blacklist); +} + void ViewerPrivate::slotFormSubmittedForbidden() { mSubmittedFormWarning->showWarning(); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/viewer_p.h kf5-messagelib-18.04.3/messageviewer/src/viewer/viewer_p.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/viewer_p.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/viewer_p.h 2018-07-06 05:43:41.000000000 +0000 @@ -21,6 +21,8 @@ #ifndef MAILVIEWER_P_H #define MAILVIEWER_P_H +#include "messageviewer_private_export.h" + #include #include "config-messageviewer.h" #include "viewer.h" //not so nice, it is actually for the enums from MailViewer @@ -37,6 +39,7 @@ #include #include #include +#include #include #include @@ -66,8 +69,6 @@ } namespace MimeTreeParser { -class AttachmentStrategy; -class HtmlWriter; class ObjectTreeParser; } @@ -78,7 +79,9 @@ class LocalDataBaseManager; } namespace MessageViewer { +class AttachmentStrategy; class HeaderStylePlugin; +class HtmlWriter; class CSSHelper; class MailWebEngineView; class WebEnginePartHtmlWriter; @@ -91,6 +94,7 @@ class ViewerPluginInterface; class SubmittedFormWarningWidget; class MailSourceWebEngineViewer; +class MailTrackingWarningWidget; /** \brief Private class for the Viewer, the main widget in the messageviewer library. @@ -119,7 +123,7 @@ has a timer that prevents too many slow calls to updateReaderWin() in a short time frame. updateReaderWin() again is only a thin wrapper that resets some state and then calls displayMessage(). -displayMessage() itself is again a thin wrapper, which starts the MimeTreeParser::HtmlWriter and then calls +displayMessage() itself is again a thin wrapper, which starts the HtmlWriter and then calls parseMsg(). Finally, parseMsg() does the real work. It uses MimeTreeParser::ObjectTreeParser ::parseObjectTree() to let the MimeTreeParser::ObjectTreeParser parse the message and generate the HTML code for it. @@ -183,19 +187,19 @@ \par Misc ViewerPrivate holds the MimeTreeParser::NodeHelper, which is passed on to the MimeTreeParser::ObjectTreeParser when it needs it. -It also holds the HeaderStyle, HeaderStrategy, MimeTreeParser::AttachmentStrategy, CSSHelper, MimeTreeParser::HtmlWriter and more, +It also holds the HeaderStyle, HeaderStrategy, MimeTreeParser::AttachmentStrategy, CSSHelper, HtmlWriter and more, some of them again passed to the MimeTreeParser::ObjectTreeParser when it needs it. @author andras@kdab.net */ -class ViewerPrivate : public QObject +class MESSAGEVIEWER_TESTS_EXPORT ViewerPrivate : public QObject { Q_OBJECT public: ViewerPrivate(Viewer *aParent, QWidget *mainWindow, KActionCollection *actionCollection); - virtual ~ViewerPrivate(); + ~ViewerPrivate() override; /** Returns message part from given URL or null if invalid. The URL's path is a KMime::ContentIndex path, or an index for the extra nodes, followed by : and the ContentIndex path. */ @@ -214,10 +218,6 @@ void attachmentProperties(KMime::Content *node); void attachmentCopy(const KMime::Content::List &contents); - /** Edit the attachment the @param node points to. Returns false if the user - cancelled the editing, true in all other cases! */ - void editAttachment(KMime::Content *node, bool showWarning = true); - void scrollToAnchor(const QString &anchor); void showAttachmentPopup(KMime::Content *node, const QString &name, const QPoint &p); @@ -235,8 +235,8 @@ void attachmentOpenWith(KMime::Content *node, const KService::Ptr &offer = KService::Ptr()); void attachmentOpen(KMime::Content *node); - /** Return the MimeTreeParser::HtmlWriter connected to the MailWebView we use */ - MimeTreeParser::HtmlWriter *htmlWriter() const; + /** Return the HtmlWriter connected to the MailWebView we use */ + HtmlWriter *htmlWriter() const; HeaderStylePlugin *headerStylePlugin() const; @@ -270,7 +270,7 @@ /** Creates a nice mail header depending on the current selected header style. */ - QString writeMsgHeader(KMime::Message *aMsg, KMime::Content *vCardNode = nullptr, bool topLevel = false); + QString writeMessageHeader(KMime::Message *aMsg, KMime::Content *vCardNode = nullptr, bool topLevel = false); /** show window containing information about a vCard. */ void showVCard(KMime::Content *msgPart); @@ -282,6 +282,9 @@ void initHtmlWidget(); void createOpenWithMenu(QMenu *topMenu, const QString &contentTypeStr, bool fromCurrentContent); public: + + void itemFetchResult(KJob *job); + /** Read settings from app's config file. */ void readConfig(); @@ -289,8 +292,8 @@ void writeConfig(bool withSync = true); /** Get/set the message attachment strategy. */ - const MimeTreeParser::AttachmentStrategy *attachmentStrategy() const; - void setAttachmentStrategy(const MimeTreeParser::AttachmentStrategy *strategy); + const AttachmentStrategy *attachmentStrategy() const; + void setAttachmentStrategy(const AttachmentStrategy *strategy); /** Get selected override character encoding. @return The encoding selected by the user or an empty string if auto-detection @@ -342,7 +345,7 @@ void showContextMenu(KMime::Content *content, const QPoint &point); - KToggleAction *actionForAttachmentStrategy(const MimeTreeParser::AttachmentStrategy *); + KToggleAction *actionForAttachmentStrategy(const AttachmentStrategy *); /** Read override codec from configuration */ void readGlobalOverrideCodec(); @@ -376,8 +379,19 @@ /** Get the load external references override setting */ bool htmlLoadExtOverride() const; - /** Override default load external references setting */ - void setHtmlLoadExtOverride(bool override); + /** Default behavior for loading external references. + * Use this for specifying the external reference loading behavior as + * specified in the user settings. + * @see setHtmlLoadExtOverride + */ + void setHtmlLoadExtDefault(bool loadExtDefault); + + /** Override default load external references setting + * @warning This must only be called when the user has explicitly + * been asked to retrieve external references! + * @see setHtmlLoadExtDefault + */ + void setHtmlLoadExtOverride(bool loadExtOverride); /** Enforce message decryption. */ void setDecryptMessageOverwrite(bool overwrite = true); @@ -388,9 +402,6 @@ /** Show signature details. */ void setShowSignatureDetails(bool showDetails = true); - /* show or hide the list that points to the attachments */ - void setShowAttachmentQuicklist(bool showAttachmentQuicklist = true); - /* show or hide encryption details */ void setHideEncryptionDetails(bool encDetails = true); @@ -398,18 +409,13 @@ void setUseFixedFont(bool useFixedFont); void attachmentView(KMime::Content *atmNode); - void setFullToAddressList(bool showFullTo); - void setFullCcAddressList(bool showFullCc); - - /** Show/Hide the field with id "field" */ - void toggleFullAddressList(const QString &field); void setZoomFactor(qreal zoomFactor); void goOnline(); void goResourceOnline(); - void showOpenAttachmentFolderWidget(const QUrl &url); + void showOpenAttachmentFolderWidget(const QList &urls); bool mimePartTreeIsEmpty() const; @@ -432,11 +438,7 @@ void slotMessageIsNotAScam(); void slotAddToWhiteList(); void slotFormSubmittedForbidden(); - - /** Show hide all fields specified inside this function */ - void toggleFullAddressList(); - - void itemFetchResult(KJob *job); + void slotMailTrackingFound(const MessageViewer::BlockMailTrackingUrlInterceptor::MailTrackerBlackList &blacklist); void slotItemChanged(const Akonadi::Item &item, const QSet &partIdentifiers); void slotItemMoved(const Akonadi::Item &, const Akonadi::Collection &, const Akonadi::Collection &); @@ -520,8 +522,6 @@ void slotAttachmentView(); void slotAttachmentProperties(); void slotAttachmentCopy(); - void slotAttachmentDelete(); - void slotAttachmentEdit(); void slotLevelQuote(int l); /** Toggle display mode between HTML and plain text. */ @@ -558,6 +558,7 @@ void slotGeneralFontChanged(); + Q_SIGNALS: void showStatusBarMessage(const QString &message); void popupMenu(const Akonadi::Item &msg, const QUrl &url, const QUrl &imageUrl, const QPoint &mousePos); @@ -576,8 +577,7 @@ void pageIsScrolledToBottom(bool); void printingFinished(); private: - QString attachmentInjectionHtml(); - QString recipientsQuickListLinkHtml(const QString &); + QString attachmentHtml() const; Akonadi::Relation relatedNoteRelation() const; void addHelpTextAction(QAction *act, const QString &text); @@ -591,10 +591,10 @@ MimeTreeParser::NodeHelper *mNodeHelper = nullptr; void slotDelayPrintPreview(); -public: bool mHtmlMailGlobalSetting; - bool mHtmlLoadExternalGlobalSetting; + bool mHtmlLoadExternalDefaultSetting; bool mHtmlLoadExtOverride; +public: KMime::Message::Ptr mMessage; //the current message, if it was set manually Akonadi::Item mMessageItem; //the message item from Akonadi // widgets: @@ -607,7 +607,7 @@ MailWebEngineView *mViewer = nullptr; WebEngineViewer::FindBarWebEngineView *mFindBar = nullptr; - const MimeTreeParser::AttachmentStrategy *mAttachmentStrategy = nullptr; + const AttachmentStrategy *mAttachmentStrategy = nullptr; QTimer mUpdateReaderWinTimer; QTimer mResizeTimer; QString mOverrideEncoding; @@ -649,7 +649,7 @@ QUrl mImageUrl; QPoint mLastClickPosition; bool mCanStartDrag; - MimeTreeParser::HtmlWriter *mHtmlWriter; + HtmlWriter *mHtmlWriter; /** Used only to be able to connect and disconnect finished() signal in printMsg() and slotPrintMsg() since mHtmlWriter points only to abstract non-QObject class. */ QPointer mPartHtmlWriter; @@ -657,7 +657,6 @@ int mLevelQuote; bool mDecrytMessageOverwrite; bool mShowSignatureDetails; - bool mShowAttachmentQuicklist; bool mForceEmoticons; int mRecursionCountForDisplayMessage; KMime::Content *mCurrentContent = nullptr; @@ -676,6 +675,7 @@ MessageViewer::ScamDetectionWarningWidget *mScamDetectionWarning = nullptr; MessageViewer::OpenAttachmentFolderWidget *mOpenAttachmentFolderWidget = nullptr; MessageViewer::SubmittedFormWarningWidget *mSubmittedFormWarning = nullptr; + MessageViewer::MailTrackingWarningWidget *mMailTrackingWarning = nullptr; KPIMTextEdit::TextToSpeechWidget *mTextToSpeechWidget = nullptr; Viewer::DisplayFormatMessage mDisplayFormatMessageOverwrite; KPIMTextEdit::SlideContainer *mSliderContainer = nullptr; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/autotests/mailwebenginescripttest.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/autotests/mailwebenginescripttest.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/autotests/mailwebenginescripttest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/autotests/mailwebenginescripttest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -31,29 +31,4 @@ { } -void MailWebEngineScriptTest::shouldInjectAttachment() -{ - const QString expectedResult = QStringLiteral("qt.jQuery('#bla').append('foo')"); - QString script = MessageViewer::MailWebEngineScript::injectAttachments(QStringLiteral( - "foo"), - QStringLiteral("bla")); - // skip the checks at the beginning of the script - script = script.mid(script.indexOf(QLatin1Char('\n')) + 1); - script = script.mid(script.indexOf(QLatin1Char('\n')) + 1); - QCOMPARE(script, expectedResult); -} - -void MailWebEngineScriptTest::shouldReplaceInnerHtml() -{ - const QString expectedResult = QStringLiteral( - "qt.jQuery('#iconFullGGAddressList').append('hello word')"); - QString script = MessageViewer::MailWebEngineScript::replaceInnerHtml(QStringLiteral( - "GG"), - QStringLiteral( - "hello word")); - // skip the checks at the beginning of the script - script = script.mid(script.indexOf(QLatin1Char('\n')) + 1); - QCOMPARE(script, expectedResult); -} - QTEST_MAIN(MailWebEngineScriptTest) diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/autotests/mailwebenginescripttest.h kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/autotests/mailwebenginescripttest.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/autotests/mailwebenginescripttest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/autotests/mailwebenginescripttest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -28,9 +28,6 @@ public: explicit MailWebEngineScriptTest(QObject *parent = nullptr); ~MailWebEngineScriptTest(); -private Q_SLOTS: - void shouldInjectAttachment(); - void shouldReplaceInnerHtml(); }; #endif // MAILWEBENGINESCRIPTTEST_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/blockexternalresourcesurlinterceptor.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/blockexternalresourcesurlinterceptor.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/blockexternalresourcesurlinterceptor.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/blockexternalresourcesurlinterceptor.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -34,6 +34,9 @@ bool BlockExternalResourcesUrlInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info) { + if (info.requestUrl().scheme() == QStringLiteral("data") + || info.requestUrl().scheme() == QStringLiteral("file")) + return false; const QWebEngineUrlRequestInfo::ResourceType resourceType = info.resourceType(); const QWebEngineUrlRequestInfo::NavigationType navigationType = info.navigationType(); if (resourceType == QWebEngineUrlRequestInfo::ResourceTypeMedia diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/blockexternalresourcesurlinterceptor.h kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/blockexternalresourcesurlinterceptor.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/blockexternalresourcesurlinterceptor.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/blockexternalresourcesurlinterceptor.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -28,7 +28,7 @@ Q_OBJECT public: explicit BlockExternalResourcesUrlInterceptor(QObject *parent = nullptr); - ~BlockExternalResourcesUrlInterceptor(); + ~BlockExternalResourcesUrlInterceptor() override; bool interceptRequest(QWebEngineUrlRequestInfo &info) override; void setAllowExternalContent(bool b); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/loadexternalreferencesurlinterceptor.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/loadexternalreferencesurlinterceptor.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/loadexternalreferencesurlinterceptor.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/loadexternalreferencesurlinterceptor.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -47,6 +47,9 @@ bool LoadExternalReferencesUrlInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info) { + if (info.requestUrl().scheme() == QStringLiteral("data") + || info.requestUrl().scheme() == QStringLiteral("file")) + return false; if (d->mAllowLoadExternalReference) { return false; } else { diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/loadexternalreferencesurlinterceptor.h kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/loadexternalreferencesurlinterceptor.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/loadexternalreferencesurlinterceptor.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/blockexternalresourcesurlinterceptor/loadexternalreferencesurlinterceptor.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -29,7 +29,7 @@ Q_OBJECT public: explicit LoadExternalReferencesUrlInterceptor(QObject *parent = nullptr); - ~LoadExternalReferencesUrlInterceptor(); + ~LoadExternalReferencesUrlInterceptor() override; bool interceptRequest(QWebEngineUrlRequestInfo &info) override; void setAllowExternalContent(bool b); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/blockmailtrackingurlinterceptor/blockmailtrackingurlinterceptor.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/blockmailtrackingurlinterceptor/blockmailtrackingurlinterceptor.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/blockmailtrackingurlinterceptor/blockmailtrackingurlinterceptor.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/blockmailtrackingurlinterceptor/blockmailtrackingurlinterceptor.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,77 @@ +/* + Copyright (C) 2017-2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "blockmailtrackingurlinterceptor.h" + +#include +#include + +using namespace MessageViewer; +BlockMailTrackingUrlInterceptor::BlockMailTrackingUrlInterceptor(QObject *parent) + : WebEngineViewer::NetworkPluginUrlInterceptorInterface(parent) +{ + initializeList(); +} + +MessageViewer::BlockMailTrackingUrlInterceptor::~BlockMailTrackingUrlInterceptor() +{ +} + +bool BlockMailTrackingUrlInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info) +{ + const QUrl urlRequestUrl(info.requestUrl()); + //qDebug() << " bool BlockMailTrackingUrlInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info)"< + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef BLOCKMAILTRACKINGURLINTERCEPTOR_H +#define BLOCKMAILTRACKINGURLINTERCEPTOR_H + +#include + +#include +namespace MessageViewer { +class BlockMailTrackingUrlInterceptor : public WebEngineViewer::NetworkPluginUrlInterceptorInterface +{ + Q_OBJECT +public: + struct MailTrackerBlackList + { + MailTrackerBlackList(const QString &company, const QString &pattern, const QString &url) + : mCompanyName(company) + , mCompanyUrl(url) + , mPattern(pattern) + { + } + + QString mCompanyName; + QString mCompanyUrl; + QString mPattern; + }; + + explicit BlockMailTrackingUrlInterceptor(QObject *parent = nullptr); + ~BlockMailTrackingUrlInterceptor() override; + bool interceptRequest(QWebEngineUrlRequestInfo &info) override; + +Q_SIGNALS: + void mailTrackingFound(const MessageViewer::BlockMailTrackingUrlInterceptor::MailTrackerBlackList &); + +private: + void initializeList(); + QVector mBackList; +}; +} +Q_DECLARE_TYPEINFO(MessageViewer::BlockMailTrackingUrlInterceptor::MailTrackerBlackList, Q_MOVABLE_TYPE); +#endif // BLOCKMAILTRACKINGURLINTERCEPTOR_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/cidreferencesurlinterceptor/cidreferencesurlinterceptor.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/cidreferencesurlinterceptor/cidreferencesurlinterceptor.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/cidreferencesurlinterceptor/cidreferencesurlinterceptor.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/cidreferencesurlinterceptor/cidreferencesurlinterceptor.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/cidreferencesurlinterceptor/cidreferencesurlinterceptor.h kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/cidreferencesurlinterceptor/cidreferencesurlinterceptor.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/cidreferencesurlinterceptor/cidreferencesurlinterceptor.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/cidreferencesurlinterceptor/cidreferencesurlinterceptor.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -28,7 +28,7 @@ Q_OBJECT public: explicit CidReferencesUrlInterceptor(QObject *parent = nullptr); - ~CidReferencesUrlInterceptor(); + ~CidReferencesUrlInterceptor() override; bool interceptRequest(QWebEngineUrlRequestInfo &info) override; }; diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/loadexternalreferencesurlinterceptor/loadexternalreferencesurlinterceptor.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/loadexternalreferencesurlinterceptor/loadexternalreferencesurlinterceptor.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/loadexternalreferencesurlinterceptor/loadexternalreferencesurlinterceptor.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/loadexternalreferencesurlinterceptor/loadexternalreferencesurlinterceptor.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -34,12 +34,16 @@ bool LoadExternalReferencesUrlInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info) { + const QString scheme = info.requestUrl().scheme(); + if (scheme == QStringLiteral("data") + || scheme == QStringLiteral("file")) + return false; if (mAllowLoadExternalReference) { return false; } else { if (info.resourceType() == QWebEngineUrlRequestInfo::ResourceTypeImage && !info.requestUrl().isLocalFile() - && (info.requestUrl().scheme() != QLatin1String("cid"))) { + && (scheme != QLatin1String("cid"))) { return true; } } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/loadexternalreferencesurlinterceptor/loadexternalreferencesurlinterceptor.h kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/loadexternalreferencesurlinterceptor/loadexternalreferencesurlinterceptor.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/loadexternalreferencesurlinterceptor/loadexternalreferencesurlinterceptor.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/loadexternalreferencesurlinterceptor/loadexternalreferencesurlinterceptor.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -27,7 +27,7 @@ Q_OBJECT public: explicit LoadExternalReferencesUrlInterceptor(QObject *parent = nullptr); - ~LoadExternalReferencesUrlInterceptor(); + ~LoadExternalReferencesUrlInterceptor() override; bool interceptRequest(QWebEngineUrlRequestInfo &info) override; void setAllowExternalContent(bool b); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/mailwebenginepage.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/mailwebenginepage.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/mailwebenginepage.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/mailwebenginepage.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/mailwebenginepage.h kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/mailwebenginepage.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/mailwebenginepage.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/mailwebenginepage.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/mailwebenginescript.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/mailwebenginescript.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/mailwebenginescript.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/mailwebenginescript.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -28,48 +28,6 @@ scriptName)); } -QString MailWebEngineScript::createShowHideAddressScript(const QString &field, bool hide) -{ - QString source = checkJQuery("createShowHideAddressScript"); - if (hide) { - source += QString::fromLatin1("qt.jQuery(\"#kmail%1show\").hide();" - "qt.jQuery(\"#kmail%1hide\").show();" - "qt.jQuery(\"#dotsFull%1AddressList\").hide();" - "qt.jQuery(\"#hiddenFull%1AddressList\").show();").arg(field); - } else { - source += QString::fromLatin1("qt.jQuery(\"#kmail%1hide\").hide();" - "qt.jQuery(\"#kmail%1show\").show();" - "qt.jQuery(\"#dotsFull%1AddressList\").show();" - "qt.jQuery(\"#hiddenFull%1AddressList\").hide();").arg(field); - } - return source; -} - -QString MailWebEngineScript::manageShowHideToAddress(bool hide) -{ - return MailWebEngineScript::createShowHideAddressScript(QStringLiteral("To"), hide); -} - -QString MailWebEngineScript::manageShowHideCcAddress(bool hide) -{ - return MailWebEngineScript::createShowHideAddressScript(QStringLiteral("Cc"), hide); -} - -QString MailWebEngineScript::manageShowHideAttachments(bool hide) -{ - QString source = checkJQuery("manageShowHideAttachments"); - if (hide) { - source += QString::fromLatin1("qt.jQuery(\"#kmailhideattachment\").hide();" - "qt.jQuery(\"#kmailshowattachment\").show();" - "if (!qt.jQuery(\"#attachmentlist\")) { console.warn('attachmentlist not found'); } else { qt.jQuery(\"#attachmentlist\").show(); }"); - } else { - source += QString::fromLatin1("qt.jQuery('#kmailshowattachment').hide();" - "qt.jQuery(\"#kmailhideattachment\").show();" - "if (!qt.jQuery(\"#attachmentlist\")) { console.warn('attachmentlist not found'); } else { qt.jQuery(\"#attachmentlist\").hide(); }"); - } - return source; -} - QString MailWebEngineScript::manageShowHideEncryptionDetails(bool hide) { QString source = checkJQuery("manageShowHideEncryptionDetails"); @@ -83,19 +41,3 @@ return source; } -QString MailWebEngineScript::injectAttachments(const QString &delayedHtml, const QString &elementStr) -{ - const QString source = checkJQuery("injectAttachments") + QString::fromLatin1( - "if (!document.getElementById('%1')) { console.warn('NOT FOUND: %1'); };\n" - "qt.jQuery('#%1').append('%2')").arg(elementStr, delayedHtml); - return source; -} - -QString MailWebEngineScript::replaceInnerHtml(const QString &field, const QString &html) -{ - const QString replaceInnerHtmlStr = QLatin1String("iconFull") + field + QLatin1String( - "AddressList"); - const QString source = checkJQuery("replaceInnerHtml") + QString::fromLatin1( - "qt.jQuery('#%1').append('%2')").arg(replaceInnerHtmlStr, html); - return source; -} diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/mailwebenginescript.h kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/mailwebenginescript.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/mailwebenginescript.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/mailwebenginescript.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -24,13 +24,7 @@ namespace MessageViewer { namespace MailWebEngineScript { -MESSAGEVIEWER_EXPORT QString injectAttachments(const QString &delayedHtml, const QString &element); -MESSAGEVIEWER_EXPORT QString replaceInnerHtml(const QString &field, const QString &html); -MESSAGEVIEWER_EXPORT QString manageShowHideAttachments(bool hide); -MESSAGEVIEWER_EXPORT QString manageShowHideToAddress(bool hide); -MESSAGEVIEWER_EXPORT QString manageShowHideCcAddress(bool hide); MESSAGEVIEWER_EXPORT QString manageShowHideEncryptionDetails(bool hide); -MESSAGEVIEWER_EXPORT QString createShowHideAddressScript(const QString &field, bool hide); } } #endif // MAILWEBENGINESCRIPT_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/mailwebengineview.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/mailwebengineview.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/mailwebengineview.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/mailwebengineview.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -25,6 +25,7 @@ #include "../urlhandlermanager.h" #include "loadexternalreferencesurlinterceptor/loadexternalreferencesurlinterceptor.h" #include "blockexternalresourcesurlinterceptor/blockexternalresourcesurlinterceptor.h" +#include "blockmailtrackingurlinterceptor/blockmailtrackingurlinterceptor.h" #include "cidreferencesurlinterceptor/cidreferencesurlinterceptor.h" #include #include @@ -101,8 +102,14 @@ = new MessageViewer::BlockExternalResourcesUrlInterceptor(this); connect(blockExternalUrl, &BlockExternalResourcesUrlInterceptor::formSubmittedForbidden, this, &MailWebEngineView::formSubmittedForbidden); - d->mNetworkAccessManager->addInterceptor(blockExternalUrl); + + MessageViewer::BlockMailTrackingUrlInterceptor *blockMailTrackingUrl + = new MessageViewer::BlockMailTrackingUrlInterceptor(this); + connect(blockMailTrackingUrl, &BlockMailTrackingUrlInterceptor::mailTrackingFound, this, + &MailWebEngineView::mailTrackingFound); + d->mNetworkAccessManager->addInterceptor(blockMailTrackingUrl); + setFocusPolicy(Qt::WheelFocus); connect(d->mPageEngine, &MailWebEnginePage::urlClicked, this, &MailWebEngineView::openUrl); connect( @@ -340,39 +347,12 @@ scrollPageDown(-percent); } -void MailWebEngineView::executeHideShowToAddressScripts(bool hide) -{ - const QString source = MessageViewer::MailWebEngineScript::manageShowHideToAddress(hide); - runJavaScriptInWordId(source); -} - void MailWebEngineView::executeHideShowEncryptionDetails(bool hide) { const QString source = MessageViewer::MailWebEngineScript::manageShowHideEncryptionDetails(hide); runJavaScriptInWordId(source); } -void MailWebEngineView::executeHideShowCcAddressScripts(bool hide) -{ - const QString source = MessageViewer::MailWebEngineScript::manageShowHideCcAddress(hide); - runJavaScriptInWordId(source); -} - -void MailWebEngineView::executeHideShowAttachmentsScripts(bool hide) -{ - const QString source = MessageViewer::MailWebEngineScript::manageShowHideAttachments(hide); - runJavaScriptInWordId(source); -} - -void MailWebEngineView::toggleFullAddressList(const QString &field, const boost::function &delayedHtml) -{ - const QString html = delayedHtml(); - if (html.isEmpty()) { - return; - } - runJavaScriptInWordId(MessageViewer::MailWebEngineScript::replaceInnerHtml(field, html)); -} - void MailWebEngineView::scrollToRelativePosition(qreal pos) { runJavaScriptInWordId(WebEngineViewer::WebEngineScript::scrollToRelativePosition(pos)); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/mailwebengineview.h kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/mailwebengineview.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/mailwebengineview.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/mailwebengineview.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -22,6 +22,7 @@ #include "messageviewer_export.h" #include #include +#include class QPrinter; class KActionCollection; namespace WebEngineViewer { @@ -35,7 +36,7 @@ Q_OBJECT public: explicit MailWebEngineView(KActionCollection *ac, QWidget *parent = nullptr); - ~MailWebEngineView(); + ~MailWebEngineView() override; void scrollUp(int pixels); void scrollDown(int pixels); @@ -60,13 +61,9 @@ void setAllowExternalContent(bool b); QList interceptorUrlActions(const WebEngineViewer::WebHitTestResult &result) const; - void toggleFullAddressList(const QString &field, const boost::function &delayedHtml); void setPrintElementBackground(bool printElementBackground); - void executeHideShowAttachmentsScripts(bool hide); - void executeHideShowToAddressScripts(bool hide); - void executeHideShowCcAddressScripts(bool hide); void executeHideShowEncryptionDetails(bool hide); void setLinkHovered(const QUrl &url); void setViewer(MessageViewer::ViewerPrivate *viewer); @@ -91,6 +88,7 @@ void openUrl(const QUrl &url); void messageMayBeAScam(); void formSubmittedForbidden(); + void mailTrackingFound(const MessageViewer::BlockMailTrackingUrlInterceptor::MailTrackerBlackList &); /// Emitted when the user right-clicks somewhere /// @param url if an URL was under the cursor, this parameter contains it. Otherwise empty /// @param point position where the click happened, in local coordinates diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testjquerysupportmailwebengine.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testjquerysupportmailwebengine.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testjquerysupportmailwebengine.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testjquerysupportmailwebengine.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include TestJQuerySupportMailWebEngine::TestJQuerySupportMailWebEngine(QWidget *parent) @@ -38,7 +38,7 @@ vboxLayout->addWidget(viewer); viewer->setMessage(readAndParseMail(QStringLiteral("encapsulated-with-attachment.mbox"))); viewer->setPluginName(QStringLiteral("enterprise")); - viewer->setAttachmentStrategy(MimeTreeParser::AttachmentStrategy::headerOnly()); + viewer->setAttachmentStrategy(MessageViewer::AttachmentStrategy::headerOnly()); mEditor = new QTextEdit(this); mEditor->setAcceptRichText(false); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testjquerysupportmailwebengine.h kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testjquerysupportmailwebengine.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testjquerysupportmailwebengine.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testjquerysupportmailwebengine.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmaildndattachment.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmaildndattachment.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmaildndattachment.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmaildndattachment.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmaildndattachment.h kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmaildndattachment.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmaildndattachment.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmaildndattachment.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.h kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmailwebengine.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmailwebengine.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmailwebengine.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmailwebengine.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmailwebengine.h kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmailwebengine.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmailwebengine.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmailwebengine.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmailwebengineselection.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmailwebengineselection.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmailwebengineselection.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmailwebengineselection.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmailwebengineselection.h kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmailwebengineselection.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testmailwebengineselection.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testmailwebengineselection.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testwebengineaccesskey.h kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testwebengineaccesskey.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testwebengineaccesskey.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testwebengineaccesskey.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testwebenginescrolladdattachment.cpp kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testwebenginescrolladdattachment.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testwebenginescrolladdattachment.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testwebenginescrolladdattachment.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testwebenginescrolladdattachment.h kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testwebenginescrolladdattachment.h --- kf5-messagelib-17.12.3/messageviewer/src/viewer/webengine/tests/testwebenginescrolladdattachment.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewer/webengine/tests/testwebenginescrolladdattachment.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/tests/viewerplugin_gui.cpp kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/tests/viewerplugin_gui.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/tests/viewerplugin_gui.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/tests/viewerplugin_gui.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/tests/viewerplugin_gui.h kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/tests/viewerplugin_gui.h --- kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/tests/viewerplugin_gui.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/tests/viewerplugin_gui.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerplugin.cpp kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerplugin.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerplugin.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerplugin.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerplugin.h kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerplugin.h --- kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerplugin.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerplugin.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerplugininterface.cpp kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerplugininterface.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerplugininterface.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerplugininterface.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerplugininterface.h kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerplugininterface.h --- kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerplugininterface.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerplugininterface.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerpluginmanager.cpp kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerpluginmanager.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerpluginmanager.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerpluginmanager.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -104,7 +104,7 @@ plugins += KPluginLoader::findPlugins(QStringLiteral("messageviewer"), []( const KPluginMetaData &md) { - return md.serviceTypes().contains(QStringLiteral("MessageViewer/ViewerCommonPlugin")); + return md.serviceTypes().contains(QLatin1String("MessageViewer/ViewerCommonPlugin")); }); const QPair pair = PimCommon::PluginUtil::loadPluginSetting( diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerpluginmanager.h kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerpluginmanager.h --- kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerpluginmanager.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerpluginmanager.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -50,6 +50,7 @@ QString configPrefixSettingKey() const; MessageViewer::ViewerPlugin *pluginFromIdentifier(const QString &id); private: + Q_DISABLE_COPY(ViewerPluginManager) ViewerPluginManagerPrivate *const d; }; } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerplugintoolmanager.cpp kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerplugintoolmanager.cpp --- kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerplugintoolmanager.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerplugintoolmanager.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerplugintoolmanager.h kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerplugintoolmanager.h --- kf5-messagelib-17.12.3/messageviewer/src/viewerplugins/viewerplugintoolmanager.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/viewerplugins/viewerplugintoolmanager.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2017 Laurent Montel + Copyright (C) 2015-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/autotests/CMakeLists.txt kf5-messagelib-18.04.3/messageviewer/src/widgets/autotests/CMakeLists.txt --- kf5-messagelib-17.12.3/messageviewer/src/widgets/autotests/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/autotests/CMakeLists.txt 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,12 @@ + +macro(add_messageviewer_widget_unittest _source) + get_filename_component(_name ${_source} NAME_WE) + ecm_add_test(${_source} + TEST_NAME ${_name} + NAME_PREFIX "messageviewer-" + LINK_LIBRARIES KF5::MessageViewer KF5::WebEngineViewer KF5::Libkleo QGpgme Qt5::Test + ) +endmacro () + +add_messageviewer_widget_unittest(mailtrackingwarningwidgettest.cpp) +add_messageviewer_widget_unittest(mailtrackingdetailsdialogtest.cpp) diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/autotests/mailtrackingdetailsdialogtest.cpp kf5-messagelib-18.04.3/messageviewer/src/widgets/autotests/mailtrackingdetailsdialogtest.cpp --- kf5-messagelib-17.12.3/messageviewer/src/widgets/autotests/mailtrackingdetailsdialogtest.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/autotests/mailtrackingdetailsdialogtest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,36 @@ +/* + Copyright (C) 2017-2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "mailtrackingdetailsdialogtest.h" +#include "widgets/mailtrackingdetailsdialog.h" +#include +#include + +QTEST_MAIN(MailTrackingDetailsDialogTest) + +MailTrackingDetailsDialogTest::MailTrackingDetailsDialogTest(QObject *parent) + : QObject(parent) +{ + QStandardPaths::setTestModeEnabled(true); +} + +void MailTrackingDetailsDialogTest::shouldHaveDefaultValue() +{ + //TOOD +} diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/autotests/mailtrackingdetailsdialogtest.h kf5-messagelib-18.04.3/messageviewer/src/widgets/autotests/mailtrackingdetailsdialogtest.h --- kf5-messagelib-17.12.3/messageviewer/src/widgets/autotests/mailtrackingdetailsdialogtest.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/autotests/mailtrackingdetailsdialogtest.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,35 @@ +/* + Copyright (C) 2017-2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef MAILTRACKINGDETAILSDIALOGTEST_H +#define MAILTRACKINGDETAILSDIALOGTEST_H + +#include + +class MailTrackingDetailsDialogTest : public QObject +{ + Q_OBJECT +public: + explicit MailTrackingDetailsDialogTest(QObject *parent = nullptr); + ~MailTrackingDetailsDialogTest() = default; +private Q_SLOTS: + void shouldHaveDefaultValue(); +}; + +#endif // MAILTRACKINGDETAILSDIALOGTEST_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/autotests/mailtrackingwarningwidgettest.cpp kf5-messagelib-18.04.3/messageviewer/src/widgets/autotests/mailtrackingwarningwidgettest.cpp --- kf5-messagelib-17.12.3/messageviewer/src/widgets/autotests/mailtrackingwarningwidgettest.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/autotests/mailtrackingwarningwidgettest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,38 @@ +/* + Copyright (C) 2017-2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "mailtrackingwarningwidgettest.h" +#include "widgets/mailtrackingwarningwidget.h" +#include + +QTEST_MAIN(MailTrackingWarningWidgetTest) + +MailTrackingWarningWidgetTest::MailTrackingWarningWidgetTest(QObject *parent) + : QObject(parent) +{ +} + +void MailTrackingWarningWidgetTest::shouldHaveDefaultValues() +{ + MessageViewer::MailTrackingWarningWidget w; + QVERIFY(!w.isVisible()); + QVERIFY(!w.isCloseButtonVisible()); + QVERIFY(w.wordWrap()); + QVERIFY(!w.text().isEmpty()); +} diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/autotests/mailtrackingwarningwidgettest.h kf5-messagelib-18.04.3/messageviewer/src/widgets/autotests/mailtrackingwarningwidgettest.h --- kf5-messagelib-17.12.3/messageviewer/src/widgets/autotests/mailtrackingwarningwidgettest.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/autotests/mailtrackingwarningwidgettest.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,35 @@ +/* + Copyright (C) 2017-2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef MAILTRACKINGWARNINGWIDGETTEST_H +#define MAILTRACKINGWARNINGWIDGETTEST_H + +#include + +class MailTrackingWarningWidgetTest : public QObject +{ + Q_OBJECT +public: + explicit MailTrackingWarningWidgetTest(QObject *parent = nullptr); + ~MailTrackingWarningWidgetTest() = default; +private Q_SLOTS: + void shouldHaveDefaultValues(); +}; + +#endif // MAILTRACKINGWARNINGWIDGETTEST_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/htmlstatusbar.cpp kf5-messagelib-18.04.3/messageviewer/src/widgets/htmlstatusbar.cpp --- kf5-messagelib-17.12.3/messageviewer/src/widgets/htmlstatusbar.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/htmlstatusbar.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -4,7 +4,7 @@ This file is part of KMail, the KDE mail client. Copyright (c) 2002 Ingo Kloecker Copyright (c) 2003 Marc Mutz - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel KMail is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as @@ -39,6 +39,7 @@ #include #include +#include #include using namespace MessageViewer; @@ -49,6 +50,7 @@ { setAlignment(Qt::AlignHCenter | Qt::AlignTop); setAutoFillBackground(true); + setCursor(QCursor(Qt::PointingHandCursor)); update(); } @@ -71,16 +73,6 @@ return mode() == MimeTreeParser::Util::Normal; } -bool HtmlStatusBar::isMultipartHtml() const -{ - return mode() == MimeTreeParser::Util::MultipartHtml; -} - -bool HtmlStatusBar::isMultipartPlain() const -{ - return mode() == MimeTreeParser::Util::MultipartPlain; -} - void HtmlStatusBar::update() { QPalette pal = palette(); @@ -101,16 +93,6 @@ setMode(MimeTreeParser::Util::Html); } -void HtmlStatusBar::setMultipartPlainMode() -{ - setMode(MimeTreeParser::Util::MultipartPlain); -} - -void HtmlStatusBar::setMultipartHtmlMode() -{ - setMode(MimeTreeParser::Util::MultipartHtml); -} - void HtmlStatusBar::setAvailableModes(const QList &availableModes) { mAvailableModes = availableModes; @@ -202,9 +184,8 @@ color = conf.readEntry("ColorbarForegroundPlain", defaultColor); } return color; - default: - return Qt::black; } + return Qt::black; } QColor HtmlStatusBar::bgColor() const @@ -230,7 +211,6 @@ color = conf.readEntry("ColorbarBackgroundPlain", defaultColor); } return color; - default: - return Qt::white; } + return Qt::white; } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/htmlstatusbar.h kf5-messagelib-18.04.3/messageviewer/src/widgets/htmlstatusbar.h --- kf5-messagelib-17.12.3/messageviewer/src/widgets/htmlstatusbar.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/htmlstatusbar.h 2018-07-06 05:43:41.000000000 +0000 @@ -70,14 +70,12 @@ }; explicit HtmlStatusBar(QWidget *parent = nullptr); - ~HtmlStatusBar(); + ~HtmlStatusBar() override; /** @return current mode. */ MimeTreeParser::Util::HtmlMode mode() const; bool isHtml() const; bool isNormal() const; - bool isMultipartHtml() const; - bool isMultipartPlain() const; // Update the status bar, for example when the color scheme changed. void update(); @@ -89,10 +87,6 @@ void setHtmlMode(); /** Switch to "normal mode". */ void setNormalMode(); - /** Switch to "multipart html mode". */ - void setMultipartHtmlMode(); - /** Switch to "multipart plain mode". */ - void setMultipartPlainMode(); /** Switch to mode @p m */ void setMode(MimeTreeParser::Util::HtmlMode m, UpdateMode mode = Update); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/mailsourceviewtextbrowserwidget.cpp kf5-messagelib-18.04.3/messageviewer/src/widgets/mailsourceviewtextbrowserwidget.cpp --- kf5-messagelib-17.12.3/messageviewer/src/widgets/mailsourceviewtextbrowserwidget.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/mailsourceviewtextbrowserwidget.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -30,6 +30,7 @@ * your version. */ +#include "messageviewer_debug.h" #include "mailsourceviewtextbrowserwidget.h" #include "messageviewer/messageviewerutil.h" #include "findbar/findbarsourceview.h" @@ -74,8 +75,10 @@ mTextBrowser->setLineWrapMode(QPlainTextEdit::NoWrap); mTextBrowser->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard); - KSyntaxHighlighting::Definition def; - def = mRepo.definitionForName(syntax); + const KSyntaxHighlighting::Definition def = mRepo.definitionForName(syntax); + if (!def.isValid()) { + qCWarning(MESSAGEVIEWER_LOG) << "Invalid definition name"; + } KSyntaxHighlighting::SyntaxHighlighter *hl = new KSyntaxHighlighting::SyntaxHighlighter( mTextBrowser->document()); diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/mailsourcewebengineviewer.cpp kf5-messagelib-18.04.3/messageviewer/src/widgets/mailsourcewebengineviewer.cpp --- kf5-messagelib-17.12.3/messageviewer/src/widgets/mailsourcewebengineviewer.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/mailsourcewebengineviewer.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/mailsourcewebengineviewer.h kf5-messagelib-18.04.3/messageviewer/src/widgets/mailsourcewebengineviewer.h --- kf5-messagelib-17.12.3/messageviewer/src/widgets/mailsourcewebengineviewer.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/mailsourcewebengineviewer.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2017 Laurent Montel + Copyright (C) 2016-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/mailtrackingdetailsdialog.cpp kf5-messagelib-18.04.3/messageviewer/src/widgets/mailtrackingdetailsdialog.cpp --- kf5-messagelib-17.12.3/messageviewer/src/widgets/mailtrackingdetailsdialog.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/mailtrackingdetailsdialog.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,74 @@ +/* + Copyright (C) 2017-2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "mailtrackingdetailsdialog.h" +#include +#include +#include +#include +#include +#include + +using namespace MessageViewer; +MailTrackingDetailsDialog::MailTrackingDetailsDialog(QWidget *parent) + : QDialog(parent) +{ + setWindowTitle(i18n("Details")); + setAttribute(Qt::WA_DeleteOnClose); + setModal(false); + + QVBoxLayout *mainLayout = new QVBoxLayout(this); + mainLayout->setObjectName(QStringLiteral("mainLayout")); + + QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Close, this); + buttonBox->setObjectName(QStringLiteral("buttonbox")); + + mDetails = new KPIMTextEdit::RichTextEditorWidget(this); + mDetails->setObjectName(QStringLiteral("detail")); + mainLayout->addWidget(mDetails); + mainLayout->addWidget(buttonBox); + mDetails->setReadOnly(true); + readConfig(); +} + +MailTrackingDetailsDialog::~MailTrackingDetailsDialog() +{ + writeConfig(); +} + +void MailTrackingDetailsDialog::readConfig() +{ + KConfigGroup group(KSharedConfig::openConfig(), "MailTrackingDetailsDialog"); + const QSize size = group.readEntry("Size", QSize(600, 400)); + if (size.isValid()) { + resize(size); + } +} + +void MailTrackingDetailsDialog::writeConfig() +{ + KConfigGroup group(KSharedConfig::openConfig(), "MailTrackingDetailsDialog"); + group.writeEntry("Size", size()); + group.sync(); +} + +void MailTrackingDetailsDialog::setDetails(const QString &details) +{ + mDetails->setHtml(details); +} diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/mailtrackingdetailsdialog.h kf5-messagelib-18.04.3/messageviewer/src/widgets/mailtrackingdetailsdialog.h --- kf5-messagelib-17.12.3/messageviewer/src/widgets/mailtrackingdetailsdialog.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/mailtrackingdetailsdialog.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,47 @@ +/* + Copyright (C) 2017-2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef MAILTRACKINGDETAILSDIALOG_H +#define MAILTRACKINGDETAILSDIALOG_H + +#include +#include "messageviewer_private_export.h" + +namespace KPIMTextEdit { +class RichTextEditorWidget; +} + +namespace MessageViewer { +class MESSAGEVIEWER_TESTS_EXPORT MailTrackingDetailsDialog : public QDialog +{ + Q_OBJECT +public: + explicit MailTrackingDetailsDialog(QWidget *parent = nullptr); + ~MailTrackingDetailsDialog(); + + void setDetails(const QString &details); +private: + void writeConfig(); + void readConfig(); + + KPIMTextEdit::RichTextEditorWidget *mDetails = nullptr; +}; +} + +#endif // MAILTRACKINGDETAILSDIALOG_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/mailtrackingwarningwidget.cpp kf5-messagelib-18.04.3/messageviewer/src/widgets/mailtrackingwarningwidget.cpp --- kf5-messagelib-17.12.3/messageviewer/src/widgets/mailtrackingwarningwidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/mailtrackingwarningwidget.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,87 @@ +/* + Copyright (C) 2017-2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "mailtrackingwarningwidget.h" +#include "mailtrackingdetailsdialog.h" +#include + +using namespace MessageViewer; +MailTrackingWarningWidget::MailTrackingWarningWidget(QWidget *parent) + : KMessageWidget(parent) +{ + setVisible(false); + setCloseButtonVisible(true); + setMessageType(Warning); + setWordWrap(true); + + setText(i18n("Some Mail Tracker was found and was blocked.(Details...)")); + connect(this, &MailTrackingWarningWidget::linkActivated, this, + &MailTrackingWarningWidget::slotShowDetails); +} + +MailTrackingWarningWidget::~MailTrackingWarningWidget() +{ +} + +void MailTrackingWarningWidget::slotShowDetails(const QString &content) +{ + if (content == QLatin1String("mailtrackingdetails")) { + if (!mMailTrackingDetailDialog) { + mMailTrackingDetailDialog = new MessageViewer::MailTrackingDetailsDialog; + } + mMailTrackingDetailDialog->setDetails(generateDetails()); + mMailTrackingDetailDialog->show(); + } +} + +QString MailTrackingWarningWidget::generateDetails() const +{ + QString details = QLatin1String("") + i18n("Details:") + QLatin1String("
      "); + + QMapIterator i(mBackLists); + while (i.hasNext()) { + i.next(); + details += QLatin1String("
    • ") + i18np("1 tracker from the company %2 (%3)", + "%1 trackers from the company %2 (%3)", + i.value().number, i.key(), i.value().url); + } + details += QLatin1String("
    "); + return details; +} + +void MailTrackingWarningWidget::addTracker(const MessageViewer::BlockMailTrackingUrlInterceptor::MailTrackerBlackList &tracker) +{ + blackListFound item = mBackLists.value(tracker.mCompanyName); + if (item.url.isEmpty()) { + item.url = tracker.mCompanyUrl; + mBackLists.insert(tracker.mCompanyName, item); + } else { + item.number = item.number + 1; + mBackLists.insert(tracker.mCompanyName, item); + } + if (!isVisible()) { + animatedShow(); + } +} + +void MailTrackingWarningWidget::hideAndClear() +{ + mBackLists.clear(); + setVisible(false); +} diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/mailtrackingwarningwidget.h kf5-messagelib-18.04.3/messageviewer/src/widgets/mailtrackingwarningwidget.h --- kf5-messagelib-17.12.3/messageviewer/src/widgets/mailtrackingwarningwidget.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/mailtrackingwarningwidget.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,55 @@ +/* + Copyright (C) 2017-2018 Laurent Montel + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef MAILTRACKINGWARNINGWIDGET_H +#define MAILTRACKINGWARNINGWIDGET_H + +#include + +#include "messageviewer_private_export.h" + +#include +#include + +#include + +namespace MessageViewer { +class MailTrackingDetailsDialog; +class MESSAGEVIEWER_TESTS_EXPORT MailTrackingWarningWidget : public KMessageWidget +{ + Q_OBJECT +public: + explicit MailTrackingWarningWidget(QWidget *parent = nullptr); + ~MailTrackingWarningWidget(); + void addTracker(const MessageViewer::BlockMailTrackingUrlInterceptor::MailTrackerBlackList &); + void hideAndClear(); +private: + void slotShowDetails(const QString &content); + QString generateDetails() const; + + struct blackListFound { + QString url; + int number = 1; + }; + QMap mBackLists; + QPointer mMailTrackingDetailDialog; +}; +} + +#endif // MAILTRACKINGWARNINGWIDGET_H diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/openattachmentfolderwidget.cpp kf5-messagelib-18.04.3/messageviewer/src/widgets/openattachmentfolderwidget.cpp --- kf5-messagelib-17.12.3/messageviewer/src/widgets/openattachmentfolderwidget.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/openattachmentfolderwidget.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Laurent Montel + Copyright (C) 2014-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -20,8 +20,7 @@ #include "openattachmentfolderwidget.h" #include - -#include +#include #include @@ -63,15 +62,15 @@ } } -void OpenAttachmentFolderWidget::setFolder(const QUrl &url) +void OpenAttachmentFolderWidget::setUrls(const QList &urls) { - mUrl = url; + mUrls = urls; } void OpenAttachmentFolderWidget::slotOpenAttachmentFolder() { - if (!mUrl.isEmpty()) { - new KRun(mUrl, this); + if (!mUrls.isEmpty()) { + KIO::highlightInFileManager(mUrls); slotHideWarning(); } } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/openattachmentfolderwidget.h kf5-messagelib-18.04.3/messageviewer/src/widgets/openattachmentfolderwidget.h --- kf5-messagelib-17.12.3/messageviewer/src/widgets/openattachmentfolderwidget.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/openattachmentfolderwidget.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2017 Laurent Montel + Copyright (C) 2014-2018 Laurent Montel This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -31,7 +31,7 @@ explicit OpenAttachmentFolderWidget(QWidget *parent = nullptr); ~OpenAttachmentFolderWidget(); - void setFolder(const QUrl &url); + void setUrls(const QList &urls); public Q_SLOTS: void slotShowWarning(); @@ -41,7 +41,7 @@ void slotOpenAttachmentFolder(); void slotTimeOut(); void slotExplicitlyClosed(); - QUrl mUrl; + QList mUrls; QTimer *mTimer = nullptr; }; } diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/printingsettings.cpp kf5-messagelib-18.04.3/messageviewer/src/widgets/printingsettings.cpp --- kf5-messagelib-17.12.3/messageviewer/src/widgets/printingsettings.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/printingsettings.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2017 Montel Laurent + Copyright (c) 2013-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/printingsettings.h kf5-messagelib-18.04.3/messageviewer/src/widgets/printingsettings.h --- kf5-messagelib-17.12.3/messageviewer/src/widgets/printingsettings.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/printingsettings.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2017 Montel Laurent + Copyright (c) 2013-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/submittedformwarningwidget.cpp kf5-messagelib-18.04.3/messageviewer/src/widgets/submittedformwarningwidget.cpp --- kf5-messagelib-17.12.3/messageviewer/src/widgets/submittedformwarningwidget.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/submittedformwarningwidget.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/submittedformwarningwidget.h kf5-messagelib-18.04.3/messageviewer/src/widgets/submittedformwarningwidget.h --- kf5-messagelib-17.12.3/messageviewer/src/widgets/submittedformwarningwidget.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/submittedformwarningwidget.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2016-2017 Montel Laurent + Copyright (c) 2016-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by @@ -21,13 +21,11 @@ #ifndef SUBMITTEDFORMWARNINGWIDGET_H #define SUBMITTEDFORMWARNINGWIDGET_H -#include "messageviewer_export.h" - #include namespace MessageViewer { class SubmittedFormWarningWidgetPrivate; -class MESSAGEVIEWER_EXPORT SubmittedFormWarningWidget : public KMessageWidget +class SubmittedFormWarningWidget : public KMessageWidget { Q_OBJECT public: diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/vcardviewer.cpp kf5-messagelib-18.04.3/messageviewer/src/widgets/vcardviewer.cpp --- kf5-messagelib-17.12.3/messageviewer/src/widgets/vcardviewer.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/vcardviewer.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,6 +1,6 @@ /* This file is part of the KDE project Copyright (C) 2002 Daniel Molkentin - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/messageviewer/src/widgets/vcardviewer.h kf5-messagelib-18.04.3/messageviewer/src/widgets/vcardviewer.h --- kf5-messagelib-17.12.3/messageviewer/src/widgets/vcardviewer.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/messageviewer/src/widgets/vcardviewer.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,6 +1,6 @@ /* This file is part of the KDE project Copyright (C) 2002 Daniel Molkentin - Copyright (C) 2013-2017 Laurent Montel + Copyright (C) 2013-2018 Laurent Montel This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/attachmenttest.cpp kf5-messagelib-18.04.3/mimetreeparser/autotests/attachmenttest.cpp --- kf5-messagelib-17.12.3/mimetreeparser/autotests/attachmenttest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/attachmenttest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -20,6 +20,7 @@ #include "util.h" #include "setupenv.h" +#include #include @@ -55,8 +56,8 @@ QFETCH(QString, mbox); auto msg = readAndParseMail(mbox); NodeHelper nodeHelper; - Test::TestObjectTreeSource testSource(nullptr); - testSource.setAllowDecryption(true); + SimpleObjectTreeSource testSource; + testSource.setDecryptMessage(true); ObjectTreeParser otp(&testSource, &nodeHelper); otp.parseObjectTree(msg.data()); diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/bodypartformatterbasefactorytest.cpp kf5-messagelib-18.04.3/mimetreeparser/autotests/bodypartformatterbasefactorytest.cpp --- kf5-messagelib-17.12.3/mimetreeparser/autotests/bodypartformatterbasefactorytest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/bodypartformatterbasefactorytest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -54,53 +54,53 @@ { TestFactory fac; auto l = fac.formattersForType(QStringLiteral("application/octet-stream")); - QCOMPARE(l.size(), 2); - const auto application_octet_stream_f = l.at(1); + QCOMPARE(l.size(), 3); + const auto application_octet_stream_f = l.at(2); QVERIFY(application_octet_stream_f); l = fac.formattersForType(QStringLiteral("application/pgp-encrypted")); - QCOMPARE(l.size(), 5); + QCOMPARE(l.size(), 6); QVERIFY(l.at(0) != application_octet_stream_f); - QCOMPARE(l.at(4), application_octet_stream_f); + QCOMPARE(l.at(5), application_octet_stream_f); l = fac.formattersForType(QStringLiteral("application/unknown")); - QCOMPARE(l.size(), 2); - QCOMPARE(l.at(1), application_octet_stream_f); + QCOMPARE(l.size(), 3); + QCOMPARE(l.at(2), application_octet_stream_f); l = fac.formattersForType(QStringLiteral("text/plain")); - QCOMPARE(l.size(), 4); + QCOMPARE(l.size(), 5); const auto text_plain_f1 = l.at(0); const auto text_plain_f2 = l.at(1); QVERIFY(text_plain_f1); QVERIFY(text_plain_f2); QVERIFY(text_plain_f1 != text_plain_f2); - QCOMPARE(l.at(3), application_octet_stream_f); + QCOMPARE(l.at(4), application_octet_stream_f); l = fac.formattersForType(QStringLiteral("text/calendar")); - QCOMPARE(l.size(), 5); + QCOMPARE(l.size(), 6); QVERIFY(fac.textCalFormatter); QCOMPARE(l.at(0), fac.textCalFormatter); QCOMPARE(l.at(1), text_plain_f1); QCOMPARE(l.at(2), text_plain_f2); - QCOMPARE(l.at(4), application_octet_stream_f); + QCOMPARE(l.at(5), application_octet_stream_f); l = fac.formattersForType(QStringLiteral("text/x-vcalendar")); - QCOMPARE(l.size(), 5); + QCOMPARE(l.size(), 6); QCOMPARE(l.at(0), fac.textCalFormatter); l = fac.formattersForType(QStringLiteral("TEXT/X-VCALENDAR")); - QCOMPARE(l.size(), 5); + QCOMPARE(l.size(), 6); QCOMPARE(l.at(0), fac.textCalFormatter); l = fac.formattersForType(QStringLiteral("text/html")); - QCOMPARE(l.size(), 5); + QCOMPARE(l.size(), 6); QCOMPARE(l.at(1), text_plain_f1); QCOMPARE(l.at(2), text_plain_f2); - QCOMPARE(l.at(4), application_octet_stream_f); + QCOMPARE(l.at(5), application_octet_stream_f); l = fac.formattersForType(QStringLiteral("text/rtf")); - QCOMPARE(l.size(), 5); + QCOMPARE(l.size(), 6); QCOMPARE(l.at(0), application_octet_stream_f); - QCOMPARE(l.at(4), application_octet_stream_f); + QCOMPARE(l.at(5), application_octet_stream_f); l = fac.formattersForType(QStringLiteral("multipart/mixed")); QCOMPARE(l.size(), 1); @@ -117,19 +117,19 @@ QCOMPARE(l.at(1), multipart_mixed_f); l = fac.formattersForType(QStringLiteral("image/png")); - QCOMPARE(l.size(), 3); - QCOMPARE(l.at(2), application_octet_stream_f); + QCOMPARE(l.size(), 4); + QCOMPARE(l.at(3), application_octet_stream_f); l = fac.formattersForType(QStringLiteral("vendor/random")); - QCOMPARE(l.size(), 2); - QCOMPARE(l.at(1), application_octet_stream_f); + QCOMPARE(l.size(), 3); + QCOMPARE(l.at(2), application_octet_stream_f); l = fac.formattersForType(QStringLiteral("message/rfc822")); - QCOMPARE(l.size(), 5); - QCOMPARE(l.at(4), application_octet_stream_f); + QCOMPARE(l.size(), 6); + QCOMPARE(l.at(5), application_octet_stream_f); l = fac.formattersForType(QStringLiteral("message/news")); - QCOMPARE(l.size(), 4); // ### news does not inherit rfc822 + QCOMPARE(l.size(), 5); // ### news does not inherit rfc822 } }; diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/CMakeLists.txt kf5-messagelib-18.04.3/mimetreeparser/autotests/CMakeLists.txt --- kf5-messagelib-17.12.3/mimetreeparser/autotests/CMakeLists.txt 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/CMakeLists.txt 2018-07-06 05:43:41.000000000 +0000 @@ -31,7 +31,7 @@ KF5::MimeTreeParser Qt5::Test KF5::Mime - Gpgmepp + QGpgme ) add_gpg_crypto_test(${_name} mimetreeparser-${_name}) endmacro () diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/data/hidden/openpgp-inline-encrypted-with-attachment.mbox.html kf5-messagelib-18.04.3/mimetreeparser/autotests/data/hidden/openpgp-inline-encrypted-with-attachment.mbox.html --- kf5-messagelib-17.12.3/mimetreeparser/autotests/data/hidden/openpgp-inline-encrypted-with-attachment.mbox.html 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/data/hidden/openpgp-inline-encrypted-with-attachment.mbox.html 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,83 @@ + + + + +
    + + diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/data/html-multipart-related.mbox.html kf5-messagelib-18.04.3/mimetreeparser/autotests/data/html-multipart-related.mbox.html --- kf5-messagelib-17.12.3/mimetreeparser/autotests/data/html-multipart-related.mbox.html 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/data/html-multipart-related.mbox.html 2018-07-06 05:43:41.000000000 +0000 @@ -2,7 +2,6 @@ - +
    diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/data/html-multipart-related.mbox.html.content.0.full kf5-messagelib-18.04.3/mimetreeparser/autotests/data/html-multipart-related.mbox.html.content.0.full --- kf5-messagelib-17.12.3/mimetreeparser/autotests/data/html-multipart-related.mbox.html.content.0.full 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/data/html-multipart-related.mbox.html.content.0.full 2018-07-06 05:43:41.000000000 +0000 @@ -2,12 +2,12 @@ -

    some random text :)

    + diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/data/iconic/openpgp-inline-encrypted-with-attachment.mbox.html kf5-messagelib-18.04.3/mimetreeparser/autotests/data/iconic/openpgp-inline-encrypted-with-attachment.mbox.html --- kf5-messagelib-17.12.3/mimetreeparser/autotests/data/iconic/openpgp-inline-encrypted-with-attachment.mbox.html 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/data/iconic/openpgp-inline-encrypted-with-attachment.mbox.html 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,83 @@ + + + + +
    + + diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/data/inlined/openpgp-inline-encrypted-with-attachment.mbox.html kf5-messagelib-18.04.3/mimetreeparser/autotests/data/inlined/openpgp-inline-encrypted-with-attachment.mbox.html --- kf5-messagelib-17.12.3/mimetreeparser/autotests/data/inlined/openpgp-inline-encrypted-with-attachment.mbox.html 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/data/inlined/openpgp-inline-encrypted-with-attachment.mbox.html 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,83 @@ + + + + + + + diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/data/mailheader.css kf5-messagelib-18.04.3/mimetreeparser/autotests/data/mailheader.css --- kf5-messagelib-17.12.3/mimetreeparser/autotests/data/mailheader.css 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/data/mailheader.css 2018-07-06 05:43:41.000000000 +0000 @@ -99,16 +99,6 @@ background-color: transparent ! important; } -span.pimsmileytext { - position: absolute; - top: 0px; - left: 0px; - visibility: hidden; -} - -img.pimsmileyimg { -} - div.quotelevelmark { position: absolute; margin-left:-10px; @@ -371,6 +361,29 @@ font-size:0px; } +input[type=checkbox].addresslist_checkbox {display: none} +.addresslist_label_short {border: 1px; border-radius: 5px; padding: 0px 10px 0px 10px; white-space: nowrap} +.addresslist_label_full {border: 1px; border-radius: 5px; padding: 0px 10px 0px 10px; white-space: nowrap} +.addresslist_label_short {background-image:url(file:///opt/kde5-qt5.10/share/libmessageviewer/pics/quicklistOpened.png); +background-repeat: no-repeat} +.addresslist_label_full {background-image:url(file:///opt/kde5-qt5.10/share/libmessageviewer/pics/quicklistClosed.png); +background-repeat: no-repeat} + +input ~ span.fullFullCcAddressList {display: block} +input ~ span.shortFullCcAddressList {display: none} +input:checked ~ span.fullFullCcAddressList {display: none} +input:checked ~ span.shortFullCcAddressList {display: block} + +input ~ span.fullFullToAddressList {display: block} +input ~ span.shortFullToAddressList {display: none} +input:checked ~ span.fullFullToAddressList {display: none} +input:checked ~ span.shortFullToAddressList {display: block} + +input ~ span.fullFullBccAddressList {display: block} +input ~ span.shortFullBccAddressList {display: none} +input:checked ~ span.fullFullBccAddressList {display: none} +input:checked ~ span.shortFullBccAddressList {display: block} + } @media print { @@ -509,4 +522,27 @@ line-height: 12pt; } +input[type=checkbox].addresslist_checkbox {display: none} +.addresslist_label_short {border: 1px; border-radius: 5px; padding: 0px 10px 0px 10px; white-space: nowrap} +.addresslist_label_full {border: 1px; border-radius: 5px; padding: 0px 10px 0px 10px; white-space: nowrap} +.addresslist_label_short {background-image:url(file:///opt/kde5-qt5.10/share/libmessageviewer/pics/quicklistOpened.png); +background-repeat: no-repeat} +.addresslist_label_full {background-image:url(file:///opt/kde5-qt5.10/share/libmessageviewer/pics/quicklistClosed.png); +background-repeat: no-repeat} + +input ~ span.fullFullCcAddressList {display: block} +input ~ span.shortFullCcAddressList {display: none} +input:checked ~ span.fullFullCcAddressList {display: none} +input:checked ~ span.shortFullCcAddressList {display: block} + +input ~ span.fullFullToAddressList {display: block} +input ~ span.shortFullToAddressList {display: none} +input:checked ~ span.fullFullToAddressList {display: none} +input:checked ~ span.shortFullToAddressList {display: block} + +input ~ span.fullFullBccAddressList {display: block} +input ~ span.shortFullBccAddressList {display: none} +input:checked ~ span.fullFullBccAddressList {display: none} +input:checked ~ span.shortFullBccAddressList {display: block} + } diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/data/openpgp-inline-encrypted-with-attachment.mbox kf5-messagelib-18.04.3/mimetreeparser/autotests/data/openpgp-inline-encrypted-with-attachment.mbox --- kf5-messagelib-17.12.3/mimetreeparser/autotests/data/openpgp-inline-encrypted-with-attachment.mbox 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/data/openpgp-inline-encrypted-with-attachment.mbox 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,57 @@ +From you@you.com Mon Oct 30 10:00:46 2017 +From: YOU +To: test@kolab.org +Reply-To: you@you.com +Subject: inline test with attachment +Date: Mon, 30 Oct 2017 10:00:46 +0000 +Message-ID: <4843823.hcbsSplVWp@baedc5b0dfed> +X-KMail-Identity: 989793700 +X-KMail-Transport: -1 +X-KMail-Fcc: 6 +X-KMail-Dictionary: en_US +MIME-Version: 1.0 +Content-Type: multipart/mixed; boundary="nextPart2479832.kuY37TRtyA" +Content-Transfer-Encoding: 7Bit + +This is a multi-part message in MIME format. + +--nextPart2479832.kuY37TRtyA +Content-Transfer-Encoding: 7Bit +Content-Type: text/plain; charset="us-ascii" + +-----BEGIN PGP MESSAGE----- +Version: GnuPG v2 + +hQEMAwzOQ1qnzNo7AQf/fx2+ysb3BJ34Ag5CJI4phka7Tq1StwKwAjmBy76evLlZ +8nf0YYiLKz5aeqse/FnwKqd2LZFSI58Od5P4QwsNIpO0NMt0ThBv3wupRtOs2FFk +AQhCrvMog9K+OblKyQ2xKpLLFwv5iNKY2g3zMxZQgYu5spPquPh97RlRl24RZ1qQ +Tg3uz6BvgPGY3jZ7PumpjsqpDcIBr3WaAVzby3VFJ/o+c8uRW94GyGfIjBps5xfU +sBPDsasRtpQYDl/pgiU7MK4mmy/YZwQzuJlgr4wmfzf4qVF+JTHQgkHm/hx/1DZ2 +ikFwkaUSzhAhbC6mtVSO4eFRzkUaIwyYLYb+/I1/e9LAwwH0ibtRV/veyuOdXwMs +4KwXjZhazuXmYz3u7c9HJ9NW17wiiRzueveOOHo1JM5M9pLBiw+7O8Yo7nM03kEE +vM2zitQ2iSt5TBUV9UjFC5OX+LYPx8A4IxuKewjJyTYBf/SrB8ProkOw7gpBQXuV +FRrpVSWZk1FZAPr306si4yc89+TGFjkhi8mP2OjICuJ1bm9msPIRmYtGBDtV7AZ9 +Wuem2cwn9gkGwNiN/UJIjqy8YQoWcC7UuSM9oPRw/gZThI5Y5Seqo/2tIatgFENx +tz0VfRFUpex1j40MEzolMSGtsb2MXdavhXCcYC/Dh7Qgophn3g2gDpzYJnhPqaph +BY9PbjIgiuBTyLNer/LMHzvCaR+yW/+PLoTLOmygjNWQuMFGFRcJJVxhbXAgbM5Q +HKn9G83DuMB85gMLhVfH3cS+0zTxnTmTQUk1tXkWx7UjdLEChva5emBjyP+cAmYR +6JsUrSFhN0inqn8wEXNTjA1syINGFY3pmCoqfdaP8wFMwtqzXQ== +=JJFP +-----END PGP MESSAGE----- + +--nextPart2479832.kuY37TRtyA +Content-Disposition: attachment; filename="attachment.asc" +Content-Transfer-Encoding: base64 +Content-Type: application/octet-stream; name="attachment.asc" + +hQEMAwzOQ1qnzNo7AQf/Z3qYebORMk5Z4R+Pmb6gBLA20G3yLRFyd0z+ygcEp+rc1jYE1ZqK1pFz +Z6WLgPdMcyrKBLrDeDfsQRbKvimR7NaXLSuNkRHFtgqCmaFDyIUMcf9DobAoKvGvmBJhgMW7WPCA +RUDaiJyqBp29nCQuOIqAiT5fm5LyyUmhRxUb9/CnulcxzW85EiITm0wMos30j1dU++3KDp5R6gcc +9uUVbdCWdiF4j3ilE8flCWg9tARTRGinu4ENc9eIjcn1hCotFS+4ccWYIwf6ZkVDS4wNfU7dDg+9 +ZwNb+RkXuYXT/tFdir+ewV0Njaj0ZWTUrqZSk2ArmdGo9ou7xl/2mrK6YNJIAUKgVsQlWZ1Kx4PI +0k0+TsJBgRzVNpIBHpmu0MI4CE03XHUslFhzdrjOG2Ts26U3EJw+jjssu0W4MVzYc20u3BgRnzHn +/SFA + + +--nextPart2479832.kuY37TRtyA-- + diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/data/openpgp-inline-encrypted-with-attachment.mbox.html kf5-messagelib-18.04.3/mimetreeparser/autotests/data/openpgp-inline-encrypted-with-attachment.mbox.html --- kf5-messagelib-17.12.3/mimetreeparser/autotests/data/openpgp-inline-encrypted-with-attachment.mbox.html 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/data/openpgp-inline-encrypted-with-attachment.mbox.html 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,83 @@ + + + + + + + diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/data/openpgp-inline-encrypted-with-attachment.mbox.tree kf5-messagelib-18.04.3/mimetreeparser/autotests/data/openpgp-inline-encrypted-with-attachment.mbox.tree --- kf5-messagelib-17.12.3/mimetreeparser/autotests/data/openpgp-inline-encrypted-with-attachment.mbox.tree 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/data/openpgp-inline-encrypted-with-attachment.mbox.tree 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,8 @@ + * MimeTreeParser::MessagePartList + * MimeTreeParser::MimeMessagePart + * MimeTreeParser::TextMessagePart + * MimeTreeParser::EncryptedMessagePart + * MimeTreeParser::SignedMessagePart + * MimeTreeParser::EncryptedMessagePart + * MimeTreeParser::TextMessagePart + * MimeTreeParser::MessagePart diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/nodehelpertest.cpp kf5-messagelib-18.04.3/mimetreeparser/autotests/nodehelpertest.cpp --- kf5-messagelib-17.12.3/mimetreeparser/autotests/nodehelpertest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/nodehelpertest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -212,7 +212,7 @@ NodeHelper helper; path = helper.createTempDir(QStringLiteral("foo")); - QVERIFY(path.endsWith(QStringLiteral(".index.foo"))); + QVERIFY(path.endsWith(QLatin1String(".index.foo"))); QVERIFY(QDir(path).exists()); QVERIFY(QFile(path).permissions() & QFileDevice::WriteUser); QVERIFY(QFile(path).permissions() & QFileDevice::ExeUser); diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/setupenv.cpp kf5-messagelib-18.04.3/mimetreeparser/autotests/setupenv.cpp --- kf5-messagelib-17.12.3/mimetreeparser/autotests/setupenv.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/setupenv.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -27,7 +27,7 @@ void MimeTreeParser::Test::setupEnv() { - setenv("LC_ALL", "C", 1); - setenv("KDEHOME", QFile::encodeName(QDir::homePath() + QString::fromLatin1("/.qttest")).constData(), 1); + qputenv("LC_ALL", "C"); + qputenv("KDEHOME", QFile::encodeName(QDir::homePath() + QString::fromLatin1("/.qttest")).constData()); QStandardPaths::setTestModeEnabled(true); } diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/setupenv.h kf5-messagelib-18.04.3/mimetreeparser/autotests/setupenv.h --- kf5-messagelib-17.12.3/mimetreeparser/autotests/setupenv.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/setupenv.h 2018-07-06 05:43:41.000000000 +0000 @@ -18,15 +18,8 @@ 02110-1301, USA. */ -#ifndef MESSAGECORE_TESTS_UTIL_H -#define MESSAGECORE_TESTS_UTIL_H - -#include -#include -#include -#include -#include -#include +#ifndef MIMETREEPARSER_TESTS_SETUPENV_H +#define MIMETREEPARSER_TESTS_SETUPENV_H namespace MimeTreeParser { namespace Test { @@ -36,138 +29,6 @@ * * set KDEHOME */ void setupEnv(); - -// We can't use EmptySource, since we need to control some emelnets of the source for tests to also test -// loadExternal and htmlMail. -class TestObjectTreeSource : public MimeTreeParser::Interface::ObjectTreeSource -{ -public: - TestObjectTreeSource(MimeTreeParser::HtmlWriter *writer) - : mWriter(writer) - , mAttachmentStrategy(QStringLiteral("smart")) - , mPreferredMode(Util::Html) - , mHtmlLoadExternal(false) - , mDecryptMessage(false) - { - } - - MimeTreeParser::HtmlWriter *htmlWriter() override - { - return mWriter; - } - - bool htmlLoadExternal() const override - { - return mHtmlLoadExternal; - } - - void setHtmlLoadExternal(bool loadExternal) - { - mHtmlLoadExternal = loadExternal; - } - - void setAttachmentStrategy(QString strategy) - { - mAttachmentStrategy = strategy; - } - - const AttachmentStrategy *attachmentStrategy() override - { - return AttachmentStrategy::create(mAttachmentStrategy); - } - - bool autoImportKeys() const override - { - return true; - } - - bool showEmoticons() const override - { - return false; - } - - bool showExpandQuotesMark() const override - { - return false; - } - - const BodyPartFormatterFactory *bodyPartFormatterFactory() override - { - return &mBodyPartFormatterFactory; - } - - bool decryptMessage() const override - { - return mDecryptMessage; - } - - void setAllowDecryption(bool allowDecryption) - { - mDecryptMessage = allowDecryption; - } - - void setShowSignatureDetails(bool showSignatureDetails) - { - mShowSignatureDetails = showSignatureDetails; - } - - bool showSignatureDetails() const override - { - return mShowSignatureDetails; - } - - void setHtmlMode(MimeTreeParser::Util::HtmlMode mode, const QList &availableModes) override - { - Q_UNUSED(mode); - Q_UNUSED(availableModes); - } - - MimeTreeParser::Util::HtmlMode preferredMode() const override - { - return mPreferredMode; - } - - void setPreferredMode(MimeTreeParser::Util::HtmlMode mode) - { - mPreferredMode = mode; - } - - int levelQuote() const override - { - return 1; - } - - const QTextCodec *overrideCodec() override - { - return nullptr; - } - - QString createMessageHeader(KMime::Message *message) override - { - Q_UNUSED(message); - return QString(); //do nothing - } - - void render(const MessagePart::Ptr &msgPart, HtmlWriter *htmlWriter) override - { - Q_UNUSED(msgPart); - Q_UNUSED(htmlWriter); - } - - bool isPrinting() const override - { - return false; - } - -private: - MimeTreeParser::HtmlWriter *mWriter = nullptr; - QString mAttachmentStrategy; - BodyPartFormatterFactory mBodyPartFormatterFactory; - MimeTreeParser::Util::HtmlMode mPreferredMode; - bool mHtmlLoadExternal = false; - bool mDecryptMessage = false; - bool mShowSignatureDetails = false; -}; } } diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/testcsshelper.cpp kf5-messagelib-18.04.3/mimetreeparser/autotests/testcsshelper.cpp --- kf5-messagelib-17.12.3/mimetreeparser/autotests/testcsshelper.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/testcsshelper.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ -/* - testcsshelper.cpp - - This file is part of KMail, the KDE mail client. - Copyright (c) 2013 Sandro Knauß - - KMail is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License, version 2, as - published by the Free Software Foundation. - - KMail is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#include "testcsshelper.h" - -#include -#include -#include -#include - -namespace MimeTreeParser { -TestCSSHelper::TestCSSHelper(const QPaintDevice *pd) - : CSSHelperBase(pd) -{ - mRecycleQuoteColors = false; - mBackgroundColor = QColor(0xff, 0xff, 0xff); - mForegroundColor = QColor(0x1f, 0x1c, 0x1b); - mLinkColor = QColor(0x00, 0x57, 0xae); - cPgpEncrH = QColor(0x00, 0x80, 0xff); - cPgpOk1H = QColor(0x40, 0xff, 0x40); - cPgpOk0H = QColor(0xff, 0xff, 0x40); - cPgpWarnH = QColor(0xff, 0xff, 0x40); - cPgpErrH = QColor(0xff, 0x00, 0x00); - - cPgpEncrHT = QColor(0xff, 0xff, 0xff); - cPgpOk1HT = QColor(0x27, 0xae, 0x60); - cPgpOk0HT = QColor(0xf6, 0x74, 0x00); - cPgpWarnHT = QColor(0xf6, 0x74, 0x00); - cPgpErrHT = QColor(0xda, 0x44, 0x53); - - cHtmlWarning = QColor(0xff, 0x40, 0x40); - for (int i = 0; i < 3; ++i) { - mQuoteColor[i] = QColor(0x00, 0x80 - i * 0x10, 0x00); - } - - QFont defaultFont = QFont(QStringLiteral("Sans Serif"), 9); - mBodyFont = defaultFont; - mPrintFont = defaultFont; - mFixedFont = defaultFont; - mFixedPrintFont = defaultFont; - defaultFont.setItalic(true); - for (int i = 0; i < 3; ++i) { - mQuoteFont[i] = defaultFont; - } - - mShrinkQuotes = false; - - QPalette pal; - - pal.setColor(QPalette::Background, QColor(0xd6, 0xd2, 0xd0)); - pal.setColor(QPalette::Foreground, QColor(0x22, 0x1f, 0x1e)); - pal.setColor(QPalette::Highlight, QColor(0x43, 0xac, 0xe8)); - pal.setColor(QPalette::HighlightedText, QColor(0xff, 0xff, 0xff)); - pal.setColor(QPalette::Mid, QColor(0xb3, 0xab, 0xa7)); - - QApplication::setPalette(pal); - - recalculatePGPColors(); -} - -TestCSSHelper::~TestCSSHelper() -{ -} - -QString TestCSSHelper::htmlHead(bool fixed) const -{ - Q_UNUSED(fixed); - return - QStringLiteral("\n" - "\n" - "\n"); -} -} diff -Nru kf5-messagelib-17.12.3/mimetreeparser/autotests/testcsshelper.h kf5-messagelib-18.04.3/mimetreeparser/autotests/testcsshelper.h --- kf5-messagelib-17.12.3/mimetreeparser/autotests/testcsshelper.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/autotests/testcsshelper.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -/* -*- c++ -*- - testcsshelper.h - - This file is part of KMail, the KDE mail client. - Copyright (c) 2013 Sandro Knauß - - KMail is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License, version 2, as - published by the Free Software Foundation. - - KMail is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#ifndef __MIMETREEPARSER_TESTCSSHELPER_H__ -#define __MIMETREEPARSER_TESTCSSHELPER_H__ - -#include "csshelperbase.h" - -namespace MimeTreeParser { -class TestCSSHelper : public CSSHelperBase -{ -public: - explicit TestCSSHelper(const QPaintDevice *pd); - virtual ~TestCSSHelper(); - QString htmlHead(bool fixed) const override; -}; -} - -#endif // __MIMETREEPARSER_TESTCSSHELPER_H__ diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/attachmentstrategy.cpp kf5-messagelib-18.04.3/mimetreeparser/src/attachmentstrategy.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/attachmentstrategy.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/attachmentstrategy.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,370 +0,0 @@ -/* -*- c++ -*- - attachmentstrategy.cpp - - This file is part of KMail, the KDE mail client. - Copyright (c) 2003 Marc Mutz - Copyright (C) 2009 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.net - Copyright (c) 2009 Andras Mantia - - KMail is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License, version 2, as - published by the Free Software Foundation. - - KMail is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#include "attachmentstrategy.h" - -#include "nodehelper.h" -#include "utils/util.h" - -#include - -#include - -#include "mimetreeparser_debug.h" - -using namespace MimeTreeParser; - -static AttachmentStrategy::Display smartDisplay(KMime::Content *node) -{ - const auto cd = node->contentDisposition(false); - - if (cd && cd->disposition() == KMime::Headers::CDinline) { - // explict "inline" disposition: - return AttachmentStrategy::Inline; - } - if (cd && cd->disposition() == KMime::Headers::CDattachment) { - // explicit "attachment" disposition: - return AttachmentStrategy::AsIcon; - } - - const auto ct = node->contentType(false); - if (ct && ct->isText() && ct->name().trimmed().isEmpty() - && (!cd || cd->filename().trimmed().isEmpty())) { - // text/* w/o filename parameter: - return AttachmentStrategy::Inline; - } - return AttachmentStrategy::AsIcon; -} - -// -// IconicAttachmentStrategy: -// show everything but the first text/plain body as icons -// - -class IconicAttachmentStrategy : public AttachmentStrategy -{ - friend class AttachmentStrategy; -protected: - IconicAttachmentStrategy() : AttachmentStrategy() - { - } - - virtual ~IconicAttachmentStrategy() - { - } - -public: - const char *name() const override - { - return "iconic"; - } - - bool inlineNestedMessages() const override - { - return false; - } - - Display defaultDisplay(KMime::Content *node) const override - { - if (node->contentType()->isText() - && node->contentDisposition()->filename().trimmed().isEmpty() - && node->contentType()->name().trimmed().isEmpty()) { - // text/* w/o filename parameter: - return Inline; - } - return AsIcon; - } -}; - -// -// SmartAttachmentStrategy: -// in addition to Iconic, show all body parts -// with content-disposition == "inline" and -// all text parts without a filename or name parameter inline -// - -class SmartAttachmentStrategy : public AttachmentStrategy -{ - friend class AttachmentStrategy; -protected: - SmartAttachmentStrategy() : AttachmentStrategy() - { - } - - virtual ~SmartAttachmentStrategy() - { - } - -public: - const char *name() const override - { - return "smart"; - } - - bool inlineNestedMessages() const override - { - return true; - } - - Display defaultDisplay(KMime::Content *node) const override - { - return smartDisplay(node); - } -}; - -// -// InlinedAttachmentStrategy: -// show everything possible inline -// - -class InlinedAttachmentStrategy : public AttachmentStrategy -{ - friend class AttachmentStrategy; -protected: - InlinedAttachmentStrategy() : AttachmentStrategy() - { - } - - virtual ~InlinedAttachmentStrategy() - { - } - -public: - const char *name() const override - { - return "inlined"; - } - - bool inlineNestedMessages() const override - { - return true; - } - - Display defaultDisplay(KMime::Content *) const override - { - return Inline; - } -}; - -// -// HiddenAttachmentStrategy -// show nothing except the first text/plain body part _at all_ -// - -class HiddenAttachmentStrategy : public AttachmentStrategy -{ - friend class AttachmentStrategy; -protected: - HiddenAttachmentStrategy() : AttachmentStrategy() - { - } - - virtual ~HiddenAttachmentStrategy() - { - } - -public: - const char *name() const override - { - return "hidden"; - } - - bool inlineNestedMessages() const override - { - return false; - } - - Display defaultDisplay(KMime::Content *node) const override - { - if (node->contentType()->isText() - && node->contentDisposition()->filename().trimmed().isEmpty() - && node->contentType()->name().trimmed().isEmpty()) { - // text/* w/o filename parameter: - return Inline; - } - if (!node->parent()) { - return Inline; - } - - if (node->parent() && node->parent()->contentType()->isMultipart() - && node->parent()->contentType()->subType() == "related") { - return Inline; - } - - return None; - } -}; - -class HeaderOnlyAttachmentStrategy : public AttachmentStrategy -{ - friend class AttachmentStrategy; -protected: - HeaderOnlyAttachmentStrategy() : AttachmentStrategy() - { - } - - virtual ~HeaderOnlyAttachmentStrategy() - { - } - -public: - const char *name() const override - { - return "headerOnly"; - } - - bool inlineNestedMessages() const override - { - return true; - } - - Display defaultDisplay(KMime::Content *node) const override - { - if (NodeHelper::isInEncapsulatedMessage(node)) { - return smartDisplay(node); - } - - if (!Util::labelForContent(node).isEmpty() && QIcon::hasThemeIcon(Util::iconNameForContent(node)) && !Util::isTypeBlacklisted(node)) { - return None; - } - return smartDisplay(node); - } - - bool requiresAttachmentListInHeader() const override - { - return true; - } -}; - -// -// AttachmentStrategy abstract base: -// - -AttachmentStrategy::AttachmentStrategy() -{ -} - -AttachmentStrategy::~AttachmentStrategy() -{ -} - -const AttachmentStrategy *AttachmentStrategy::create(Type type) -{ - switch (type) { - case Iconic: - return iconic(); - case Smart: - return smart(); - case Inlined: - return inlined(); - case Hidden: - return hidden(); - case HeaderOnly: - return headerOnly(); - } - qCCritical(MIMETREEPARSER_LOG) << "Unknown attachment startegy ( type ==" - << (int)type << ") requested!"; - return nullptr; // make compiler happy -} - -const AttachmentStrategy *AttachmentStrategy::create(const QString &type) -{ - const QString lowerType = type.toLower(); - if (lowerType == QLatin1String("iconic")) { - return iconic(); - } - //if ( lowerType == "smart" ) return smart(); // not needed, see below - if (lowerType == QLatin1String("inlined")) { - return inlined(); - } - if (lowerType == QLatin1String("hidden")) { - return hidden(); - } - if (lowerType == QLatin1String("headeronly")) { - return headerOnly(); - } - // don't kFatal here, b/c the strings are user-provided - // (KConfig), so fail gracefully to the default: - return smart(); -} - -static const AttachmentStrategy *iconicStrategy = nullptr; -static const AttachmentStrategy *smartStrategy = nullptr; -static const AttachmentStrategy *inlinedStrategy = nullptr; -static const AttachmentStrategy *hiddenStrategy = nullptr; -static const AttachmentStrategy *headerOnlyStrategy = nullptr; - -const AttachmentStrategy *AttachmentStrategy::iconic() -{ - if (!iconicStrategy) { - iconicStrategy = new IconicAttachmentStrategy(); - } - return iconicStrategy; -} - -const AttachmentStrategy *AttachmentStrategy::smart() -{ - if (!smartStrategy) { - smartStrategy = new SmartAttachmentStrategy(); - } - return smartStrategy; -} - -const AttachmentStrategy *AttachmentStrategy::inlined() -{ - if (!inlinedStrategy) { - inlinedStrategy = new InlinedAttachmentStrategy(); - } - return inlinedStrategy; -} - -const AttachmentStrategy *AttachmentStrategy::hidden() -{ - if (!hiddenStrategy) { - hiddenStrategy = new HiddenAttachmentStrategy(); - } - return hiddenStrategy; -} - -const AttachmentStrategy *AttachmentStrategy::headerOnly() -{ - if (!headerOnlyStrategy) { - headerOnlyStrategy = new HeaderOnlyAttachmentStrategy(); - } - return headerOnlyStrategy; -} - -bool AttachmentStrategy::requiresAttachmentListInHeader() const -{ - return false; -} diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/attachmentstrategy.h kf5-messagelib-18.04.3/mimetreeparser/src/attachmentstrategy.h --- kf5-messagelib-17.12.3/mimetreeparser/src/attachmentstrategy.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/attachmentstrategy.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -/* -*- c++ -*- - attachmentstrategy.h - - This file is part of KMail, the KDE mail client. - Copyright (c) 2003 Marc Mutz - Copyright (C) 2009 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.net - Copyright (c) 2009 Andras Mantia - - KMail is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License, version 2, as - published by the Free Software Foundation. - - KMail is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#ifndef __MIMETREEPARSER_ATTACHMENTSTRATEGY_H__ -#define __MIMETREEPARSER_ATTACHMENTSTRATEGY_H__ - -#include "mimetreeparser_export.h" - -class QString; -namespace KMime { -class Content; -} - -namespace MimeTreeParser { -class MIMETREEPARSER_EXPORT AttachmentStrategy -{ -protected: - AttachmentStrategy(); - virtual ~AttachmentStrategy(); - -public: - // - // Factory methods: - // - enum Type { - Iconic, Smart, Inlined, Hidden, HeaderOnly - }; - - static const AttachmentStrategy *create(Type type); - static const AttachmentStrategy *create(const QString &type); - - static const AttachmentStrategy *iconic(); - static const AttachmentStrategy *smart(); - static const AttachmentStrategy *inlined(); - static const AttachmentStrategy *hidden(); - static const AttachmentStrategy *headerOnly(); - - // - // Navigation methods: - // - - virtual const char *name() const = 0; - - // - // Bahavioural: - // - - enum Display { - None, AsIcon, Inline - }; - - virtual bool inlineNestedMessages() const = 0; - virtual Display defaultDisplay(KMime::Content *node) const = 0; - virtual bool requiresAttachmentListInHeader() const; -}; -} - -#endif // __MIMETREEPARSER_ATTACHMENTSTRATEGY_H__ diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/applicationpgpencrypted.cpp kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/applicationpgpencrypted.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/applicationpgpencrypted.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/applicationpgpencrypted.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -72,7 +72,7 @@ part.nodeHelper()->setNodeProcessed(data, false); // Set the data node to done to prevent it from being processed } else if (KMime::Content *newNode = part.nodeHelper()->decryptedNodeForContent(data)) { // if we already have a decrypted node for this encrypted node, don't do the decryption again - return MessagePart::Ptr(new MimeMessagePart(part.objectTreeParser(), newNode, part.objectTreeParser()->showOnlyOneMimePart())); + return MessagePart::Ptr(new MimeMessagePart(part.objectTreeParser(), newNode, false)); } else { mp->startDecryption(data); if (!messagePart->inProgress) { diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/applicationpgpencrypted.h kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/applicationpgpencrypted.h --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/applicationpgpencrypted.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/applicationpgpencrypted.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_BODYFORAMATTER_APPLICATIONPGPENCYPTED_H__ -#define __MIMETREEPARSER_BODYFORAMATTER_APPLICATIONPGPENCYPTED_H__ +#ifndef MIMETREEPARSER_BODYFORAMATTER_APPLICATIONPGPENCYPTED_H +#define MIMETREEPARSER_BODYFORAMATTER_APPLICATIONPGPENCYPTED_H #include "interfaces/bodypartformatter.h" #include "interfaces/bodypart.h" diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/applicationpkcs7mime.cpp kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/applicationpkcs7mime.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/applicationpkcs7mime.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/applicationpkcs7mime.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -21,7 +21,6 @@ #include "utils.h" -#include "attachmentstrategy.h" #include "objecttreeparser.h" #include "messagepart.h" diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/applicationpkcs7mime.h kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/applicationpkcs7mime.h --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/applicationpkcs7mime.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/applicationpkcs7mime.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_BODYFORAMATTER_APPLICATIONPKCS7MIME_H__ -#define __MIMETREEPARSER_BODYFORAMATTER_APPLICATIONPKCS7MIME_H__ +#ifndef MIMETREEPARSER_BODYFORAMATTER_APPLICATIONPKCS7MIME_H +#define MIMETREEPARSER_BODYFORAMATTER_APPLICATIONPKCS7MIME_H #include "interfaces/bodypartformatter.h" #include "interfaces/bodypart.h" diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/encrypted.cpp kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/encrypted.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/encrypted.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/encrypted.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -27,6 +27,8 @@ #include #include +#include +#include #include @@ -53,6 +55,13 @@ return MessagePart::Ptr(); } + QGpgME::QByteArrayDataProvider dp(node->decodedContent()); + GpgME::Data data(&dp); + + if (data.type() == GpgME::Data::Unknown) { + return nullptr; + } + const QGpgME::Protocol *useThisCryptProto = nullptr; useThisCryptProto = QGpgME::openpgp(); @@ -83,14 +92,23 @@ return nullptr; } auto tempNode = new KMime::Content(); - qDebug() << part.nodeHelper()->codec(node)->name(); tempNode->contentType()->setCharset("utf-8"); tempNode->setBody(KMime::CRLFtoLF(part.nodeHelper()->codec(node)->fromUnicode(mp->text()))); tempNode->parse(); + NodeHelper::magicSetType(tempNode); + if (node->topLevel()->textContent() != node && node->contentDisposition(false) && !tempNode->contentDisposition(false)) { + tempNode->contentDisposition()->setDisposition(node->contentDisposition()->disposition()); + const auto fname = node->contentDisposition()->filename(); + if (!fname.isEmpty()) { + tempNode->contentDisposition()->setFilename(fname); + } + } if (!tempNode->head().isEmpty()) { - tempNode->contentDescription()->from7BitString("encrypted data"); + tempNode->contentDescription()->from7BitString("decrypted data"); } + tempNode->assemble(); + part.nodeHelper()->cleanExtraContent(node); mp->clearSubParts(); diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/encrypted.h kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/encrypted.h --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/encrypted.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/encrypted.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_BODYFORAMATTER_ENCRYPTED_H__ -#define __MIMETREEPARSER_BODYFORAMATTER_ENCRYPTED_H__ +#ifndef MIMETREEPARSER_BODYFORAMATTER_ENCRYPTED_H +#define MIMETREEPARSER_BODYFORAMATTER_ENCRYPTED_H #include "interfaces/bodypartformatter.h" #include "interfaces/bodypart.h" diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/mailman.cpp kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/mailman.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/mailman.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/mailman.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -49,7 +49,7 @@ return true; } if (KMime::Headers::Base *header = curNode->headerByType("X-Mailer")) { - if (header->asUnicodeString().contains(QStringLiteral("MAILMAN"), Qt::CaseInsensitive)) { + if (header->asUnicodeString().contains(QLatin1String("MAILMAN"), Qt::CaseInsensitive)) { return true; } } diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/mailman.h kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/mailman.h --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/mailman.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/mailman.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_BODYFORAMATTER_MAILMAN_H__ -#define __MIMETREEPARSER_BODYFORAMATTER_MAILMAN_H__ +#ifndef MIMETREEPARSER_BODYFORAMATTER_MAILMAN_H +#define MIMETREEPARSER_BODYFORAMATTER_MAILMAN_H #include "interfaces/bodypartformatter.h" #include "interfaces/bodypart.h" diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/multipartalternative.cpp kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/multipartalternative.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/multipartalternative.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/multipartalternative.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -49,14 +49,14 @@ auto preferredMode = part.source()->preferredMode(); AlternativeMessagePart::Ptr mp(new AlternativeMessagePart(part.objectTreeParser(), node, preferredMode)); - if (mp->mChildNodes.isEmpty()) { + if (mp->childParts().isEmpty()) { MimeMessagePart::Ptr _mp(new MimeMessagePart(part.objectTreeParser(), node->contents().at(0), false)); return _mp; } - KMime::Content *dataIcal = mp->mChildNodes.contains(Util::MultipartIcal) ? mp->mChildNodes[Util::MultipartIcal] : nullptr; - KMime::Content *dataHtml = mp->mChildNodes.contains(Util::MultipartHtml) ? mp->mChildNodes[Util::MultipartHtml] : nullptr; - KMime::Content *dataPlain = mp->mChildNodes.contains(Util::MultipartPlain) ? mp->mChildNodes[Util::MultipartPlain] : nullptr; + KMime::Content *dataIcal = mp->childParts().contains(Util::MultipartIcal) ? mp->childParts()[Util::MultipartIcal]->content() : nullptr; + KMime::Content *dataHtml = mp->childParts().contains(Util::MultipartHtml) ? mp->childParts()[Util::MultipartHtml]->content() : nullptr; + KMime::Content *dataPlain = mp->childParts().contains(Util::MultipartPlain) ? mp->childParts()[Util::MultipartPlain]->content() : nullptr; // Make sure that in default ical is prefered over html and plain text if (dataIcal && ((preferredMode != Util::MultipartHtml && preferredMode != Util::MultipartPlain))) { @@ -77,7 +77,14 @@ part.nodeHelper()->setNodeProcessed(dataHtml, false); preferredMode = Util::MultipartPlain; } + +// qDebug() << " MessagePart::Ptr MultiPartAlternativeBodyPartFormatter::process(Interface::BodyPart &part) const"; +// for (int i = 0; i < mp->availableModes().count(); ++i) { +// qDebug() << "MultiPartAlternativeBodyPartFormatter::processe Modes " << MimeTreeParser::Util::htmlModeToString(mp->availableModes().at(i)); +// } +// qDebug() << "MultiPartAlternativeBodyPartFormatter::process prefered " << MimeTreeParser::Util::htmlModeToString(preferredMode); + part.source()->setHtmlMode(preferredMode, mp->availableModes()); - mp->mPreferredMode = preferredMode; + mp->setPreferredMode(preferredMode); return mp; } diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/multipartalternative.h kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/multipartalternative.h --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/multipartalternative.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/multipartalternative.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_BODYFORAMATTER_MULTIPARTALTERNATIVE_H__ -#define __MIMETREEPARSER_BODYFORAMATTER_MULTIPARTALTERNATIVE_H__ +#ifndef MIMETREEPARSER_BODYFORAMATTER_MULTIPARTALTERNATIVE_H +#define MIMETREEPARSER_BODYFORAMATTER_MULTIPARTALTERNATIVE_H #include "interfaces/bodypartformatter.h" #include "interfaces/bodypart.h" diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/multipartencrypted.h kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/multipartencrypted.h --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/multipartencrypted.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/multipartencrypted.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_BODYFORAMATTER_MULTIPARTENCRYPTED_H__ -#define __MIMETREEPARSER_BODYFORAMATTER_MULTIPARTENCRYPTED_H__ +#ifndef MIMETREEPARSER_BODYFORAMATTER_MULTIPARTENCRYPTED_H +#define MIMETREEPARSER_BODYFORAMATTER_MULTIPARTENCRYPTED_H #include "interfaces/bodypartformatter.h" #include "interfaces/bodypart.h" diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/multipartmixed.h kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/multipartmixed.h --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/multipartmixed.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/multipartmixed.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_BODYFORAMATTER_MULTIPARTMIXED_H__ -#define __MIMETREEPARSER_BODYFORAMATTER_MULTIPARTMIXED_H__ +#ifndef MIMETREEPARSER_BODYFORAMATTER_MULTIPARTMIXED_H +#define MIMETREEPARSER_BODYFORAMATTER_MULTIPARTMIXED_H #include "interfaces/bodypartformatter.h" #include "interfaces/bodypart.h" diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/multipartsigned.h kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/multipartsigned.h --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/multipartsigned.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/multipartsigned.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_BODYFORAMATTER_MULTIPARTSIGNED_H__ -#define __MIMETREEPARSER_BODYFORAMATTER_MULTIPARTSIGNED_H__ +#ifndef MIMETREEPARSER_BODYFORAMATTER_MULTIPARTSIGNED_H +#define MIMETREEPARSER_BODYFORAMATTER_MULTIPARTSIGNED_H #include "interfaces/bodypartformatter.h" #include "interfaces/bodypart.h" diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/texthtml.cpp kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/texthtml.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/texthtml.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/texthtml.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -19,7 +19,6 @@ #include "texthtml.h" -#include "attachmentstrategy.h" #include "objecttreeparser.h" #include "messagepart.h" diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/texthtml.h kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/texthtml.h --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/texthtml.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/texthtml.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_BODYFORAMATTER_TEXTHTML_H__ -#define __MIMETREEPARSER_BODYFORAMATTER_TEXTHTML_H__ +#ifndef MIMETREEPARSER_BODYFORAMATTER_TEXTHTML_H +#define MIMETREEPARSER_BODYFORAMATTER_TEXTHTML_H #include "interfaces/bodypartformatter.h" #include "interfaces/bodypart.h" diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/textplain.cpp kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/textplain.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/textplain.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/textplain.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -19,7 +19,6 @@ #include "textplain.h" -#include "attachmentstrategy.h" #include "objecttreeparser.h" #include "messagepart.h" @@ -44,17 +43,11 @@ KMime::Content *node = part.content(); const bool isFirstTextPart = (node->topLevel()->textContent() == node); - QString label = NodeHelper::fileName(node); - - const bool bDrawFrame = !isFirstTextPart - && !part.objectTreeParser()->showOnlyOneMimePart() - && !label.isEmpty(); - TextMessagePart::Ptr mp; if (isFirstTextPart) { - mp = TextMessagePart::Ptr(new TextMessagePart(part.objectTreeParser(), node, bDrawFrame, part.source()->decryptMessage())); + mp = TextMessagePart::Ptr(new TextMessagePart(part.objectTreeParser(), node, part.source()->decryptMessage())); } else { - mp = TextMessagePart::Ptr(new AttachmentMessagePart(part.objectTreeParser(), node, bDrawFrame, part.source()->decryptMessage())); + mp = TextMessagePart::Ptr(new AttachmentMessagePart(part.objectTreeParser(), node, part.source()->decryptMessage())); } part.processResult()->setInlineSignatureState(mp->signatureState()); diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/textplain.h kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/textplain.h --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/textplain.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/textplain.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_BODYFORAMATTER_TEXTPLAIN_H__ -#define __MIMETREEPARSER_BODYFORAMATTER_TEXTPLAIN_H__ +#ifndef MIMETREEPARSER_BODYFORAMATTER_TEXTPLAIN_H +#define MIMETREEPARSER_BODYFORAMATTER_TEXTPLAIN_H #include "interfaces/bodypartformatter.h" #include "interfaces/bodypart.h" diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/utils.h kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/utils.h --- kf5-messagelib-17.12.3/mimetreeparser/src/bodyformatter/utils.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodyformatter/utils.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_BODYFORAMATTER_UTILS_H__ -#define __MIMETREEPARSER_BODYFORAMATTER_UTILS_H__ +#ifndef MIMETREEPARSER_BODYFORAMATTER_UTILS_H +#define MIMETREEPARSER_BODYFORAMATTER_UTILS_H #include "interfaces/bodypart.h" #include "messagepart.h" diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodypartformatter.cpp kf5-messagelib-18.04.3/mimetreeparser/src/bodypartformatter.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/bodypartformatter.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodypartformatter.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -44,12 +44,10 @@ #include "interfaces/bodypartformatter.h" #include "interfaces/bodypart.h" -#include "interfaces/htmlwriter.h" #include "bodypartformatterfactory.h" #include "bodypartformatterfactory_p.h" -#include "attachmentstrategy.h" #include "objecttreeparser.h" #include "messagepart.h" @@ -67,7 +65,7 @@ MessagePart::Ptr process(Interface::BodyPart &part) const override { KMime::Content *node = part.content(); - const auto mp = AttachmentMessagePart::Ptr(new AttachmentMessagePart(part.objectTreeParser(), node, false, part.source()->decryptMessage())); + const auto mp = AttachmentMessagePart::Ptr(new AttachmentMessagePart(part.objectTreeParser(), node, part.source()->decryptMessage())); part.processResult()->setInlineSignatureState(mp->signatureState()); part.processResult()->setInlineEncryptionState(mp->encryptionState()); part.processResult()->setNeverDisplayInline(true); @@ -102,31 +100,19 @@ MessagePart::Ptr process(Interface::BodyPart &part) const override { KMime::Content *node = part.content(); - auto mp = AttachmentMessagePart::Ptr(new AttachmentMessagePart(part.objectTreeParser(), node, false, part.source()->decryptMessage())); + auto mp = AttachmentMessagePart::Ptr(new AttachmentMessagePart(part.objectTreeParser(), node, part.source()->decryptMessage())); mp->setIsImage(true); part.processResult()->setInlineSignatureState(mp->signatureState()); part.processResult()->setInlineEncryptionState(mp->encryptionState()); auto preferredMode = part.source()->preferredMode(); - bool isHtmlPreferred = (preferredMode == Util::Html) || (preferredMode == Util::MultipartHtml); - if (node->parent() && node->parent()->contentType()->subType() == "related" && isHtmlPreferred && !part.objectTreeParser()->showOnlyOneMimePart()) { - QString fileName = mp->temporaryFilePath(); - QString href = QUrl::fromLocalFile(fileName).url(); - QByteArray cid = node->contentID()->identifier(); - if (part.objectTreeParser()->htmlWriter()) { - part.objectTreeParser()->htmlWriter()->embedPart(cid, href); - } + const bool isHtmlPreferred = (preferredMode == Util::Html) || (preferredMode == Util::MultipartHtml); + if (node->parent() && node->parent()->contentType()->subType() == "related" && isHtmlPreferred) { part.nodeHelper()->setNodeDisplayedEmbedded(node, true); part.nodeHelper()->setNodeDisplayedHidden(node, true); return mp; } - // Show it inline if showOnlyOneMimePart(), which means the user clicked the image - // in the message structure viewer manually, and therefore wants to see the full image - if (part.objectTreeParser()->showOnlyOneMimePart() && !part.processResult()->neverDisplayInline()) { - part.nodeHelper()->setNodeDisplayedEmbedded(node, true); - } - return mp; } }; @@ -165,6 +151,7 @@ insert(QStringLiteral("application/pgp-encrypted"), ApplicationPGPEncryptedBodyPartFormatter::create()); insert(QStringLiteral("application/octet-stream"), ApplicationPkcs7MimeBodyPartFormatter::create()); + insert(QStringLiteral("application/octet-stream"), EncryptedBodyPartFormatter::create()); insert(QStringLiteral("application/octet-stream"), AnyTypeBodyPartFormatter::create()); insert(QStringLiteral("text/pgp"), EncryptedBodyPartFormatter::create()); diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodypartformatterfactory.h kf5-messagelib-18.04.3/mimetreeparser/src/bodypartformatterfactory.h --- kf5-messagelib-17.12.3/mimetreeparser/src/bodypartformatterfactory.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodypartformatterfactory.h 2018-07-06 05:43:41.000000000 +0000 @@ -31,8 +31,8 @@ your version. */ -#ifndef __MIMETREEPARSER_BODYPARTFORMATTERFACTORY_H__ -#define __MIMETREEPARSER_BODYPARTFORMATTERFACTORY_H__ +#ifndef MIMETREEPARSER_BODYPARTFORMATTERFACTORY_H +#define MIMETREEPARSER_BODYPARTFORMATTERFACTORY_H #include "mimetreeparser_export.h" @@ -72,4 +72,4 @@ }; } -#endif // __MIMETREEPARSER_BODYPARTFORMATTERFACTORY_H__ +#endif // MIMETREEPARSER_BODYPARTFORMATTERFACTORY_H diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/bodypartformatterfactory_p.h kf5-messagelib-18.04.3/mimetreeparser/src/bodypartformatterfactory_p.h --- kf5-messagelib-17.12.3/mimetreeparser/src/bodypartformatterfactory_p.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/bodypartformatterfactory_p.h 2018-07-06 05:43:41.000000000 +0000 @@ -31,8 +31,8 @@ your version. */ -#ifndef __MIMETREEPARSER_BODYPARTFORMATTERFACTORY_P_H__ -#define __MIMETREEPARSER_BODYPARTFORMATTERFACTORY_P_H__ +#ifndef MIMETREEPARSER_BODYPARTFORMATTERFACTORY_P_H +#define MIMETREEPARSER_BODYPARTFORMATTERFACTORY_P_H #include #include @@ -60,4 +60,4 @@ }; } -#endif // __MIMETREEPARSER_BODYPARTFORMATTERFACTORY_P_H__ +#endif // MIMETREEPARSER_BODYPARTFORMATTERFACTORY_P_H diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/CMakeLists.txt kf5-messagelib-18.04.3/mimetreeparser/src/CMakeLists.txt --- kf5-messagelib-17.12.3/mimetreeparser/src/CMakeLists.txt 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/CMakeLists.txt 2018-07-06 05:43:41.000000000 +0000 @@ -23,10 +23,8 @@ interfaces/bodypartformatter.cpp interfaces/objecttreesource.cpp interfaces/bodypart.cpp - interfaces/htmlwriter.cpp job/qgpgmejobexecutor.cpp utils/util.cpp - attachmentstrategy.cpp bodypartformatter.cpp bodypartformatterfactory.cpp cryptohelper.cpp @@ -34,25 +32,19 @@ objecttreeparser.cpp messagepart.cpp partnodebodypart.cpp + simpleobjecttreesource.cpp memento/cryptobodypartmemento.cpp memento/decryptverifybodypartmemento.cpp memento/verifydetachedbodypartmemento.cpp memento/verifyopaquebodypartmemento.cpp ) -set(libmimetreeparser_extra_SRCS - #HTML Writer - htmlwriter/bufferedhtmlwriter.cpp - htmlwriter/filehtmlwriter.cpp - ) - set(mimetreeparser_temporaryfile_SRCS temporaryfile/attachmenttemporaryfilesdirs.cpp ) ecm_generate_headers(MimeTreeParser_Camelcasemain_HEADERS HEADER_NAMES - AttachmentStrategy BodyPartFormatterFactory Enums MessagePart @@ -60,6 +52,7 @@ ObjectTreeParser PartMetaData PartNodeBodyPart + SimpleObjectTreeSource REQUIRED_HEADERS MimeTreeParser_main_HEADERS PREFIX MimeTreeParser ) @@ -76,22 +69,12 @@ HEADER_NAMES BodyPartFormatter BodyPart - HtmlWriter ObjectTreeSource REQUIRED_HEADERS MimeTreeParser_interfaces_HEADERS PREFIX MimeTreeParser RELATIVE interfaces ) -ecm_generate_headers(MimeTreeParser_Camelcasehtmlwriter_HEADERS - HEADER_NAMES - BufferedHtmlWriter - FileHtmlWriter - REQUIRED_HEADERS MimeTreeParser_htmlwriter_HEADERS - PREFIX MimeTreeParser - RELATIVE htmlwriter - ) - ecm_generate_headers(MimeTreeParser_Camelcasetemporaryfile_HEADERS HEADER_NAMES AttachmentTemporaryFilesDirs @@ -101,7 +84,6 @@ ) install(FILES - ${MimeTreeParser_Camelcasehtmlwriter_HEADERS} ${MimeTreeParser_Camelcaseutils_HEADERS} ${MimeTreeParser_Camelcaseinterfaces_HEADERS} ${MimeTreeParser_Camelcasemain_HEADERS} @@ -111,7 +93,6 @@ ) install(FILES - ${MimeTreeParser_htmlwriter_HEADERS} ${MimeTreeParser_utils_HEADERS} ${MimeTreeParser_interfaces_HEADERS} ${MimeTreeParser_main_HEADERS} diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/cryptohelper.h kf5-messagelib-18.04.3/mimetreeparser/src/cryptohelper.h --- kf5-messagelib-17.12.3/mimetreeparser/src/cryptohelper.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/cryptohelper.h 2018-07-06 05:43:41.000000000 +0000 @@ -15,8 +15,8 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ -#ifndef __MIMETREEPARSER_CRYPTOHELPER_H__ -#define __MIMETREEPARSER_CRYPTOHELPER_H__ +#ifndef MIMETREEPARSER_CRYPTOHELPER_H +#define MIMETREEPARSER_CRYPTOHELPER_H #include #include diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/enums.h kf5-messagelib-18.04.3/mimetreeparser/src/enums.h --- kf5-messagelib-17.12.3/mimetreeparser/src/enums.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/enums.h 2018-07-06 05:43:41.000000000 +0000 @@ -16,8 +16,8 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_ENUMS_H__ -#define __MIMETREEPARSER_ENUMS_H__ +#ifndef MIMETREEPARSER_ENUMS_H +#define MIMETREEPARSER_ENUMS_H namespace MimeTreeParser { /** diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/htmlwriter/bufferedhtmlwriter.cpp kf5-messagelib-18.04.3/mimetreeparser/src/htmlwriter/bufferedhtmlwriter.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/htmlwriter/bufferedhtmlwriter.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/htmlwriter/bufferedhtmlwriter.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -/* - Copyright (c) 2017 Volker Krause - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. -*/ - -#include "bufferedhtmlwriter.h" - -using namespace MimeTreeParser; - -BufferedHtmlWriter::BufferedHtmlWriter() - : m_buffer(&m_data) -{ -} - -BufferedHtmlWriter::~BufferedHtmlWriter() -{ - HtmlWriter::end(); -} - -void BufferedHtmlWriter::begin() -{ - m_buffer.open(QBuffer::WriteOnly); - HtmlWriter::begin(); -} - -void BufferedHtmlWriter::end() -{ - HtmlWriter::end(); - m_buffer.close(); -} - -void BufferedHtmlWriter::reset() -{ - HtmlWriter::reset(); - m_buffer.close(); - clear(); -} - -QIODevice *BufferedHtmlWriter::device() const -{ - return const_cast(&m_buffer); -} - -void BufferedHtmlWriter::extraHead(const QString &str) -{ - Q_UNUSED(str); -} - -void BufferedHtmlWriter::embedPart(const QByteArray &contentId, const QString &url) -{ - Q_UNUSED(contentId); - Q_UNUSED(url); -} - -QByteArray BufferedHtmlWriter::data() const -{ - return m_data; -} - -void BufferedHtmlWriter::clear() -{ - m_data.clear(); -} diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/htmlwriter/bufferedhtmlwriter.h kf5-messagelib-18.04.3/mimetreeparser/src/htmlwriter/bufferedhtmlwriter.h --- kf5-messagelib-17.12.3/mimetreeparser/src/htmlwriter/bufferedhtmlwriter.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/htmlwriter/bufferedhtmlwriter.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -/* - Copyright (c) 2017 Volker Krause - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. -*/ - -#ifndef MIMETREEPARSER_BUFFEREDHTMLWRITER_H -#define MIMETREEPARSER_BUFFEREDHTMLWRITER_H - -#include "mimetreeparser_export.h" -#include - -#include -#include - -namespace MimeTreeParser { -/** - * QBuffer-backed HtmlWriter - */ -class MIMETREEPARSER_EXPORT BufferedHtmlWriter : public HtmlWriter -{ -public: - BufferedHtmlWriter(); - ~BufferedHtmlWriter(); - - void begin() override; - void end() override; - void reset() override; - QIODevice *device() const override; - - QByteArray data() const; - void clear(); - - void extraHead(const QString &str) override; - void embedPart(const QByteArray &contentId, const QString &url) override; - -protected: - QByteArray m_data; - -private: - QBuffer m_buffer; -}; -} - -#endif // MIMETREEPARSER_BUFFEREDHTMLWRITER_H diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/htmlwriter/filehtmlwriter.cpp kf5-messagelib-18.04.3/mimetreeparser/src/htmlwriter/filehtmlwriter.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/htmlwriter/filehtmlwriter.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/htmlwriter/filehtmlwriter.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -/* -*- c++ -*- - filehtmlwriter.cpp - - This file is part of KMail, the KDE mail client. - Copyright (c) 2003 Marc Mutz - - KMail is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License, version 2, as - published by the Free Software Foundation. - - KMail is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#include "filehtmlwriter.h" -#include "mimetreeparser_debug.h" - -using namespace MimeTreeParser; - -FileHtmlWriter::FileHtmlWriter(const QString &filename) - : mFile(filename.isEmpty() ? QStringLiteral("filehtmlwriter.out") : filename) -{ -} - -FileHtmlWriter::~FileHtmlWriter() -{ - if (mFile.isOpen()) { - qCWarning(MIMETREEPARSER_LOG) << "FileHtmlWriter: file still open!"; - HtmlWriter::end(); - mFile.close(); - } -} - -void FileHtmlWriter::begin() -{ - if (mFile.isOpen()) { - qCWarning(MIMETREEPARSER_LOG) << "FileHtmlWriter: file still open!"; - mFile.close(); - } - if (!mFile.open(QIODevice::WriteOnly)) { - qCWarning(MIMETREEPARSER_LOG) << "FileHtmlWriter: Cannot open file" << mFile.fileName(); - } - HtmlWriter::begin(); -} - -void FileHtmlWriter::end() -{ - HtmlWriter::end(); - mFile.close(); -} - -void FileHtmlWriter::reset() -{ - HtmlWriter::reset(); - if (mFile.isOpen()) { - mFile.close(); - } -} - -QIODevice *FileHtmlWriter::device() const -{ - return const_cast(&mFile); -} - -void FileHtmlWriter::embedPart(const QByteArray &contentId, const QString &url) -{ - *stream() << "" << endl; -} - -void FileHtmlWriter::extraHead(const QString &) -{ -} diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/htmlwriter/filehtmlwriter.h kf5-messagelib-18.04.3/mimetreeparser/src/htmlwriter/filehtmlwriter.h --- kf5-messagelib-17.12.3/mimetreeparser/src/htmlwriter/filehtmlwriter.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/htmlwriter/filehtmlwriter.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -/* -*- c++ -*- - filehtmlwriter.h - - This file is part of KMail, the KDE mail client. - Copyright (c) 2003 Marc Mutz - - KMail is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License, version 2, as - published by the Free Software Foundation. - - KMail is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#ifndef __MIMETREEPARSER_FILEHTMLWRITER_H__ -#define __MIMETREEPARSER_FILEHTMLWRITER_H__ - -#include "mimetreeparser_export.h" -#include "mimetreeparser/htmlwriter.h" - -#include - -namespace MimeTreeParser { -class MIMETREEPARSER_EXPORT FileHtmlWriter : public HtmlWriter -{ -public: - explicit FileHtmlWriter(const QString &filename); - ~FileHtmlWriter(); - - void begin() override; - void end() override; - void reset() override; - QIODevice *device() const override; - void embedPart(const QByteArray &contentId, const QString &url) override; - void extraHead(const QString &str) override; - -private: - QFile mFile; -}; -} // namespace MimeTreeParser - -#endif // __MIMETREEPARSER_FILEHTMLWRITER_H__ diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/interfaces/bodypartformatter.h kf5-messagelib-18.04.3/mimetreeparser/src/interfaces/bodypartformatter.h --- kf5-messagelib-17.12.3/mimetreeparser/src/interfaces/bodypartformatter.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/interfaces/bodypartformatter.h 2018-07-06 05:43:41.000000000 +0000 @@ -31,8 +31,8 @@ your version. */ -#ifndef __MIMETREEPARSER_INTERFACE_BODYPARTFORMATTER_H__ -#define __MIMETREEPARSER_INTERFACE_BODYPARTFORMATTER_H__ +#ifndef MIMETREEPARSER_INTERFACE_BODYPARTFORMATTER_H +#define MIMETREEPARSER_INTERFACE_BODYPARTFORMATTER_H #include "mimetreeparser_export.h" @@ -80,4 +80,4 @@ Q_DECLARE_INTERFACE(MimeTreeParser::Interface::BodyPartFormatterPlugin, "org.kde.messageviewer.bodypartformatter/1.1") -#endif // __MIMETREEPARSER_INTERFACE_BODYPARTFORMATTER_H__ +#endif // MIMETREEPARSER_INTERFACE_BODYPARTFORMATTER_H diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/interfaces/bodypart.h kf5-messagelib-18.04.3/mimetreeparser/src/interfaces/bodypart.h --- kf5-messagelib-17.12.3/mimetreeparser/src/interfaces/bodypart.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/interfaces/bodypart.h 2018-07-06 05:43:41.000000000 +0000 @@ -31,8 +31,8 @@ your version. */ -#ifndef __MIMETREEPARSER_INTERFACES_BODYPART_H__ -#define __MIMETREEPARSER_INTERFACES_BODYPART_H__ +#ifndef MIMETREEPARSER_INTERFACES_BODYPART_H +#define MIMETREEPARSER_INTERFACES_BODYPART_H #include "mimetreeparser_export.h" @@ -73,14 +73,6 @@ */ virtual BodyPartMemento *memento() const = 0; - enum Display { - None, AsIcon, Inline - }; - /** - @return whether this body part should be displayed iconic or inline - */ - virtual Display defaultDisplay() const = 0; - /** Returns the KMime::Content node represented here. Makes most of the above obsolete and probably should be used in the interfaces in the first place. */ @@ -111,4 +103,4 @@ } // namespace Interface } -#endif // __MIMETREEPARSER_INTERFACES_BODYPART_H__ +#endif // MIMETREEPARSER_INTERFACES_BODYPART_H diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/interfaces/htmlwriter.cpp kf5-messagelib-18.04.3/mimetreeparser/src/interfaces/htmlwriter.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/interfaces/htmlwriter.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/interfaces/htmlwriter.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* - Copyright (c) 2017 Volker Krause - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. -*/ - -#include "htmlwriter.h" - -#include - -using namespace MimeTreeParser; - -HtmlWriter::HtmlWriter() = default; -HtmlWriter::~HtmlWriter() = default; - -void HtmlWriter::begin() -{ - if (!m_stream) { - m_stream.reset(new QTextStream()); - } - m_stream->setDevice(device()); - m_stream->setCodec("UTF-8"); -} - -void HtmlWriter::write(const QString &html) -{ - Q_ASSERT(m_stream); - if (!m_stream) { - return; - } - *stream() << html; -} - -void HtmlWriter::end() -{ - if (!m_stream) { - return; - } - m_stream->flush(); - m_stream->setDevice(nullptr); -} - -void HtmlWriter::reset() -{ - if (!m_stream) { - return; - } - m_stream->setDevice(nullptr); -} - -QTextStream *HtmlWriter::stream() const -{ - return m_stream.get(); -} diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/interfaces/htmlwriter.h kf5-messagelib-18.04.3/mimetreeparser/src/interfaces/htmlwriter.h --- kf5-messagelib-17.12.3/mimetreeparser/src/interfaces/htmlwriter.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/interfaces/htmlwriter.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,105 +0,0 @@ -/* -*- c++ -*- - interfaces/htmlwriter.h - - This file is part of KMail's plugin interface. - Copyright (c) 2003 Marc Mutz - - KMail is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - KMail is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - In addition, as a special exception, the copyright holders give - permission to link the code of this program with any edition of - the Qt library by Trolltech AS, Norway (or with modified versions - of Qt that use the same license as Qt), and distribute linked - combinations including the two. You must obey the GNU General - Public License in all respects for all of the code used other than - Qt. If you modify this file, you may extend this exception to - your version of the file, but you are not obligated to do so. If - you do not wish to do so, delete this exception statement from - your version. -*/ - -#ifndef __MIMETREEPARSER_INTERFACES_HTMLWRITER_H__ -#define __MIMETREEPARSER_INTERFACES_HTMLWRITER_H__ - -#include "mimetreeparser_export.h" - -#include -#include - -class QByteArray; -class QIODevice; -class QString; -class QTextStream; - -namespace MimeTreeParser { -/** - * @short An interface for HTML sinks. - * @author Marc Mutz - * - */ -class MIMETREEPARSER_EXPORT HtmlWriter -{ -public: - HtmlWriter(); - virtual ~HtmlWriter(); - - /** Signal the begin of stuff to write. - * Sub-classes should open device() in a writable mode here and then - * call the base class. - */ - virtual void begin(); - - /** Write out a chunk of text. No HTML escaping is performed. - * @deprecated use stream() instead - */ - void write(const QString &html); - - /** Signal the end of stuff to write. - * Sub-classes should call the base class and then close device() here. - */ - virtual void end(); - - /** - * Stop all possibly pending processing in order to be able to - * call #begin() again. - * Sub-classes should call the base class and then reset device() here. - */ - virtual void reset(); - - /** Returns the QIODevice backing this HtmlWriter instance. - * Before writing to this directly, make sure to flush stream(). - */ - virtual QIODevice *device() const = 0; - - /** Returns a QTextStream on device(). - * Use this for writing QString data, rather than local string - * concatenations. - */ - QTextStream *stream() const; - - /** - * Embed a part with Content-ID @p contentId, using url @p url. - */ - virtual void embedPart(const QByteArray &contentId, const QString &url) = 0; - - virtual void extraHead(const QString &str) = 0; - -private: - Q_DISABLE_COPY(HtmlWriter) - mutable std::unique_ptr m_stream; -}; -} - -#endif // __MIMETREEPARSER_INTERFACES_HTMLWRITER_H__ diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/interfaces/objecttreesource.h kf5-messagelib-18.04.3/mimetreeparser/src/interfaces/objecttreesource.h --- kf5-messagelib-17.12.3/mimetreeparser/src/interfaces/objecttreesource.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/interfaces/objecttreesource.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_OBJECTTREESOURCE_IF_H__ -#define __MIMETREEPARSER_OBJECTTREESOURCE_IF_H__ +#ifndef MIMETREEPARSER_OBJECTTREESOURCE_IF_H +#define MIMETREEPARSER_OBJECTTREESOURCE_IF_H #include "mimetreeparser_export.h" #include @@ -29,8 +29,6 @@ class QTextCodec; namespace MimeTreeParser { -class HtmlWriter; -class AttachmentStrategy; class BodyPartFormatterFactory; class MessagePart; typedef QSharedPointer MessagePartPtr; @@ -61,37 +59,15 @@ /** Return true if an encrypted mail should be decrypted */ virtual bool decryptMessage() const = 0; - /** Return true if external sources should be loaded in a html mail */ - virtual bool htmlLoadExternal() const = 0; - - /** Return true to include the signature details in the generated html */ - virtual bool showSignatureDetails() const = 0; - - virtual int levelQuote() const = 0; - /** The override codec that should be used for the mail */ virtual const QTextCodec *overrideCodec() = 0; - virtual QString createMessageHeader(KMime::Message *message) = 0; - - /** Return the wanted attachment startegy */ - virtual const AttachmentStrategy *attachmentStrategy() = 0; - - /** Return the html write object */ - virtual HtmlWriter *htmlWriter() = 0; - /** should keys be imported automatically **/ virtual bool autoImportKeys() const = 0; - virtual bool showEmoticons() const = 0; - - virtual bool showExpandQuotesMark() const = 0; - virtual const BodyPartFormatterFactory *bodyPartFormatterFactory() = 0; - virtual void render(const MessagePartPtr &msgPart, HtmlWriter *htmlWriter) = 0; - - virtual bool isPrinting() const = 0; + virtual void render(const MessagePartPtr &msgPart, bool showOnlyOneMimePart) = 0; private: Q_DISABLE_COPY(ObjectTreeSource) diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/job/qgpgmejobexecutor.cpp kf5-messagelib-18.04.3/mimetreeparser/src/job/qgpgmejobexecutor.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/job/qgpgmejobexecutor.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/job/qgpgmejobexecutor.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -41,7 +41,7 @@ QGpgME::VerifyDetachedJob *job, const QByteArray &signature, const QByteArray &signedData) { qCDebug(MIMETREEPARSER_LOG) << "Starting detached verification job"; - connect(job, SIGNAL(result(GpgME::VerificationResult)), SLOT(verificationResult(GpgME::VerificationResult))); + connect(job, &QGpgME::VerifyDetachedJob::result, this, QOverload::of(&QGpgMEJobExecutor::verificationResult)); GpgME::Error err = job->start(signature, signedData); if (err) { return VerificationResult(err); @@ -54,7 +54,7 @@ QGpgME::VerifyOpaqueJob *job, const QByteArray &signedData, QByteArray &plainText) { qCDebug(MIMETREEPARSER_LOG) << "Starting opaque verification job"; - connect(job, SIGNAL(result(GpgME::VerificationResult,QByteArray)), SLOT(verificationResult(GpgME::VerificationResult,QByteArray))); + connect(job, &QGpgME::VerifyOpaqueJob::result, this, QOverload::of(&QGpgMEJobExecutor::verificationResult )); GpgME::Error err = job->start(signedData); if (err) { plainText.clear(); @@ -82,7 +82,7 @@ GpgME::ImportResult QGpgMEJobExecutor::exec(QGpgME::ImportJob *job, const QByteArray &certData) { - connect(job, SIGNAL(result(GpgME::ImportResult)), SLOT(importResult(GpgME::ImportResult))); + connect(job, &QGpgME::AbstractImportJob::result, this, &QGpgMEJobExecutor::importResult); GpgME::Error err = job->start(certData); if (err) { return ImportResult(err); diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/job/qgpgmejobexecutor.h kf5-messagelib-18.04.3/mimetreeparser/src/job/qgpgmejobexecutor.h --- kf5-messagelib-17.12.3/mimetreeparser/src/job/qgpgmejobexecutor.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/job/qgpgmejobexecutor.h 2018-07-06 05:43:41.000000000 +0000 @@ -16,8 +16,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_KLEOJOBEXECUTOR_H__ -#define __MIMETREEPARSER_KLEOJOBEXECUTOR_H__ +#ifndef MIMETREEPARSER_KLEOJOBEXECUTOR_H +#define MIMETREEPARSER_KLEOJOBEXECUTOR_H #include #include diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/memento/cryptobodypartmemento.cpp kf5-messagelib-18.04.3/mimetreeparser/src/memento/cryptobodypartmemento.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/memento/cryptobodypartmemento.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/memento/cryptobodypartmemento.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/memento/cryptobodypartmemento.h kf5-messagelib-18.04.3/mimetreeparser/src/memento/cryptobodypartmemento.h --- kf5-messagelib-17.12.3/mimetreeparser/src/memento/cryptobodypartmemento.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/memento/cryptobodypartmemento.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as @@ -15,8 +15,8 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef __MIMETREEPARSER_CRYPTOBODYPARTMEMENTO_H__ -#define __MIMETREEPARSER_CRYPTOBODYPARTMEMENTO_H__ +#ifndef MIMETREEPARSER_CRYPTOBODYPARTMEMENTO_H +#define MIMETREEPARSER_CRYPTOBODYPARTMEMENTO_H #include @@ -32,7 +32,7 @@ Q_OBJECT public: CryptoBodyPartMemento(); - ~CryptoBodyPartMemento(); + ~CryptoBodyPartMemento() override; virtual bool start() = 0; virtual void exec() = 0; @@ -69,4 +69,4 @@ GpgME::Error m_auditLogError; }; } -#endif // __MIMETREEPARSER_CRYPTOBODYPARTMEMENTO_H__ +#endif // MIMETREEPARSER_CRYPTOBODYPARTMEMENTO_H diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/memento/decryptverifybodypartmemento.cpp kf5-messagelib-18.04.3/mimetreeparser/src/memento/decryptverifybodypartmemento.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/memento/decryptverifybodypartmemento.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/memento/decryptverifybodypartmemento.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/memento/decryptverifybodypartmemento.h kf5-messagelib-18.04.3/mimetreeparser/src/memento/decryptverifybodypartmemento.h --- kf5-messagelib-17.12.3/mimetreeparser/src/memento/decryptverifybodypartmemento.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/memento/decryptverifybodypartmemento.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as @@ -15,8 +15,8 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef __MIMETREEPARSER_DECRYPTVERIFYBODYPARTMEMENTO_H__ -#define __MIMETREEPARSER_DECRYPTVERIFYBODYPARTMEMENTO_H__ +#ifndef MIMETREEPARSER_DECRYPTVERIFYBODYPARTMEMENTO_H +#define MIMETREEPARSER_DECRYPTVERIFYBODYPARTMEMENTO_H #include "cryptobodypartmemento.h" @@ -37,7 +37,7 @@ Q_OBJECT public: DecryptVerifyBodyPartMemento(QGpgME::DecryptVerifyJob *job, const QByteArray &cipherText); - ~DecryptVerifyBodyPartMemento(); + ~DecryptVerifyBodyPartMemento() override; bool start() override; void exec() override; @@ -72,4 +72,4 @@ QByteArray m_plainText; }; } -#endif // __MIMETREEPARSER_DECRYPTVERIFYBODYPARTMEMENTO_H__ +#endif // MIMETREEPARSER_DECRYPTVERIFYBODYPARTMEMENTO_H diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/memento/verifydetachedbodypartmemento.cpp kf5-messagelib-18.04.3/mimetreeparser/src/memento/verifydetachedbodypartmemento.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/memento/verifydetachedbodypartmemento.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/memento/verifydetachedbodypartmemento.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/memento/verifydetachedbodypartmemento.h kf5-messagelib-18.04.3/mimetreeparser/src/memento/verifydetachedbodypartmemento.h --- kf5-messagelib-17.12.3/mimetreeparser/src/memento/verifydetachedbodypartmemento.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/memento/verifydetachedbodypartmemento.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as @@ -15,8 +15,8 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef __MIMETREEPARSER_VERIFYDETACHEDBODYPARTMEMENTO_H__ -#define __MIMETREEPARSER_VERIFYDETACHEDBODYPARTMEMENTO_H__ +#ifndef MIMETREEPARSER_VERIFYDETACHEDBODYPARTMEMENTO_H +#define MIMETREEPARSER_VERIFYDETACHEDBODYPARTMEMENTO_H #include "cryptobodypartmemento.h" #include @@ -40,7 +40,7 @@ Q_OBJECT public: VerifyDetachedBodyPartMemento(QGpgME::VerifyDetachedJob *job, QGpgME::KeyListJob *klj, const QByteArray &signature, const QByteArray &plainText); - ~VerifyDetachedBodyPartMemento(); + ~VerifyDetachedBodyPartMemento() override; bool start() override; void exec() override; @@ -77,4 +77,4 @@ }; } -#endif // __MIMETREEPARSER_VERIFYDETACHEDBODYPARTMEMENTO_H__ +#endif // MIMETREEPARSER_VERIFYDETACHEDBODYPARTMEMENTO_H diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/memento/verifyopaquebodypartmemento.cpp kf5-messagelib-18.04.3/mimetreeparser/src/memento/verifyopaquebodypartmemento.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/memento/verifyopaquebodypartmemento.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/memento/verifyopaquebodypartmemento.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/memento/verifyopaquebodypartmemento.h kf5-messagelib-18.04.3/mimetreeparser/src/memento/verifyopaquebodypartmemento.h --- kf5-messagelib-17.12.3/mimetreeparser/src/memento/verifyopaquebodypartmemento.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/memento/verifyopaquebodypartmemento.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as @@ -15,8 +15,8 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef __MIMETREEPARSER_VERIFYOPAQUEBODYPARTMEMENTO_H__ -#define __MIMETREEPARSER_VERIFYOPAQUEBODYPARTMEMENTO_H__ +#ifndef MIMETREEPARSER_VERIFYOPAQUEBODYPARTMEMENTO_H +#define MIMETREEPARSER_VERIFYOPAQUEBODYPARTMEMENTO_H #include "cryptobodypartmemento.h" #include @@ -41,7 +41,7 @@ Q_OBJECT public: VerifyOpaqueBodyPartMemento(QGpgME::VerifyOpaqueJob *job, QGpgME::KeyListJob *klj, const QByteArray &signature); - ~VerifyOpaqueBodyPartMemento(); + ~VerifyOpaqueBodyPartMemento() override; bool start() override; void exec() override; @@ -83,4 +83,4 @@ }; } -#endif // __MIMETREEPARSER_VERIFYOPAQUEBODYPARTMEMENTO_H__ +#endif // MIMETREEPARSER_VERIFYOPAQUEBODYPARTMEMENTO_H diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/messagepart.cpp kf5-messagelib-18.04.3/mimetreeparser/src/messagepart.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/messagepart.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/messagepart.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -19,7 +19,6 @@ #include "messagepart.h" #include "mimetreeparser_debug.h" -#include "attachmentstrategy.h" #include "cryptohelper.h" #include "objecttreeparser.h" #include "job/qgpgmejobexecutor.h" @@ -62,6 +61,8 @@ QString mText; PartMetaData mMetaData; bool mRoot = false; + bool mIsImage = false; + bool mNeverDisplayInline = false; }; } @@ -181,11 +182,6 @@ return false; } -bool MessagePart::isHidden() const -{ - return false; -} - Interface::ObjectTreeSource *MessagePart::source() const { Q_ASSERT(mOtp); @@ -247,6 +243,26 @@ d->mBlocks.clear(); } +bool MessagePart::neverDisplayInline() const +{ + return d->mNeverDisplayInline; +} + +void MessagePart::setNeverDisplayInline(bool displayInline) +{ + d->mNeverDisplayInline = displayInline; +} + +bool MessagePart::isImage() const +{ + return d->mIsImage; +} + +void MessagePart::setIsImage(bool image) +{ + d->mIsImage = image; +} + //-----MessagePartList---------------------- MessagePartList::MessagePartList(ObjectTreeParser *otp) : MessagePart(otp, QString()) @@ -274,11 +290,9 @@ //-----TextMessageBlock---------------------- -TextMessagePart::TextMessagePart(ObjectTreeParser *otp, KMime::Content *node, bool drawFrame, bool decryptMessage) +TextMessagePart::TextMessagePart(ObjectTreeParser *otp, KMime::Content *node, bool decryptMessage) : MessagePartList(otp) - , mDrawFrame(drawFrame) , mDecryptMessage(decryptMessage) - , mIsHidden(false) { if (!node) { qCWarning(MIMETREEPARSER_LOG) << "not a valid node"; @@ -286,7 +300,6 @@ } setContent(node); - mIsHidden = mOtp->nodeHelper()->isNodeDisplayedHidden(node); parseContent(); } @@ -387,24 +400,19 @@ return mSignatureState; } -bool TextMessagePart::isHidden() const -{ - return mIsHidden; -} - bool TextMessagePart::showLink() const { return !temporaryFilePath().isEmpty(); } -bool TextMessagePart::showTextFrame() const +bool TextMessagePart::isFirstTextPart() const { - return mDrawFrame; + return content()->topLevel()->textContent() == content(); } -void TextMessagePart::setShowTextFrame(bool showFrame) +bool TextMessagePart::hasLabel() const { - mDrawFrame = showFrame; + return !NodeHelper::fileName(content()).isEmpty(); } QString TextMessagePart::label() const @@ -433,10 +441,8 @@ //-----AttachmentMessageBlock---------------------- -AttachmentMessagePart::AttachmentMessagePart(ObjectTreeParser *otp, KMime::Content *node, bool drawFrame, bool decryptMessage) - : TextMessagePart(otp, node, drawFrame, decryptMessage) - , mIsImage(false) - , mNeverDisplayInline(false) +AttachmentMessagePart::AttachmentMessagePart(ObjectTreeParser *otp, KMime::Content *node, bool decryptMessage) + : TextMessagePart(otp, node, decryptMessage) { } @@ -444,126 +450,6 @@ { } -bool AttachmentMessagePart::neverDisplayInline() const -{ - return mNeverDisplayInline; -} - -void AttachmentMessagePart::setNeverDisplayInline(bool displayInline) -{ - mNeverDisplayInline = displayInline; -} - -bool AttachmentMessagePart::isImage() const -{ - return mIsImage; -} - -void AttachmentMessagePart::setIsImage(bool image) -{ - mIsImage = image; -} - -IconType AttachmentMessagePart::asIcon() const -{ - const AttachmentStrategy *const as = mOtp->attachmentStrategy(); - const bool defaultHidden(as && as->defaultDisplay(content()) == AttachmentStrategy::None); - const bool showOnlyOneMimePart(mOtp->showOnlyOneMimePart()); - auto preferredMode = source()->preferredMode(); - bool isHtmlPreferred = (preferredMode == Util::Html) || (preferredMode == Util::MultipartHtml); - - QByteArray mediaType("text"); - if (content()->contentType(false) && !content()->contentType()->mediaType().isEmpty() - && !content()->contentType()->subType().isEmpty()) { - mediaType = content()->contentType()->mediaType(); - } - const bool isTextPart = (mediaType == QByteArrayLiteral("text")); - - bool defaultAsIcon = true; - if (!neverDisplayInline()) { - if (as) { - defaultAsIcon = as->defaultDisplay(content()) == AttachmentStrategy::AsIcon; - } - } - if (isImage() && showOnlyOneMimePart && !neverDisplayInline()) { - defaultAsIcon = false; - } - - // neither image nor text -> show as icon - if (!isImage() && !isTextPart) { - defaultAsIcon = true; - } - - if (isTextPart) { - if (as && as->defaultDisplay(content()) != AttachmentStrategy::Inline) { - return MimeTreeParser::IconExternal; - } - return MimeTreeParser::NoIcon; - } else { - if (isImage() && isHtmlPreferred - && content()->parent() && content()->parent()->contentType()->subType() == "related") { - return MimeTreeParser::IconInline; - } - - if (defaultHidden && !showOnlyOneMimePart && content()->parent()) { - return MimeTreeParser::IconInline; - } - - if (defaultAsIcon) { - return MimeTreeParser::IconExternal; - } else if (isImage()) { - return MimeTreeParser::IconInline; - } else { - return MimeTreeParser::NoIcon; - } - } -} - -bool AttachmentMessagePart::isHidden() const -{ - if (mOtp->showOnlyOneMimePart()) { - return false; // never hide when only showing one part, otherwise you'll see nothing - } - const AttachmentStrategy *const as = mOtp->attachmentStrategy(); - const bool defaultHidden(as && as->defaultDisplay(content()) == AttachmentStrategy::None); - auto preferredMode = source()->preferredMode(); - bool isHtmlPreferred = (preferredMode == Util::Html) || (preferredMode == Util::MultipartHtml); - - QByteArray mediaType("text"); - if (content()->contentType(false) && !content()->contentType()->mediaType().isEmpty() - && !content()->contentType()->subType().isEmpty()) { - mediaType = content()->contentType()->mediaType(); - } - const bool isTextPart = (mediaType == QByteArrayLiteral("text")); - - bool defaultAsIcon = true; - if (!neverDisplayInline()) { - if (as) { - defaultAsIcon = as->defaultDisplay(content()) == AttachmentStrategy::AsIcon; - } - } - - // neither image nor text -> show as icon - if (!isImage() && !isTextPart) { - defaultAsIcon = true; - } - - bool hidden(false); - if (isTextPart) { - hidden = defaultHidden; - } else { - if (isImage() && isHtmlPreferred - && content()->parent() && content()->parent()->contentType()->subType() == "related") { - hidden = true; - } else { - hidden = defaultHidden && content()->parent(); - hidden |= defaultAsIcon && defaultHidden; - } - } - mOtp->nodeHelper()->setNodeDisplayedHidden(content(), hidden); - return hidden; -} - //-----HtmlMessageBlock---------------------- HtmlMessagePart::HtmlMessagePart(ObjectTreeParser *otp, KMime::Content *node, Interface::ObjectTreeSource *source) @@ -601,6 +487,11 @@ return true; } +QString HtmlMessagePart::bodyHtml() const +{ + return mBodyHTML; +} + //-----MimeMessageBlock---------------------- MimeMessagePart::MimeMessagePart(ObjectTreeParser *otp, KMime::Content *node, bool onlyOneMimePart) @@ -696,6 +587,11 @@ return mPreferredMode; } +void AlternativeMessagePart::setPreferredMode(Util::HtmlMode preferredMode) +{ + mPreferredMode = preferredMode; +} + QList AlternativeMessagePart::availableModes() { return mChildParts.keys(); @@ -721,6 +617,11 @@ } } +const QMap &AlternativeMessagePart::childParts() const +{ + return mChildParts; +} + bool AlternativeMessagePart::isHtml() const { return mChildParts.contains(Util::MultipartHtml); @@ -773,6 +674,11 @@ return QString(); } +const GpgME::ImportResult &CertMessagePart::importResult() const +{ + return mImportResult; +} + //-----SignedMessageBlock--------------------- SignedMessagePart::SignedMessagePart(ObjectTreeParser *otp, const QString &text, const QGpgME::Protocol *cryptoProto, const QString &fromAddress, KMime::Content *node) : MessagePart(otp, text) @@ -1089,6 +995,16 @@ } } +const QGpgME::Protocol *SignedMessagePart::cryptoProto() const +{ + return mCryptoProto; +} + +QString SignedMessagePart::fromAddress() const +{ + return mFromAddress; +} + //-----CryptMessageBlock--------------------- EncryptedMessagePart::EncryptedMessagePart(ObjectTreeParser *otp, const QString &text, const QGpgME::Protocol *cryptoProto, const QString &fromAddress, KMime::Content *node) : MessagePart(otp, text) @@ -1138,6 +1054,11 @@ return partMetaData()->isDecryptable; } +bool EncryptedMessagePart::isNoSecKey() const +{ + return mNoSecKey; +} + bool EncryptedMessagePart::passphraseError() const { return mPassphraseError; @@ -1385,6 +1306,21 @@ } } +const QGpgME::Protocol *EncryptedMessagePart::cryptoProto() const +{ + return mCryptoProto; +} + +QString EncryptedMessagePart::fromAddress() const +{ + return mFromAddress; +} + +const std::vector > &EncryptedMessagePart::decryptRecipients() const +{ + return mDecryptRecipients; +} + EncapsulatedRfc822MessagePart::EncapsulatedRfc822MessagePart(ObjectTreeParser *otp, KMime::Content *node, const KMime::Message::Ptr &message) : MessagePart(otp, QString()) , mMessage(message) @@ -1421,3 +1357,8 @@ void EncapsulatedRfc822MessagePart::fix() const { } + +const KMime::Message::Ptr EncapsulatedRfc822MessagePart::message() const +{ + return mMessage; +} diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/messagepart.h kf5-messagelib-18.04.3/mimetreeparser/src/messagepart.h --- kf5-messagelib-17.12.3/mimetreeparser/src/messagepart.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/messagepart.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_MESSAGEPART_H__ -#define __MIMETREEPARSER_MESSAGEPART_H__ +#ifndef MIMETREEPARSER_MESSAGEPART_H +#define MIMETREEPARSER_MESSAGEPART_H #include "mimetreeparser_export.h" @@ -52,10 +52,8 @@ } namespace MimeTreeParser { -class ObjectTreeParser; class CryptoBodyPartMemento; class MessagePartPrivate; -class MultiPartAlternativeBodyPartFormatter; namespace Interface { class ObjectTreeSource; } @@ -68,7 +66,8 @@ Q_PROPERTY(bool isAttachment READ isAttachment) Q_PROPERTY(bool root READ isRoot) Q_PROPERTY(bool isHtml READ isHtml) - Q_PROPERTY(bool isHidden READ isHidden) + Q_PROPERTY(bool isImage READ isImage CONSTANT) + Q_PROPERTY(bool neverDisplayInline READ neverDisplayInline CONSTANT) Q_PROPERTY(QString attachmentIndex READ attachmentIndex CONSTANT) Q_PROPERTY(QString link READ attachmentLink CONSTANT) public: @@ -112,7 +111,11 @@ bool isRoot() const; virtual bool isHtml() const; - virtual bool isHidden() const; + + bool neverDisplayInline() const; + void setNeverDisplayInline(bool displayInline); + bool isImage() const; + void setIsImage(bool image); PartMetaData *partMetaData() const; @@ -146,7 +149,7 @@ public: typedef QSharedPointer Ptr; MimeMessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node, bool onlyOneMimePart); - virtual ~MimeMessagePart(); + ~MimeMessagePart() override; QString text() const override; @@ -154,8 +157,6 @@ QString htmlContent() const override; private: bool mOnlyOneMimePart; - - friend class AlternativeMessagePart; }; class MIMETREEPARSER_EXPORT MessagePartList : public MessagePart @@ -164,7 +165,7 @@ public: typedef QSharedPointer Ptr; MessagePartList(MimeTreeParser::ObjectTreeParser *otp); - virtual ~MessagePartList(); + ~MessagePartList() override; QString text() const override; @@ -181,25 +182,24 @@ class MIMETREEPARSER_EXPORT TextMessagePart : public MessagePartList { Q_OBJECT - Q_PROPERTY(bool showTextFrame READ showTextFrame CONSTANT) Q_PROPERTY(bool showLink READ showLink CONSTANT) + Q_PROPERTY(bool isFirstTextPart READ isFirstTextPart CONSTANT) + Q_PROPERTY(bool hasLabel READ hasLabel CONSTANT) Q_PROPERTY(QString label READ label CONSTANT) Q_PROPERTY(QString comment READ comment CONSTANT) public: typedef QSharedPointer Ptr; - TextMessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node, bool drawFrame, bool decryptMessage); - virtual ~TextMessagePart(); + TextMessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node, bool decryptMessage); + ~TextMessagePart() override; KMMsgSignatureState signatureState() const; KMMsgEncryptionState encryptionState() const; bool decryptMessage() const; - bool isHidden() const override; - bool showLink() const; - bool showTextFrame() const; - void setShowTextFrame(bool showFrame); + bool isFirstTextPart() const; + bool hasLabel() const; /** The attachment filename, or the closest approximation thereof we have. */ QString label() const; @@ -213,11 +213,7 @@ KMMsgSignatureState mSignatureState; KMMsgEncryptionState mEncryptionState; - bool mDrawFrame; bool mDecryptMessage; - bool mIsHidden; - - friend class ObjectTreeParser; }; class MIMETREEPARSER_EXPORT AttachmentMessagePart : public TextMessagePart @@ -225,20 +221,8 @@ Q_OBJECT public: typedef QSharedPointer Ptr; - AttachmentMessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node, bool drawFrame, bool decryptMessage); - virtual ~AttachmentMessagePart(); - - IconType asIcon() const; - bool neverDisplayInline() const; - void setNeverDisplayInline(bool displayInline); - bool isImage() const; - void setIsImage(bool image); - - bool isHidden() const override; - -private: - bool mIsImage; - bool mNeverDisplayInline; + AttachmentMessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node, bool decryptMessage); + ~AttachmentMessagePart() override; }; class MIMETREEPARSER_EXPORT HtmlMessagePart : public MessagePart @@ -247,19 +231,19 @@ public: typedef QSharedPointer Ptr; HtmlMessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node, MimeTreeParser::Interface::ObjectTreeSource *source); - virtual ~HtmlMessagePart(); + ~HtmlMessagePart() override; QString text() const override; void fix() const override; bool isHtml() const override; + QString bodyHtml() const; + private: Interface::ObjectTreeSource *mSource; QString mBodyHTML; QByteArray mCharset; - - friend class DefaultRendererPrivate; }; class MIMETREEPARSER_EXPORT AlternativeMessagePart : public MessagePart @@ -268,11 +252,12 @@ public: typedef QSharedPointer Ptr; AlternativeMessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node, Util::HtmlMode preferredMode); - virtual ~AlternativeMessagePart(); + ~AlternativeMessagePart() override; QString text() const override; Util::HtmlMode preferredMode() const; + void setPreferredMode(Util::HtmlMode preferredMode); bool isHtml() const override; @@ -282,15 +267,14 @@ QList availableModes(); void fix() const override; + + const QMap &childParts() const; + private: Util::HtmlMode mPreferredMode; QMap mChildNodes; QMap mChildParts; - - friend class DefaultRendererPrivate; - friend class ObjectTreeParser; - friend class MultiPartAlternativeBodyPartFormatter; }; class MIMETREEPARSER_EXPORT CertMessagePart : public MessagePart @@ -299,15 +283,16 @@ public: typedef QSharedPointer Ptr; CertMessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node, const QGpgME::Protocol *cryptoProto, bool autoImport); - virtual ~CertMessagePart(); + ~CertMessagePart() override; QString text() const override; + const GpgME::ImportResult &importResult() const; + private: bool mAutoImport; GpgME::ImportResult mImportResult; const QGpgME::Protocol *mCryptoProto; - friend class DefaultRendererPrivate; }; class MIMETREEPARSER_EXPORT EncapsulatedRfc822MessagePart : public MessagePart @@ -316,15 +301,16 @@ public: typedef QSharedPointer Ptr; EncapsulatedRfc822MessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node, const KMime::Message::Ptr &message); - virtual ~EncapsulatedRfc822MessagePart(); + ~EncapsulatedRfc822MessagePart() override; QString text() const override; void fix() const override; + + const KMime::Message::Ptr message() const; + private: const KMime::Message::Ptr mMessage; - - friend class DefaultRendererPrivate; }; class MIMETREEPARSER_EXPORT EncryptedMessagePart : public MessagePart @@ -332,12 +318,13 @@ Q_OBJECT Q_PROPERTY(bool decryptMessage READ decryptMessage WRITE setDecryptMessage) Q_PROPERTY(bool isEncrypted READ isEncrypted) + Q_PROPERTY(bool isNoSecKey READ isNoSecKey) Q_PROPERTY(bool passphraseError READ passphraseError) public: typedef QSharedPointer Ptr; EncryptedMessagePart(ObjectTreeParser *otp, const QString &text, const QGpgME::Protocol *cryptoProto, const QString &fromAddress, KMime::Content *node); - virtual ~EncryptedMessagePart(); + ~EncryptedMessagePart() override; QString text() const override; @@ -349,6 +336,7 @@ bool isDecryptable() const; + bool isNoSecKey() const; bool passphraseError() const; void startDecryption(const QByteArray &text, const QTextCodec *aCodec); @@ -359,6 +347,11 @@ QString plaintextContent() const override; QString htmlContent() const override; + const QGpgME::Protocol *cryptoProto() const; + QString fromAddress() const; + + const std::vector > &decryptRecipients() const; + private: /** Handles the dectyptioon of a given content * returns true if the decryption was successfull @@ -375,7 +368,6 @@ QByteArray mVerifiedText; std::vector > mDecryptRecipients; - friend class DefaultRendererPrivate; friend class EncryptedBodyPartFormatter; }; @@ -387,7 +379,7 @@ typedef QSharedPointer Ptr; SignedMessagePart(ObjectTreeParser *otp, const QString &text, const QGpgME::Protocol *cryptoProto, const QString &fromAddress, KMime::Content *node); - virtual ~SignedMessagePart(); + ~SignedMessagePart() override; void setIsSigned(bool isSigned); bool isSigned() const; @@ -401,6 +393,9 @@ QString plaintextContent() const override; QString htmlContent() const override; + const QGpgME::Protocol *cryptoProto() const; + QString fromAddress() const; + private: /** Handles the verification of data * If signature is empty it is handled as inline signature otherwise as detached signature mode. @@ -418,8 +413,7 @@ QByteArray mVerifiedText; friend EncryptedMessagePart; - friend class DefaultRendererPrivate; }; } -#endif //__MIMETREEPARSER_MESSAGEPART_H__ +#endif //__MIMETREEPARSER_MESSAGEPART_H diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/nodehelper.cpp kf5-messagelib-18.04.3/mimetreeparser/src/nodehelper.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/nodehelper.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/nodehelper.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -209,6 +209,29 @@ mPartMetaDatas.insert(node, metaData); } +QString NodeHelper::writeFileToTempFile(KMime::Content *node, const QString &filename) +{ + QString fname = createTempDir(persistentIndex(node)); + if (fname.isEmpty()) { + return QString(); + } + fname += QLatin1Char('/') + filename; + QFile f(fname); + if (!f.open(QIODevice::ReadWrite)) { + qCWarning(MIMETREEPARSER_LOG) << "Failed to write note to file:" << f.errorString(); + mAttachmentFilesDir->addTempFile(fname); + return QString(); + } + f.write(QByteArray()); + mAttachmentFilesDir->addTempFile(fname); + // make file read-only so that nobody gets the impression that he might + // edit attached files (cf. bug #52813) + f.setPermissions(QFileDevice::ReadUser); + f.close(); + + return fname; +} + QString NodeHelper::writeNodeToTempFile(KMime::Content *node) { // If the message part is already written to a file, no point in doing it again. @@ -244,6 +267,7 @@ QFile f(fname); if (!f.open(QIODevice::ReadWrite)) { qCWarning(MIMETREEPARSER_LOG) << "Failed to write note to file:" << f.errorString(); + mAttachmentFilesDir->addTempFile(fname); return QString(); } f.write(data); @@ -291,6 +315,7 @@ // Not there or not writable if (!QDir().mkpath(fname) || !fFile.setPermissions(QFileDevice::WriteUser | QFileDevice::ReadUser | QFileDevice::ExeUser)) { + mAttachmentFilesDir->addTempDir(fname); return QString(); //failed create } } @@ -756,7 +781,7 @@ // According to http://www.iana.org/assignments/character-sets, uppercase is // preferred in MIME headers const QString returnEncodingToUpper = returnEncoding.toUpper(); - if (returnEncodingToUpper.contains(QStringLiteral("ISO "))) { + if (returnEncodingToUpper.contains(QLatin1String("ISO "))) { returnEncoding = returnEncodingToUpper; returnEncoding.replace(QLatin1String("ISO "), QStringLiteral("ISO-")); } diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/nodehelper.h kf5-messagelib-18.04.3/mimetreeparser/src/nodehelper.h --- kf5-messagelib-17.12.3/mimetreeparser/src/nodehelper.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/nodehelper.h 2018-07-06 05:43:41.000000000 +0000 @@ -17,8 +17,8 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_NODEHELPER_H__ -#define __MIMETREEPARSER_NODEHELPER_H__ +#ifndef MIMETREEPARSER_NODEHELPER_H +#define MIMETREEPARSER_NODEHELPER_H #include "mimetreeparser_export.h" @@ -122,6 +122,8 @@ */ QString writeNodeToTempFile(KMime::Content *node); + QString writeFileToTempFile(KMime::Content *node, const QString &filename); + /** * Returns the temporary file path and name where this node was saved, or an empty url * if it wasn't saved yet with writeNodeToTempFile() diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/objecttreeparser.cpp kf5-messagelib-18.04.3/mimetreeparser/src/objecttreeparser.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/objecttreeparser.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/objecttreeparser.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -36,7 +36,6 @@ #include "objecttreeparser.h" -#include "attachmentstrategy.h" #include "bodypartformatterfactory.h" #include "nodehelper.h" #include "messagepart.h" @@ -46,7 +45,6 @@ #include "bodyformatter/utils.h" #include "interfaces/bodypartformatter.h" -#include "interfaces/htmlwriter.h" #include "utils/util.h" #include @@ -60,28 +58,22 @@ using namespace MimeTreeParser; -ObjectTreeParser::ObjectTreeParser(const ObjectTreeParser *topLevelParser, bool showOnlyOneMimePart, const AttachmentStrategy *strategy) +ObjectTreeParser::ObjectTreeParser(const ObjectTreeParser *topLevelParser) : mSource(topLevelParser->mSource) , mNodeHelper(topLevelParser->mNodeHelper) - , mHtmlWriter(topLevelParser->mHtmlWriter) , mTopLevelContent(topLevelParser->mTopLevelContent) - , mShowOnlyOneMimePart(showOnlyOneMimePart) , mHasPendingAsyncJobs(false) , mAllowAsync(topLevelParser->mAllowAsync) - , mAttachmentStrategy(strategy) { init(); } -ObjectTreeParser::ObjectTreeParser(Interface::ObjectTreeSource *source, MimeTreeParser::NodeHelper *nodeHelper, bool showOnlyOneMimePart, const AttachmentStrategy *strategy) +ObjectTreeParser::ObjectTreeParser(Interface::ObjectTreeSource *source, MimeTreeParser::NodeHelper *nodeHelper) : mSource(source) , mNodeHelper(nodeHelper) - , mHtmlWriter(nullptr) , mTopLevelContent(nullptr) - , mShowOnlyOneMimePart(showOnlyOneMimePart) , mHasPendingAsyncJobs(false) , mAllowAsync(false) - , mAttachmentStrategy(strategy) { init(); } @@ -89,9 +81,6 @@ void ObjectTreeParser::init() { Q_ASSERT(mSource); - if (!attachmentStrategy()) { - mAttachmentStrategy = mSource->attachmentStrategy(); - } if (!mNodeHelper) { mNodeHelper = new NodeHelper(); @@ -104,13 +93,9 @@ ObjectTreeParser::ObjectTreeParser(const ObjectTreeParser &other) : mSource(other.mSource) , mNodeHelper(other.nodeHelper()) - , //TODO(Andras) hm, review what happens if mDeleteNodeHelper was true in the source - mHtmlWriter(other.mHtmlWriter) , mTopLevelContent(other.mTopLevelContent) - , mShowOnlyOneMimePart(other.showOnlyOneMimePart()) , mHasPendingAsyncJobs(other.hasPendingAsyncJobs()) , mAllowAsync(other.allowAsync()) - , mAttachmentStrategy(other.attachmentStrategy()) , mDeleteNodeHelper(false) { } @@ -163,10 +148,10 @@ //----------------------------------------------------------------------------- -void ObjectTreeParser::parseObjectTree(KMime::Content *node) +void ObjectTreeParser::parseObjectTree(KMime::Content *node, bool parseOnlySingleNode) { mTopLevelContent = node; - mParsedPart = parseObjectTreeInternal(node, showOnlyOneMimePart()); + mParsedPart = parseObjectTreeInternal(node, parseOnlySingleNode); if (mParsedPart) { mParsedPart->fix(); @@ -174,16 +159,14 @@ if (auto _mp = mp.dynamicCast()) { extractNodeInfos(_mp->content(), true); } else if (auto _mp = mp.dynamicCast()) { - if (_mp->mChildNodes.contains(Util::MultipartPlain)) { - extractNodeInfos(_mp->mChildNodes[Util::MultipartPlain], true); + if (_mp->childParts().contains(Util::MultipartPlain)) { + extractNodeInfos(_mp->childParts()[Util::MultipartPlain]->content(), true); } } setPlainTextContent(mp->text()); } - if (htmlWriter()) { - mSource->render(mParsedPart, htmlWriter()); - } + mSource->render(mParsedPart, parseOnlySingleNode); } } @@ -198,10 +181,6 @@ Q_ASSERT(!formatters.empty()); for (auto formatter : formatters) { PartNodeBodyPart part(this, &processResult, mTopLevelContent, node, mNodeHelper); - // Set the default display strategy for this body part relying on the - // identity of Interface::BodyPart::Display and AttachmentStrategy::Display - part.setDefaultDisplay((Interface::BodyPart::Display)attachmentStrategy()->defaultDisplay(node)); - mNodeHelper->setNodeDisplayedEmbedded(node, true); const MessagePart::Ptr result = formatter->process(part); @@ -356,29 +335,6 @@ return mHtmlContentCharset; } -bool ObjectTreeParser::showOnlyOneMimePart() const -{ - return mShowOnlyOneMimePart; -} - -void ObjectTreeParser::setShowOnlyOneMimePart(bool show) -{ - mShowOnlyOneMimePart = show; -} - -const AttachmentStrategy *ObjectTreeParser::attachmentStrategy() const -{ - return mAttachmentStrategy; -} - -HtmlWriter *ObjectTreeParser::htmlWriter() const -{ - if (mHtmlWriter) { - return mHtmlWriter; - } - return mSource->htmlWriter(); -} - MimeTreeParser::NodeHelper *ObjectTreeParser::nodeHelper() const { return mNodeHelper; diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/objecttreeparser.h kf5-messagelib-18.04.3/mimetreeparser/src/objecttreeparser.h --- kf5-messagelib-17.12.3/mimetreeparser/src/objecttreeparser.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/objecttreeparser.h 2018-07-06 05:43:41.000000000 +0000 @@ -31,8 +31,8 @@ your version. */ -#ifndef __MIMETREEPARSER_OBJECTTREEPARSER_H__ -#define __MIMETREEPARSER_OBJECTTREEPARSER_H__ +#ifndef MIMETREEPARSER_OBJECTTREEPARSER_H +#define MIMETREEPARSER_OBJECTTREEPARSER_H #include "mimetreeparser_export.h" @@ -50,8 +50,6 @@ namespace MimeTreeParser { class PartMetaData; class ViewerPrivate; -class HtmlWriter; -class AttachmentStrategy; class NodeHelper; class MessagePart; class MimeMessagePart; @@ -247,7 +245,7 @@ External plugins are loaded with loadPlugins() in bodypartformatterfactory.cpp. External plugins can only use the classes in the interfaces/ directory, they include BodyPart, BodyPartMemento, -BodyPartFormatterPlugin, BodyPartFormatter, BodyPartURLHandler, HtmlWriter and URLHandler. Therefore +BodyPartFormatterPlugin, BodyPartFormatter, BodyPartURLHandler and URLHandler. Therefore external plugins have powerful capabilities, which are needed for example in the iCal formatter or in the vCard formatter. @@ -270,9 +268,9 @@ ObjectTreeParser(const ObjectTreeParser &other); public: - explicit ObjectTreeParser(Interface::ObjectTreeSource *source, NodeHelper *nodeHelper = nullptr, bool showOneMimePart = false, const AttachmentStrategy *attachmentStrategy = nullptr); + explicit ObjectTreeParser(Interface::ObjectTreeSource *source, NodeHelper *nodeHelper = nullptr); - explicit ObjectTreeParser(const ObjectTreeParser *topLevelParser, bool showOneMimePart = false, const AttachmentStrategy *attachmentStrategy = nullptr); + explicit ObjectTreeParser(const ObjectTreeParser *topLevelParser); virtual ~ObjectTreeParser(); void setAllowAsync(bool allow); @@ -304,18 +302,11 @@ QByteArray plainTextContentCharset() const; QByteArray htmlContentCharset() const; - bool showOnlyOneMimePart() const; - void setShowOnlyOneMimePart(bool show); - - const AttachmentStrategy *attachmentStrategy() const; - - HtmlWriter *htmlWriter() const; - NodeHelper *nodeHelper() const; /** Parse beginning at a given node and recursively parsing the children of that node and it's next sibling. */ - void parseObjectTree(KMime::Content *node); + void parseObjectTree(KMime::Content *node, bool parseOnlySingleNode = false); MessagePartPtr parsedPart() const; private: @@ -341,7 +332,6 @@ private: Interface::ObjectTreeSource *mSource; NodeHelper *mNodeHelper; - HtmlWriter *mHtmlWriter; QByteArray mPlainTextContentCharset; QByteArray mHtmlContentCharset; QString mPlainTextContent; @@ -363,7 +353,6 @@ bool mHasPendingAsyncJobs; bool mAllowAsync; - const AttachmentStrategy *mAttachmentStrategy; // DataUrl Icons cache QString mCollapseIcon; QString mExpandIcon; @@ -380,4 +369,4 @@ }; } -#endif // __MIMETREEPARSER_OBJECTTREEPARSER_H__ +#endif // MIMETREEPARSER_OBJECTTREEPARSER_H diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/partmetadata.h kf5-messagelib-18.04.3/mimetreeparser/src/partmetadata.h --- kf5-messagelib-17.12.3/mimetreeparser/src/partmetadata.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/partmetadata.h 2018-07-06 05:43:41.000000000 +0000 @@ -13,8 +13,8 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US */ -#ifndef __MIMETREEPARSER_PARTMETADATA_H__ -#define __MIMETREEPARSER_PARTMETADATA_H__ +#ifndef MIMETREEPARSER_PARTMETADATA_H +#define MIMETREEPARSER_PARTMETADATA_H #include "mimetreeparser_export.h" @@ -63,4 +63,4 @@ }; } -#endif // __MIMETREEPARSER_PARTMETADATA_H__ +#endif // MIMETREEPARSER_PARTMETADATA_H diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/partnodebodypart.cpp kf5-messagelib-18.04.3/mimetreeparser/src/partnodebodypart.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/partnodebodypart.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/partnodebodypart.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -43,7 +43,6 @@ : Interface::BodyPart() , mTopLevelContent(topLevelContent) , mContent(content) - , mDefaultDisplay(Interface::BodyPart::None) , mNodeHelper(nodeHelper) , mObjectTreeParser(otp) , mProcessResult(result) @@ -58,17 +57,32 @@ return mNodeHelper->bodyPartMemento(mContent, "__plugin__"); } -Interface::BodyPart::Display PartNodeBodyPart::defaultDisplay() const +Interface::ObjectTreeSource *PartNodeBodyPart::source() const { - return mDefaultDisplay; + return mObjectTreeParser->mSource; } -void PartNodeBodyPart::setDefaultDisplay(Interface::BodyPart::Display d) +KMime::Content *PartNodeBodyPart::content() const { - mDefaultDisplay = d; + return mContent; } -Interface::ObjectTreeSource *PartNodeBodyPart::source() const +KMime::Content *PartNodeBodyPart::topLevelContent() const { - return mObjectTreeParser->mSource; + return mTopLevelContent; +} + +NodeHelper *PartNodeBodyPart::nodeHelper() const +{ + return mNodeHelper; +} + +ObjectTreeParser *PartNodeBodyPart::objectTreeParser() const +{ + return mObjectTreeParser; +} + +ProcessResult *PartNodeBodyPart::processResult() const +{ + return mProcessResult; } diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/partnodebodypart.h kf5-messagelib-18.04.3/mimetreeparser/src/partnodebodypart.h --- kf5-messagelib-17.12.3/mimetreeparser/src/partnodebodypart.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/partnodebodypart.h 2018-07-06 05:43:41.000000000 +0000 @@ -31,8 +31,8 @@ your version. */ -#ifndef __MIMETREEPARSER_PARTNODEBODYPART_H__ -#define __MIMETREEPARSER_PARTNODEBODYPART_H__ +#ifndef MIMETREEPARSER_PARTNODEBODYPART_H +#define MIMETREEPARSER_PARTNODEBODYPART_H #include "mimetreeparser_export.h" #include "mimetreeparser/bodypart.h" @@ -55,42 +55,20 @@ explicit PartNodeBodyPart(ObjectTreeParser *otp, ProcessResult *result, KMime::Content *topLevelContent, KMime::Content *content, NodeHelper *nodeHelper); Interface::BodyPartMemento *memento() const override; - BodyPart::Display defaultDisplay() const override; - void setDefaultDisplay(BodyPart::Display); - KMime::Content *content() const override - { - return mContent; - } - - KMime::Content *topLevelContent() const override - { - return mTopLevelContent; - } - - NodeHelper *nodeHelper() const override - { - return mNodeHelper; - } - - ObjectTreeParser *objectTreeParser() const override - { - return mObjectTreeParser; - } - - ProcessResult *processResult() const override - { - return mProcessResult; - } + KMime::Content *content() const override; + KMime::Content *topLevelContent() const override; + ProcessResult *processResult() const override; + NodeHelper *nodeHelper() const override; + ObjectTreeParser *objectTreeParser() const override; Interface::ObjectTreeSource *source() const override; private: KMime::Content *mTopLevelContent = nullptr; KMime::Content *mContent = nullptr; - BodyPart::Display mDefaultDisplay; NodeHelper *mNodeHelper = nullptr; ObjectTreeParser *mObjectTreeParser = nullptr; ProcessResult *mProcessResult = nullptr; }; } -#endif // __MIMETREEPARSER_PARTNODEBODYPART_H__ +#endif // MIMETREEPARSER_PARTNODEBODYPART_H diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/simpleobjecttreesource.cpp kf5-messagelib-18.04.3/mimetreeparser/src/simpleobjecttreesource.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/simpleobjecttreesource.cpp 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/simpleobjecttreesource.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,82 @@ +/* + Copyright (C) 2017 Sandro Kanuß + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +#include "simpleobjecttreesource.h" + +#include +#include +#include + +using namespace MimeTreeParser; + +namespace MimeTreeParser { +class SimpleObjectTreeSourcePrivate +{ +public: + bool mDecryptMessage = false; +}; +} + +SimpleObjectTreeSource::SimpleObjectTreeSource() + : d(new SimpleObjectTreeSourcePrivate) +{ +} + +SimpleObjectTreeSource::~SimpleObjectTreeSource() = default; + +bool SimpleObjectTreeSource::autoImportKeys() const +{ + return true; +} + +const BodyPartFormatterFactory *SimpleObjectTreeSource::bodyPartFormatterFactory() +{ + return BodyPartFormatterFactory::instance(); +} + +bool SimpleObjectTreeSource::decryptMessage() const +{ + return d->mDecryptMessage; +} + +void SimpleObjectTreeSource::setDecryptMessage(bool decryptMessage) +{ + d->mDecryptMessage = decryptMessage; +} + +MimeTreeParser::Util::HtmlMode SimpleObjectTreeSource::preferredMode() const +{ + return Util::Html; +} + +const QTextCodec *SimpleObjectTreeSource::overrideCodec() +{ + return nullptr; +} + +void SimpleObjectTreeSource::setHtmlMode(MimeTreeParser::Util::HtmlMode mode, const QList &availableModes) +{ + Q_UNUSED(mode); + Q_UNUSED(availableModes); +} + +void SimpleObjectTreeSource::render(const MessagePart::Ptr &msgPart, bool showOnlyOneMimePart) +{ + Q_UNUSED(msgPart); + Q_UNUSED(showOnlyOneMimePart); +} diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/simpleobjecttreesource.h kf5-messagelib-18.04.3/mimetreeparser/src/simpleobjecttreesource.h --- kf5-messagelib-17.12.3/mimetreeparser/src/simpleobjecttreesource.h 1970-01-01 00:00:00.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/simpleobjecttreesource.h 2018-07-06 05:43:41.000000000 +0000 @@ -0,0 +1,57 @@ +/* + Copyright (C) 2017 Sandro Kanuß + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. +*/ + +#ifndef MIMETREEPARSER_SIMPLEOBJECTTREESOURCE_H +#define MIMETREEPARSER_SIMPLEOBJECTTREESOURCE_H + +#include "mimetreeparser/objecttreesource.h" + +#include + +namespace MimeTreeParser { +class SimpleObjectTreeSourcePrivate; + +/** + * A very simple ObjectTreeSource. + * mostly used in tests and outside the read redering + */ +class MIMETREEPARSER_EXPORT SimpleObjectTreeSource : public Interface::ObjectTreeSource +{ +public: + SimpleObjectTreeSource(); + ~SimpleObjectTreeSource() override; + + bool autoImportKeys() const override; + + const BodyPartFormatterFactory *bodyPartFormatterFactory() override; + bool decryptMessage() const override; + void setDecryptMessage(bool decryptMessage); + + void setHtmlMode(MimeTreeParser::Util::HtmlMode mode, const QList &availableModes) override; + MimeTreeParser::Util::HtmlMode preferredMode() const override; + + const QTextCodec *overrideCodec() override; + + void render(const MessagePartPtr &msgPart, bool showOnlyOneMimePart) override; + +private: + std::unique_ptr d; +}; +} +#endif diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/temporaryfile/attachmenttemporaryfilesdirs.cpp kf5-messagelib-18.04.3/mimetreeparser/src/temporaryfile/attachmenttemporaryfilesdirs.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/temporaryfile/attachmenttemporaryfilesdirs.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/temporaryfile/attachmenttemporaryfilesdirs.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2017 Montel Laurent + Copyright (c) 2013-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/temporaryfile/attachmenttemporaryfilesdirs.h kf5-messagelib-18.04.3/mimetreeparser/src/temporaryfile/attachmenttemporaryfilesdirs.h --- kf5-messagelib-17.12.3/mimetreeparser/src/temporaryfile/attachmenttemporaryfilesdirs.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/temporaryfile/attachmenttemporaryfilesdirs.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2017 Montel Laurent + Copyright (c) 2013-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/temporaryfile/autotests/attachmenttemporaryfilesdirstest.cpp kf5-messagelib-18.04.3/mimetreeparser/src/temporaryfile/autotests/attachmenttemporaryfilesdirstest.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/temporaryfile/autotests/attachmenttemporaryfilesdirstest.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/temporaryfile/autotests/attachmenttemporaryfilesdirstest.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/temporaryfile/autotests/attachmenttemporaryfilesdirstest.h kf5-messagelib-18.04.3/mimetreeparser/src/temporaryfile/autotests/attachmenttemporaryfilesdirstest.h --- kf5-messagelib-17.12.3/mimetreeparser/src/temporaryfile/autotests/attachmenttemporaryfilesdirstest.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/temporaryfile/autotests/attachmenttemporaryfilesdirstest.h 2018-07-06 05:43:41.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2014-2017 Montel Laurent + Copyright (c) 2014-2018 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/utils/util.cpp kf5-messagelib-18.04.3/mimetreeparser/src/utils/util.cpp --- kf5-messagelib-17.12.3/mimetreeparser/src/utils/util.cpp 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/utils/util.cpp 2018-07-06 05:43:41.000000000 +0000 @@ -27,6 +27,7 @@ #include #include +using namespace MimeTreeParser; using namespace MimeTreeParser::Util; bool MimeTreeParser::Util::isTypeBlacklisted(KMime::Content *node) @@ -127,10 +128,28 @@ QByteArray mimeType = node->contentType()->mimeType(); if (mimeType.isNull() || mimeType == "application/octet-stream") { - const QString mime = mimetype(node->contentDisposition()->filename()).name(); + const QString mime = MimeTreeParser::Util::mimetype(node->contentDisposition()->filename()).name(); mimeType = mime.toLatin1(); } mimeType = mimeType.toLower(); - return iconNameForMimetype(QLatin1String(mimeType), node->contentDisposition()->filename(), + return MimeTreeParser::Util::iconNameForMimetype(QLatin1String(mimeType), node->contentDisposition()->filename(), node->contentType()->name()); } + +QString MimeTreeParser::Util::htmlModeToString(HtmlMode mode) +{ + switch (mode) { + case Normal: ///< A normal plaintext message, non-multipart + return QStringLiteral("Normal PlainText Message, non-multipart"); + case Html: ///< A HTML message, non-multipart + return QStringLiteral("A HTML message, non-multipart"); + case MultipartPlain: ///< A multipart/alternative message, the plain text part is currently displayed + return QStringLiteral("A multipart/alternative message, the plain text part is currently displayed"); + case MultipartHtml: ///< A multipart/altervative message, the HTML part is currently displayed + return QStringLiteral("A multipart/alternative message, the HTML part is currently displayed"); + case MultipartIcal: ///< A multipart/altervative message, the ICal part is currently displayed + return QStringLiteral("A multipart/alternative message, the ICal part is currently displayed"); + + } + return {}; +} diff -Nru kf5-messagelib-17.12.3/mimetreeparser/src/utils/util.h kf5-messagelib-18.04.3/mimetreeparser/src/utils/util.h --- kf5-messagelib-17.12.3/mimetreeparser/src/utils/util.h 2018-02-26 05:42:50.000000000 +0000 +++ kf5-messagelib-18.04.3/mimetreeparser/src/utils/util.h 2018-07-06 05:43:41.000000000 +0000 @@ -16,8 +16,8 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifndef __MIMETREEPARSER_UTILS_UTIL_H__ -#define __MIMETREEPARSER_UTILS_UTIL_H__ +#ifndef MIMETREEPARSER_UTILS_UTIL_H +#define MIMETREEPARSER_UTILS_UTIL_H #include "mimetreeparser_export.h" @@ -47,15 +47,17 @@ MultipartIcal ///< A multipart/altervative message, the ICal part is currently displayed }; -bool MIMETREEPARSER_EXPORT isTypeBlacklisted(KMime::Content *node); +MIMETREEPARSER_EXPORT QString htmlModeToString(Util::HtmlMode mode); -QString MIMETREEPARSER_EXPORT labelForContent(KMime::Content *node); +MIMETREEPARSER_EXPORT bool isTypeBlacklisted(KMime::Content *node); -QMimeType MIMETREEPARSER_EXPORT mimetype(const QString &name); +MIMETREEPARSER_EXPORT QString labelForContent(KMime::Content *node); -QString MIMETREEPARSER_EXPORT iconNameForMimetype(const QString &mimeType, const QString &fallbackFileName1 = QString(), const QString &fallbackFileName2 = QString()); +MIMETREEPARSER_EXPORT QMimeType mimetype(const QString &name); -QString MIMETREEPARSER_EXPORT iconNameForContent(KMime::Content *node); +MIMETREEPARSER_EXPORT QString iconNameForMimetype(const QString &mimeType, const QString &fallbackFileName1 = QString(), const QString &fallbackFileName2 = QString()); + +MIMETREEPARSER_EXPORT QString iconNameForContent(KMime::Content *node); } } diff -Nru kf5-messagelib-17.12.3/po/ar/libmessagecomposer.po kf5-messagelib-18.04.3/po/ar/libmessagecomposer.po --- kf5-messagelib-17.12.3/po/ar/libmessagecomposer.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/ar/libmessagecomposer.po 2018-07-10 00:15:57.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-11-29 08:30+0100\n" +"POT-Creation-Date: 2018-03-21 06:23+0100\n" "PO-Revision-Date: 2017-09-01 19:41+0300\n" "Last-Translator: Safa Alfulaij \n" "Language-Team: Arabic \n" @@ -94,7 +94,7 @@ msgstr "أرفق" #: attachment/attachmentcontrollerbase.cpp:460 -#: composer/composerviewbase.cpp:1706 +#: composer/composerviewbase.cpp:1698 #, kde-format msgid "&Attach File..." msgstr "أر&فق ملفّات..." @@ -187,41 +187,41 @@ msgid "Reload" msgstr "أعد التّحميل" -#: attachment/attachmentcontrollerbase.cpp:658 -#: attachment/attachmentcontrollerbase.cpp:687 -#: attachment/attachmentcontrollerbase.cpp:745 +#: attachment/attachmentcontrollerbase.cpp:657 +#: attachment/attachmentcontrollerbase.cpp:686 +#: attachment/attachmentcontrollerbase.cpp:743 #, kde-format msgid "KMail was unable to write the attachment to a temporary file." msgstr "تعذّر على «بريدك» كتابة المرفق في ملفّ مؤقّت." -#: attachment/attachmentcontrollerbase.cpp:659 -#: attachment/attachmentcontrollerbase.cpp:688 -#: attachment/attachmentcontrollerbase.cpp:705 +#: attachment/attachmentcontrollerbase.cpp:658 +#: attachment/attachmentcontrollerbase.cpp:687 +#: attachment/attachmentcontrollerbase.cpp:704 #, kde-format msgid "Unable to open attachment" msgstr "تعذّر فتح المرفق" -#: attachment/attachmentcontrollerbase.cpp:704 +#: attachment/attachmentcontrollerbase.cpp:703 #, kde-format msgid "KMail was unable to open the attachment." msgstr "تعذّر على «بريدك» فتح المرفق." -#: attachment/attachmentcontrollerbase.cpp:746 +#: attachment/attachmentcontrollerbase.cpp:744 #, kde-format msgid "Unable to edit attachment" msgstr "تعذّر تحرير المرفق" -#: attachment/attachmentcontrollerbase.cpp:788 +#: attachment/attachmentcontrollerbase.cpp:786 #, kde-format msgid "unnamed" msgstr "غير مسمًّى" -#: attachment/attachmentcontrollerbase.cpp:791 +#: attachment/attachmentcontrollerbase.cpp:789 #, kde-format msgid "Save Attachment As" msgstr "احفظ المرفق ك‍" -#: attachment/attachmentcontrollerbase.cpp:814 +#: attachment/attachmentcontrollerbase.cpp:812 #, kde-format msgid "" "File %1 exists.\n" @@ -230,53 +230,53 @@ "الملفّ %1 موجود.\n" "أتريد استبداله؟" -#: attachment/attachmentcontrollerbase.cpp:814 +#: attachment/attachmentcontrollerbase.cpp:812 #, kde-format msgid "Save to File" msgstr "احفظه في ملفّ" -#: attachment/attachmentcontrollerbase.cpp:814 +#: attachment/attachmentcontrollerbase.cpp:812 #, kde-format msgid "&Replace" msgstr "ا&ستبدله" -#: attachment/attachmentcontrollerbase.cpp:841 -#: attachment/attachmentcontrollerbase.cpp:900 +#: attachment/attachmentcontrollerbase.cpp:839 +#: attachment/attachmentcontrollerbase.cpp:898 #, kde-format msgid "Do you really want to attach this directory \"%1\"?" msgstr "أمتأكّد من إرفاق هذا الدّليل ”%1“؟" -#: attachment/attachmentcontrollerbase.cpp:842 -#: attachment/attachmentcontrollerbase.cpp:901 +#: attachment/attachmentcontrollerbase.cpp:840 +#: attachment/attachmentcontrollerbase.cpp:899 #, kde-format msgctxt "@title:window" msgid "Attach directory" msgstr "إرفاق دليل" -#: attachment/attachmentcontrollerbase.cpp:877 +#: attachment/attachmentcontrollerbase.cpp:875 #, kde-format msgctxt "@title:window" msgid "Attach Directory" msgstr "إرفاق دليل" -#: attachment/attachmentcontrollerbase.cpp:889 +#: attachment/attachmentcontrollerbase.cpp:887 #, kde-format msgctxt "@title:window" msgid "Attach File" msgstr "إرفاق ملفّ" -#: attachment/attachmentcontrollerbase.cpp:929 +#: attachment/attachmentcontrollerbase.cpp:927 #, kde-format msgctxt "@title:window" msgid "Failed to attach file" msgstr "فشل إرفاق الملفّ" -#: attachment/attachmentcontrollerbase.cpp:952 +#: attachment/attachmentcontrollerbase.cpp:950 #, kde-format msgid "Attach Public OpenPGP Key" msgstr "أرفق مفتاح OpenPGP العموميّ" -#: attachment/attachmentcontrollerbase.cpp:953 +#: attachment/attachmentcontrollerbase.cpp:951 #, kde-format msgid "Select the public key which should be attached." msgstr "اختر المفتاح العموميّ الذي سيُرفق." @@ -340,80 +340,80 @@ msgid "Suggest Automatic Display" msgstr "" -#: composer/composer.cpp:274 +#: composer/composer.cpp:263 #, kde-format msgid "No key data for recipients found." msgstr "لم يُعثر على بيانات المفاتيح للمستلمين." -#: composer/composerviewbase.cpp:317 +#: composer/composerviewbase.cpp:308 #, kde-format msgid "&Keep markup, do not sign/encrypt" msgstr "" -#: composer/composerviewbase.cpp:318 +#: composer/composerviewbase.cpp:309 #, kde-format msgid "&Keep markup, do not encrypt" msgstr "" -#: composer/composerviewbase.cpp:319 +#: composer/composerviewbase.cpp:310 #, kde-format msgid "&Keep markup, do not sign" msgstr "" -#: composer/composerviewbase.cpp:321 +#: composer/composerviewbase.cpp:312 #, kde-format msgid "Sign/Encrypt (delete markup)" msgstr "" -#: composer/composerviewbase.cpp:322 +#: composer/composerviewbase.cpp:313 #, kde-format msgid "Encrypt (delete markup)" msgstr "" -#: composer/composerviewbase.cpp:323 +#: composer/composerviewbase.cpp:314 #, kde-format msgid "Sign (delete markup)" msgstr "" -#: composer/composerviewbase.cpp:325 +#: composer/composerviewbase.cpp:316 #, kde-format msgid "" "

    Inline signing/encrypting of HTML messages is not possible;

    do " "you want to delete your markup?

    " msgstr "" -#: composer/composerviewbase.cpp:327 +#: composer/composerviewbase.cpp:318 #, kde-format msgid "Sign/Encrypt Message?" msgstr "أأوقّع/أعمّي الرّسالة؟" -#: composer/composerviewbase.cpp:488 +#: composer/composerviewbase.cpp:479 #, kde-format msgid "It was not possible to create a message composer." msgstr "تعذّر إنشاء محرّر رسائل." -#: composer/composerviewbase.cpp:497 +#: composer/composerviewbase.cpp:488 #, kde-format msgid "Do you want to resize images?" msgstr "أتريد تغيير حجم الصّور؟" -#: composer/composerviewbase.cpp:498 +#: composer/composerviewbase.cpp:489 #, kde-format msgid "Auto Resize Images" msgstr "غيّر حجم الصّور آليًّا" -#: composer/composerviewbase.cpp:677 composer/composerviewbase.cpp:691 -#: composer/composerviewbase.cpp:712 +#: composer/composerviewbase.cpp:668 composer/composerviewbase.cpp:682 +#: composer/composerviewbase.cpp:703 #, kde-format msgid "Failed to resolve keys. Please report a bug." msgstr "تعذّر حلّ المفاتيح. رجاءً أبلغ عن علّة." -#: composer/composerviewbase.cpp:897 composer/composerviewbase.cpp:1165 +#: composer/composerviewbase.cpp:888 composer/composerviewbase.cpp:1156 #, kde-format msgid "Job cancelled by the user" msgstr "ألغى المستخدم المهمّة" -#: composer/composerviewbase.cpp:902 +#: composer/composerviewbase.cpp:893 #, kde-format msgid "" "Could not compose message: %1 \n" @@ -422,37 +422,37 @@ "تعذّر إنشاء الرّسالة: %1\n" "رجاءً أبلغ عن علّة." -#: composer/composerviewbase.cpp:904 +#: composer/composerviewbase.cpp:895 #, kde-format msgid "Could not compose message: %1" msgstr "تعذّر إنشاء الرّسالة: %1" -#: composer/composerviewbase.cpp:980 +#: composer/composerviewbase.cpp:971 #, fuzzy, kde-format msgid "There were problems trying to queue the message for sending: %1" msgstr "حدثت مشاكل أثناء محاولة صفّ الرّسالة لإرسالها: %1" -#: composer/composerviewbase.cpp:1168 +#: composer/composerviewbase.cpp:1159 #, kde-format msgid "Could not autosave message: %1" msgstr "تعذّر حفظ الرّسالة آليًّا: %1" -#: composer/composerviewbase.cpp:1188 +#: composer/composerviewbase.cpp:1179 #, kde-format msgid "Could not write all data to file." msgstr "تعذّرت كتابة كلّ البيانات في الملفّ." -#: composer/composerviewbase.cpp:1191 +#: composer/composerviewbase.cpp:1182 #, kde-format msgid "Could not finalize the file." msgstr "" -#: composer/composerviewbase.cpp:1195 +#: composer/composerviewbase.cpp:1186 #, kde-format msgid "Could not open file." msgstr "تعذّر فتح الملفّ." -#: composer/composerviewbase.cpp:1201 +#: composer/composerviewbase.cpp:1192 #, kde-format msgid "" "Autosaving the message as %1 failed.\n" @@ -463,17 +463,17 @@ "%2\n" "السّبب: %3" -#: composer/composerviewbase.cpp:1207 +#: composer/composerviewbase.cpp:1198 #, kde-format msgid "Autosaving Message Failed" msgstr "فشل حفظ الرّسالة آليًّا" -#: composer/composerviewbase.cpp:1295 +#: composer/composerviewbase.cpp:1286 #, kde-format msgid "Failed to save the message: %1" msgstr "فشل حفظ الرّسالة :%1" -#: composer/composerviewbase.cpp:1702 +#: composer/composerviewbase.cpp:1694 #, kde-format msgid "" "The message you have composed seems to refer to an attached file but you " @@ -483,17 +483,17 @@ "يبدو أنّ الرّسالة التي أنشاتها تشير إلى ملفّ مرفق ولكنّك لم تُرفق شيئًا بعد.\n" "أتريد إرفاق ملفّ إلى رسالتك؟" -#: composer/composerviewbase.cpp:1705 +#: composer/composerviewbase.cpp:1697 #, kde-format msgid "File Attachment Reminder" msgstr "تذكير بإرفاق الملفّات" -#: composer/composerviewbase.cpp:1707 +#: composer/composerviewbase.cpp:1699 #, kde-format msgid "&Send as Is" msgstr "أر&سلها كما هي" -#: composer/composerviewbase.cpp:1759 +#: composer/composerviewbase.cpp:1751 #, kde-format msgid "" "Examination of the recipient's signing preferences yielded that you be asked " @@ -503,23 +503,23 @@ "أدّى فحص تفضيلات التّوقيع للمستلم أن تُسأل إن أردت توقيع هذه الرّسالة أم لا.\n" "أأوقّع هذه الرّسالة؟" -#: composer/composerviewbase.cpp:1764 composer/composerviewbase.cpp:1793 +#: composer/composerviewbase.cpp:1756 composer/composerviewbase.cpp:1785 #, kde-format msgid "Sign Message?" msgstr "أأوقّع الرّسالة؟" -#: composer/composerviewbase.cpp:1765 composer/composerviewbase.cpp:1794 +#: composer/composerviewbase.cpp:1757 composer/composerviewbase.cpp:1786 #, kde-format msgctxt "to sign" msgid "&Sign" msgstr "و&قّع" -#: composer/composerviewbase.cpp:1766 composer/composerviewbase.cpp:1795 +#: composer/composerviewbase.cpp:1758 composer/composerviewbase.cpp:1787 #, kde-format msgid "Do &Not Sign" msgstr "لا &توقّع" -#: composer/composerviewbase.cpp:1789 +#: composer/composerviewbase.cpp:1781 #, kde-format msgid "" "There are conflicting signing preferences for these recipients.\n" @@ -528,7 +528,7 @@ "ثمّة تفضيلات توقيع متضاربة للمستقبلين.\n" "أأوقّع هذه الرّسالة؟" -#: composer/composerviewbase.cpp:1817 +#: composer/composerviewbase.cpp:1809 #, kde-format msgid "" "You have requested to sign this message, but no valid signing keys have been " @@ -536,17 +536,17 @@ msgstr "" "لقد طلبت توقيع هذه الرّسالة ولكن لم تُضبط مفاتيح توقيع صالحة لهذه الهويّة." -#: composer/composerviewbase.cpp:1821 +#: composer/composerviewbase.cpp:1813 #, kde-format msgid "Send Unsigned?" msgstr "أأرسلها غير موقّعة؟" -#: composer/composerviewbase.cpp:1822 +#: composer/composerviewbase.cpp:1814 #, kde-format msgid "Send &Unsigned" msgstr "أرسلها &غير موقّعة" -#: composer/composerviewbase.cpp:1839 +#: composer/composerviewbase.cpp:1831 #, fuzzy, kde-format msgid "" "Some parts of this message will not be signed.\n" @@ -554,7 +554,7 @@ "Sign all parts instead?" msgstr "لن تُوقّع بعض أجزاء هذه الرّسالة.\n" -#: composer/composerviewbase.cpp:1842 +#: composer/composerviewbase.cpp:1834 #, fuzzy, kde-format msgid "" "This message will not be signed.\n" @@ -564,27 +564,27 @@ "لن تُوقّع هذه الرّسالة.\n" "إرسال الرّسائل دون توقيع قد " -#: composer/composerviewbase.cpp:1846 +#: composer/composerviewbase.cpp:1838 #, kde-format msgid "&Sign All Parts" msgstr "و&قّع كلّ الأجزاء" -#: composer/composerviewbase.cpp:1846 +#: composer/composerviewbase.cpp:1838 #, kde-format msgid "&Sign" msgstr "و&قّع" -#: composer/composerviewbase.cpp:1848 +#: composer/composerviewbase.cpp:1840 #, kde-format msgid "Unsigned-Message Warning" msgstr "تحذير برسالة غير موقّعة" -#: composer/composerviewbase.cpp:1850 +#: composer/composerviewbase.cpp:1842 #, kde-format msgid "Send &As Is" msgstr "أر&سلها كما هي" -#: composer/composerviewbase.cpp:1895 +#: composer/composerviewbase.cpp:1887 #, kde-format msgid "" "Valid trusted encryption keys were found for all recipients.\n" @@ -593,7 +593,7 @@ "عُثر على مفاتيح تعمية موثوقة وصالحة لكلّ المستلمين.\n" "أأعمّي هذه الرّسالة؟" -#: composer/composerviewbase.cpp:1897 +#: composer/composerviewbase.cpp:1889 #, kde-format msgid "" "Examination of the recipient's encryption preferences yielded that you be " @@ -603,34 +603,34 @@ "أدّى فحص تفضيلات التّعمية للمستلم أن تُسأل إن أردت تعمية هذه الرّسالة أم لا.\n" "أأعمّي هذه الرّسالة؟" -#: composer/composerviewbase.cpp:1902 composer/composerviewbase.cpp:1935 +#: composer/composerviewbase.cpp:1894 composer/composerviewbase.cpp:1927 #, kde-format msgid "Encrypt Message?" msgstr "أأعمّي الرّسالة؟" -#: composer/composerviewbase.cpp:1904 +#: composer/composerviewbase.cpp:1896 #, kde-format msgid "Sign && &Encrypt" msgstr "وقّع و&عمِّ" -#: composer/composerviewbase.cpp:1905 composer/composerviewbase.cpp:1936 -#: composer/composerviewbase.cpp:1991 composer/keyresolver.cpp:1653 -#: composer/keyresolver.cpp:1696 +#: composer/composerviewbase.cpp:1897 composer/composerviewbase.cpp:1928 +#: composer/composerviewbase.cpp:1983 composer/keyresolver.cpp:1633 +#: composer/keyresolver.cpp:1676 #, kde-format msgid "&Encrypt" msgstr "&عمِّ" -#: composer/composerviewbase.cpp:1907 composer/composerviewbase.cpp:1996 +#: composer/composerviewbase.cpp:1899 composer/composerviewbase.cpp:1988 #, kde-format msgid "&Sign Only" msgstr "و&قّع فقط" -#: composer/composerviewbase.cpp:1908 composer/composerviewbase.cpp:1997 +#: composer/composerviewbase.cpp:1900 composer/composerviewbase.cpp:1989 #, kde-format msgid "&Send As-Is" msgstr "أر&سلها كما هي" -#: composer/composerviewbase.cpp:1931 +#: composer/composerviewbase.cpp:1923 #, kde-format msgid "" "There are conflicting encryption preferences for these recipients.\n" @@ -639,12 +639,12 @@ "ثمّة تفضيلات تعمية متضاربة للمستقبلين.\n" "أأعمّي هذه الرّسالة؟" -#: composer/composerviewbase.cpp:1937 +#: composer/composerviewbase.cpp:1929 #, kde-format msgid "Do &Not Encrypt" msgstr "لا &تعمِّ" -#: composer/composerviewbase.cpp:1959 +#: composer/composerviewbase.cpp:1951 #, kde-format msgid "" "You have requested to encrypt this message, and to encrypt a copy to " @@ -654,17 +654,17 @@ "لقد طلبت تعمية هذه الرّسالة، وتعمية نسخة لك، ولكن لم تُضبط مفاتيح تعمية صالحة " "لهذه الهويّة." -#: composer/composerviewbase.cpp:1964 +#: composer/composerviewbase.cpp:1956 #, kde-format msgid "Send Unencrypted?" msgstr "أأرسلها دون تعمية؟" -#: composer/composerviewbase.cpp:1965 composer/keyresolver.cpp:1678 +#: composer/composerviewbase.cpp:1957 composer/keyresolver.cpp:1658 #, kde-format msgid "Send &Unencrypted" msgstr "أرسلها &دون تعمية" -#: composer/composerviewbase.cpp:1982 +#: composer/composerviewbase.cpp:1974 #, kde-format msgid "" "Some parts of this message will not be encrypted.\n" @@ -673,7 +673,7 @@ "Encrypt all parts instead?" msgstr "" -#: composer/composerviewbase.cpp:1986 +#: composer/composerviewbase.cpp:1978 #, kde-format msgid "" "This message will not be encrypted.\n" @@ -682,17 +682,17 @@ "Encrypt messages instead?" msgstr "" -#: composer/composerviewbase.cpp:1991 +#: composer/composerviewbase.cpp:1983 #, kde-format msgid "&Encrypt All Parts" msgstr "&عمِّ كلّ الأجزاء" -#: composer/composerviewbase.cpp:1993 +#: composer/composerviewbase.cpp:1985 #, kde-format msgid "Unencrypted Message Warning" msgstr "تحذير برسالة غير معمّاة" -#: composer/keyresolver.cpp:361 +#: composer/keyresolver.cpp:341 #, fuzzy, kde-format msgid "" "One or more of your configured OpenPGP encryption keys or S/MIME " @@ -701,21 +701,21 @@ "أحد مفاتيح تعمية OpenPGP أو شهادات S/MIME المضبوطة أو أكثر ليست موثوقة تمامًا " "للتّعمية." -#: composer/keyresolver.cpp:364 +#: composer/keyresolver.cpp:344 #, kde-format msgid "" "One or more of the OpenPGP encryption keys or S/MIME certificates for " "recipient \"%1\" is not fully trusted for encryption." msgstr "" -#: composer/keyresolver.cpp:370 +#: composer/keyresolver.cpp:350 #, kde-format msgid "" "\n" "The following keys are only marginally trusted: \n" msgstr "" -#: composer/keyresolver.cpp:374 +#: composer/keyresolver.cpp:354 #, kde-format msgid "" "\n" @@ -724,19 +724,19 @@ "\n" "للمفاتيح أو الشّهادات الآتية مستوى ثقة مجهول: \n" -#: composer/keyresolver.cpp:378 +#: composer/keyresolver.cpp:358 #, kde-format msgid "" "\n" "The following keys or certificates are revoked: \n" msgstr "" -#: composer/keyresolver.cpp:382 +#: composer/keyresolver.cpp:362 #, kde-format msgid "Not Fully Trusted Encryption Keys" msgstr "مواقع تعمية غير موثوقة تمامًا" -#: composer/keyresolver.cpp:714 +#: composer/keyresolver.cpp:694 #, kde-format msgid "" "

    Your OpenPGP signing key

    %2 (KeyID 0x%3)Your OpenPGP encryption key

    %2 (KeyID 0x%3)The OpenPGP key for

    %2 (KeyID 0x%3)The root certificate

    %4

    for your S/MIME " @@ -798,7 +798,7 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:739 +#: composer/keyresolver.cpp:719 #, kde-format msgid "" "

    The root certificate

    %4

    for your S/MIME " @@ -815,7 +815,7 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:745 +#: composer/keyresolver.cpp:725 #, kde-format msgid "" "

    The root certificate

    %4

    for S/MIME " @@ -832,7 +832,7 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:752 +#: composer/keyresolver.cpp:732 #, kde-format msgid "" "

    The intermediate CA certificate

    %4

    for " @@ -849,7 +849,7 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:758 +#: composer/keyresolver.cpp:738 #, kde-format msgid "" "

    The intermediate CA certificate

    %4

    for " @@ -866,7 +866,7 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:764 +#: composer/keyresolver.cpp:744 #, kde-format msgid "" "

    The intermediate CA certificate

    %4

    for S/" @@ -883,7 +883,7 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:776 +#: composer/keyresolver.cpp:756 #, kde-format msgid "" "

    Your S/MIME signing certificate

    %2 (serial " @@ -898,7 +898,7 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:780 +#: composer/keyresolver.cpp:760 #, kde-format msgid "" "

    Your S/MIME encryption certificate

    %2 (serial " @@ -913,7 +913,7 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:784 +#: composer/keyresolver.cpp:764 #, kde-format msgid "" "

    The S/MIME certificate for

    %2 (serial number " @@ -928,17 +928,17 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:795 +#: composer/keyresolver.cpp:775 #, kde-format msgid "OpenPGP Key Expired" msgstr "" -#: composer/keyresolver.cpp:796 +#: composer/keyresolver.cpp:776 #, kde-format msgid "S/MIME Certificate Expired" msgstr "" -#: composer/keyresolver.cpp:820 +#: composer/keyresolver.cpp:800 #, kde-format msgid "" "

    Your OpenPGP signing key

    %2 (KeyID 0x%3)Your OpenPGP encryption key

    %2 (KeyID 0x" @@ -968,7 +968,7 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:828 +#: composer/keyresolver.cpp:808 #, kde-format msgid "" "

    The OpenPGP key for

    %2 (KeyID 0x%3)The root certificate

    %4

    for your S/" @@ -1000,7 +1000,7 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:845 +#: composer/keyresolver.cpp:825 #, kde-format msgid "" "

    The root certificate

    %4

    for your S/" @@ -1017,7 +1017,7 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:851 +#: composer/keyresolver.cpp:831 #, kde-format msgid "" "

    The root certificate

    %4

    for S/MIME " @@ -1034,7 +1034,7 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:858 +#: composer/keyresolver.cpp:838 #, kde-format msgid "" "

    The intermediate CA certificate

    %4The intermediate CA certificate

    %4The intermediate CA certificate

    %4Your S/MIME signing certificate

    %2 (serial " @@ -1100,7 +1100,7 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:886 +#: composer/keyresolver.cpp:866 #, kde-format msgid "" "

    Your S/MIME encryption certificate

    %2 " @@ -1115,7 +1115,7 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:890 +#: composer/keyresolver.cpp:870 #, kde-format msgid "" "

    The S/MIME certificate for

    %2 (serial " @@ -1130,17 +1130,17 @@ msgstr[4] "" msgstr[5] "" -#: composer/keyresolver.cpp:901 +#: composer/keyresolver.cpp:881 #, kde-format msgid "OpenPGP Key Expires Soon" msgstr "ستنتهي صلاحيّة مفتاح OpenPGP قريبًا" -#: composer/keyresolver.cpp:902 +#: composer/keyresolver.cpp:882 #, kde-format msgid "S/MIME Certificate Expires Soon" msgstr "" -#: composer/keyresolver.cpp:941 +#: composer/keyresolver.cpp:921 #, kde-format msgid "" "One or more of your configured OpenPGP encryption keys or S/MIME " @@ -1151,13 +1151,13 @@ "prompted to specify the keys to use." msgstr "" -#: composer/keyresolver.cpp:949 composer/keyresolver.cpp:1325 -#: composer/keyresolver.cpp:1353 +#: composer/keyresolver.cpp:929 composer/keyresolver.cpp:1305 +#: composer/keyresolver.cpp:1333 #, kde-format msgid "Unusable Encryption Keys" msgstr "مفاتيح تعمية لا يمكن استخدامها" -#: composer/keyresolver.cpp:989 +#: composer/keyresolver.cpp:969 #, kde-format msgid "" "One or more of your configured OpenPGP signing keys or S/MIME signing " @@ -1167,13 +1167,13 @@ "prompted to specify the keys to use." msgstr "" -#: composer/keyresolver.cpp:997 composer/keyresolver.cpp:1382 -#: composer/keyresolver.cpp:1400 +#: composer/keyresolver.cpp:977 composer/keyresolver.cpp:1362 +#: composer/keyresolver.cpp:1380 #, kde-format msgid "Unusable Signing Keys" msgstr "مفاتيح توقيع لا يمكن استخدامها" -#: composer/keyresolver.cpp:1316 +#: composer/keyresolver.cpp:1296 #, kde-format msgid "" "Examination of recipient's encryption preferences yielded that the message " @@ -1184,7 +1184,7 @@ "not be able to read your own messages if you do so." msgstr "" -#: composer/keyresolver.cpp:1344 +#: composer/keyresolver.cpp:1324 #, kde-format msgid "" "Examination of recipient's encryption preferences yielded that the message " @@ -1195,7 +1195,7 @@ "not be able to read your own messages if you do so." msgstr "" -#: composer/keyresolver.cpp:1376 +#: composer/keyresolver.cpp:1356 #, kde-format msgid "" "Examination of recipient's signing preferences yielded that the message " @@ -1204,12 +1204,12 @@ "identity." msgstr "" -#: composer/keyresolver.cpp:1383 +#: composer/keyresolver.cpp:1363 #, kde-format msgid "Do Not OpenPGP-Sign" msgstr "" -#: composer/keyresolver.cpp:1394 +#: composer/keyresolver.cpp:1374 #, kde-format msgid "" "Examination of recipient's signing preferences yielded that the message " @@ -1218,12 +1218,12 @@ "identity." msgstr "" -#: composer/keyresolver.cpp:1401 +#: composer/keyresolver.cpp:1381 #, kde-format msgid "Do Not S/MIME-Sign" msgstr "" -#: composer/keyresolver.cpp:1463 +#: composer/keyresolver.cpp:1443 #, kde-format msgid "" "Examination of recipient's signing preferences showed no common type of " @@ -1231,32 +1231,32 @@ "Send message without signing?" msgstr "" -#: composer/keyresolver.cpp:1467 +#: composer/keyresolver.cpp:1447 #, kde-format msgid "No signing possible" msgstr "" -#: composer/keyresolver.cpp:1648 +#: composer/keyresolver.cpp:1628 #, kde-format msgid "" "You did not select an encryption key for yourself (encrypt to self). You " "will not be able to decrypt your own message if you encrypt it." msgstr "" -#: composer/keyresolver.cpp:1652 composer/keyresolver.cpp:1677 -#: composer/keyresolver.cpp:1695 +#: composer/keyresolver.cpp:1632 composer/keyresolver.cpp:1657 +#: composer/keyresolver.cpp:1675 #, kde-format msgid "Missing Key Warning" msgstr "تحذير بمفتاح ناقص" -#: composer/keyresolver.cpp:1670 +#: composer/keyresolver.cpp:1650 #, kde-format msgid "" "You did not select an encryption key for the recipient of this message; " "therefore, the message will not be encrypted." msgstr "لم تختر مفتاح تعمية لمستقبل هذه الرّسالة، ولهذا السّبب لن تُعمّى الرّسالة." -#: composer/keyresolver.cpp:1673 +#: composer/keyresolver.cpp:1653 #, kde-format msgid "" "You did not select an encryption key for any of the recipients of this " @@ -1264,7 +1264,7 @@ msgstr "" "لم تختر مفتاح تعمية لأيّ من مستقبلي هذه الرّسالة، ولهذا السّبب لن تُعمّى الرّسالة." -#: composer/keyresolver.cpp:1685 +#: composer/keyresolver.cpp:1665 #, kde-format msgid "" "You did not select an encryption key for one of the recipients: this person " @@ -1273,7 +1273,7 @@ "لم تختر مفتاح تعمية لأحد المستلمين: لن يستطيع المستلم فكّ تعمية الرّسالة إن " "عمّيتها." -#: composer/keyresolver.cpp:1688 +#: composer/keyresolver.cpp:1668 #, kde-format msgid "" "You did not select encryption keys for some of the recipients: these persons " @@ -1282,12 +1282,12 @@ "لم تختر مفتاح تعمية لبعض المستلمين: لن يستطيع المستلمون فكّ تعمية الرّسالة إن " "عمّيتها." -#: composer/keyresolver.cpp:1754 +#: composer/keyresolver.cpp:1734 #, kde-format msgid "Encryption Key Selection" msgstr "" -#: composer/keyresolver.cpp:1801 +#: composer/keyresolver.cpp:1781 #, kde-format msgctxt "" "if in your language something like 'certificate(s)' is not possible please " @@ -1298,7 +1298,7 @@ "Please re-select the certificate(s) which should be used for this recipient." msgstr "" -#: composer/keyresolver.cpp:1847 +#: composer/keyresolver.cpp:1827 #, kde-format msgctxt "" "if in your language something like 'certificate(s)' is not possible please " @@ -1311,7 +1311,7 @@ "certificates." msgstr "" -#: composer/keyresolver.cpp:1857 +#: composer/keyresolver.cpp:1837 #, kde-format msgctxt "" "if in your language something like 'certificate(s)' is not possible please " @@ -1393,12 +1393,12 @@ msgid "Select Format..." msgstr "" -#: imagescaling/imagescalingwidget.cpp:107 +#: imagescaling/imagescalingwidget.cpp:108 #, kde-format msgid "How does this work?" msgstr "" -#: imagescaling/imagescalingwidget.cpp:120 +#: imagescaling/imagescalingwidget.cpp:121 #, kde-format msgid "" "

    Here you can define image filename. You can use:

    • %t set " @@ -1406,17 +1406,17 @@ "li>
    • %e original extension
    • %x new extension
    " msgstr "" -#: imagescaling/imagescalingwidget.cpp:174 +#: imagescaling/imagescalingwidget.cpp:175 #, kde-format msgid "Custom" msgstr "" -#: imagescaling/imagescalingwidget.cpp:302 +#: imagescaling/imagescalingwidget.cpp:303 #, kde-format msgid "Please verify minimum and maximum values." msgstr "" -#: imagescaling/imagescalingwidget.cpp:302 +#: imagescaling/imagescalingwidget.cpp:303 #, kde-format msgid "Error in minimum Maximum value" msgstr "" @@ -2187,3 +2187,8 @@ #, kde-format msgid "Mail dispatcher offline." msgstr "" + +#: widgets/dictionarycombobox.cpp:122 +#, kde-format +msgid "AutoDetect Language" +msgstr "" diff -Nru kf5-messagelib-17.12.3/po/ar/libmessagecore.po kf5-messagelib-18.04.3/po/ar/libmessagecore.po --- kf5-messagelib-17.12.3/po/ar/libmessagecore.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/ar/libmessagecore.po 2018-07-10 00:15:57.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-09-15 03:37+0200\n" +"POT-Creation-Date: 2018-04-27 06:20+0200\n" "PO-Revision-Date: 2018-02-01 00:30+0300\n" "Last-Translator: Safa Alfulaij \n" "Language-Team: Arabic \n" @@ -177,8 +177,8 @@ "

    أشّر على هذا الخيار إن أردت تعمية جزء الرّسالة.

    سيُعمّى الجزء لمستلمي " "هذه الرّسالة.

    " -#: attachment/attachmentpropertiesdialog.cpp:326 -#: attachment/attachmentpropertiesdialog.cpp:341 +#: attachment/attachmentpropertiesdialog.cpp:324 +#: attachment/attachmentpropertiesdialog.cpp:339 #, kde-format msgid "Attachment Properties" msgstr "خصائص المرفق" @@ -283,7 +283,7 @@ "no limit)" msgstr "الحدّ الأقصى (بالبِتّ) المسموح لحجم مرفقات البريد (-1 لإزالة الحدّ)" -#: utils/stringutil.cpp:402 +#: utils/stringutil.cpp:384 #, kde-format msgctxt "signal that this email is defined in my identity" msgid "Me" diff -Nru kf5-messagelib-17.12.3/po/ar/libmessagelist.po kf5-messagelib-18.04.3/po/ar/libmessagelist.po --- kf5-messagelib-17.12.3/po/ar/libmessagelist.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/ar/libmessagelist.po 2018-07-10 00:15:57.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: kmail\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-10-13 03:28+0200\n" +"POT-Creation-Date: 2018-05-04 06:21+0200\n" "PO-Revision-Date: 2018-01-31 21:27+0300\n" "Last-Translator: Safa Alfulaij \n" "Language-Team: Arabic \n" @@ -22,114 +22,114 @@ "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" "X-Generator: Lokalize 2.0\n" -#: core/aggregation.cpp:198 +#: core/aggregation.cpp:193 #, kde-format msgctxt "No grouping of messages" msgid "None" msgstr "بلا" -#: core/aggregation.cpp:201 +#: core/aggregation.cpp:196 #, kde-format msgid "By Exact Date (of Thread Leaders)" msgstr "بالتّاريخ الدّقيق (لفاتحات المواضيع)" -#: core/aggregation.cpp:204 +#: core/aggregation.cpp:199 #, kde-format msgid "By Smart Date Ranges (of Thread Leaders)" msgstr "بمدى التّاريخ الذّكيّ (لفاتحات المواضيع)" -#: core/aggregation.cpp:207 core/sortorder.cpp:89 +#: core/aggregation.cpp:202 core/sortorder.cpp:89 #, fuzzy, kde-format msgid "By Smart Sender/Receiver" msgstr "بالمرسل/المستلم الذّكيّ" -#: core/aggregation.cpp:210 core/sortorder.cpp:87 +#: core/aggregation.cpp:205 core/sortorder.cpp:87 #, kde-format msgid "By Sender" msgstr "بالمرسل" -#: core/aggregation.cpp:213 core/sortorder.cpp:88 +#: core/aggregation.cpp:208 core/sortorder.cpp:88 #, kde-format msgid "By Receiver" msgstr "بالمستلم" -#: core/aggregation.cpp:223 +#: core/aggregation.cpp:218 #, kde-format msgid "Never Expand Groups" msgstr "لا توسّع المجموعات" -#: core/aggregation.cpp:225 +#: core/aggregation.cpp:220 #, kde-format msgid "Expand Recent Groups" msgstr "وسّع المجموعات الحديثة" -#: core/aggregation.cpp:227 +#: core/aggregation.cpp:222 #, kde-format msgid "Always Expand Groups" msgstr "وسّع المجموعات دائمًا" -#: core/aggregation.cpp:234 +#: core/aggregation.cpp:229 #, kde-format msgctxt "No threading of messages" msgid "None" msgstr "بلا" -#: core/aggregation.cpp:237 +#: core/aggregation.cpp:232 #, kde-format msgid "Perfect Only" msgstr "" -#: core/aggregation.cpp:240 +#: core/aggregation.cpp:235 #, kde-format msgid "Perfect and by References" msgstr "" -#: core/aggregation.cpp:243 +#: core/aggregation.cpp:238 #, kde-format msgid "Perfect, by References and by Subject" msgstr "" -#: core/aggregation.cpp:253 +#: core/aggregation.cpp:248 #, kde-format msgid "Topmost Message" msgstr "" -#: core/aggregation.cpp:257 +#: core/aggregation.cpp:252 #, kde-format msgid "Most Recent Message" msgstr "أكثر الرّسالة حداثة" -#: core/aggregation.cpp:268 +#: core/aggregation.cpp:263 #, kde-format msgid "Never Expand Threads" msgstr "لا توسّع المواضيع" -#: core/aggregation.cpp:271 +#: core/aggregation.cpp:266 #, kde-format msgid "Expand Threads With Unread Messages" msgstr "وسّع المواضيع التي فيها رسائل غير مقروءة" -#: core/aggregation.cpp:274 +#: core/aggregation.cpp:269 #, kde-format msgid "Expand Threads With Unread or Important Messages" msgstr "وسّع المواضيع التي فيها رسائل غير مقروءة أو مهمّة" -#: core/aggregation.cpp:277 +#: core/aggregation.cpp:272 #, kde-format msgid "Always Expand Threads" msgstr "وسّع المواضيع دائمًا" -#: core/aggregation.cpp:284 +#: core/aggregation.cpp:279 #, kde-format msgid "Favor Interactivity" msgstr "" -#: core/aggregation.cpp:287 +#: core/aggregation.cpp:282 #, kde-format msgid "Favor Speed" msgstr "" -#: core/aggregation.cpp:290 +#: core/aggregation.cpp:285 #, kde-format msgid "Batch Job (No Interactivity)" msgstr "" @@ -447,7 +447,7 @@ msgid "A smart multiline and multi item theme with a clickable status column" msgstr "" -#: core/manager.cpp:780 core/view.cpp:2372 core/view.cpp:2375 +#: core/manager.cpp:780 core/view.cpp:2368 core/view.cpp:2371 #, kde-format msgid "Status" msgstr "الحالة" @@ -853,53 +853,53 @@ msgid "Styled Joined Rectangles" msgstr "" -#: core/view.cpp:744 +#: core/view.cpp:740 #, kde-format msgid "Adjust Column Sizes" msgstr "اضبط أحجام الأعمدة" -#: core/view.cpp:748 +#: core/view.cpp:744 #, kde-format msgid "Show Default Columns" msgstr "اعرض الأعمدة المبدئيّة" -#: core/view.cpp:753 +#: core/view.cpp:749 #, kde-format msgid "Display Tooltips" msgstr "اعرض التّلميحات" -#: core/view.cpp:2353 core/view.cpp:2357 core/widgets/searchlinestatus.cpp:294 +#: core/view.cpp:2349 core/view.cpp:2353 core/widgets/searchlinestatus.cpp:310 #, kde-format msgid "From" msgstr "من" -#: core/view.cpp:2354 core/view.cpp:2358 +#: core/view.cpp:2350 core/view.cpp:2354 #, kde-format msgctxt "Receiver of the email" msgid "To" msgstr "إلى" -#: core/view.cpp:2355 core/view.cpp:2359 +#: core/view.cpp:2351 core/view.cpp:2355 #, kde-format msgid "Date" msgstr "التّاريخ" -#: core/view.cpp:2373 core/view.cpp:2376 +#: core/view.cpp:2369 core/view.cpp:2372 #, kde-format msgid "Size" msgstr "الحجم" -#: core/view.cpp:2381 core/view.cpp:2383 +#: core/view.cpp:2377 core/view.cpp:2379 #, kde-format msgid "Note" msgstr "ملاحظة" -#: core/view.cpp:2390 core/view.cpp:2392 +#: core/view.cpp:2386 core/view.cpp:2388 #, kde-format msgid "Preview" msgstr "" -#: core/view.cpp:2410 +#: core/view.cpp:2406 #, kde-format msgid "%1 reply" msgid_plural "%1 replies" @@ -910,7 +910,7 @@ msgstr[4] "%1 ردًّا" msgstr[5] "%1 ردّ" -#: core/view.cpp:2414 +#: core/view.cpp:2410 #, kde-format msgid "%1 message in subtree (%2 unread)" msgid_plural "%1 messages in subtree (%2 unread)" @@ -921,110 +921,110 @@ msgstr[4] "" msgstr[5] "" -#: core/view.cpp:2455 +#: core/view.cpp:2451 #, kde-format msgctxt "" "@info:tooltip Formats to something like 'Threads started on 2008-12-21'" msgid "Threads started on %1" msgstr "" -#: core/view.cpp:2461 +#: core/view.cpp:2457 #, kde-format msgctxt "@info:tooltip Formats to something like 'Threads started Yesterday'" msgid "Threads started %1" msgstr "" -#: core/view.cpp:2467 +#: core/view.cpp:2463 #, kde-format msgid "Threads with messages dated %1" msgstr "" -#: core/view.cpp:2478 +#: core/view.cpp:2474 #, kde-format msgctxt "@info:tooltip Formats to something like 'Messages sent on 2008-12-21'" msgid "Messages sent on %1" msgstr "الرّسائل المرسلة في %1" -#: core/view.cpp:2484 +#: core/view.cpp:2480 #, fuzzy, kde-format msgctxt "" "@info:tooltip Formats to something like 'Messages received on 2008-12-21'" msgid "Messages received on %1" msgstr "الرّسائل المستلمة في %1" -#: core/view.cpp:2492 +#: core/view.cpp:2488 #, kde-format msgctxt "@info:tooltip Formats to something like 'Messages sent Yesterday'" msgid "Messages sent %1" msgstr "الرّسائل المرسلة %1" -#: core/view.cpp:2498 +#: core/view.cpp:2494 #, fuzzy, kde-format msgctxt "@info:tooltip Formats to something like 'Messages received Yesterday'" msgid "Messages received %1" msgstr "الرّسائل المستلمة %1" -#: core/view.cpp:2509 +#: core/view.cpp:2505 #, kde-format msgid "Threads started within %1" msgstr "" -#: core/view.cpp:2512 +#: core/view.cpp:2508 #, kde-format msgid "Threads containing messages with dates within %1" msgstr "" -#: core/view.cpp:2520 +#: core/view.cpp:2516 #, kde-format msgid "Messages sent within %1" msgstr "" -#: core/view.cpp:2522 +#: core/view.cpp:2518 #, kde-format msgid "Messages received within %1" msgstr "" -#: core/view.cpp:2531 +#: core/view.cpp:2527 #, kde-format msgid "Threads started by %1" msgstr "" -#: core/view.cpp:2534 +#: core/view.cpp:2530 #, kde-format msgid "Threads with most recent message by %1" msgstr "" -#: core/view.cpp:2543 core/view.cpp:2567 +#: core/view.cpp:2539 core/view.cpp:2563 #, kde-format msgid "Messages sent to %1" msgstr "الرّسائل المرسلة إلى %1" -#: core/view.cpp:2545 +#: core/view.cpp:2541 #, kde-format msgid "Messages sent by %1" msgstr "الرّسائل المرسلة من %1" -#: core/view.cpp:2548 +#: core/view.cpp:2544 #, kde-format msgid "Messages received from %1" msgstr "الرّسائل المستلمة من %1" -#: core/view.cpp:2556 +#: core/view.cpp:2552 #, kde-format msgid "Threads directed to %1" msgstr "" -#: core/view.cpp:2559 +#: core/view.cpp:2555 #, kde-format msgid "Threads with most recent message directed to %1" msgstr "" -#: core/view.cpp:2569 +#: core/view.cpp:2565 #, kde-format msgid "Messages received by %1" msgstr "" -#: core/view.cpp:2595 +#: core/view.cpp:2591 #, kde-format msgid "%1 thread" msgid_plural "%1 threads" @@ -1035,7 +1035,7 @@ msgstr[4] "" msgstr[5] "" -#: core/view.cpp:2600 +#: core/view.cpp:2596 #, kde-format msgid "%1 message (%2 unread)" msgid_plural "%1 messages (%2 unread)" @@ -1046,48 +1046,48 @@ msgstr[4] "" msgstr[5] "" -#: core/widgetbase.cpp:399 messagelistutil.cpp:129 +#: core/widgetbase.cpp:400 messagelistutil.cpp:129 #, kde-format msgid "Theme" msgstr "" -#: core/widgetbase.cpp:421 core/widgetbase.cpp:514 +#: core/widgetbase.cpp:422 core/widgetbase.cpp:515 #: utils/aggregationconfigbutton.cpp:48 utils/themeconfigbutton.cpp:64 #, kde-format msgid "Configure..." msgstr "اضبط..." -#: core/widgetbase.cpp:492 messagelistutil.cpp:124 +#: core/widgetbase.cpp:493 messagelistutil.cpp:124 #, kde-format msgid "Aggregation" msgstr "التّجميع" -#: core/widgetbase.cpp:577 +#: core/widgetbase.cpp:578 #, kde-format msgid "Message Sort Order" msgstr "ترتيب فرز الرّسائل" -#: core/widgetbase.cpp:600 +#: core/widgetbase.cpp:601 #, kde-format msgid "Message Sort Direction" msgstr "اتّجاه فرز الرّسائل" -#: core/widgetbase.cpp:618 +#: core/widgetbase.cpp:619 #, kde-format msgid "Group Sort Order" msgstr "ترتيب فرز المجموعات" -#: core/widgetbase.cpp:637 +#: core/widgetbase.cpp:638 #, kde-format msgid "Group Sort Direction" msgstr "اتّجاه فرز المجموعات" -#: core/widgetbase.cpp:653 +#: core/widgetbase.cpp:654 #, kde-format msgid "Folder Always Uses This Sort Order" msgstr "" -#: core/widgets/quicksearchline.cpp:53 +#: core/widgets/quicksearchline.cpp:54 #, fuzzy, kde-format msgctxt "Search for messages." msgid "Search" @@ -1110,19 +1110,19 @@ "excluded from indexing completely. The results below may be incomplete." msgstr "" -#: core/widgets/searchlinestatus.cpp:76 +#: core/widgets/searchlinestatus.cpp:92 #, kde-format msgctxt "@info:tooltip" msgid "Prevent the quick search field from being cleared when changing folders" msgstr "" -#: core/widgets/searchlinestatus.cpp:79 +#: core/widgets/searchlinestatus.cpp:95 #, kde-format msgctxt "@info:tooltip" msgid "Clear the quick search field when changing folders" msgstr "" -#: core/widgets/searchlinestatus.cpp:100 +#: core/widgets/searchlinestatus.cpp:116 #, kde-format msgctxt "@info:whatsthis" msgid "" @@ -1130,108 +1130,108 @@ "to other folders or when narrowing the search by message status." msgstr "" -#: core/widgets/searchlinestatus.cpp:111 +#: core/widgets/searchlinestatus.cpp:127 #, kde-format msgid "Filter Mails by Status" msgstr "رشّح البريد بالحالة" -#: core/widgets/searchlinestatus.cpp:186 +#: core/widgets/searchlinestatus.cpp:202 #, kde-format msgid "Clear Filter" msgstr "امسح المرشّح" -#: core/widgets/searchlinestatus.cpp:191 +#: core/widgets/searchlinestatus.cpp:207 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Unread" msgstr "غير المقروء" -#: core/widgets/searchlinestatus.cpp:195 +#: core/widgets/searchlinestatus.cpp:211 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Replied" msgstr "التي رُدّ عليها" -#: core/widgets/searchlinestatus.cpp:199 +#: core/widgets/searchlinestatus.cpp:215 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Forwarded" msgstr "المُمرّرة" -#: core/widgets/searchlinestatus.cpp:203 +#: core/widgets/searchlinestatus.cpp:219 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Important" msgstr "المهمّة" -#: core/widgets/searchlinestatus.cpp:207 +#: core/widgets/searchlinestatus.cpp:223 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Action Item" msgstr "" -#: core/widgets/searchlinestatus.cpp:211 +#: core/widgets/searchlinestatus.cpp:227 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Watched" msgstr "المراقبة" -#: core/widgets/searchlinestatus.cpp:215 +#: core/widgets/searchlinestatus.cpp:231 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Ignored" msgstr "المتجاهلة" -#: core/widgets/searchlinestatus.cpp:219 +#: core/widgets/searchlinestatus.cpp:235 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Has Attachment" msgstr "التي فيها مرفقات" -#: core/widgets/searchlinestatus.cpp:223 +#: core/widgets/searchlinestatus.cpp:239 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Has Invitation" msgstr "التي فيها دعوة" -#: core/widgets/searchlinestatus.cpp:227 +#: core/widgets/searchlinestatus.cpp:243 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Spam" msgstr "السّخام" -#: core/widgets/searchlinestatus.cpp:231 +#: core/widgets/searchlinestatus.cpp:247 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Ham" msgstr "" -#: core/widgets/searchlinestatus.cpp:241 +#: core/widgets/searchlinestatus.cpp:257 #, kde-format msgid "Full Message" msgstr "الرّسالة الكاملة" -#: core/widgets/searchlinestatus.cpp:248 +#: core/widgets/searchlinestatus.cpp:264 #, kde-format msgid "Body" msgstr "المتن" -#: core/widgets/searchlinestatus.cpp:253 +#: core/widgets/searchlinestatus.cpp:269 #, kde-format msgid "Subject" msgstr "الموضوع" -#: core/widgets/searchlinestatus.cpp:264 +#: core/widgets/searchlinestatus.cpp:280 #, kde-format msgid "BCC" msgstr "ن‌ك‌ع" -#: core/widgets/searchlinestatus.cpp:292 +#: core/widgets/searchlinestatus.cpp:308 #, kde-format msgid "To" msgstr "إلى" -#: core/widgets/searchlinestatus.cpp:344 +#: core/widgets/searchlinestatus.cpp:360 #, kde-format msgid "Clear History" msgstr "امسح التّأريخ" @@ -1273,54 +1273,54 @@ msgid "Show Quick Search Bar" msgstr "اعرض شريط البحث السّريع" -#: pane.cpp:235 +#: pane.cpp:237 #, kde-format msgid "Message List" msgstr "قائمة الرّسائل" -#: pane.cpp:241 +#: pane.cpp:243 #, kde-format msgid "Create New Tab" msgstr "أنشئ لسانًا جديدًا" -#: pane.cpp:252 +#: pane.cpp:254 #, kde-format msgid "Close Tab" msgstr "أغلق اللسان" -#: pane.cpp:259 +#: pane.cpp:261 #, kde-format msgid "Activate Next Tab" msgstr "فعّل اللسان التّالي" -#: pane.cpp:264 +#: pane.cpp:266 #, kde-format msgid "Activate Previous Tab" msgstr "فعّل اللسان السّابق" -#: pane.cpp:269 +#: pane.cpp:271 #, fuzzy, kde-format msgid "Move Tab Left" msgstr "انقل اللسان يسارًا" -#: pane.cpp:274 +#: pane.cpp:276 #, fuzzy, kde-format msgid "Move Tab Right" msgstr "انقل اللسان يمينًا" -#: pane.cpp:481 pane.cpp:746 +#: pane.cpp:483 pane.cpp:758 #, kde-format msgctxt "@title:tab Empty messagelist" msgid "Empty" msgstr "" -#: pane.cpp:668 +#: pane.cpp:677 #, kde-format msgctxt "@action:inmenu" msgid "Close Tab" msgstr "أغلق اللسان" -#: pane.cpp:671 +#: pane.cpp:680 #, kde-format msgctxt "@action:inmenu" msgid "Close All Other Tabs" @@ -1385,7 +1385,7 @@ msgstr "" #: utils/configureaggregationsdialog.cpp:129 -#: utils/configureaggregationsdialog.cpp:360 +#: utils/configureaggregationsdialog.cpp:359 #, kde-format msgid "New Aggregation" msgstr "" @@ -1410,23 +1410,23 @@ msgid "Delete Aggregation" msgstr "" -#: utils/configureaggregationsdialog.cpp:343 +#: utils/configureaggregationsdialog.cpp:342 #, kde-format msgid "Unnamed Aggregation" msgstr "" -#: utils/configureaggregationsdialog.cpp:412 +#: utils/configureaggregationsdialog.cpp:411 #, kde-format msgid "Import Aggregation" msgstr "" -#: utils/configureaggregationsdialog.cpp:445 -#: utils/configurethemesdialog.cpp:470 +#: utils/configureaggregationsdialog.cpp:444 +#: utils/configurethemesdialog.cpp:466 #, kde-format msgid "All Files (*)" msgstr "كلّ الملفّات (*)" -#: utils/configureaggregationsdialog.cpp:445 +#: utils/configureaggregationsdialog.cpp:444 #, kde-format msgid "Export Aggregation" msgstr "" @@ -1436,7 +1436,7 @@ msgid "Customize Themes" msgstr "خصّص السّمات" -#: utils/configurethemesdialog.cpp:124 utils/configurethemesdialog.cpp:356 +#: utils/configurethemesdialog.cpp:124 utils/configurethemesdialog.cpp:352 #, kde-format msgid "New Theme" msgstr "سمة جديدة" @@ -1446,53 +1446,53 @@ msgid "Clone Theme" msgstr "استنسخ السّمة" -#: utils/configurethemesdialog.cpp:144 +#: utils/configurethemesdialog.cpp:143 #, kde-format msgid "Export Theme..." msgstr "صدّر السّمة..." -#: utils/configurethemesdialog.cpp:150 +#: utils/configurethemesdialog.cpp:148 #, kde-format msgid "Import Theme..." msgstr "استورد سمة..." -#: utils/configurethemesdialog.cpp:160 +#: utils/configurethemesdialog.cpp:157 #, kde-format msgid "Delete Theme" msgstr "احذف السّمة" -#: utils/configurethemesdialog.cpp:338 +#: utils/configurethemesdialog.cpp:334 #, kde-format msgid "Unnamed Theme" msgstr "سمة غير مسمّاة" -#: utils/configurethemesdialog.cpp:358 utils/themeeditor.cpp:1242 +#: utils/configurethemesdialog.cpp:354 utils/themeeditor.cpp:1242 #, kde-format msgid "New Column" msgstr "عمود جديد" -#: utils/configurethemesdialog.cpp:410 +#: utils/configurethemesdialog.cpp:406 #, kde-format msgid "Do you want to delete selected themes?" msgstr "أتريد حذف السّمات المحدّدة؟" -#: utils/configurethemesdialog.cpp:411 +#: utils/configurethemesdialog.cpp:407 #, kde-format msgid "Do you want to delete \"%1\"?" msgstr "أتريد حذف ”%1“؟" -#: utils/configurethemesdialog.cpp:411 +#: utils/configurethemesdialog.cpp:407 #, kde-format msgctxt "@title:window" msgid "Delete Theme" msgstr "حذف السّمة" -#: utils/configurethemesdialog.cpp:436 +#: utils/configurethemesdialog.cpp:432 #, kde-format msgid "Import Theme" msgstr "" -#: utils/configurethemesdialog.cpp:470 +#: utils/configurethemesdialog.cpp:466 #, kde-format msgid "Export Theme" msgstr "" diff -Nru kf5-messagelib-17.12.3/po/ar/libmessageviewer.po kf5-messagelib-18.04.3/po/ar/libmessageviewer.po --- kf5-messagelib-17.12.3/po/ar/libmessageviewer.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/ar/libmessageviewer.po 2018-07-10 00:15:57.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: kmail\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2018-02-21 06:03+0100\n" +"POT-Creation-Date: 2018-05-27 06:21+0200\n" "PO-Revision-Date: 2018-01-31 17:45+0300\n" "Last-Translator: Safa Alfulaij \n" "Language-Team: Arabic \n" @@ -21,6 +21,7 @@ "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" "X-Generator: Lokalize 2.0\n" +"X-POOTLE-MTIME: 1381853739.0\n" #: messagepartthemes/default/templates/certmessagepart.html:2 html.cpp:40 msgid "Sorry, certificate could not be imported." @@ -132,7 +133,7 @@ #: messagepartthemes/default/templates/encryptedmessagepart.html:21 html.cpp:18 msgid "The message is encrypted for the following keys:" -msgstr "لم يُعثر على مفتاح سرّيّ لتعمية الرّسالة. لقد عُمّيت للمفاتيح الآتية:" +msgstr "عُمّيت الرّسالة للمفاتيح الآتية:" #: messagepartthemes/default/templates/encryptedmessagepart.html:23 #: messagepartthemes/default/templates/signedmessagepart.html:71 @@ -378,12 +379,12 @@ #, kde-format msgid "receiver was" msgid_plural "receivers were" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" +msgstr[0] "المستلم كان" +msgstr[1] "المستلم كان" +msgstr[2] "المستلمان كانا" +msgstr[3] "المستلمون كانوا" +msgstr[4] "المستلمون كانوا" +msgstr[5] "المستلمون كانوا" #: header/grantleeheaderformatter.cpp:282 #, kde-format @@ -401,13 +402,13 @@ msgid "Unknown" msgstr "مجهول" -#: header/headerstyle_util.cpp:100 header/headerstyle_util.cpp:105 -#: header/headerstyle_util.cpp:116 +#: header/headerstyle_util.cpp:102 header/headerstyle_util.cpp:107 +#: header/headerstyle_util.cpp:118 #, kde-format msgid "No Subject" msgstr "لا موضوع" -#: header/headerstyle_util.cpp:185 +#: header/headerstyle_util.cpp:187 #, kde-format msgid "" "%1% probability of being spam with confidence %3%.\n" @@ -422,7 +423,7 @@ "الاحتماليّة=%2\n" "الثّقة=%4" -#: header/headerstyle_util.cpp:191 +#: header/headerstyle_util.cpp:193 #, kde-format msgid "" "%1% probability of being spam.\n" @@ -435,37 +436,37 @@ "التّقرير الكامل:\n" "الاحتماليّة=%2" -#: header/headerstyle_util.cpp:199 +#: header/headerstyle_util.cpp:201 #, kde-format msgid "No Spam agent" msgstr "لا عميل سخام" -#: header/headerstyle_util.cpp:202 +#: header/headerstyle_util.cpp:204 #, kde-format msgid "Spam filter score not a number" msgstr "نتيجة مرشّح السّخام ليست عددًا" -#: header/headerstyle_util.cpp:205 +#: header/headerstyle_util.cpp:207 #, kde-format msgid "Threshold not a valid number" msgstr "العتبة ليست عددًا صالحًا" -#: header/headerstyle_util.cpp:208 +#: header/headerstyle_util.cpp:210 #, kde-format msgid "Spam filter score could not be extracted from header" msgstr "تعذّر استخراج نتيجة مرشّح السّخام من التّرويسة" -#: header/headerstyle_util.cpp:211 +#: header/headerstyle_util.cpp:213 #, kde-format msgid "Threshold could not be extracted from header" msgstr "تعذّر استخراج العتبة من التّرويسة." -#: header/headerstyle_util.cpp:214 +#: header/headerstyle_util.cpp:216 #, kde-format msgid "Error evaluating spam score" msgstr "خطأ في تقدير نتيجة السّخام" -#: header/headerstyle_util.cpp:218 +#: header/headerstyle_util.cpp:220 #, kde-format msgid "" "%1.\n" @@ -525,144 +526,127 @@ msgid "Reply to: " msgstr "ردّ على: " -#: job/attachmenteditjob.cpp:50 -#, kde-format -msgid "" -"Modifying an attachment might invalidate any digital signature on this " -"message." -msgstr "تعديل المرفق قد يلغي صلاحيّة أيّ توقيع رقميّ في هذه الرّسالة." - -#: job/attachmenteditjob.cpp:51 viewer/viewer_p.cpp:669 -#: viewer/viewer_p.cpp:1816 -#, kde-format -msgid "Edit Attachment" -msgstr "حرّر المرفق" - -#: job/attachmenteditjob.cpp:52 -#, kde-format -msgid "Edit" -msgstr "حرّر" - -#: messagepartthemes/default/defaultrenderer.cpp:82 +#: messagepartthemes/default/defaultrenderer.cpp:83 #, kde-format msgid "Error: Signature not verified" msgstr "خطأ: لم يُتحقّق من التّوقيع" -#: messagepartthemes/default/defaultrenderer.cpp:85 +#: messagepartthemes/default/defaultrenderer.cpp:86 #, kde-format msgid "Good signature" msgstr "التوقيع جيّد" -#: messagepartthemes/default/defaultrenderer.cpp:88 +#: messagepartthemes/default/defaultrenderer.cpp:89 #, kde-format msgid "Bad signature" msgstr "التوقيع سيّئ" -#: messagepartthemes/default/defaultrenderer.cpp:91 +#: messagepartthemes/default/defaultrenderer.cpp:92 #, kde-format msgid "No public key to verify the signature" msgstr "لا مفتاح علنيّ للتّحقّق من التّوقيع" -#: messagepartthemes/default/defaultrenderer.cpp:94 +#: messagepartthemes/default/defaultrenderer.cpp:95 #, kde-format msgid "No signature found" msgstr "لم يُعثر على أيّ توقيع" -#: messagepartthemes/default/defaultrenderer.cpp:97 +#: messagepartthemes/default/defaultrenderer.cpp:98 #, kde-format msgid "Error verifying the signature" msgstr "خطأ أثناء التّحقّق من التّوقيع" -#: messagepartthemes/default/defaultrenderer.cpp:100 +#: messagepartthemes/default/defaultrenderer.cpp:101 #, kde-format msgid "Different results for signatures" msgstr "اختلفت نتائج التّواقيع" -#: messagepartthemes/default/defaultrenderer.cpp:119 +#: messagepartthemes/default/defaultrenderer.cpp:120 #, kde-format msgid "No status information available." msgstr "لا معلومات متوفّرة عن الحالة." -#: messagepartthemes/default/defaultrenderer.cpp:126 -#: messagepartthemes/default/defaultrenderer.cpp:211 +#: messagepartthemes/default/defaultrenderer.cpp:127 +#: messagepartthemes/default/defaultrenderer.cpp:212 #, kde-format msgid "Good signature." msgstr "التّوقيع جيّد." -#: messagepartthemes/default/defaultrenderer.cpp:147 +#: messagepartthemes/default/defaultrenderer.cpp:148 #, kde-format msgid "One key has expired." msgstr "انقضى مفتاح واحد." -#: messagepartthemes/default/defaultrenderer.cpp:151 +#: messagepartthemes/default/defaultrenderer.cpp:152 #, kde-format msgid "The signature has expired." msgstr "انقضى التّوقيع." -#: messagepartthemes/default/defaultrenderer.cpp:156 +#: messagepartthemes/default/defaultrenderer.cpp:157 #, kde-format msgid "Unable to verify: key missing." msgstr "تعذّر التّحقّق: المفتاح ناقص." -#: messagepartthemes/default/defaultrenderer.cpp:163 +#: messagepartthemes/default/defaultrenderer.cpp:164 #, kde-format msgid "CRL not available." msgstr "‏CRL غير متوفّر." -#: messagepartthemes/default/defaultrenderer.cpp:167 +#: messagepartthemes/default/defaultrenderer.cpp:168 #, kde-format msgid "Available CRL is too old." msgstr "‏CRL المتوفّر قديم جدًّا." -#: messagepartthemes/default/defaultrenderer.cpp:171 +#: messagepartthemes/default/defaultrenderer.cpp:172 #, kde-format msgid "A policy was not met." msgstr "لم تطبّق إحدى السّياسات." -#: messagepartthemes/default/defaultrenderer.cpp:175 +#: messagepartthemes/default/defaultrenderer.cpp:176 #, kde-format msgid "A system error occurred." msgstr "حدث خطأ في النّظام." -#: messagepartthemes/default/defaultrenderer.cpp:186 +#: messagepartthemes/default/defaultrenderer.cpp:187 #, kde-format msgid "One key has been revoked." msgstr "فُسخ مفتاح واحد." -#: messagepartthemes/default/defaultrenderer.cpp:213 +#: messagepartthemes/default/defaultrenderer.cpp:214 #, kde-format msgid "Bad signature." msgstr "التوقيع سيّئ." -#: messagepartthemes/default/defaultrenderer.cpp:632 -#: messagepartthemes/default/defaultrenderer.cpp:634 +# تُستخدم في ”Sender's mail address is not stored in the %1 used for signing“ مع بعض التنسيق +#: messagepartthemes/default/defaultrenderer.cpp:629 +#: messagepartthemes/default/defaultrenderer.cpp:631 #, kde-format msgid "certificate" msgstr "الشّهادة" -#: messagepartthemes/default/defaultrenderer.cpp:641 -#: messagepartthemes/default/defaultrenderer.cpp:670 +#: messagepartthemes/default/defaultrenderer.cpp:638 +#: messagepartthemes/default/defaultrenderer.cpp:667 #, kde-format msgctxt "Start of warning message." msgid "Warning:" msgstr "تحذير:" -#: messagepartthemes/default/defaultrenderer.cpp:644 +#: messagepartthemes/default/defaultrenderer.cpp:641 #, kde-format msgid "Sender's mail address is not stored in the %1 used for signing." msgstr "لم يُخزّن عنوان بريد المرسل في %1 المستخدمة للتّوقيع." -#: messagepartthemes/default/defaultrenderer.cpp:647 +#: messagepartthemes/default/defaultrenderer.cpp:644 #, kde-format msgid "sender: " msgstr "المرسل: " -#: messagepartthemes/default/defaultrenderer.cpp:650 +#: messagepartthemes/default/defaultrenderer.cpp:647 #, kde-format msgid "stored: " msgstr "مُخزّنة في: " -#: messagepartthemes/default/defaultrenderer.cpp:672 +#: messagepartthemes/default/defaultrenderer.cpp:669 #, kde-format msgid "" "No mail address is stored in the %1 used for signing, so we cannot compare " @@ -672,6 +656,7 @@ "بعنوان المرسل %2." #: scamdetection/scamdetectiondetailsdialog.cpp:47 +#: widgets/mailtrackingdetailsdialog.cpp:32 #, kde-format msgid "Details" msgstr "التّفاصيل" @@ -702,11 +687,13 @@ msgstr "عطّل اكتشاف الخداع لكلّ الرّسائل" #: scamdetection/scamdetectionwebengine.cpp:103 +#: widgets/mailtrackingwarningwidget.cpp:55 #, kde-format msgid "Details:" msgstr "التّفاصيل:" #: scamdetection/scamdetectionwebengine.cpp:136 +#: scamdetection/scamdetectionwebengine.cpp:191 #, kde-format msgid "" "This email contains a link which reads as '%1' in the text, but actually " @@ -756,7 +743,7 @@ msgstr "" "يحتوي هذا البريد مسارًا قصيرًا (%1). يمكن أن يُعيد المسار توجيهك إلى خادوم آخر." -#: scamdetection/scamdetectionwebengine.cpp:181 +#: scamdetection/scamdetectionwebengine.cpp:206 #, kde-format msgid "Message contains form element. This is often the case in scam emails." msgstr "يحتوي البريد عنصر استمارة. هذه الحالة توجد غالبًا في الرّسائل المخادعة." @@ -817,12 +804,6 @@ msgid "Close message window after replying or forwarding" msgstr "أغلق نافذة الرّسالة بعد الرّد أو التّمرير" -#. i18n: ectx: label, entry (showColorBar), group (Reader) -#: settings/messageviewer.kcfg.cmake:59 -#, kde-format -msgid "Show HTML Side Bar" -msgstr "اعرض شريط HTML الجانبيّ" - #. i18n: ectx: label, entry (ShowExpandQuotesMark), group (Reader) #: settings/messageviewer.kcfg.cmake:63 #, kde-format @@ -857,82 +838,76 @@ msgid "Enable this option to show quoted text with a smaller font." msgstr "فعّل هذا الخيار لعرض النّصّ المقتبس بخطّ أصغر." -#. i18n: ectx: label, entry (AllowAttachmentEditing), group (Reader) -#: settings/messageviewer.kcfg.cmake:79 -#, kde-format -msgid "Allow to edit attachments of existing mails." -msgstr "اسمح بتحرير مرفقات البريد الموجود." - #. i18n: ectx: label, entry (AlwaysDecrypt), group (Reader) -#: settings/messageviewer.kcfg.cmake:83 +#: settings/messageviewer.kcfg.cmake:79 #, kde-format msgid "Always decrypt messages when viewing or ask before decrypting" msgstr "يتيح فكّ تعمية الرّسائل عند عرضها أو السّؤال قبل فكّ التّعمية" #. i18n: ectx: label, entry (MimeTreeMode2), group (Reader) -#: settings/messageviewer.kcfg.cmake:86 +#: settings/messageviewer.kcfg.cmake:82 #, kde-format msgid "Message Structure Viewer" msgstr "عارض بنية الرّسائل" #. i18n: ectx: label, entry (MimeTreeMode2), group (Reader) -#: settings/messageviewer.kcfg.cmake:89 +#: settings/messageviewer.kcfg.cmake:85 #, kde-format msgid "Show never" msgstr "لا تعرض أبدًا" #. i18n: ectx: label, entry (MimeTreeMode2), group (Reader) -#: settings/messageviewer.kcfg.cmake:92 +#: settings/messageviewer.kcfg.cmake:88 #, kde-format msgid "Show always" msgstr "اعرض دائمًا" #. i18n: ectx: label, entry (headerPluginStyleName), group (Reader) #. i18n: ectx: label, entry (headerStyle), group (Reader) -#: settings/messageviewer.kcfg.cmake:104 settings/messageviewer.kcfg.cmake:110 +#: settings/messageviewer.kcfg.cmake:100 settings/messageviewer.kcfg.cmake:106 #, kde-format msgid "What style of headers should be displayed" msgstr "نوع نمط التّرويسات لعرضه" #. i18n: ectx: label, entry (headerSetDisplayed), group (Reader) -#: settings/messageviewer.kcfg.cmake:114 +#: settings/messageviewer.kcfg.cmake:110 #, kde-format msgid "How much of headers should be displayed" msgstr "مقدار التّرويسات لعرضها" #. i18n: ectx: label, entry (htmlMail), group (Reader) -#: settings/messageviewer.kcfg.cmake:118 +#: settings/messageviewer.kcfg.cmake:114 #, kde-format msgid "Prefer HTML to plain text" msgstr "فضّل HTML على النّصّ الصّرف" #. i18n: ectx: label, entry (htmlLoadExternal), group (Reader) -#: settings/messageviewer.kcfg.cmake:122 +#: settings/messageviewer.kcfg.cmake:118 #, kde-format msgid "Allow messages to load external references from the Internet" msgstr "اسمح للرّسائل بتحميل المراجع الخارجيّة من الشّابكة" #. i18n: ectx: label, entry (attachmentStrategy), group (Reader) -#: settings/messageviewer.kcfg.cmake:126 +#: settings/messageviewer.kcfg.cmake:122 #, kde-format msgid "How attachments are shown" msgstr "طريقة عرض المرفقات" #. i18n: ectx: label, entry (RecycleQuoteColors), group (Reader) -#: settings/messageviewer.kcfg.cmake:130 +#: settings/messageviewer.kcfg.cmake:126 #, kde-format msgid "Specifies whether to reuse the quote color, beyond the 3rd level" msgstr "" "يحدّد فيما إذا كان يجب إعادة استخدام ألوان الاقتباسات، بعد المستوى الثّالث" #. i18n: ectx: label, entry (AccessKeyEnabled), group (Reader) -#: settings/messageviewer.kcfg.cmake:134 +#: settings/messageviewer.kcfg.cmake:130 #, kde-format msgid "Activate Access Key" msgstr "فعّل مفتاح النّفاذ" #. i18n: ectx: label, entry (ScamDetectionEnabled), group (Reader) -#: settings/messageviewer.kcfg.cmake:138 +#: settings/messageviewer.kcfg.cmake:134 #, kde-format msgid "" "KMail can analyze messages for suspected email scams by looking for common " @@ -942,19 +917,19 @@ "التي تُستخدم لتضليلك" #. i18n: ectx: label, entry (ScamDetectionWhiteList), group (Reader) -#: settings/messageviewer.kcfg.cmake:142 +#: settings/messageviewer.kcfg.cmake:138 #, kde-format msgid "List of emails in scam white list" msgstr "قائمة بالبريد في القائمة البيضاء للرّسائل المخادعة" #. i18n: ectx: label, entry (notSendWhenEncrypted), group (MDN) -#: settings/messageviewer.kcfg.cmake:148 +#: settings/messageviewer.kcfg.cmake:144 #, kde-format msgid "Do not send MDNs in response to encrypted messages" msgstr "لا تُرسل MDN كجواب على الرّسائل المعمّاة" #. i18n: ectx: label, entry (DefaultPolicy), group (MDN) -#: settings/messageviewer.kcfg.cmake:152 +#: settings/messageviewer.kcfg.cmake:148 #, kde-format msgid "" "Specifies the default policy to use, for the Message Disposition " @@ -964,7 +939,7 @@ "فقط)" #. i18n: ectx: label, entry (QuoteMessage), group (MDN) -#: settings/messageviewer.kcfg.cmake:156 +#: settings/messageviewer.kcfg.cmake:152 #, kde-format msgid "" "Specifies the default quoting action to take, when replying to a message " @@ -974,13 +949,13 @@ "فقط)" #. i18n: ectx: label, entry (LegacyMangleFromToHeaders), group (Invitations) -#: settings/messageviewer.kcfg.cmake:172 +#: settings/messageviewer.kcfg.cmake:168 #, kde-format msgid "Mangle From:/To: headers in replies to replies" msgstr "شوّه ترويستي ”مِن:“ و”إلى:“ في ردود الرّدود" #. i18n: ectx: whatsthis, entry (LegacyMangleFromToHeaders), group (Invitations) -#: settings/messageviewer.kcfg.cmake:173 +#: settings/messageviewer.kcfg.cmake:169 #, kde-format msgid "" "Microsoft Outlook has a number of shortcomings in its implementation of the " @@ -993,13 +968,13 @@ "فجرّب ضبط هذا الخيار." #. i18n: ectx: label, entry (LegacyBodyInvites), group (Invitations) -#: settings/messageviewer.kcfg.cmake:178 +#: settings/messageviewer.kcfg.cmake:174 #, kde-format msgid "Send groupware invitations in the mail body" msgstr "أرسل الدّعوات التّعاونيّة في متن البريد" #. i18n: ectx: whatsthis, entry (LegacyBodyInvites), group (Invitations) -#: settings/messageviewer.kcfg.cmake:179 +#: settings/messageviewer.kcfg.cmake:175 #, kde-format msgid "" "Microsoft Outlook has a number of shortcomings in its implementation of the " @@ -1012,13 +987,13 @@ "فجرّب ضبط هذا الخيار." #. i18n: ectx: label, entry (ExchangeCompatibleInvitations), group (Invitations) -#: settings/messageviewer.kcfg.cmake:184 +#: settings/messageviewer.kcfg.cmake:180 #, kde-format msgid "Exchange-compatible invitation naming" msgstr "تسمية الدّعوات متوافقة مع «إكسچينج»" #. i18n: ectx: whatsthis, entry (ExchangeCompatibleInvitations), group (Invitations) -#: settings/messageviewer.kcfg.cmake:185 +#: settings/messageviewer.kcfg.cmake:181 #, kde-format msgid "" "Microsoft Outlook, when used in combination with a Microsoft Exchange " @@ -1031,13 +1006,13 @@ "التّعاونيّة بطريقة يفهمها «مايكروسوفت إكسچينج»." #. i18n: ectx: label, entry (AutomaticSending), group (Invitations) -#: settings/messageviewer.kcfg.cmake:190 +#: settings/messageviewer.kcfg.cmake:186 #, kde-format msgid "Automatic invitation sending" msgstr "إرسال الدّعوات الآليّ" #. i18n: ectx: whatsthis, entry (AutomaticSending), group (Invitations) -#: settings/messageviewer.kcfg.cmake:191 +#: settings/messageviewer.kcfg.cmake:187 #, kde-format msgid "" "When this is checked, you will not see the mail composer window. Instead, " @@ -1053,13 +1028,13 @@ #. i18n: ectx: label, entry (DeleteInvitationEmailsAfterSendingReply), group (Invitations) #. i18n: ectx: property (text), widget (QCheckBox, mDeleteInvitations) -#: settings/messageviewer.kcfg.cmake:196 ui/invitationsettings.ui:74 +#: settings/messageviewer.kcfg.cmake:192 ui/invitationsettings.ui:74 #, kde-format msgid "Delete invitation emails after the reply to them has been sent" msgstr "احذف رسائل الدّعوات بعد إرسال الرّدّ عليها" #. i18n: ectx: whatsthis, entry (DeleteInvitationEmailsAfterSendingReply), group (Invitations) -#: settings/messageviewer.kcfg.cmake:197 +#: settings/messageviewer.kcfg.cmake:193 #, kde-format msgid "" "When this is checked, received invitation emails that have been replied to " @@ -1069,29 +1044,26 @@ "ما إن يُرسل الرّدّ بنجاح." #. i18n: ectx: label, entry (UseFixedFont), group (Composer) -#: settings/messageviewer.kcfg.cmake:221 viewer/viewer_p.cpp:1646 +#: settings/messageviewer.kcfg.cmake:217 viewer/viewer_p.cpp:1633 #, kde-format msgid "Use Fi&xed Font" msgstr "استخدم &خطًّا ثابتًا" #. i18n: ectx: whatsthis, entry (LastSelectedFolder), group (Todo) -#: settings/messageviewer.kcfg.cmake:228 +#: settings/messageviewer.kcfg.cmake:224 #, fuzzy, kde-format -#| msgid "The most recently selected folder in the folder selection dialog." msgid "The most recent selected folder using for Todo." msgstr "أحدث مجلّد حُدّد لاستخدامه للمهامّ." #. i18n: ectx: whatsthis, entry (LastEventSelectedFolder), group (Event) -#: settings/messageviewer.kcfg.cmake:234 +#: settings/messageviewer.kcfg.cmake:230 #, fuzzy, kde-format -#| msgid "The most recently selected folder in the folder selection dialog." msgid "The most recent selected folder using for Event." msgstr "أحدث مجلّد حُدّد لاستخدامه للأحداث." #. i18n: ectx: whatsthis, entry (LastNoteSelectedFolder), group (Note) -#: settings/messageviewer.kcfg.cmake:240 +#: settings/messageviewer.kcfg.cmake:236 #, fuzzy, kde-format -#| msgid "The most recently selected folder in the folder selection dialog." msgid "The most recent selected folder using for Notes." msgstr "أحدث مجلّد حُدّد لاستخدامه للملاحظات." @@ -1206,32 +1178,26 @@ msgid "Enable access key" msgstr "فعّل مفتاح النّفاذ" -#. i18n: ectx: property (text), widget (QCheckBox, kcfg_showColorBar) -#: ui/settings.ui:98 -#, kde-format -msgid "Show &HTML Side Bar" -msgstr "ا&عرض شريط HTML الجانبيّ" - #. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShrinkQuotes) -#: ui/settings.ui:105 +#: ui/settings.ui:98 #, kde-format msgid "Reduce font size for "ed text" msgstr "أن&قِص حجم خطّ النّصّ المقتبس" #. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowExpandQuotesMark) -#: ui/settings.ui:112 +#: ui/settings.ui:105 #, kde-format msgid "Show &expand/collapse quote marks" msgstr "اعرض علامات توسيع/طيّ الاقتباس" #. i18n: ectx: property (text), widget (QLabel, collapseQuoteLevelLabel) -#: ui/settings.ui:140 +#: ui/settings.ui:133 #, kde-format msgid "Automatic collapse &level:" msgstr "م&ستوى الطّيّ الآليّ:" #. i18n: ectx: property (text), widget (QLabel, label_4) -#: ui/settings.ui:209 +#: ui/settings.ui:202 #, kde-format msgid "&Minimum font size:" msgstr "أ&دنى حجم للخطّ:" @@ -1247,64 +1213,64 @@ msgid "Overwrite File?" msgstr "أأكتب فوق الملفّ؟" -#: utils/messageviewerutil.cpp:139 +#: utils/messageviewerutil.cpp:140 #, kde-format msgid "Save Attachments To" msgstr "احفظ المرفقات في" -#: utils/messageviewerutil.cpp:158 +#: utils/messageviewerutil.cpp:159 #, kde-format msgctxt "filename for an unnamed attachment" msgid "attachment.1" msgstr "مرفق.١" -#: utils/messageviewerutil.cpp:166 +#: utils/messageviewerutil.cpp:167 #, kde-format msgid "Save Attachment" msgstr "احفظ المرفق" -#: utils/messageviewerutil.cpp:193 +#: utils/messageviewerutil.cpp:194 #, kde-format msgctxt "filename for the %1-th unnamed attachment" msgid "attachment.%1" msgstr "مرفق.%1" -#: utils/messageviewerutil.cpp:296 +#: utils/messageviewerutil.cpp:299 #, kde-format msgid "" "The part %1 of the message is encrypted. Do you want to keep the encryption " "when saving?" msgstr "الجزء %1 من الرّسالة معمًّى. أتريد إبقاء التّعمية عند الحفظ؟" -#: utils/messageviewerutil.cpp:298 utils/messageviewerutil.cpp:311 +#: utils/messageviewerutil.cpp:301 utils/messageviewerutil.cpp:314 #, kde-format msgid "KMail Question" msgstr "سؤال «بريدك»" -#: utils/messageviewerutil.cpp:298 +#: utils/messageviewerutil.cpp:301 #, kde-format msgid "Keep Encryption" msgstr "أبقِ التّعمية" -#: utils/messageviewerutil.cpp:299 utils/messageviewerutil.cpp:312 +#: utils/messageviewerutil.cpp:302 utils/messageviewerutil.cpp:315 #, kde-format msgid "Do Not Keep" msgstr "لا تُبقها" -#: utils/messageviewerutil.cpp:309 +#: utils/messageviewerutil.cpp:312 #, kde-format msgid "" "The part %1 of the message is signed. Do you want to keep the signature when " "saving?" msgstr "الجزء %1 من الرّسالة موقّعة. أتريد إبقاء التّوقيع عند الحفظ؟" -#: utils/messageviewerutil.cpp:311 +#: utils/messageviewerutil.cpp:314 #, kde-format msgid "Keep Signature" msgstr "أبقِ التّوقيع" -#: utils/messageviewerutil.cpp:376 utils/messageviewerutil.cpp:394 -#: utils/messageviewerutil.cpp:412 +#: utils/messageviewerutil.cpp:379 utils/messageviewerutil.cpp:397 +#: utils/messageviewerutil.cpp:415 #, kde-kuit-format msgctxt "1 = file name, 2 = error string" msgid "" @@ -1314,28 +1280,29 @@ "تعذّرت الكتابة في الملفّ
    %1

    %2" -#: utils/messageviewerutil.cpp:379 utils/messageviewerutil.cpp:397 -#: utils/messageviewerutil.cpp:415 +#: utils/messageviewerutil.cpp:382 utils/messageviewerutil.cpp:400 +#: utils/messageviewerutil.cpp:418 #, kde-format msgid "Error saving attachment" msgstr "خطأ في حفظ المستند" -#: utils/messageviewerutil.cpp:428 +#: utils/messageviewerutil.cpp:431 #, kde-format msgid "Found no attachments to save." msgstr "لم يُعثر على مستندات لحفظها." -#: utils/messageviewerutil.cpp:451 +# اسم ملف +#: utils/messageviewerutil.cpp:450 #, kde-format msgid "message" msgstr "رسالة" -#: utils/messageviewerutil.cpp:458 +#: utils/messageviewerutil.cpp:467 #, kde-format msgid "email messages (*.mbox);;all files (*)" msgstr "رسائل البريد (*.mbox);;كلّ الرّسائل (*)" -#: utils/messageviewerutil.cpp:471 +#: utils/messageviewerutil.cpp:480 #, kde-format msgid "Save Message" msgid_plural "Save Messages" @@ -1346,37 +1313,37 @@ msgstr[4] "احفظ الرّسائل" msgstr[5] "احفظ الرّسائل" -#: utils/messageviewerutil.cpp:484 +#: utils/messageviewerutil.cpp:493 #, kde-format msgid "File %1 could not be loaded." msgstr "تعذّر تحميل الملفّ %1." -#: utils/messageviewerutil.cpp:485 +#: utils/messageviewerutil.cpp:494 #, kde-format msgid "Error loading message" msgstr "خطأ في تحميل الرّسالة" -#: utils/messageviewerutil.cpp:487 +#: utils/messageviewerutil.cpp:496 #, kde-format msgid "File %1 could not be created." msgstr "تعذّر إنشاء الملفّ %1." -#: utils/messageviewerutil.cpp:488 utils/messageviewerutil.cpp:500 +#: utils/messageviewerutil.cpp:497 utils/messageviewerutil.cpp:509 #, kde-format msgid "Error saving message" msgstr "خطأ في حفظ الرّسالة" -#: utils/messageviewerutil.cpp:499 +#: utils/messageviewerutil.cpp:508 #, kde-format msgid "We cannot save message." msgstr "تعذّر حفظ الرّسالة." -#: utils/messageviewerutil.cpp:516 +#: utils/messageviewerutil.cpp:532 #, kde-format msgid "Open &with %1" msgstr "اف&تح في %1" -#: utils/messageviewerutil.cpp:518 +#: utils/messageviewerutil.cpp:534 #, kde-format msgctxt "@item:inmenu Open With, %1 is application name" msgid "%1" @@ -1421,178 +1388,148 @@ msgid "Size" msgstr "الحجم" -#: viewer/urlhandlermanager.cpp:715 +#: viewer/urlhandlermanager.cpp:426 #, kde-format msgid "Turn on HTML rendering for this message." msgstr "فعّل تصيير HTML لهذه الرّسالة." -#: viewer/urlhandlermanager.cpp:717 viewer/viewer_p.cpp:1729 +#: viewer/urlhandlermanager.cpp:428 viewer/viewer_p.cpp:1716 #, kde-format msgid "Load external references from the Internet for this message." msgstr "حمّل المراجع الخارجيّة من الشّابكة لهذه الرّسالة." -#: viewer/urlhandlermanager.cpp:719 +#: viewer/urlhandlermanager.cpp:430 #, kde-format msgid "Work online." msgstr "اعمل بالشّابكة." -#: viewer/urlhandlermanager.cpp:721 +#: viewer/urlhandlermanager.cpp:432 #, kde-format msgid "Make account online." msgstr "صِل الحساب بالشّابكة." -#: viewer/urlhandlermanager.cpp:723 +#: viewer/urlhandlermanager.cpp:434 #, kde-format msgid "Decrypt message." msgstr "فكّ تعمية الرّسالة." -#: viewer/urlhandlermanager.cpp:725 +#: viewer/urlhandlermanager.cpp:436 #, kde-format msgid "Show signature details." msgstr "اعرض تفاصيل الشّهادة." -#: viewer/urlhandlermanager.cpp:727 +#: viewer/urlhandlermanager.cpp:438 #, kde-format msgid "Hide signature details." msgstr "أخفِ تفاصيل الشّهادة." -#: viewer/urlhandlermanager.cpp:729 +#: viewer/urlhandlermanager.cpp:440 #, kde-format msgid "Show encryption details." msgstr "اعرض تفاصيل التّعمية." -#: viewer/urlhandlermanager.cpp:731 +#: viewer/urlhandlermanager.cpp:442 #, kde-format msgid "Hide encryption details." msgstr "أخفِ تفاصيل التّعمية." -#: viewer/urlhandlermanager.cpp:733 -#, kde-format -msgid "Hide attachment list." -msgstr "أخفِ قائمة المرفقات." - -#: viewer/urlhandlermanager.cpp:735 -#, kde-format -msgid "Show attachment list." -msgstr "اعرض قائمة المرفقات." - -#: viewer/urlhandlermanager.cpp:737 -#, kde-format -msgid "Hide full \"To\" list" -msgstr "أخفِ قائمة ”مِن“ الكاملة" - -#: viewer/urlhandlermanager.cpp:739 -#, kde-format -msgid "Show full \"To\" list" -msgstr "اعرض قائمة ”مِن“ الكاملة" - -#: viewer/urlhandlermanager.cpp:741 -#, kde-format -msgid "Hide full \"Cc\" list" -msgstr "أخفِ قائمة ”ن‌ك“ الكاملة" - -#: viewer/urlhandlermanager.cpp:743 -#, kde-format -msgid "Show full \"Cc\" list" -msgstr "اعرض قائمة ”ن‌ك“ الكاملة" - -#: viewer/urlhandlermanager.cpp:748 +#: viewer/urlhandlermanager.cpp:447 #, kde-format msgid "Open Documentation" msgstr "افتح التّوثيق" -#: viewer/urlhandlermanager.cpp:784 +#: viewer/urlhandlermanager.cpp:481 #, kde-format msgid "Expand all quoted text." msgstr "وسّع كلّ النّصّ المقتبس." -#: viewer/urlhandlermanager.cpp:786 +#: viewer/urlhandlermanager.cpp:483 #, kde-format msgid "Collapse quoted text." msgstr "اطوِ النّصّ المقتبس." -#: viewer/urlhandlermanager.cpp:848 +#: viewer/urlhandlermanager.cpp:543 #, kde-format msgid "Could not start certificate manager. Please check your installation." msgstr "تعذّر بدء مدير الشّهادات. رجاءً افحص تثبيتك." -#: viewer/urlhandlermanager.cpp:850 +#: viewer/urlhandlermanager.cpp:545 #, kde-format msgid "KMail Error" msgstr "خطأ في «بريدك»" -#: viewer/urlhandlermanager.cpp:863 +#: viewer/urlhandlermanager.cpp:558 #, kde-format msgid "Show certificate 0x%1" msgstr "اعرض الشّهادة 0x%1‎" -#: viewer/urlhandlermanager.cpp:931 +#: viewer/urlhandlermanager.cpp:620 #, kde-format msgid "&Open in Address Book" msgstr "ا&فتح في دفتر العناوين" -#: viewer/urlhandlermanager.cpp:935 +#: viewer/urlhandlermanager.cpp:624 #, kde-format msgid "&Copy Email Address" msgstr "ا&نسخ عنوان البريد" -#: viewer/urlhandlermanager.cpp:948 viewer/viewer_p.cpp:2845 +#: viewer/urlhandlermanager.cpp:637 viewer/viewer_p.cpp:2765 #, kde-format msgid "Address copied to clipboard." msgstr "نُسخ العنوان إلى الحافظة." -#: viewer/urlhandlermanager.cpp:960 +#: viewer/urlhandlermanager.cpp:648 #, kde-format msgid "Lookup the contact in KAddressbook" msgstr "ابحث عن المتراسل في «دفتر عناوينك»" -#: viewer/urlhandlermanager.cpp:1086 +#: viewer/urlhandlermanager.cpp:825 #, kde-format msgid "Attachment: %1" msgstr "المرفق: %1" -#: viewer/urlhandlermanager.cpp:1089 +#: viewer/urlhandlermanager.cpp:828 #, kde-format msgid "Encapsulated Message (Subject: %1)" msgstr "رسالة مغلّفة (الموضوع: %1)" -#: viewer/urlhandlermanager.cpp:1092 +#: viewer/urlhandlermanager.cpp:831 #, kde-format msgid "Encapsulated Message" msgstr "رسالة مغلّفة" -#: viewer/urlhandlermanager.cpp:1095 +#: viewer/urlhandlermanager.cpp:834 #, kde-format msgid "Unnamed attachment" msgstr "مرفق غير مسمًّى" -#: viewer/urlhandlermanager.cpp:1133 +#: viewer/urlhandlermanager.cpp:870 #, kde-format msgid "Show GnuPG Audit Log for this operation" msgstr "اعرض سجلّ تدقيق GnuPG لهذه العمليّة" -#: viewer/urlhandlermanager.cpp:1180 +#: viewer/urlhandlermanager.cpp:913 #, kde-format msgid "Opening URL..." msgstr "يفتح المسار..." -#: viewer/urlhandlermanager.cpp:1191 +#: viewer/urlhandlermanager.cpp:924 #, kde-kuit-format msgctxt "@info" msgid "Do you really want to execute %1?" msgstr "أمتأكّد من تنفيذ %1؟" -#: viewer/urlhandlermanager.cpp:1193 +#: viewer/urlhandlermanager.cpp:926 #, kde-format msgid "Execute" msgstr "نفّذ" -#: viewer/viewer.cpp:144 +#: viewer/viewer.cpp:146 #, kde-format msgid "Loading message..." msgstr "يحمّل الرّسالة..." -#: viewer/viewer_p.cpp:410 +#: viewer/viewer_p.cpp:409 #, kde-format msgid "" "Deleting an attachment from an encrypted or old-style mailman message is not " @@ -1601,342 +1538,343 @@ "حذف المرفقات من الرّسائل المعمّاة أو الرّسائل القديمة النّمط لِ‍«فتى البريد " "MailMan» ليس مدعومًا." -#: viewer/viewer_p.cpp:411 viewer/viewer_p.cpp:418 viewer/viewer_p.cpp:676 -#: viewer/viewer_p.cpp:1811 +#: viewer/viewer_p.cpp:410 viewer/viewer_p.cpp:417 viewer/viewer_p.cpp:653 #, kde-format msgid "Delete Attachment" msgstr "احذف المرفق" -#: viewer/viewer_p.cpp:417 +#: viewer/viewer_p.cpp:416 #, kde-format msgid "" "Deleting an attachment might invalidate any digital signature on this " "message." msgstr "حذف المرفق قد يلغي صلاحيّة أيّ توقيع رقميّ في هذه الرّسالة." -#: viewer/viewer_p.cpp:514 +#: viewer/viewer_p.cpp:502 #, kde-format msgctxt "@title:menu" msgid "&Open With" msgstr "ا&فتح في" -#: viewer/viewer_p.cpp:532 +#: viewer/viewer_p.cpp:520 #, kde-format msgctxt "@action:inmenu Open With" msgid "&Other..." msgstr "&غيرها..." -#: viewer/viewer_p.cpp:534 viewer/viewer_p.cpp:548 +#: viewer/viewer_p.cpp:522 viewer/viewer_p.cpp:536 #, kde-format msgctxt "@title:menu" msgid "&Open With..." msgstr "ا&فتح في..." -#: viewer/viewer_p.cpp:610 viewer/viewer_p.cpp:1786 +#: viewer/viewer_p.cpp:599 viewer/viewer_p.cpp:1773 #, kde-format msgctxt "to open" msgid "Open" msgstr "افتح" -#: viewer/viewer_p.cpp:629 viewer/viewer_p.cpp:1796 +#: viewer/viewer_p.cpp:619 viewer/viewer_p.cpp:1783 #, kde-format msgctxt "to view something" msgid "View" msgstr "اعرض" -#: viewer/viewer_p.cpp:641 +# ”مرر إلى“ = forward +# ”مرر نحوه“ = scroll wheel +#: viewer/viewer_p.cpp:627 #, kde-format msgid "Scroll To" msgstr "مرّر نحوه" -#: viewer/viewer_p.cpp:650 +#: viewer/viewer_p.cpp:633 #, kde-format msgid "Save As..." msgstr "احفظ كَ‍..." -#: viewer/viewer_p.cpp:655 viewer/viewer_p.cpp:1808 +#: viewer/viewer_p.cpp:639 viewer/viewer_p.cpp:1795 #, kde-format msgid "Copy" msgstr "انسخ" -#: viewer/viewer_p.cpp:685 +#: viewer/viewer_p.cpp:664 #, kde-format msgid "Reply To Author" msgstr "رُدّ على المؤلّف" -#: viewer/viewer_p.cpp:692 +#: viewer/viewer_p.cpp:672 #, kde-format msgid "Reply To All" msgstr "رُدّ على الكلّ" -#: viewer/viewer_p.cpp:697 viewer/viewer_p.cpp:1822 +#: viewer/viewer_p.cpp:678 viewer/viewer_p.cpp:1801 #, kde-format msgid "Properties" msgstr "خصائص" -#: viewer/viewer_p.cpp:860 +#: viewer/viewer_p.cpp:841 #, kde-format msgid "KMail" msgstr "بريدك" -#: viewer/viewer_p.cpp:861 +#: viewer/viewer_p.cpp:842 #, kde-format msgid "The KDE Mail Client" msgstr "عميل البريد لِ‍«كدي»" -#: viewer/viewer_p.cpp:1366 +#: viewer/viewer_p.cpp:1349 #, kde-format msgid "View Attachment: %1" msgstr "اعرض المرفق: %1" -#: viewer/viewer_p.cpp:1558 +#: viewer/viewer_p.cpp:1545 #, kde-format msgctxt "View->" msgid "&Attachments" msgstr "المرف&قات" -#: viewer/viewer_p.cpp:1560 +#: viewer/viewer_p.cpp:1547 #, kde-format msgid "Choose display style of attachments" msgstr "اختر نمط عرض المرفقات" -#: viewer/viewer_p.cpp:1563 +#: viewer/viewer_p.cpp:1550 #, kde-format msgctxt "View->attachments->" msgid "&As Icons" msgstr "كأي&قونات" -#: viewer/viewer_p.cpp:1566 +#: viewer/viewer_p.cpp:1553 #, kde-format msgid "Show all attachments as icons. Click to see them." msgstr "اعرض كلّ المرفقات كأيقونات. انقر لرؤيتها." -#: viewer/viewer_p.cpp:1570 +#: viewer/viewer_p.cpp:1557 #, kde-format msgctxt "View->attachments->" msgid "&Smart" msgstr "بذ&كاء" -#: viewer/viewer_p.cpp:1573 +#: viewer/viewer_p.cpp:1560 #, kde-format msgid "Show attachments as suggested by sender." msgstr "اعرض المرفقات كما اقترحها مرسلها." -#: viewer/viewer_p.cpp:1577 +#: viewer/viewer_p.cpp:1564 #, kde-format msgctxt "View->attachments->" msgid "&Inline" msgstr "&ضمن السّياق" -#: viewer/viewer_p.cpp:1580 +#: viewer/viewer_p.cpp:1567 #, kde-format msgid "Show all attachments inline (if possible)" msgstr "اعرض المرفقات ضمن السّياق (إن أمكن)" -#: viewer/viewer_p.cpp:1584 +#: viewer/viewer_p.cpp:1571 #, kde-format msgctxt "View->attachments->" msgid "&Hide" msgstr "أ&خفِ" -#: viewer/viewer_p.cpp:1587 +#: viewer/viewer_p.cpp:1574 #, kde-format msgid "Do not show attachments in the message viewer" msgstr "لا تعرض المرفقات في عارض الرّسائل" -#: viewer/viewer_p.cpp:1592 +#: viewer/viewer_p.cpp:1579 #, kde-format msgctxt "View->attachments->" msgid "In Header Only" msgstr "في التّرويسة فقط" -#: viewer/viewer_p.cpp:1597 +#: viewer/viewer_p.cpp:1584 #, kde-format msgid "Show Attachments only in the header of the mail" msgstr "اعرض المرفقات فقط في ترويسة البريد" -#: viewer/viewer_p.cpp:1604 +#: viewer/viewer_p.cpp:1591 #, kde-format msgid "&Set Encoding" msgstr "ا&ضبط التّرميز" -#: viewer/viewer_p.cpp:1610 widgets/configurewidget.cpp:58 +#: viewer/viewer_p.cpp:1597 widgets/configurewidget.cpp:58 #: widgets/configurewidget.cpp:105 #, kde-format msgid "Auto" msgstr "آليّ" -#: viewer/viewer_p.cpp:1620 +#: viewer/viewer_p.cpp:1607 #, kde-format msgid "Copy Text" msgstr "انسخ النّصّ" -#: viewer/viewer_p.cpp:1628 +#: viewer/viewer_p.cpp:1615 #, kde-format msgid "Select All Text" msgstr "حدّد كلّ النّصّ" -#: viewer/viewer_p.cpp:1635 viewer/viewer_p.cpp:2124 +#: viewer/viewer_p.cpp:1622 viewer/viewer_p.cpp:2103 #, kde-format msgid "Copy Link Address" msgstr "انسخ عنوان الرّابط" -#: viewer/viewer_p.cpp:1641 +#: viewer/viewer_p.cpp:1628 #, kde-format msgid "Open URL" msgstr "افتح المسار" -#: viewer/viewer_p.cpp:1652 +#: viewer/viewer_p.cpp:1639 #, kde-format msgid "Show Message Structure" msgstr "اعرض بنية الرّسالة" -#: viewer/viewer_p.cpp:1658 +#: viewer/viewer_p.cpp:1645 #, kde-format msgid "&View Source" msgstr "ا&عرض المصدر" -#: viewer/viewer_p.cpp:1665 +#: viewer/viewer_p.cpp:1652 #, kde-format msgid "&Save message..." msgstr "ا&حفظ الرّسالة..." -#: viewer/viewer_p.cpp:1671 +#: viewer/viewer_p.cpp:1658 #, kde-format msgid "&Save Display Format" msgstr "ا&حفظ تنسيق العرض" -#: viewer/viewer_p.cpp:1676 +#: viewer/viewer_p.cpp:1663 #, kde-format msgid "&Reset Display Format" msgstr "&صفّر تنسيق العرض" -#: viewer/viewer_p.cpp:1684 +#: viewer/viewer_p.cpp:1671 #, kde-format msgid "Scroll Message Up" msgstr "مرّر الرّسالة لأعلى" -#: viewer/viewer_p.cpp:1690 +#: viewer/viewer_p.cpp:1677 #, kde-format msgid "Scroll Message Down" msgstr "مرّر الرّسالة لأسفل" -#: viewer/viewer_p.cpp:1696 +#: viewer/viewer_p.cpp:1683 #, kde-format msgid "Scroll Message Up (More)" msgstr "مرّر الرّسالة لأعلى (أكثر)" -#: viewer/viewer_p.cpp:1702 +#: viewer/viewer_p.cpp:1689 #, kde-format msgid "Scroll Message Down (More)" msgstr "مرّر الرّسالة لأسفل (أكثر)" -#: viewer/viewer_p.cpp:1713 +#: viewer/viewer_p.cpp:1700 #, kde-format msgid "Toggle HTML Display Mode" msgstr "بدّل بين وضع عرض HTML" -#: viewer/viewer_p.cpp:1719 +#: viewer/viewer_p.cpp:1706 #, kde-format msgid "Toggle display mode between HTML and plain text" msgstr "بدّل وضع العرض بين HTML والنّصّ الصِّرف" -#: viewer/viewer_p.cpp:1722 +#: viewer/viewer_p.cpp:1709 #, kde-format msgid "Load external references" msgstr "حمّل المراجع الخارجيّة" -#: viewer/viewer_p.cpp:1731 widgets/mailsourceviewtextbrowserwidget.cpp:154 +#: viewer/viewer_p.cpp:1718 widgets/mailsourceviewtextbrowserwidget.cpp:157 #, kde-format msgid "Speak Text" msgstr "انطق النّصّ" -#: viewer/viewer_p.cpp:1737 +#: viewer/viewer_p.cpp:1724 #, kde-format msgid "Copy Image Location" msgstr "انسخ مكان الصّورة" -#: viewer/viewer_p.cpp:1746 +#: viewer/viewer_p.cpp:1733 #, kde-format msgid "&Find in Message..." msgstr "ا&عثر في الرّسالة..." -#: viewer/viewer_p.cpp:1756 +#: viewer/viewer_p.cpp:1743 #, kde-format msgid "Disable Emoticon" msgstr "عطّل الابتسامات" -#: viewer/viewer_p.cpp:1781 +#: viewer/viewer_p.cpp:1768 #, kde-format msgid "Save &As..." msgstr "احفظ &كَ‍..." -#: viewer/viewer_p.cpp:1793 +#: viewer/viewer_p.cpp:1780 #, kde-format msgid "Open With..." msgstr "افتح في..." -#: viewer/viewer_p.cpp:1801 +#: viewer/viewer_p.cpp:1788 #, kde-format msgid "Save All Attachments..." msgstr "احفظ كلّ المرفقات..." -#: viewer/viewer_p.cpp:2041 +#: viewer/viewer_p.cpp:2020 #, kde-format msgid "The network is broken." msgstr "الشّبكة معطوبة." -#: viewer/viewer_p.cpp:2041 viewer/viewer_p.cpp:2045 +#: viewer/viewer_p.cpp:2020 viewer/viewer_p.cpp:2024 #, kde-format msgid "Check Phishing URL" msgstr "فحص المسار المنتحل" -#: viewer/viewer_p.cpp:2044 +#: viewer/viewer_p.cpp:2023 #, kde-format msgid "The URL %1 is not valid." msgstr "المسار %1 غير صالح." -#: viewer/viewer_p.cpp:2066 +#: viewer/viewer_p.cpp:2045 #, kde-format msgid "This web site is a malware, do you want to continue to show it?" msgstr "هذا الموقع برنامجُ تجسّس، أتريد المتابعة وعرضه؟" -#: viewer/viewer_p.cpp:2067 +#: viewer/viewer_p.cpp:2046 #, kde-format msgid "Malware" msgstr "برنامج تجسّس" -#: viewer/viewer_p.cpp:2122 +#: viewer/viewer_p.cpp:2101 #, kde-format msgid "Copy Email Address" msgstr "انسخ عنوان البريد" -#: viewer/viewer_p.cpp:2207 +#: viewer/viewer_p.cpp:2195 #, kde-format msgid "Message as Plain Text" msgstr "الرّسالة كنصّ صِرف" -#: viewer/viewer_p.cpp:2406 +#: viewer/viewer_p.cpp:2390 #, kde-format msgid "Print Document" msgstr "اطبع المستند" -#: viewer/viewer_p.cpp:2492 +#: viewer/viewer_p.cpp:2441 #, kde-format msgid "Attachments:" msgstr "المرفقات:" -#: viewer/viewer_p.cpp:2850 +#: viewer/viewer_p.cpp:2770 #, kde-format msgid "URL copied to clipboard." msgstr "نُسخ المسار إلى الحافظة." -#: viewer/viewer_p.cpp:3039 +#: viewer/viewer_p.cpp:2911 #, kde-format msgid "Message loading failed: %1." msgstr "فشل تحميل الرّسالة: %1." -#: viewer/viewer_p.cpp:3044 +#: viewer/viewer_p.cpp:2916 #, kde-format msgid "Message not found." msgstr "لم يُعثر على الرّسالة." @@ -1971,7 +1909,8 @@ msgid "Do not ask again" msgstr "لا تسأل مجدّدًا" -#: widgets/htmlstatusbar.cpp:147 +# النص يحتوي على محارف واصلة! +#: widgets/htmlstatusbar.cpp:129 #, kde-format msgctxt "" "'HTML Message' with html linebreaks between each letter and in bold text." @@ -1982,7 +1921,8 @@ "
    ر
    س‍
    ‍ا
    ل‍
    ‍ة

    H
    T
    M
    L

    " -#: widgets/htmlstatusbar.cpp:151 +# النص يحتوي على محارف واصلة! +#: widgets/htmlstatusbar.cpp:133 #, kde-format msgctxt "'No HTML Message' with html linebreaks between each letter." msgid "" @@ -1992,7 +1932,8 @@ "
    لا

    ر
    س‍
    ‍ا
    ل‍
    ‍ة
    " "
    H
    T
    M
    L
    " -#: widgets/htmlstatusbar.cpp:156 +# النص يحتوي على محارف واصلة! +#: widgets/htmlstatusbar.cpp:138 #, kde-format msgctxt "'Plain Message' with html linebreaks between each letter." msgid "" @@ -2002,7 +1943,8 @@ "
    ر
    س‍
    ‍ا
    ل‍
    ‍ة

    صِ‍
    ‍ر
    ‍ف‍
    ‍ة
    " -#: widgets/htmlstatusbar.cpp:160 +# النص يحتوي على محارف واصلة! +#: widgets/htmlstatusbar.cpp:142 #, kde-format msgctxt "'Calendar Message' with html linebreaks between each letter." msgid "" @@ -2012,7 +1954,7 @@ "
    ر
    س‍
    ‍ا
    ل‍
    ‍ة

    ت‍
    ‍ق‍
    ‍‍و
    ي‍
    ‍م
    " -#: widgets/htmlstatusbar.cpp:174 +#: widgets/htmlstatusbar.cpp:156 #, kde-format msgid "Click to toggle between HTML, plain text and calendar." msgstr "انقر للتّبديل بين HTML والنّصّ الصّرف والتّقويم." @@ -2058,7 +2000,25 @@ msgid "HTML code for displaying the message to the user" msgstr "كود HTML لعرض الرّسالة على المستخدم" -#: widgets/openattachmentfolderwidget.cpp:49 +#: widgets/mailtrackingwarningwidget.cpp:33 +#, kde-format +msgid "" +"Some Mail Tracker was found and was blocked.(Details...)" +msgstr "عُثر على متعقّب بريد وحُجب.(التّفاصيل...)" + +#: widgets/mailtrackingwarningwidget.cpp:60 +#, kde-format +msgid "1 tracker from the company %2 (%3)" +msgid_plural "%1 trackers from the company %2 (%3)" +msgstr[0] "لا متعقّبات من الشّركة %2 ‏(%3)" +msgstr[1] "متعقّب واحد من الشّركة %2 ‏(%3)" +msgstr[2] "متعقّبان من الشّركة %2 ‏(%3)" +msgstr[3] "%1 معقّبات من الشّركة %2 ‏(%3)" +msgstr[4] "%1 متعقبًّا من الشّركة %2 ‏(%3)" +msgstr[5] "%1 متعقّب من الشّركة %2 ‏(%3)" + +#: widgets/openattachmentfolderwidget.cpp:48 #, kde-format msgid "Open folder where attachment was saved" msgstr "افتح المجلّد حيث خُزّن فيه المرفق" @@ -2090,6 +2050,44 @@ msgid "&Previous Card" msgstr "البطاقة ال&سّابقة" +#~ msgid "Hide full \"To\" list" +#~ msgstr "أخفِ قائمة ”مِن“ الكاملة" + +#~ msgid "Show full \"To\" list" +#~ msgstr "اعرض قائمة ”مِن“ الكاملة" + +#~ msgid "Hide full \"Cc\" list" +#~ msgstr "أخفِ قائمة ”ن‌ك“ الكاملة" + +#~ msgid "Show full \"Cc\" list" +#~ msgstr "اعرض قائمة ”ن‌ك“ الكاملة" + +#~ msgid "Hide attachment list." +#~ msgstr "أخفِ قائمة المرفقات." + +#~ msgid "Show attachment list." +#~ msgstr "اعرض قائمة المرفقات." + +#~ msgid "" +#~ "Modifying an attachment might invalidate any digital signature on this " +#~ "message." +#~ msgstr "تعديل المرفق قد يلغي صلاحيّة أيّ توقيع رقميّ في هذه الرّسالة." + +#~ msgid "Edit Attachment" +#~ msgstr "حرّر المرفق" + +#~ msgid "Edit" +#~ msgstr "حرّر" + +#~ msgid "Allow to edit attachments of existing mails." +#~ msgstr "اسمح بتحرير مرفقات البريد الموجود." + +#~ msgid "Show HTML Side Bar" +#~ msgstr "اعرض شريط HTML الجانبيّ" + +#~ msgid "Show &HTML Side Bar" +#~ msgstr "ا&عرض شريط HTML الجانبيّ" + #, fuzzy #~ msgid "Show user agent" #~ msgstr "اعرض مستخدم بوصة" diff -Nru kf5-messagelib-17.12.3/po/ar/libmimetreeparser.po kf5-messagelib-18.04.3/po/ar/libmimetreeparser.po --- kf5-messagelib-17.12.3/po/ar/libmimetreeparser.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/ar/libmimetreeparser.po 2018-07-10 00:15:57.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: kmail\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-10-30 03:12+0100\n" +"POT-Creation-Date: 2017-11-15 05:55+0100\n" "PO-Revision-Date: 2018-01-31 19:48+0300\n" "Last-Translator: Safa Alfulaij \n" "Language-Team: Arabic \n" @@ -23,51 +23,51 @@ "X-Generator: Lokalize 2.0\n" "X-POOTLE-MTIME: 1381853739.0\n" -#: src/messagepart.cpp:415 +#: src/messagepart.cpp:423 #, kde-format msgctxt "display name for an unnamed attachment" msgid "Unnamed" msgstr "غير مسمًّى" -#: src/messagepart.cpp:787 src/messagepart.cpp:812 src/messagepart.cpp:1108 +#: src/messagepart.cpp:693 src/messagepart.cpp:718 src/messagepart.cpp:1024 #, kde-format msgid "Wrong Crypto Plug-In." msgstr "ملحقة التّعمية خاطئة." -#: src/messagepart.cpp:871 src/messagepart.cpp:1298 +#: src/messagepart.cpp:777 src/messagepart.cpp:1219 #, kde-format msgid "No appropriate crypto plug-in was found." msgstr "لم يُعثر على ملحقة تعمية مناسبة." -#: src/messagepart.cpp:874 +#: src/messagepart.cpp:780 #, kde-format msgctxt "%1 is either 'OpenPGP' or 'S/MIME'" msgid "No %1 plug-in was found." msgstr "لم يُعثر على ملحقة %1." -#: src/messagepart.cpp:878 +#: src/messagepart.cpp:784 #, kde-format msgid "Crypto plug-in \"%1\" cannot verify signatures." msgstr "تعذّر على ملحقة التّعمية ”%1“ تأكيد التّواقيع." -#: src/messagepart.cpp:881 +#: src/messagepart.cpp:787 #, kde-format msgid "" "The message is signed, but the validity of the signature cannot be verified." "
    Reason: %1" msgstr "الرّسالة موقّعة، ولكن تعّذر التّحقّق من صلاحيّة التّوقيع.
    السّبب: %1" -#: src/messagepart.cpp:1300 +#: src/messagepart.cpp:1221 #, kde-format msgid "Crypto plug-in \"%1\" cannot decrypt messages." msgstr "لا تستطيع ملحقة التّعمية ”%1“ فكّ تعمية الرّسائل." -#: src/messagepart.cpp:1303 +#: src/messagepart.cpp:1224 #, kde-format msgid "Crypto plug-in \"%1\" could not decrypt the data." msgstr "تعذّر على ملحقة التّعمية ”%1“ فكّ تعمية الرّسائل." -#: src/messagepart.cpp:1305 +#: src/messagepart.cpp:1226 #, kde-format msgid "Error: %1" msgstr "خطأ: %1" diff -Nru kf5-messagelib-17.12.3/po/ast/libmessagecomposer.po kf5-messagelib-18.04.3/po/ast/libmessagecomposer.po --- kf5-messagelib-17.12.3/po/ast/libmessagecomposer.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/ast/libmessagecomposer.po 2018-07-10 00:15:57.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-11-29 08:30+0100\n" +"POT-Creation-Date: 2018-03-21 06:23+0100\n" "PO-Revision-Date: 2016-12-19 02:55+0100\n" "Last-Translator: enolp \n" "Language-Team: Asturian \n" @@ -93,7 +93,7 @@ msgstr "" #: attachment/attachmentcontrollerbase.cpp:460 -#: composer/composerviewbase.cpp:1706 +#: composer/composerviewbase.cpp:1698 #, kde-format msgid "&Attach File..." msgstr "" @@ -186,94 +186,94 @@ msgid "Reload" msgstr "" -#: attachment/attachmentcontrollerbase.cpp:658 -#: attachment/attachmentcontrollerbase.cpp:687 -#: attachment/attachmentcontrollerbase.cpp:745 +#: attachment/attachmentcontrollerbase.cpp:657 +#: attachment/attachmentcontrollerbase.cpp:686 +#: attachment/attachmentcontrollerbase.cpp:743 #, kde-format msgid "KMail was unable to write the attachment to a temporary file." msgstr "" -#: attachment/attachmentcontrollerbase.cpp:659 -#: attachment/attachmentcontrollerbase.cpp:688 -#: attachment/attachmentcontrollerbase.cpp:705 +#: attachment/attachmentcontrollerbase.cpp:658 +#: attachment/attachmentcontrollerbase.cpp:687 +#: attachment/attachmentcontrollerbase.cpp:704 #, kde-format msgid "Unable to open attachment" msgstr "" -#: attachment/attachmentcontrollerbase.cpp:704 +#: attachment/attachmentcontrollerbase.cpp:703 #, kde-format msgid "KMail was unable to open the attachment." msgstr "" -#: attachment/attachmentcontrollerbase.cpp:746 +#: attachment/attachmentcontrollerbase.cpp:744 #, kde-format msgid "Unable to edit attachment" msgstr "" -#: attachment/attachmentcontrollerbase.cpp:788 +#: attachment/attachmentcontrollerbase.cpp:786 #, kde-format msgid "unnamed" msgstr "" -#: attachment/attachmentcontrollerbase.cpp:791 +#: attachment/attachmentcontrollerbase.cpp:789 #, kde-format msgid "Save Attachment As" msgstr "" -#: attachment/attachmentcontrollerbase.cpp:814 +#: attachment/attachmentcontrollerbase.cpp:812 #, kde-format msgid "" "File %1 exists.\n" "Do you want to replace it?" msgstr "" -#: attachment/attachmentcontrollerbase.cpp:814 +#: attachment/attachmentcontrollerbase.cpp:812 #, kde-format msgid "Save to File" msgstr "" -#: attachment/attachmentcontrollerbase.cpp:814 +#: attachment/attachmentcontrollerbase.cpp:812 #, kde-format msgid "&Replace" msgstr "" -#: attachment/attachmentcontrollerbase.cpp:841 -#: attachment/attachmentcontrollerbase.cpp:900 +#: attachment/attachmentcontrollerbase.cpp:839 +#: attachment/attachmentcontrollerbase.cpp:898 #, kde-format msgid "Do you really want to attach this directory \"%1\"?" msgstr "" -#: attachment/attachmentcontrollerbase.cpp:842 -#: attachment/attachmentcontrollerbase.cpp:901 +#: attachment/attachmentcontrollerbase.cpp:840 +#: attachment/attachmentcontrollerbase.cpp:899 #, kde-format msgctxt "@title:window" msgid "Attach directory" msgstr "" -#: attachment/attachmentcontrollerbase.cpp:877 +#: attachment/attachmentcontrollerbase.cpp:875 #, kde-format msgctxt "@title:window" msgid "Attach Directory" msgstr "" -#: attachment/attachmentcontrollerbase.cpp:889 +#: attachment/attachmentcontrollerbase.cpp:887 #, kde-format msgctxt "@title:window" msgid "Attach File" msgstr "" -#: attachment/attachmentcontrollerbase.cpp:929 +#: attachment/attachmentcontrollerbase.cpp:927 #, kde-format msgctxt "@title:window" msgid "Failed to attach file" msgstr "" -#: attachment/attachmentcontrollerbase.cpp:952 +#: attachment/attachmentcontrollerbase.cpp:950 #, kde-format msgid "Attach Public OpenPGP Key" msgstr "" -#: attachment/attachmentcontrollerbase.cpp:953 +#: attachment/attachmentcontrollerbase.cpp:951 #, kde-format msgid "Select the public key which should be attached." msgstr "" @@ -337,117 +337,117 @@ msgid "Suggest Automatic Display" msgstr "" -#: composer/composer.cpp:274 +#: composer/composer.cpp:263 #, kde-format msgid "No key data for recipients found." msgstr "" -#: composer/composerviewbase.cpp:317 +#: composer/composerviewbase.cpp:308 #, kde-format msgid "&Keep markup, do not sign/encrypt" msgstr "" -#: composer/composerviewbase.cpp:318 +#: composer/composerviewbase.cpp:309 #, kde-format msgid "&Keep markup, do not encrypt" msgstr "" -#: composer/composerviewbase.cpp:319 +#: composer/composerviewbase.cpp:310 #, kde-format msgid "&Keep markup, do not sign" msgstr "" -#: composer/composerviewbase.cpp:321 +#: composer/composerviewbase.cpp:312 #, kde-format msgid "Sign/Encrypt (delete markup)" msgstr "" -#: composer/composerviewbase.cpp:322 +#: composer/composerviewbase.cpp:313 #, kde-format msgid "Encrypt (delete markup)" msgstr "" -#: composer/composerviewbase.cpp:323 +#: composer/composerviewbase.cpp:314 #, kde-format msgid "Sign (delete markup)" msgstr "" -#: composer/composerviewbase.cpp:325 +#: composer/composerviewbase.cpp:316 #, kde-format msgid "" "

    Inline signing/encrypting of HTML messages is not possible;

    do " "you want to delete your markup?

    " msgstr "" -#: composer/composerviewbase.cpp:327 +#: composer/composerviewbase.cpp:318 #, kde-format msgid "Sign/Encrypt Message?" msgstr "" -#: composer/composerviewbase.cpp:488 +#: composer/composerviewbase.cpp:479 #, kde-format msgid "It was not possible to create a message composer." msgstr "" -#: composer/composerviewbase.cpp:497 +#: composer/composerviewbase.cpp:488 #, kde-format msgid "Do you want to resize images?" msgstr "" -#: composer/composerviewbase.cpp:498 +#: composer/composerviewbase.cpp:489 #, kde-format msgid "Auto Resize Images" msgstr "" -#: composer/composerviewbase.cpp:677 composer/composerviewbase.cpp:691 -#: composer/composerviewbase.cpp:712 +#: composer/composerviewbase.cpp:668 composer/composerviewbase.cpp:682 +#: composer/composerviewbase.cpp:703 #, kde-format msgid "Failed to resolve keys. Please report a bug." msgstr "" -#: composer/composerviewbase.cpp:897 composer/composerviewbase.cpp:1165 +#: composer/composerviewbase.cpp:888 composer/composerviewbase.cpp:1156 #, kde-format msgid "Job cancelled by the user" msgstr "" -#: composer/composerviewbase.cpp:902 +#: composer/composerviewbase.cpp:893 #, kde-format msgid "" "Could not compose message: %1 \n" " Please report this bug." msgstr "" -#: composer/composerviewbase.cpp:904 +#: composer/composerviewbase.cpp:895 #, kde-format msgid "Could not compose message: %1" msgstr "" -#: composer/composerviewbase.cpp:980 +#: composer/composerviewbase.cpp:971 #, kde-format msgid "There were problems trying to queue the message for sending: %1" msgstr "" -#: composer/composerviewbase.cpp:1168 +#: composer/composerviewbase.cpp:1159 #, kde-format msgid "Could not autosave message: %1" msgstr "" -#: composer/composerviewbase.cpp:1188 +#: composer/composerviewbase.cpp:1179 #, kde-format msgid "Could not write all data to file." msgstr "" -#: composer/composerviewbase.cpp:1191 +#: composer/composerviewbase.cpp:1182 #, kde-format msgid "Could not finalize the file." msgstr "" -#: composer/composerviewbase.cpp:1195 +#: composer/composerviewbase.cpp:1186 #, kde-format msgid "Could not open file." msgstr "" -#: composer/composerviewbase.cpp:1201 +#: composer/composerviewbase.cpp:1192 #, kde-format msgid "" "Autosaving the message as %1 failed.\n" @@ -455,17 +455,17 @@ "Reason: %3" msgstr "" -#: composer/composerviewbase.cpp:1207 +#: composer/composerviewbase.cpp:1198 #, kde-format msgid "Autosaving Message Failed" msgstr "" -#: composer/composerviewbase.cpp:1295 +#: composer/composerviewbase.cpp:1286 #, kde-format msgid "Failed to save the message: %1" msgstr "" -#: composer/composerviewbase.cpp:1702 +#: composer/composerviewbase.cpp:1694 #, kde-format msgid "" "The message you have composed seems to refer to an attached file but you " @@ -473,17 +473,17 @@ "Do you want to attach a file to your message?" msgstr "" -#: composer/composerviewbase.cpp:1705 +#: composer/composerviewbase.cpp:1697 #, kde-format msgid "File Attachment Reminder" msgstr "" -#: composer/composerviewbase.cpp:1707 +#: composer/composerviewbase.cpp:1699 #, kde-format msgid "&Send as Is" msgstr "" -#: composer/composerviewbase.cpp:1759 +#: composer/composerviewbase.cpp:1751 #, kde-format msgid "" "Examination of the recipient's signing preferences yielded that you be asked " @@ -491,47 +491,47 @@ "Sign this message?" msgstr "" -#: composer/composerviewbase.cpp:1764 composer/composerviewbase.cpp:1793 +#: composer/composerviewbase.cpp:1756 composer/composerviewbase.cpp:1785 #, kde-format msgid "Sign Message?" msgstr "" -#: composer/composerviewbase.cpp:1765 composer/composerviewbase.cpp:1794 +#: composer/composerviewbase.cpp:1757 composer/composerviewbase.cpp:1786 #, kde-format msgctxt "to sign" msgid "&Sign" msgstr "" -#: composer/composerviewbase.cpp:1766 composer/composerviewbase.cpp:1795 +#: composer/composerviewbase.cpp:1758 composer/composerviewbase.cpp:1787 #, kde-format msgid "Do &Not Sign" msgstr "" -#: composer/composerviewbase.cpp:1789 +#: composer/composerviewbase.cpp:1781 #, kde-format msgid "" "There are conflicting signing preferences for these recipients.\n" "Sign this message?" msgstr "" -#: composer/composerviewbase.cpp:1817 +#: composer/composerviewbase.cpp:1809 #, kde-format msgid "" "You have requested to sign this message, but no valid signing keys have been " "configured for this identity." msgstr "" -#: composer/composerviewbase.cpp:1821 +#: composer/composerviewbase.cpp:1813 #, kde-format msgid "Send Unsigned?" msgstr "" -#: composer/composerviewbase.cpp:1822 +#: composer/composerviewbase.cpp:1814 #, kde-format msgid "Send &Unsigned" msgstr "" -#: composer/composerviewbase.cpp:1839 +#: composer/composerviewbase.cpp:1831 #, kde-format msgid "" "Some parts of this message will not be signed.\n" @@ -539,7 +539,7 @@ "Sign all parts instead?" msgstr "" -#: composer/composerviewbase.cpp:1842 +#: composer/composerviewbase.cpp:1834 #, kde-format msgid "" "This message will not be signed.\n" @@ -547,34 +547,34 @@ "Sign message instead?" msgstr "" -#: composer/composerviewbase.cpp:1846 +#: composer/composerviewbase.cpp:1838 #, kde-format msgid "&Sign All Parts" msgstr "" -#: composer/composerviewbase.cpp:1846 +#: composer/composerviewbase.cpp:1838 #, kde-format msgid "&Sign" msgstr "" -#: composer/composerviewbase.cpp:1848 +#: composer/composerviewbase.cpp:1840 #, kde-format msgid "Unsigned-Message Warning" msgstr "" -#: composer/composerviewbase.cpp:1850 +#: composer/composerviewbase.cpp:1842 #, kde-format msgid "Send &As Is" msgstr "" -#: composer/composerviewbase.cpp:1895 +#: composer/composerviewbase.cpp:1887 #, kde-format msgid "" "Valid trusted encryption keys were found for all recipients.\n" "Encrypt this message?" msgstr "" -#: composer/composerviewbase.cpp:1897 +#: composer/composerviewbase.cpp:1889 #, kde-format msgid "" "Examination of the recipient's encryption preferences yielded that you be " @@ -582,46 +582,46 @@ "Encrypt this message?" msgstr "" -#: composer/composerviewbase.cpp:1902 composer/composerviewbase.cpp:1935 +#: composer/composerviewbase.cpp:1894 composer/composerviewbase.cpp:1927 #, kde-format msgid "Encrypt Message?" msgstr "" -#: composer/composerviewbase.cpp:1904 +#: composer/composerviewbase.cpp:1896 #, kde-format msgid "Sign && &Encrypt" msgstr "" -#: composer/composerviewbase.cpp:1905 composer/composerviewbase.cpp:1936 -#: composer/composerviewbase.cpp:1991 composer/keyresolver.cpp:1653 -#: composer/keyresolver.cpp:1696 +#: composer/composerviewbase.cpp:1897 composer/composerviewbase.cpp:1928 +#: composer/composerviewbase.cpp:1983 composer/keyresolver.cpp:1633 +#: composer/keyresolver.cpp:1676 #, kde-format msgid "&Encrypt" msgstr "" -#: composer/composerviewbase.cpp:1907 composer/composerviewbase.cpp:1996 +#: composer/composerviewbase.cpp:1899 composer/composerviewbase.cpp:1988 #, kde-format msgid "&Sign Only" msgstr "" -#: composer/composerviewbase.cpp:1908 composer/composerviewbase.cpp:1997 +#: composer/composerviewbase.cpp:1900 composer/composerviewbase.cpp:1989 #, kde-format msgid "&Send As-Is" msgstr "" -#: composer/composerviewbase.cpp:1931 +#: composer/composerviewbase.cpp:1923 #, kde-format msgid "" "There are conflicting encryption preferences for these recipients.\n" "Encrypt this message?" msgstr "" -#: composer/composerviewbase.cpp:1937 +#: composer/composerviewbase.cpp:1929 #, kde-format msgid "Do &Not Encrypt" msgstr "" -#: composer/composerviewbase.cpp:1959 +#: composer/composerviewbase.cpp:1951 #, kde-format msgid "" "You have requested to encrypt this message, and to encrypt a copy to " @@ -629,17 +629,17 @@ "identity." msgstr "" -#: composer/composerviewbase.cpp:1964 +#: composer/composerviewbase.cpp:1956 #, kde-format msgid "Send Unencrypted?" msgstr "" -#: composer/composerviewbase.cpp:1965 composer/keyresolver.cpp:1678 +#: composer/composerviewbase.cpp:1957 composer/keyresolver.cpp:1658 #, kde-format msgid "Send &Unencrypted" msgstr "" -#: composer/composerviewbase.cpp:1982 +#: composer/composerviewbase.cpp:1974 #, kde-format msgid "" "Some parts of this message will not be encrypted.\n" @@ -648,7 +648,7 @@ "Encrypt all parts instead?" msgstr "" -#: composer/composerviewbase.cpp:1986 +#: composer/composerviewbase.cpp:1978 #, kde-format msgid "" "This message will not be encrypted.\n" @@ -657,57 +657,57 @@ "Encrypt messages instead?" msgstr "" -#: composer/composerviewbase.cpp:1991 +#: composer/composerviewbase.cpp:1983 #, kde-format msgid "&Encrypt All Parts" msgstr "" -#: composer/composerviewbase.cpp:1993 +#: composer/composerviewbase.cpp:1985 #, kde-format msgid "Unencrypted Message Warning" msgstr "" -#: composer/keyresolver.cpp:361 +#: composer/keyresolver.cpp:341 #, kde-format msgid "" "One or more of your configured OpenPGP encryption keys or S/MIME " "certificates is not fully trusted for encryption." msgstr "" -#: composer/keyresolver.cpp:364 +#: composer/keyresolver.cpp:344 #, kde-format msgid "" "One or more of the OpenPGP encryption keys or S/MIME certificates for " "recipient \"%1\" is not fully trusted for encryption." msgstr "" -#: composer/keyresolver.cpp:370 +#: composer/keyresolver.cpp:350 #, kde-format msgid "" "\n" "The following keys are only marginally trusted: \n" msgstr "" -#: composer/keyresolver.cpp:374 +#: composer/keyresolver.cpp:354 #, kde-format msgid "" "\n" "The following keys or certificates have unknown trust level: \n" msgstr "" -#: composer/keyresolver.cpp:378 +#: composer/keyresolver.cpp:358 #, kde-format msgid "" "\n" "The following keys or certificates are revoked: \n" msgstr "" -#: composer/keyresolver.cpp:382 +#: composer/keyresolver.cpp:362 #, kde-format msgid "Not Fully Trusted Encryption Keys" msgstr "" -#: composer/keyresolver.cpp:714 +#: composer/keyresolver.cpp:694 #, kde-format msgid "" "

    Your OpenPGP signing key

    %2 (KeyID 0x%3)Your OpenPGP encryption key

    %2 (KeyID 0x%3)The OpenPGP key for

    %2 (KeyID 0x%3)The root certificate

    %4

    for your S/MIME " @@ -753,7 +753,7 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:739 +#: composer/keyresolver.cpp:719 #, kde-format msgid "" "

    The root certificate

    %4

    for your S/MIME " @@ -766,7 +766,7 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:745 +#: composer/keyresolver.cpp:725 #, kde-format msgid "" "

    The root certificate

    %4

    for S/MIME " @@ -779,7 +779,7 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:752 +#: composer/keyresolver.cpp:732 #, kde-format msgid "" "

    The intermediate CA certificate

    %4

    for " @@ -792,7 +792,7 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:758 +#: composer/keyresolver.cpp:738 #, kde-format msgid "" "

    The intermediate CA certificate

    %4

    for " @@ -805,7 +805,7 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:764 +#: composer/keyresolver.cpp:744 #, kde-format msgid "" "

    The intermediate CA certificate

    %4

    for S/" @@ -818,7 +818,7 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:776 +#: composer/keyresolver.cpp:756 #, kde-format msgid "" "

    Your S/MIME signing certificate

    %2 (serial " @@ -829,7 +829,7 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:780 +#: composer/keyresolver.cpp:760 #, kde-format msgid "" "

    Your S/MIME encryption certificate

    %2 (serial " @@ -840,7 +840,7 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:784 +#: composer/keyresolver.cpp:764 #, kde-format msgid "" "

    The S/MIME certificate for

    %2 (serial number " @@ -851,17 +851,17 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:795 +#: composer/keyresolver.cpp:775 #, kde-format msgid "OpenPGP Key Expired" msgstr "" -#: composer/keyresolver.cpp:796 +#: composer/keyresolver.cpp:776 #, kde-format msgid "S/MIME Certificate Expired" msgstr "" -#: composer/keyresolver.cpp:820 +#: composer/keyresolver.cpp:800 #, kde-format msgid "" "

    Your OpenPGP signing key

    %2 (KeyID 0x%3)Your OpenPGP encryption key

    %2 (KeyID 0x" @@ -883,7 +883,7 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:828 +#: composer/keyresolver.cpp:808 #, kde-format msgid "" "

    The OpenPGP key for

    %2 (KeyID 0x%3)The root certificate

    %4

    for your S/" @@ -907,7 +907,7 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:845 +#: composer/keyresolver.cpp:825 #, kde-format msgid "" "

    The root certificate

    %4

    for your S/" @@ -920,7 +920,7 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:851 +#: composer/keyresolver.cpp:831 #, kde-format msgid "" "

    The root certificate

    %4

    for S/MIME " @@ -933,7 +933,7 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:858 +#: composer/keyresolver.cpp:838 #, kde-format msgid "" "

    The intermediate CA certificate

    %4The intermediate CA certificate

    %4The intermediate CA certificate

    %4Your S/MIME signing certificate

    %2 (serial " @@ -983,7 +983,7 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:886 +#: composer/keyresolver.cpp:866 #, kde-format msgid "" "

    Your S/MIME encryption certificate

    %2 " @@ -994,7 +994,7 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:890 +#: composer/keyresolver.cpp:870 #, kde-format msgid "" "

    The S/MIME certificate for

    %2 (serial " @@ -1005,17 +1005,17 @@ msgstr[0] "" msgstr[1] "" -#: composer/keyresolver.cpp:901 +#: composer/keyresolver.cpp:881 #, kde-format msgid "OpenPGP Key Expires Soon" msgstr "" -#: composer/keyresolver.cpp:902 +#: composer/keyresolver.cpp:882 #, kde-format msgid "S/MIME Certificate Expires Soon" msgstr "" -#: composer/keyresolver.cpp:941 +#: composer/keyresolver.cpp:921 #, kde-format msgid "" "One or more of your configured OpenPGP encryption keys or S/MIME " @@ -1026,13 +1026,13 @@ "prompted to specify the keys to use." msgstr "" -#: composer/keyresolver.cpp:949 composer/keyresolver.cpp:1325 -#: composer/keyresolver.cpp:1353 +#: composer/keyresolver.cpp:929 composer/keyresolver.cpp:1305 +#: composer/keyresolver.cpp:1333 #, kde-format msgid "Unusable Encryption Keys" msgstr "" -#: composer/keyresolver.cpp:989 +#: composer/keyresolver.cpp:969 #, kde-format msgid "" "One or more of your configured OpenPGP signing keys or S/MIME signing " @@ -1042,13 +1042,13 @@ "prompted to specify the keys to use." msgstr "" -#: composer/keyresolver.cpp:997 composer/keyresolver.cpp:1382 -#: composer/keyresolver.cpp:1400 +#: composer/keyresolver.cpp:977 composer/keyresolver.cpp:1362 +#: composer/keyresolver.cpp:1380 #, kde-format msgid "Unusable Signing Keys" msgstr "" -#: composer/keyresolver.cpp:1316 +#: composer/keyresolver.cpp:1296 #, kde-format msgid "" "Examination of recipient's encryption preferences yielded that the message " @@ -1059,7 +1059,7 @@ "not be able to read your own messages if you do so." msgstr "" -#: composer/keyresolver.cpp:1344 +#: composer/keyresolver.cpp:1324 #, kde-format msgid "" "Examination of recipient's encryption preferences yielded that the message " @@ -1070,7 +1070,7 @@ "not be able to read your own messages if you do so." msgstr "" -#: composer/keyresolver.cpp:1376 +#: composer/keyresolver.cpp:1356 #, kde-format msgid "" "Examination of recipient's signing preferences yielded that the message " @@ -1079,12 +1079,12 @@ "identity." msgstr "" -#: composer/keyresolver.cpp:1383 +#: composer/keyresolver.cpp:1363 #, kde-format msgid "Do Not OpenPGP-Sign" msgstr "" -#: composer/keyresolver.cpp:1394 +#: composer/keyresolver.cpp:1374 #, kde-format msgid "" "Examination of recipient's signing preferences yielded that the message " @@ -1093,12 +1093,12 @@ "identity." msgstr "" -#: composer/keyresolver.cpp:1401 +#: composer/keyresolver.cpp:1381 #, kde-format msgid "Do Not S/MIME-Sign" msgstr "" -#: composer/keyresolver.cpp:1463 +#: composer/keyresolver.cpp:1443 #, kde-format msgid "" "Examination of recipient's signing preferences showed no common type of " @@ -1106,58 +1106,58 @@ "Send message without signing?" msgstr "" -#: composer/keyresolver.cpp:1467 +#: composer/keyresolver.cpp:1447 #, kde-format msgid "No signing possible" msgstr "" -#: composer/keyresolver.cpp:1648 +#: composer/keyresolver.cpp:1628 #, kde-format msgid "" "You did not select an encryption key for yourself (encrypt to self). You " "will not be able to decrypt your own message if you encrypt it." msgstr "" -#: composer/keyresolver.cpp:1652 composer/keyresolver.cpp:1677 -#: composer/keyresolver.cpp:1695 +#: composer/keyresolver.cpp:1632 composer/keyresolver.cpp:1657 +#: composer/keyresolver.cpp:1675 #, kde-format msgid "Missing Key Warning" msgstr "" -#: composer/keyresolver.cpp:1670 +#: composer/keyresolver.cpp:1650 #, kde-format msgid "" "You did not select an encryption key for the recipient of this message; " "therefore, the message will not be encrypted." msgstr "" -#: composer/keyresolver.cpp:1673 +#: composer/keyresolver.cpp:1653 #, kde-format msgid "" "You did not select an encryption key for any of the recipients of this " "message; therefore, the message will not be encrypted." msgstr "" -#: composer/keyresolver.cpp:1685 +#: composer/keyresolver.cpp:1665 #, kde-format msgid "" "You did not select an encryption key for one of the recipients: this person " "will not be able to decrypt the message if you encrypt it." msgstr "" -#: composer/keyresolver.cpp:1688 +#: composer/keyresolver.cpp:1668 #, kde-format msgid "" "You did not select encryption keys for some of the recipients: these persons " "will not be able to decrypt the message if you encrypt it." msgstr "" -#: composer/keyresolver.cpp:1754 +#: composer/keyresolver.cpp:1734 #, kde-format msgid "Encryption Key Selection" msgstr "" -#: composer/keyresolver.cpp:1801 +#: composer/keyresolver.cpp:1781 #, kde-format msgctxt "" "if in your language something like 'certificate(s)' is not possible please " @@ -1168,7 +1168,7 @@ "Please re-select the certificate(s) which should be used for this recipient." msgstr "" -#: composer/keyresolver.cpp:1847 +#: composer/keyresolver.cpp:1827 #, kde-format msgctxt "" "if in your language something like 'certificate(s)' is not possible please " @@ -1181,7 +1181,7 @@ "certificates." msgstr "" -#: composer/keyresolver.cpp:1857 +#: composer/keyresolver.cpp:1837 #, kde-format msgctxt "" "if in your language something like 'certificate(s)' is not possible please " @@ -1263,12 +1263,12 @@ msgid "Select Format..." msgstr "" -#: imagescaling/imagescalingwidget.cpp:107 +#: imagescaling/imagescalingwidget.cpp:108 #, kde-format msgid "How does this work?" msgstr "" -#: imagescaling/imagescalingwidget.cpp:120 +#: imagescaling/imagescalingwidget.cpp:121 #, kde-format msgid "" "

    Here you can define image filename. You can use:

    • %t set " @@ -1276,17 +1276,17 @@ "li>
    • %e original extension
    • %x new extension
    " msgstr "" -#: imagescaling/imagescalingwidget.cpp:174 +#: imagescaling/imagescalingwidget.cpp:175 #, kde-format msgid "Custom" msgstr "" -#: imagescaling/imagescalingwidget.cpp:302 +#: imagescaling/imagescalingwidget.cpp:303 #, kde-format msgid "Please verify minimum and maximum values." msgstr "" -#: imagescaling/imagescalingwidget.cpp:302 +#: imagescaling/imagescalingwidget.cpp:303 #, kde-format msgid "Error in minimum Maximum value" msgstr "" @@ -2036,3 +2036,8 @@ #, kde-format msgid "Mail dispatcher offline." msgstr "" + +#: widgets/dictionarycombobox.cpp:122 +#, kde-format +msgid "AutoDetect Language" +msgstr "" diff -Nru kf5-messagelib-17.12.3/po/ast/libmessagecore.po kf5-messagelib-18.04.3/po/ast/libmessagecore.po --- kf5-messagelib-17.12.3/po/ast/libmessagecore.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/ast/libmessagecore.po 2018-07-10 00:15:57.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-09-15 03:37+0200\n" +"POT-Creation-Date: 2018-04-27 06:20+0200\n" "PO-Revision-Date: 2016-12-21 16:31+0100\n" "Last-Translator: enolp \n" "Language-Team: Asturian \n" @@ -154,8 +154,8 @@ "p>

    The part will be encrypted for the recipients of this message.

    " msgstr "" -#: attachment/attachmentpropertiesdialog.cpp:326 -#: attachment/attachmentpropertiesdialog.cpp:341 +#: attachment/attachmentpropertiesdialog.cpp:324 +#: attachment/attachmentpropertiesdialog.cpp:339 #, kde-format msgid "Attachment Properties" msgstr "" @@ -258,7 +258,7 @@ "no limit)" msgstr "" -#: utils/stringutil.cpp:402 +#: utils/stringutil.cpp:384 #, kde-format msgctxt "signal that this email is defined in my identity" msgid "Me" diff -Nru kf5-messagelib-17.12.3/po/ast/libmessagelist.po kf5-messagelib-18.04.3/po/ast/libmessagelist.po --- kf5-messagelib-17.12.3/po/ast/libmessagelist.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/ast/libmessagelist.po 2018-07-10 00:15:57.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-10-13 03:28+0200\n" +"POT-Creation-Date: 2018-05-04 06:21+0200\n" "PO-Revision-Date: 2016-12-19 03:09+0100\n" "Last-Translator: enolp \n" "Language-Team: Asturian \n" @@ -17,114 +17,114 @@ "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 2.0\n" -#: core/aggregation.cpp:198 +#: core/aggregation.cpp:193 #, kde-format msgctxt "No grouping of messages" msgid "None" msgstr "" -#: core/aggregation.cpp:201 +#: core/aggregation.cpp:196 #, kde-format msgid "By Exact Date (of Thread Leaders)" msgstr "" -#: core/aggregation.cpp:204 +#: core/aggregation.cpp:199 #, kde-format msgid "By Smart Date Ranges (of Thread Leaders)" msgstr "" -#: core/aggregation.cpp:207 core/sortorder.cpp:89 +#: core/aggregation.cpp:202 core/sortorder.cpp:89 #, kde-format msgid "By Smart Sender/Receiver" msgstr "" -#: core/aggregation.cpp:210 core/sortorder.cpp:87 +#: core/aggregation.cpp:205 core/sortorder.cpp:87 #, kde-format msgid "By Sender" msgstr "" -#: core/aggregation.cpp:213 core/sortorder.cpp:88 +#: core/aggregation.cpp:208 core/sortorder.cpp:88 #, kde-format msgid "By Receiver" msgstr "" -#: core/aggregation.cpp:223 +#: core/aggregation.cpp:218 #, kde-format msgid "Never Expand Groups" msgstr "" -#: core/aggregation.cpp:225 +#: core/aggregation.cpp:220 #, kde-format msgid "Expand Recent Groups" msgstr "" -#: core/aggregation.cpp:227 +#: core/aggregation.cpp:222 #, kde-format msgid "Always Expand Groups" msgstr "" -#: core/aggregation.cpp:234 +#: core/aggregation.cpp:229 #, kde-format msgctxt "No threading of messages" msgid "None" msgstr "" -#: core/aggregation.cpp:237 +#: core/aggregation.cpp:232 #, kde-format msgid "Perfect Only" msgstr "" -#: core/aggregation.cpp:240 +#: core/aggregation.cpp:235 #, kde-format msgid "Perfect and by References" msgstr "" -#: core/aggregation.cpp:243 +#: core/aggregation.cpp:238 #, kde-format msgid "Perfect, by References and by Subject" msgstr "" -#: core/aggregation.cpp:253 +#: core/aggregation.cpp:248 #, kde-format msgid "Topmost Message" msgstr "" -#: core/aggregation.cpp:257 +#: core/aggregation.cpp:252 #, kde-format msgid "Most Recent Message" msgstr "" -#: core/aggregation.cpp:268 +#: core/aggregation.cpp:263 #, kde-format msgid "Never Expand Threads" msgstr "" -#: core/aggregation.cpp:271 +#: core/aggregation.cpp:266 #, kde-format msgid "Expand Threads With Unread Messages" msgstr "" -#: core/aggregation.cpp:274 +#: core/aggregation.cpp:269 #, kde-format msgid "Expand Threads With Unread or Important Messages" msgstr "" -#: core/aggregation.cpp:277 +#: core/aggregation.cpp:272 #, kde-format msgid "Always Expand Threads" msgstr "" -#: core/aggregation.cpp:284 +#: core/aggregation.cpp:279 #, kde-format msgid "Favor Interactivity" msgstr "" -#: core/aggregation.cpp:287 +#: core/aggregation.cpp:282 #, kde-format msgid "Favor Speed" msgstr "" -#: core/aggregation.cpp:290 +#: core/aggregation.cpp:285 #, kde-format msgid "Batch Job (No Interactivity)" msgstr "" @@ -432,7 +432,7 @@ msgid "A smart multiline and multi item theme with a clickable status column" msgstr "" -#: core/manager.cpp:780 core/view.cpp:2372 core/view.cpp:2375 +#: core/manager.cpp:780 core/view.cpp:2368 core/view.cpp:2371 #, kde-format msgid "Status" msgstr "" @@ -821,225 +821,225 @@ msgid "Styled Joined Rectangles" msgstr "" -#: core/view.cpp:744 +#: core/view.cpp:740 #, kde-format msgid "Adjust Column Sizes" msgstr "" -#: core/view.cpp:748 +#: core/view.cpp:744 #, kde-format msgid "Show Default Columns" msgstr "" -#: core/view.cpp:753 +#: core/view.cpp:749 #, kde-format msgid "Display Tooltips" msgstr "" -#: core/view.cpp:2353 core/view.cpp:2357 core/widgets/searchlinestatus.cpp:294 +#: core/view.cpp:2349 core/view.cpp:2353 core/widgets/searchlinestatus.cpp:310 #, kde-format msgid "From" msgstr "" -#: core/view.cpp:2354 core/view.cpp:2358 +#: core/view.cpp:2350 core/view.cpp:2354 #, kde-format msgctxt "Receiver of the email" msgid "To" msgstr "" -#: core/view.cpp:2355 core/view.cpp:2359 +#: core/view.cpp:2351 core/view.cpp:2355 #, kde-format msgid "Date" msgstr "" -#: core/view.cpp:2373 core/view.cpp:2376 +#: core/view.cpp:2369 core/view.cpp:2372 #, kde-format msgid "Size" msgstr "" -#: core/view.cpp:2381 core/view.cpp:2383 +#: core/view.cpp:2377 core/view.cpp:2379 #, kde-format msgid "Note" msgstr "" -#: core/view.cpp:2390 core/view.cpp:2392 +#: core/view.cpp:2386 core/view.cpp:2388 #, kde-format msgid "Preview" msgstr "" -#: core/view.cpp:2410 +#: core/view.cpp:2406 #, kde-format msgid "%1 reply" msgid_plural "%1 replies" msgstr[0] "" msgstr[1] "" -#: core/view.cpp:2414 +#: core/view.cpp:2410 #, kde-format msgid "%1 message in subtree (%2 unread)" msgid_plural "%1 messages in subtree (%2 unread)" msgstr[0] "" msgstr[1] "" -#: core/view.cpp:2455 +#: core/view.cpp:2451 #, kde-format msgctxt "" "@info:tooltip Formats to something like 'Threads started on 2008-12-21'" msgid "Threads started on %1" msgstr "" -#: core/view.cpp:2461 +#: core/view.cpp:2457 #, kde-format msgctxt "@info:tooltip Formats to something like 'Threads started Yesterday'" msgid "Threads started %1" msgstr "" -#: core/view.cpp:2467 +#: core/view.cpp:2463 #, kde-format msgid "Threads with messages dated %1" msgstr "" -#: core/view.cpp:2478 +#: core/view.cpp:2474 #, kde-format msgctxt "@info:tooltip Formats to something like 'Messages sent on 2008-12-21'" msgid "Messages sent on %1" msgstr "" -#: core/view.cpp:2484 +#: core/view.cpp:2480 #, kde-format msgctxt "" "@info:tooltip Formats to something like 'Messages received on 2008-12-21'" msgid "Messages received on %1" msgstr "" -#: core/view.cpp:2492 +#: core/view.cpp:2488 #, kde-format msgctxt "@info:tooltip Formats to something like 'Messages sent Yesterday'" msgid "Messages sent %1" msgstr "" -#: core/view.cpp:2498 +#: core/view.cpp:2494 #, kde-format msgctxt "@info:tooltip Formats to something like 'Messages received Yesterday'" msgid "Messages received %1" msgstr "" -#: core/view.cpp:2509 +#: core/view.cpp:2505 #, kde-format msgid "Threads started within %1" msgstr "" -#: core/view.cpp:2512 +#: core/view.cpp:2508 #, kde-format msgid "Threads containing messages with dates within %1" msgstr "" -#: core/view.cpp:2520 +#: core/view.cpp:2516 #, kde-format msgid "Messages sent within %1" msgstr "" -#: core/view.cpp:2522 +#: core/view.cpp:2518 #, kde-format msgid "Messages received within %1" msgstr "" -#: core/view.cpp:2531 +#: core/view.cpp:2527 #, kde-format msgid "Threads started by %1" msgstr "" -#: core/view.cpp:2534 +#: core/view.cpp:2530 #, kde-format msgid "Threads with most recent message by %1" msgstr "" -#: core/view.cpp:2543 core/view.cpp:2567 +#: core/view.cpp:2539 core/view.cpp:2563 #, kde-format msgid "Messages sent to %1" msgstr "" -#: core/view.cpp:2545 +#: core/view.cpp:2541 #, kde-format msgid "Messages sent by %1" msgstr "" -#: core/view.cpp:2548 +#: core/view.cpp:2544 #, kde-format msgid "Messages received from %1" msgstr "" -#: core/view.cpp:2556 +#: core/view.cpp:2552 #, kde-format msgid "Threads directed to %1" msgstr "" -#: core/view.cpp:2559 +#: core/view.cpp:2555 #, kde-format msgid "Threads with most recent message directed to %1" msgstr "" -#: core/view.cpp:2569 +#: core/view.cpp:2565 #, kde-format msgid "Messages received by %1" msgstr "" -#: core/view.cpp:2595 +#: core/view.cpp:2591 #, kde-format msgid "%1 thread" msgid_plural "%1 threads" msgstr[0] "" msgstr[1] "" -#: core/view.cpp:2600 +#: core/view.cpp:2596 #, kde-format msgid "%1 message (%2 unread)" msgid_plural "%1 messages (%2 unread)" msgstr[0] "" msgstr[1] "" -#: core/widgetbase.cpp:399 messagelistutil.cpp:129 +#: core/widgetbase.cpp:400 messagelistutil.cpp:129 #, kde-format msgid "Theme" msgstr "" -#: core/widgetbase.cpp:421 core/widgetbase.cpp:514 +#: core/widgetbase.cpp:422 core/widgetbase.cpp:515 #: utils/aggregationconfigbutton.cpp:48 utils/themeconfigbutton.cpp:64 #, kde-format msgid "Configure..." msgstr "" -#: core/widgetbase.cpp:492 messagelistutil.cpp:124 +#: core/widgetbase.cpp:493 messagelistutil.cpp:124 #, kde-format msgid "Aggregation" msgstr "" -#: core/widgetbase.cpp:577 +#: core/widgetbase.cpp:578 #, kde-format msgid "Message Sort Order" msgstr "" -#: core/widgetbase.cpp:600 +#: core/widgetbase.cpp:601 #, kde-format msgid "Message Sort Direction" msgstr "" -#: core/widgetbase.cpp:618 +#: core/widgetbase.cpp:619 #, kde-format msgid "Group Sort Order" msgstr "" -#: core/widgetbase.cpp:637 +#: core/widgetbase.cpp:638 #, kde-format msgid "Group Sort Direction" msgstr "" -#: core/widgetbase.cpp:653 +#: core/widgetbase.cpp:654 #, kde-format msgid "Folder Always Uses This Sort Order" msgstr "" -#: core/widgets/quicksearchline.cpp:53 +#: core/widgets/quicksearchline.cpp:54 #, kde-format msgctxt "Search for messages." msgid "Search" @@ -1062,19 +1062,19 @@ "excluded from indexing completely. The results below may be incomplete." msgstr "" -#: core/widgets/searchlinestatus.cpp:76 +#: core/widgets/searchlinestatus.cpp:92 #, kde-format msgctxt "@info:tooltip" msgid "Prevent the quick search field from being cleared when changing folders" msgstr "" -#: core/widgets/searchlinestatus.cpp:79 +#: core/widgets/searchlinestatus.cpp:95 #, kde-format msgctxt "@info:tooltip" msgid "Clear the quick search field when changing folders" msgstr "" -#: core/widgets/searchlinestatus.cpp:100 +#: core/widgets/searchlinestatus.cpp:116 #, kde-format msgctxt "@info:whatsthis" msgid "" @@ -1082,108 +1082,108 @@ "to other folders or when narrowing the search by message status." msgstr "" -#: core/widgets/searchlinestatus.cpp:111 +#: core/widgets/searchlinestatus.cpp:127 #, kde-format msgid "Filter Mails by Status" msgstr "" -#: core/widgets/searchlinestatus.cpp:186 +#: core/widgets/searchlinestatus.cpp:202 #, kde-format msgid "Clear Filter" msgstr "" -#: core/widgets/searchlinestatus.cpp:191 +#: core/widgets/searchlinestatus.cpp:207 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Unread" msgstr "" -#: core/widgets/searchlinestatus.cpp:195 +#: core/widgets/searchlinestatus.cpp:211 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Replied" msgstr "" -#: core/widgets/searchlinestatus.cpp:199 +#: core/widgets/searchlinestatus.cpp:215 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Forwarded" msgstr "" -#: core/widgets/searchlinestatus.cpp:203 +#: core/widgets/searchlinestatus.cpp:219 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Important" msgstr "" -#: core/widgets/searchlinestatus.cpp:207 +#: core/widgets/searchlinestatus.cpp:223 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Action Item" msgstr "" -#: core/widgets/searchlinestatus.cpp:211 +#: core/widgets/searchlinestatus.cpp:227 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Watched" msgstr "" -#: core/widgets/searchlinestatus.cpp:215 +#: core/widgets/searchlinestatus.cpp:231 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Ignored" msgstr "" -#: core/widgets/searchlinestatus.cpp:219 +#: core/widgets/searchlinestatus.cpp:235 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Has Attachment" msgstr "" -#: core/widgets/searchlinestatus.cpp:223 +#: core/widgets/searchlinestatus.cpp:239 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Has Invitation" msgstr "" -#: core/widgets/searchlinestatus.cpp:227 +#: core/widgets/searchlinestatus.cpp:243 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Spam" msgstr "" -#: core/widgets/searchlinestatus.cpp:231 +#: core/widgets/searchlinestatus.cpp:247 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Ham" msgstr "" -#: core/widgets/searchlinestatus.cpp:241 +#: core/widgets/searchlinestatus.cpp:257 #, kde-format msgid "Full Message" msgstr "" -#: core/widgets/searchlinestatus.cpp:248 +#: core/widgets/searchlinestatus.cpp:264 #, kde-format msgid "Body" msgstr "" -#: core/widgets/searchlinestatus.cpp:253 +#: core/widgets/searchlinestatus.cpp:269 #, kde-format msgid "Subject" msgstr "" -#: core/widgets/searchlinestatus.cpp:264 +#: core/widgets/searchlinestatus.cpp:280 #, kde-format msgid "BCC" msgstr "" -#: core/widgets/searchlinestatus.cpp:292 +#: core/widgets/searchlinestatus.cpp:308 #, kde-format msgid "To" msgstr "" -#: core/widgets/searchlinestatus.cpp:344 +#: core/widgets/searchlinestatus.cpp:360 #, kde-format msgid "Clear History" msgstr "" @@ -1225,54 +1225,54 @@ msgid "Show Quick Search Bar" msgstr "" -#: pane.cpp:235 +#: pane.cpp:237 #, kde-format msgid "Message List" msgstr "" -#: pane.cpp:241 +#: pane.cpp:243 #, kde-format msgid "Create New Tab" msgstr "" -#: pane.cpp:252 +#: pane.cpp:254 #, kde-format msgid "Close Tab" msgstr "" -#: pane.cpp:259 +#: pane.cpp:261 #, kde-format msgid "Activate Next Tab" msgstr "" -#: pane.cpp:264 +#: pane.cpp:266 #, kde-format msgid "Activate Previous Tab" msgstr "" -#: pane.cpp:269 +#: pane.cpp:271 #, kde-format msgid "Move Tab Left" msgstr "" -#: pane.cpp:274 +#: pane.cpp:276 #, kde-format msgid "Move Tab Right" msgstr "" -#: pane.cpp:481 pane.cpp:746 +#: pane.cpp:483 pane.cpp:758 #, kde-format msgctxt "@title:tab Empty messagelist" msgid "Empty" msgstr "" -#: pane.cpp:668 +#: pane.cpp:677 #, kde-format msgctxt "@action:inmenu" msgid "Close Tab" msgstr "" -#: pane.cpp:671 +#: pane.cpp:680 #, kde-format msgctxt "@action:inmenu" msgid "Close All Other Tabs" @@ -1337,7 +1337,7 @@ msgstr "" #: utils/configureaggregationsdialog.cpp:129 -#: utils/configureaggregationsdialog.cpp:360 +#: utils/configureaggregationsdialog.cpp:359 #, kde-format msgid "New Aggregation" msgstr "" @@ -1362,23 +1362,23 @@ msgid "Delete Aggregation" msgstr "" -#: utils/configureaggregationsdialog.cpp:343 +#: utils/configureaggregationsdialog.cpp:342 #, kde-format msgid "Unnamed Aggregation" msgstr "" -#: utils/configureaggregationsdialog.cpp:412 +#: utils/configureaggregationsdialog.cpp:411 #, kde-format msgid "Import Aggregation" msgstr "" -#: utils/configureaggregationsdialog.cpp:445 -#: utils/configurethemesdialog.cpp:470 +#: utils/configureaggregationsdialog.cpp:444 +#: utils/configurethemesdialog.cpp:466 #, kde-format msgid "All Files (*)" msgstr "" -#: utils/configureaggregationsdialog.cpp:445 +#: utils/configureaggregationsdialog.cpp:444 #, kde-format msgid "Export Aggregation" msgstr "" @@ -1388,7 +1388,7 @@ msgid "Customize Themes" msgstr "" -#: utils/configurethemesdialog.cpp:124 utils/configurethemesdialog.cpp:356 +#: utils/configurethemesdialog.cpp:124 utils/configurethemesdialog.cpp:352 #, kde-format msgid "New Theme" msgstr "" @@ -1398,53 +1398,53 @@ msgid "Clone Theme" msgstr "" -#: utils/configurethemesdialog.cpp:144 +#: utils/configurethemesdialog.cpp:143 #, kde-format msgid "Export Theme..." msgstr "" -#: utils/configurethemesdialog.cpp:150 +#: utils/configurethemesdialog.cpp:148 #, kde-format msgid "Import Theme..." msgstr "" -#: utils/configurethemesdialog.cpp:160 +#: utils/configurethemesdialog.cpp:157 #, kde-format msgid "Delete Theme" msgstr "" -#: utils/configurethemesdialog.cpp:338 +#: utils/configurethemesdialog.cpp:334 #, kde-format msgid "Unnamed Theme" msgstr "" -#: utils/configurethemesdialog.cpp:358 utils/themeeditor.cpp:1242 +#: utils/configurethemesdialog.cpp:354 utils/themeeditor.cpp:1242 #, kde-format msgid "New Column" msgstr "" -#: utils/configurethemesdialog.cpp:410 +#: utils/configurethemesdialog.cpp:406 #, kde-format msgid "Do you want to delete selected themes?" msgstr "" -#: utils/configurethemesdialog.cpp:411 +#: utils/configurethemesdialog.cpp:407 #, kde-format msgid "Do you want to delete \"%1\"?" msgstr "" -#: utils/configurethemesdialog.cpp:411 +#: utils/configurethemesdialog.cpp:407 #, kde-format msgctxt "@title:window" msgid "Delete Theme" msgstr "" -#: utils/configurethemesdialog.cpp:436 +#: utils/configurethemesdialog.cpp:432 #, kde-format msgid "Import Theme" msgstr "" -#: utils/configurethemesdialog.cpp:470 +#: utils/configurethemesdialog.cpp:466 #, kde-format msgid "Export Theme" msgstr "" diff -Nru kf5-messagelib-17.12.3/po/ast/libmessageviewer.po kf5-messagelib-18.04.3/po/ast/libmessageviewer.po --- kf5-messagelib-17.12.3/po/ast/libmessageviewer.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/ast/libmessageviewer.po 2018-07-10 00:15:57.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2018-02-21 06:03+0100\n" +"POT-Creation-Date: 2018-05-27 06:21+0200\n" "PO-Revision-Date: 2016-12-19 03:07+0100\n" "Last-Translator: enolp \n" "Language-Team: Asturian \n" @@ -369,13 +369,13 @@ msgid "Unknown" msgstr "" -#: header/headerstyle_util.cpp:100 header/headerstyle_util.cpp:105 -#: header/headerstyle_util.cpp:116 +#: header/headerstyle_util.cpp:102 header/headerstyle_util.cpp:107 +#: header/headerstyle_util.cpp:118 #, kde-format msgid "No Subject" msgstr "" -#: header/headerstyle_util.cpp:185 +#: header/headerstyle_util.cpp:187 #, kde-format msgid "" "%1% probability of being spam with confidence %3%.\n" @@ -385,7 +385,7 @@ "Confidence=%4" msgstr "" -#: header/headerstyle_util.cpp:191 +#: header/headerstyle_util.cpp:193 #, kde-format msgid "" "%1% probability of being spam.\n" @@ -394,37 +394,37 @@ "Probability=%2" msgstr "" -#: header/headerstyle_util.cpp:199 +#: header/headerstyle_util.cpp:201 #, kde-format msgid "No Spam agent" msgstr "" -#: header/headerstyle_util.cpp:202 +#: header/headerstyle_util.cpp:204 #, kde-format msgid "Spam filter score not a number" msgstr "" -#: header/headerstyle_util.cpp:205 +#: header/headerstyle_util.cpp:207 #, kde-format msgid "Threshold not a valid number" msgstr "" -#: header/headerstyle_util.cpp:208 +#: header/headerstyle_util.cpp:210 #, kde-format msgid "Spam filter score could not be extracted from header" msgstr "" -#: header/headerstyle_util.cpp:211 +#: header/headerstyle_util.cpp:213 #, kde-format msgid "Threshold could not be extracted from header" msgstr "" -#: header/headerstyle_util.cpp:214 +#: header/headerstyle_util.cpp:216 #, kde-format msgid "Error evaluating spam score" msgstr "" -#: header/headerstyle_util.cpp:218 +#: header/headerstyle_util.cpp:220 #, kde-format msgid "" "%1.\n" @@ -484,144 +484,126 @@ msgid "Reply to: " msgstr "" -#: job/attachmenteditjob.cpp:50 -#, kde-format -msgid "" -"Modifying an attachment might invalidate any digital signature on this " -"message." -msgstr "" - -#: job/attachmenteditjob.cpp:51 viewer/viewer_p.cpp:669 -#: viewer/viewer_p.cpp:1816 -#, kde-format -msgid "Edit Attachment" -msgstr "" - -#: job/attachmenteditjob.cpp:52 -#, kde-format -msgid "Edit" -msgstr "" - -#: messagepartthemes/default/defaultrenderer.cpp:82 +#: messagepartthemes/default/defaultrenderer.cpp:83 #, kde-format msgid "Error: Signature not verified" msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:85 +#: messagepartthemes/default/defaultrenderer.cpp:86 #, kde-format msgid "Good signature" msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:88 +#: messagepartthemes/default/defaultrenderer.cpp:89 #, kde-format msgid "Bad signature" msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:91 +#: messagepartthemes/default/defaultrenderer.cpp:92 #, kde-format msgid "No public key to verify the signature" msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:94 +#: messagepartthemes/default/defaultrenderer.cpp:95 #, kde-format msgid "No signature found" msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:97 +#: messagepartthemes/default/defaultrenderer.cpp:98 #, kde-format msgid "Error verifying the signature" msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:100 +#: messagepartthemes/default/defaultrenderer.cpp:101 #, kde-format msgid "Different results for signatures" msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:119 +#: messagepartthemes/default/defaultrenderer.cpp:120 #, kde-format msgid "No status information available." msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:126 -#: messagepartthemes/default/defaultrenderer.cpp:211 +#: messagepartthemes/default/defaultrenderer.cpp:127 +#: messagepartthemes/default/defaultrenderer.cpp:212 #, kde-format msgid "Good signature." msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:147 +#: messagepartthemes/default/defaultrenderer.cpp:148 #, kde-format msgid "One key has expired." msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:151 +#: messagepartthemes/default/defaultrenderer.cpp:152 #, kde-format msgid "The signature has expired." msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:156 +#: messagepartthemes/default/defaultrenderer.cpp:157 #, kde-format msgid "Unable to verify: key missing." msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:163 +#: messagepartthemes/default/defaultrenderer.cpp:164 #, kde-format msgid "CRL not available." msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:167 +#: messagepartthemes/default/defaultrenderer.cpp:168 #, kde-format msgid "Available CRL is too old." msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:171 +#: messagepartthemes/default/defaultrenderer.cpp:172 #, kde-format msgid "A policy was not met." msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:175 +#: messagepartthemes/default/defaultrenderer.cpp:176 #, kde-format msgid "A system error occurred." msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:186 +#: messagepartthemes/default/defaultrenderer.cpp:187 #, kde-format msgid "One key has been revoked." msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:213 +#: messagepartthemes/default/defaultrenderer.cpp:214 #, kde-format msgid "Bad signature." msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:632 -#: messagepartthemes/default/defaultrenderer.cpp:634 +#: messagepartthemes/default/defaultrenderer.cpp:629 +#: messagepartthemes/default/defaultrenderer.cpp:631 #, kde-format msgid "certificate" msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:641 -#: messagepartthemes/default/defaultrenderer.cpp:670 +#: messagepartthemes/default/defaultrenderer.cpp:638 +#: messagepartthemes/default/defaultrenderer.cpp:667 #, kde-format msgctxt "Start of warning message." msgid "Warning:" msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:644 +#: messagepartthemes/default/defaultrenderer.cpp:641 #, kde-format msgid "Sender's mail address is not stored in the %1 used for signing." msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:647 +#: messagepartthemes/default/defaultrenderer.cpp:644 #, kde-format msgid "sender: " msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:650 +#: messagepartthemes/default/defaultrenderer.cpp:647 #, kde-format msgid "stored: " msgstr "" -#: messagepartthemes/default/defaultrenderer.cpp:672 +#: messagepartthemes/default/defaultrenderer.cpp:669 #, kde-format msgid "" "No mail address is stored in the %1 used for signing, so we cannot compare " @@ -629,6 +611,7 @@ msgstr "" #: scamdetection/scamdetectiondetailsdialog.cpp:47 +#: widgets/mailtrackingdetailsdialog.cpp:32 #, kde-format msgid "Details" msgstr "" @@ -659,11 +642,13 @@ msgstr "" #: scamdetection/scamdetectionwebengine.cpp:103 +#: widgets/mailtrackingwarningwidget.cpp:55 #, kde-format msgid "Details:" msgstr "" #: scamdetection/scamdetectionwebengine.cpp:136 +#: scamdetection/scamdetectionwebengine.cpp:191 #, kde-format msgid "" "This email contains a link which reads as '%1' in the text, but actually " @@ -704,7 +689,7 @@ msgid "This email contains a shorturl (%1). It can redirect to another server." msgstr "" -#: scamdetection/scamdetectionwebengine.cpp:181 +#: scamdetection/scamdetectionwebengine.cpp:206 #, kde-format msgid "Message contains form element. This is often the case in scam emails." msgstr "" @@ -765,12 +750,6 @@ msgid "Close message window after replying or forwarding" msgstr "" -#. i18n: ectx: label, entry (showColorBar), group (Reader) -#: settings/messageviewer.kcfg.cmake:59 -#, kde-format -msgid "Show HTML Side Bar" -msgstr "" - #. i18n: ectx: label, entry (ShowExpandQuotesMark), group (Reader) #: settings/messageviewer.kcfg.cmake:63 #, kde-format @@ -803,81 +782,75 @@ msgid "Enable this option to show quoted text with a smaller font." msgstr "" -#. i18n: ectx: label, entry (AllowAttachmentEditing), group (Reader) -#: settings/messageviewer.kcfg.cmake:79 -#, kde-format -msgid "Allow to edit attachments of existing mails." -msgstr "" - #. i18n: ectx: label, entry (AlwaysDecrypt), group (Reader) -#: settings/messageviewer.kcfg.cmake:83 +#: settings/messageviewer.kcfg.cmake:79 #, kde-format msgid "Always decrypt messages when viewing or ask before decrypting" msgstr "" #. i18n: ectx: label, entry (MimeTreeMode2), group (Reader) -#: settings/messageviewer.kcfg.cmake:86 +#: settings/messageviewer.kcfg.cmake:82 #, kde-format msgid "Message Structure Viewer" msgstr "" #. i18n: ectx: label, entry (MimeTreeMode2), group (Reader) -#: settings/messageviewer.kcfg.cmake:89 +#: settings/messageviewer.kcfg.cmake:85 #, kde-format msgid "Show never" msgstr "" #. i18n: ectx: label, entry (MimeTreeMode2), group (Reader) -#: settings/messageviewer.kcfg.cmake:92 +#: settings/messageviewer.kcfg.cmake:88 #, kde-format msgid "Show always" msgstr "" #. i18n: ectx: label, entry (headerPluginStyleName), group (Reader) #. i18n: ectx: label, entry (headerStyle), group (Reader) -#: settings/messageviewer.kcfg.cmake:104 settings/messageviewer.kcfg.cmake:110 +#: settings/messageviewer.kcfg.cmake:100 settings/messageviewer.kcfg.cmake:106 #, kde-format msgid "What style of headers should be displayed" msgstr "" #. i18n: ectx: label, entry (headerSetDisplayed), group (Reader) -#: settings/messageviewer.kcfg.cmake:114 +#: settings/messageviewer.kcfg.cmake:110 #, kde-format msgid "How much of headers should be displayed" msgstr "" #. i18n: ectx: label, entry (htmlMail), group (Reader) -#: settings/messageviewer.kcfg.cmake:118 +#: settings/messageviewer.kcfg.cmake:114 #, kde-format msgid "Prefer HTML to plain text" msgstr "" #. i18n: ectx: label, entry (htmlLoadExternal), group (Reader) -#: settings/messageviewer.kcfg.cmake:122 +#: settings/messageviewer.kcfg.cmake:118 #, kde-format msgid "Allow messages to load external references from the Internet" msgstr "" #. i18n: ectx: label, entry (attachmentStrategy), group (Reader) -#: settings/messageviewer.kcfg.cmake:126 +#: settings/messageviewer.kcfg.cmake:122 #, kde-format msgid "How attachments are shown" msgstr "" #. i18n: ectx: label, entry (RecycleQuoteColors), group (Reader) -#: settings/messageviewer.kcfg.cmake:130 +#: settings/messageviewer.kcfg.cmake:126 #, kde-format msgid "Specifies whether to reuse the quote color, beyond the 3rd level" msgstr "" #. i18n: ectx: label, entry (AccessKeyEnabled), group (Reader) -#: settings/messageviewer.kcfg.cmake:134 +#: settings/messageviewer.kcfg.cmake:130 #, kde-format msgid "Activate Access Key" msgstr "" #. i18n: ectx: label, entry (ScamDetectionEnabled), group (Reader) -#: settings/messageviewer.kcfg.cmake:138 +#: settings/messageviewer.kcfg.cmake:134 #, kde-format msgid "" "KMail can analyze messages for suspected email scams by looking for common " @@ -885,19 +858,19 @@ msgstr "" #. i18n: ectx: label, entry (ScamDetectionWhiteList), group (Reader) -#: settings/messageviewer.kcfg.cmake:142 +#: settings/messageviewer.kcfg.cmake:138 #, kde-format msgid "List of emails in scam white list" msgstr "" #. i18n: ectx: label, entry (notSendWhenEncrypted), group (MDN) -#: settings/messageviewer.kcfg.cmake:148 +#: settings/messageviewer.kcfg.cmake:144 #, kde-format msgid "Do not send MDNs in response to encrypted messages" msgstr "" #. i18n: ectx: label, entry (DefaultPolicy), group (MDN) -#: settings/messageviewer.kcfg.cmake:152 +#: settings/messageviewer.kcfg.cmake:148 #, kde-format msgid "" "Specifies the default policy to use, for the Message Disposition " @@ -905,7 +878,7 @@ msgstr "" #. i18n: ectx: label, entry (QuoteMessage), group (MDN) -#: settings/messageviewer.kcfg.cmake:156 +#: settings/messageviewer.kcfg.cmake:152 #, kde-format msgid "" "Specifies the default quoting action to take, when replying to a message " @@ -913,13 +886,13 @@ msgstr "" #. i18n: ectx: label, entry (LegacyMangleFromToHeaders), group (Invitations) -#: settings/messageviewer.kcfg.cmake:172 +#: settings/messageviewer.kcfg.cmake:168 #, kde-format msgid "Mangle From:/To: headers in replies to replies" msgstr "" #. i18n: ectx: whatsthis, entry (LegacyMangleFromToHeaders), group (Invitations) -#: settings/messageviewer.kcfg.cmake:173 +#: settings/messageviewer.kcfg.cmake:169 #, kde-format msgid "" "Microsoft Outlook has a number of shortcomings in its implementation of the " @@ -929,13 +902,13 @@ msgstr "" #. i18n: ectx: label, entry (LegacyBodyInvites), group (Invitations) -#: settings/messageviewer.kcfg.cmake:178 +#: settings/messageviewer.kcfg.cmake:174 #, kde-format msgid "Send groupware invitations in the mail body" msgstr "" #. i18n: ectx: whatsthis, entry (LegacyBodyInvites), group (Invitations) -#: settings/messageviewer.kcfg.cmake:179 +#: settings/messageviewer.kcfg.cmake:175 #, kde-format msgid "" "Microsoft Outlook has a number of shortcomings in its implementation of the " @@ -945,13 +918,13 @@ msgstr "" #. i18n: ectx: label, entry (ExchangeCompatibleInvitations), group (Invitations) -#: settings/messageviewer.kcfg.cmake:184 +#: settings/messageviewer.kcfg.cmake:180 #, kde-format msgid "Exchange-compatible invitation naming" msgstr "" #. i18n: ectx: whatsthis, entry (ExchangeCompatibleInvitations), group (Invitations) -#: settings/messageviewer.kcfg.cmake:185 +#: settings/messageviewer.kcfg.cmake:181 #, kde-format msgid "" "Microsoft Outlook, when used in combination with a Microsoft Exchange " @@ -961,13 +934,13 @@ msgstr "" #. i18n: ectx: label, entry (AutomaticSending), group (Invitations) -#: settings/messageviewer.kcfg.cmake:190 +#: settings/messageviewer.kcfg.cmake:186 #, kde-format msgid "Automatic invitation sending" msgstr "" #. i18n: ectx: whatsthis, entry (AutomaticSending), group (Invitations) -#: settings/messageviewer.kcfg.cmake:191 +#: settings/messageviewer.kcfg.cmake:187 #, kde-format msgid "" "When this is checked, you will not see the mail composer window. Instead, " @@ -979,13 +952,13 @@ #. i18n: ectx: label, entry (DeleteInvitationEmailsAfterSendingReply), group (Invitations) #. i18n: ectx: property (text), widget (QCheckBox, mDeleteInvitations) -#: settings/messageviewer.kcfg.cmake:196 ui/invitationsettings.ui:74 +#: settings/messageviewer.kcfg.cmake:192 ui/invitationsettings.ui:74 #, kde-format msgid "Delete invitation emails after the reply to them has been sent" msgstr "" #. i18n: ectx: whatsthis, entry (DeleteInvitationEmailsAfterSendingReply), group (Invitations) -#: settings/messageviewer.kcfg.cmake:197 +#: settings/messageviewer.kcfg.cmake:193 #, kde-format msgid "" "When this is checked, received invitation emails that have been replied to " @@ -993,25 +966,25 @@ msgstr "" #. i18n: ectx: label, entry (UseFixedFont), group (Composer) -#: settings/messageviewer.kcfg.cmake:221 viewer/viewer_p.cpp:1646 +#: settings/messageviewer.kcfg.cmake:217 viewer/viewer_p.cpp:1633 #, kde-format msgid "Use Fi&xed Font" msgstr "" #. i18n: ectx: whatsthis, entry (LastSelectedFolder), group (Todo) -#: settings/messageviewer.kcfg.cmake:228 +#: settings/messageviewer.kcfg.cmake:224 #, kde-format msgid "The most recent selected folder using for Todo." msgstr "" #. i18n: ectx: whatsthis, entry (LastEventSelectedFolder), group (Event) -#: settings/messageviewer.kcfg.cmake:234 +#: settings/messageviewer.kcfg.cmake:230 #, kde-format msgid "The most recent selected folder using for Event." msgstr "" #. i18n: ectx: whatsthis, entry (LastNoteSelectedFolder), group (Note) -#: settings/messageviewer.kcfg.cmake:240 +#: settings/messageviewer.kcfg.cmake:236 #, kde-format msgid "The most recent selected folder using for Notes." msgstr "" @@ -1123,32 +1096,26 @@ msgid "Enable access key" msgstr "" -#. i18n: ectx: property (text), widget (QCheckBox, kcfg_showColorBar) -#: ui/settings.ui:98 -#, kde-format -msgid "Show &HTML Side Bar" -msgstr "" - #. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShrinkQuotes) -#: ui/settings.ui:105 +#: ui/settings.ui:98 #, kde-format msgid "Reduce font size for "ed text" msgstr "" #. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowExpandQuotesMark) -#: ui/settings.ui:112 +#: ui/settings.ui:105 #, kde-format msgid "Show &expand/collapse quote marks" msgstr "" #. i18n: ectx: property (text), widget (QLabel, collapseQuoteLevelLabel) -#: ui/settings.ui:140 +#: ui/settings.ui:133 #, kde-format msgid "Automatic collapse &level:" msgstr "" #. i18n: ectx: property (text), widget (QLabel, label_4) -#: ui/settings.ui:209 +#: ui/settings.ui:202 #, kde-format msgid "&Minimum font size:" msgstr "" @@ -1164,64 +1131,64 @@ msgid "Overwrite File?" msgstr "" -#: utils/messageviewerutil.cpp:139 +#: utils/messageviewerutil.cpp:140 #, kde-format msgid "Save Attachments To" msgstr "" -#: utils/messageviewerutil.cpp:158 +#: utils/messageviewerutil.cpp:159 #, kde-format msgctxt "filename for an unnamed attachment" msgid "attachment.1" msgstr "" -#: utils/messageviewerutil.cpp:166 +#: utils/messageviewerutil.cpp:167 #, kde-format msgid "Save Attachment" msgstr "" -#: utils/messageviewerutil.cpp:193 +#: utils/messageviewerutil.cpp:194 #, kde-format msgctxt "filename for the %1-th unnamed attachment" msgid "attachment.%1" msgstr "" -#: utils/messageviewerutil.cpp:296 +#: utils/messageviewerutil.cpp:299 #, kde-format msgid "" "The part %1 of the message is encrypted. Do you want to keep the encryption " "when saving?" msgstr "" -#: utils/messageviewerutil.cpp:298 utils/messageviewerutil.cpp:311 +#: utils/messageviewerutil.cpp:301 utils/messageviewerutil.cpp:314 #, kde-format msgid "KMail Question" msgstr "" -#: utils/messageviewerutil.cpp:298 +#: utils/messageviewerutil.cpp:301 #, kde-format msgid "Keep Encryption" msgstr "" -#: utils/messageviewerutil.cpp:299 utils/messageviewerutil.cpp:312 +#: utils/messageviewerutil.cpp:302 utils/messageviewerutil.cpp:315 #, kde-format msgid "Do Not Keep" msgstr "" -#: utils/messageviewerutil.cpp:309 +#: utils/messageviewerutil.cpp:312 #, kde-format msgid "" "The part %1 of the message is signed. Do you want to keep the signature when " "saving?" msgstr "" -#: utils/messageviewerutil.cpp:311 +#: utils/messageviewerutil.cpp:314 #, kde-format msgid "Keep Signature" msgstr "" -#: utils/messageviewerutil.cpp:376 utils/messageviewerutil.cpp:394 -#: utils/messageviewerutil.cpp:412 +#: utils/messageviewerutil.cpp:379 utils/messageviewerutil.cpp:397 +#: utils/messageviewerutil.cpp:415 #, kde-kuit-format msgctxt "1 = file name, 2 = error string" msgid "" @@ -1229,65 +1196,65 @@ "qt>" msgstr "" -#: utils/messageviewerutil.cpp:379 utils/messageviewerutil.cpp:397 -#: utils/messageviewerutil.cpp:415 +#: utils/messageviewerutil.cpp:382 utils/messageviewerutil.cpp:400 +#: utils/messageviewerutil.cpp:418 #, kde-format msgid "Error saving attachment" msgstr "" -#: utils/messageviewerutil.cpp:428 +#: utils/messageviewerutil.cpp:431 #, kde-format msgid "Found no attachments to save." msgstr "" -#: utils/messageviewerutil.cpp:451 +#: utils/messageviewerutil.cpp:450 #, kde-format msgid "message" msgstr "" -#: utils/messageviewerutil.cpp:458 +#: utils/messageviewerutil.cpp:467 #, kde-format msgid "email messages (*.mbox);;all files (*)" msgstr "" -#: utils/messageviewerutil.cpp:471 +#: utils/messageviewerutil.cpp:480 #, kde-format msgid "Save Message" msgid_plural "Save Messages" msgstr[0] "" msgstr[1] "" -#: utils/messageviewerutil.cpp:484 +#: utils/messageviewerutil.cpp:493 #, kde-format msgid "File %1 could not be loaded." msgstr "" -#: utils/messageviewerutil.cpp:485 +#: utils/messageviewerutil.cpp:494 #, kde-format msgid "Error loading message" msgstr "" -#: utils/messageviewerutil.cpp:487 +#: utils/messageviewerutil.cpp:496 #, kde-format msgid "File %1 could not be created." msgstr "" -#: utils/messageviewerutil.cpp:488 utils/messageviewerutil.cpp:500 +#: utils/messageviewerutil.cpp:497 utils/messageviewerutil.cpp:509 #, kde-format msgid "Error saving message" msgstr "" -#: utils/messageviewerutil.cpp:499 +#: utils/messageviewerutil.cpp:508 #, kde-format msgid "We cannot save message." msgstr "" -#: utils/messageviewerutil.cpp:516 +#: utils/messageviewerutil.cpp:532 #, kde-format msgid "Open &with %1" msgstr "" -#: utils/messageviewerutil.cpp:518 +#: utils/messageviewerutil.cpp:534 #, kde-format msgctxt "@item:inmenu Open With, %1 is application name" msgid "%1" @@ -1330,520 +1297,489 @@ msgid "Size" msgstr "" -#: viewer/urlhandlermanager.cpp:715 +#: viewer/urlhandlermanager.cpp:426 #, kde-format msgid "Turn on HTML rendering for this message." msgstr "" -#: viewer/urlhandlermanager.cpp:717 viewer/viewer_p.cpp:1729 +#: viewer/urlhandlermanager.cpp:428 viewer/viewer_p.cpp:1716 #, kde-format msgid "Load external references from the Internet for this message." msgstr "" -#: viewer/urlhandlermanager.cpp:719 +#: viewer/urlhandlermanager.cpp:430 #, kde-format msgid "Work online." msgstr "" -#: viewer/urlhandlermanager.cpp:721 +#: viewer/urlhandlermanager.cpp:432 #, kde-format msgid "Make account online." msgstr "" -#: viewer/urlhandlermanager.cpp:723 +#: viewer/urlhandlermanager.cpp:434 #, kde-format msgid "Decrypt message." msgstr "" -#: viewer/urlhandlermanager.cpp:725 +#: viewer/urlhandlermanager.cpp:436 #, kde-format msgid "Show signature details." msgstr "" -#: viewer/urlhandlermanager.cpp:727 +#: viewer/urlhandlermanager.cpp:438 #, kde-format msgid "Hide signature details." msgstr "" -#: viewer/urlhandlermanager.cpp:729 +#: viewer/urlhandlermanager.cpp:440 #, kde-format msgid "Show encryption details." msgstr "" -#: viewer/urlhandlermanager.cpp:731 +#: viewer/urlhandlermanager.cpp:442 #, kde-format msgid "Hide encryption details." msgstr "" -#: viewer/urlhandlermanager.cpp:733 -#, kde-format -msgid "Hide attachment list." -msgstr "" - -#: viewer/urlhandlermanager.cpp:735 -#, kde-format -msgid "Show attachment list." -msgstr "" - -#: viewer/urlhandlermanager.cpp:737 -#, kde-format -msgid "Hide full \"To\" list" -msgstr "" - -#: viewer/urlhandlermanager.cpp:739 -#, kde-format -msgid "Show full \"To\" list" -msgstr "" - -#: viewer/urlhandlermanager.cpp:741 -#, kde-format -msgid "Hide full \"Cc\" list" -msgstr "" - -#: viewer/urlhandlermanager.cpp:743 -#, kde-format -msgid "Show full \"Cc\" list" -msgstr "" - -#: viewer/urlhandlermanager.cpp:748 +#: viewer/urlhandlermanager.cpp:447 #, kde-format msgid "Open Documentation" msgstr "" -#: viewer/urlhandlermanager.cpp:784 +#: viewer/urlhandlermanager.cpp:481 #, kde-format msgid "Expand all quoted text." msgstr "" -#: viewer/urlhandlermanager.cpp:786 +#: viewer/urlhandlermanager.cpp:483 #, kde-format msgid "Collapse quoted text." msgstr "" -#: viewer/urlhandlermanager.cpp:848 +#: viewer/urlhandlermanager.cpp:543 #, kde-format msgid "Could not start certificate manager. Please check your installation." msgstr "" -#: viewer/urlhandlermanager.cpp:850 +#: viewer/urlhandlermanager.cpp:545 #, kde-format msgid "KMail Error" msgstr "" -#: viewer/urlhandlermanager.cpp:863 +#: viewer/urlhandlermanager.cpp:558 #, kde-format msgid "Show certificate 0x%1" msgstr "" -#: viewer/urlhandlermanager.cpp:931 +#: viewer/urlhandlermanager.cpp:620 #, kde-format msgid "&Open in Address Book" msgstr "" -#: viewer/urlhandlermanager.cpp:935 +#: viewer/urlhandlermanager.cpp:624 #, kde-format msgid "&Copy Email Address" msgstr "" -#: viewer/urlhandlermanager.cpp:948 viewer/viewer_p.cpp:2845 +#: viewer/urlhandlermanager.cpp:637 viewer/viewer_p.cpp:2765 #, kde-format msgid "Address copied to clipboard." msgstr "" -#: viewer/urlhandlermanager.cpp:960 +#: viewer/urlhandlermanager.cpp:648 #, kde-format msgid "Lookup the contact in KAddressbook" msgstr "" -#: viewer/urlhandlermanager.cpp:1086 +#: viewer/urlhandlermanager.cpp:825 #, kde-format msgid "Attachment: %1" msgstr "" -#: viewer/urlhandlermanager.cpp:1089 +#: viewer/urlhandlermanager.cpp:828 #, kde-format msgid "Encapsulated Message (Subject: %1)" msgstr "" -#: viewer/urlhandlermanager.cpp:1092 +#: viewer/urlhandlermanager.cpp:831 #, kde-format msgid "Encapsulated Message" msgstr "" -#: viewer/urlhandlermanager.cpp:1095 +#: viewer/urlhandlermanager.cpp:834 #, kde-format msgid "Unnamed attachment" msgstr "" -#: viewer/urlhandlermanager.cpp:1133 +#: viewer/urlhandlermanager.cpp:870 #, kde-format msgid "Show GnuPG Audit Log for this operation" msgstr "" -#: viewer/urlhandlermanager.cpp:1180 +#: viewer/urlhandlermanager.cpp:913 #, kde-format msgid "Opening URL..." msgstr "" -#: viewer/urlhandlermanager.cpp:1191 +#: viewer/urlhandlermanager.cpp:924 #, kde-kuit-format msgctxt "@info" msgid "Do you really want to execute %1?" msgstr "" -#: viewer/urlhandlermanager.cpp:1193 +#: viewer/urlhandlermanager.cpp:926 #, kde-format msgid "Execute" msgstr "" -#: viewer/viewer.cpp:144 +#: viewer/viewer.cpp:146 #, kde-format msgid "Loading message..." msgstr "" -#: viewer/viewer_p.cpp:410 +#: viewer/viewer_p.cpp:409 #, kde-format msgid "" "Deleting an attachment from an encrypted or old-style mailman message is not " "supported." msgstr "" -#: viewer/viewer_p.cpp:411 viewer/viewer_p.cpp:418 viewer/viewer_p.cpp:676 -#: viewer/viewer_p.cpp:1811 +#: viewer/viewer_p.cpp:410 viewer/viewer_p.cpp:417 viewer/viewer_p.cpp:653 #, kde-format msgid "Delete Attachment" msgstr "" -#: viewer/viewer_p.cpp:417 +#: viewer/viewer_p.cpp:416 #, kde-format msgid "" "Deleting an attachment might invalidate any digital signature on this " "message." msgstr "" -#: viewer/viewer_p.cpp:514 +#: viewer/viewer_p.cpp:502 #, kde-format msgctxt "@title:menu" msgid "&Open With" msgstr "" -#: viewer/viewer_p.cpp:532 +#: viewer/viewer_p.cpp:520 #, kde-format msgctxt "@action:inmenu Open With" msgid "&Other..." msgstr "" -#: viewer/viewer_p.cpp:534 viewer/viewer_p.cpp:548 +#: viewer/viewer_p.cpp:522 viewer/viewer_p.cpp:536 #, kde-format msgctxt "@title:menu" msgid "&Open With..." msgstr "" -#: viewer/viewer_p.cpp:610 viewer/viewer_p.cpp:1786 +#: viewer/viewer_p.cpp:599 viewer/viewer_p.cpp:1773 #, kde-format msgctxt "to open" msgid "Open" msgstr "" -#: viewer/viewer_p.cpp:629 viewer/viewer_p.cpp:1796 +#: viewer/viewer_p.cpp:619 viewer/viewer_p.cpp:1783 #, kde-format msgctxt "to view something" msgid "View" msgstr "" -#: viewer/viewer_p.cpp:641 +#: viewer/viewer_p.cpp:627 #, kde-format msgid "Scroll To" msgstr "" -#: viewer/viewer_p.cpp:650 +#: viewer/viewer_p.cpp:633 #, kde-format msgid "Save As..." msgstr "" -#: viewer/viewer_p.cpp:655 viewer/viewer_p.cpp:1808 +#: viewer/viewer_p.cpp:639 viewer/viewer_p.cpp:1795 #, kde-format msgid "Copy" msgstr "" -#: viewer/viewer_p.cpp:685 +#: viewer/viewer_p.cpp:664 #, kde-format msgid "Reply To Author" msgstr "" -#: viewer/viewer_p.cpp:692 +#: viewer/viewer_p.cpp:672 #, kde-format msgid "Reply To All" msgstr "" -#: viewer/viewer_p.cpp:697 viewer/viewer_p.cpp:1822 +#: viewer/viewer_p.cpp:678 viewer/viewer_p.cpp:1801 #, kde-format msgid "Properties" msgstr "" -#: viewer/viewer_p.cpp:860 +#: viewer/viewer_p.cpp:841 #, kde-format msgid "KMail" msgstr "" -#: viewer/viewer_p.cpp:861 +#: viewer/viewer_p.cpp:842 #, kde-format msgid "The KDE Mail Client" msgstr "" -#: viewer/viewer_p.cpp:1366 +#: viewer/viewer_p.cpp:1349 #, kde-format msgid "View Attachment: %1" msgstr "" -#: viewer/viewer_p.cpp:1558 +#: viewer/viewer_p.cpp:1545 #, kde-format msgctxt "View->" msgid "&Attachments" msgstr "" -#: viewer/viewer_p.cpp:1560 +#: viewer/viewer_p.cpp:1547 #, kde-format msgid "Choose display style of attachments" msgstr "" -#: viewer/viewer_p.cpp:1563 +#: viewer/viewer_p.cpp:1550 #, kde-format msgctxt "View->attachments->" msgid "&As Icons" msgstr "" -#: viewer/viewer_p.cpp:1566 +#: viewer/viewer_p.cpp:1553 #, kde-format msgid "Show all attachments as icons. Click to see them." msgstr "" -#: viewer/viewer_p.cpp:1570 +#: viewer/viewer_p.cpp:1557 #, kde-format msgctxt "View->attachments->" msgid "&Smart" msgstr "" -#: viewer/viewer_p.cpp:1573 +#: viewer/viewer_p.cpp:1560 #, kde-format msgid "Show attachments as suggested by sender." msgstr "" -#: viewer/viewer_p.cpp:1577 +#: viewer/viewer_p.cpp:1564 #, kde-format msgctxt "View->attachments->" msgid "&Inline" msgstr "" -#: viewer/viewer_p.cpp:1580 +#: viewer/viewer_p.cpp:1567 #, kde-format msgid "Show all attachments inline (if possible)" msgstr "" -#: viewer/viewer_p.cpp:1584 +#: viewer/viewer_p.cpp:1571 #, kde-format msgctxt "View->attachments->" msgid "&Hide" msgstr "" -#: viewer/viewer_p.cpp:1587 +#: viewer/viewer_p.cpp:1574 #, kde-format msgid "Do not show attachments in the message viewer" msgstr "" -#: viewer/viewer_p.cpp:1592 +#: viewer/viewer_p.cpp:1579 #, kde-format msgctxt "View->attachments->" msgid "In Header Only" msgstr "" -#: viewer/viewer_p.cpp:1597 +#: viewer/viewer_p.cpp:1584 #, kde-format msgid "Show Attachments only in the header of the mail" msgstr "" -#: viewer/viewer_p.cpp:1604 +#: viewer/viewer_p.cpp:1591 #, kde-format msgid "&Set Encoding" msgstr "" -#: viewer/viewer_p.cpp:1610 widgets/configurewidget.cpp:58 +#: viewer/viewer_p.cpp:1597 widgets/configurewidget.cpp:58 #: widgets/configurewidget.cpp:105 #, kde-format msgid "Auto" msgstr "" -#: viewer/viewer_p.cpp:1620 +#: viewer/viewer_p.cpp:1607 #, kde-format msgid "Copy Text" msgstr "" -#: viewer/viewer_p.cpp:1628 +#: viewer/viewer_p.cpp:1615 #, kde-format msgid "Select All Text" msgstr "" -#: viewer/viewer_p.cpp:1635 viewer/viewer_p.cpp:2124 +#: viewer/viewer_p.cpp:1622 viewer/viewer_p.cpp:2103 #, kde-format msgid "Copy Link Address" msgstr "" -#: viewer/viewer_p.cpp:1641 +#: viewer/viewer_p.cpp:1628 #, kde-format msgid "Open URL" msgstr "" -#: viewer/viewer_p.cpp:1652 +#: viewer/viewer_p.cpp:1639 #, kde-format msgid "Show Message Structure" msgstr "" -#: viewer/viewer_p.cpp:1658 +#: viewer/viewer_p.cpp:1645 #, kde-format msgid "&View Source" msgstr "" -#: viewer/viewer_p.cpp:1665 +#: viewer/viewer_p.cpp:1652 #, kde-format msgid "&Save message..." msgstr "" -#: viewer/viewer_p.cpp:1671 +#: viewer/viewer_p.cpp:1658 #, kde-format msgid "&Save Display Format" msgstr "" -#: viewer/viewer_p.cpp:1676 +#: viewer/viewer_p.cpp:1663 #, kde-format msgid "&Reset Display Format" msgstr "" -#: viewer/viewer_p.cpp:1684 +#: viewer/viewer_p.cpp:1671 #, kde-format msgid "Scroll Message Up" msgstr "" -#: viewer/viewer_p.cpp:1690 +#: viewer/viewer_p.cpp:1677 #, kde-format msgid "Scroll Message Down" msgstr "" -#: viewer/viewer_p.cpp:1696 +#: viewer/viewer_p.cpp:1683 #, kde-format msgid "Scroll Message Up (More)" msgstr "" -#: viewer/viewer_p.cpp:1702 +#: viewer/viewer_p.cpp:1689 #, kde-format msgid "Scroll Message Down (More)" msgstr "" -#: viewer/viewer_p.cpp:1713 +#: viewer/viewer_p.cpp:1700 #, kde-format msgid "Toggle HTML Display Mode" msgstr "" -#: viewer/viewer_p.cpp:1719 +#: viewer/viewer_p.cpp:1706 #, kde-format msgid "Toggle display mode between HTML and plain text" msgstr "" -#: viewer/viewer_p.cpp:1722 +#: viewer/viewer_p.cpp:1709 #, kde-format msgid "Load external references" msgstr "" -#: viewer/viewer_p.cpp:1731 widgets/mailsourceviewtextbrowserwidget.cpp:154 +#: viewer/viewer_p.cpp:1718 widgets/mailsourceviewtextbrowserwidget.cpp:157 #, kde-format msgid "Speak Text" msgstr "" -#: viewer/viewer_p.cpp:1737 +#: viewer/viewer_p.cpp:1724 #, kde-format msgid "Copy Image Location" msgstr "" -#: viewer/viewer_p.cpp:1746 +#: viewer/viewer_p.cpp:1733 #, kde-format msgid "&Find in Message..." msgstr "" -#: viewer/viewer_p.cpp:1756 +#: viewer/viewer_p.cpp:1743 #, kde-format msgid "Disable Emoticon" msgstr "" -#: viewer/viewer_p.cpp:1781 +#: viewer/viewer_p.cpp:1768 #, kde-format msgid "Save &As..." msgstr "" -#: viewer/viewer_p.cpp:1793 +#: viewer/viewer_p.cpp:1780 #, kde-format msgid "Open With..." msgstr "" -#: viewer/viewer_p.cpp:1801 +#: viewer/viewer_p.cpp:1788 #, kde-format msgid "Save All Attachments..." msgstr "" -#: viewer/viewer_p.cpp:2041 +#: viewer/viewer_p.cpp:2020 #, kde-format msgid "The network is broken." msgstr "" -#: viewer/viewer_p.cpp:2041 viewer/viewer_p.cpp:2045 +#: viewer/viewer_p.cpp:2020 viewer/viewer_p.cpp:2024 #, kde-format msgid "Check Phishing URL" msgstr "" -#: viewer/viewer_p.cpp:2044 +#: viewer/viewer_p.cpp:2023 #, kde-format msgid "The URL %1 is not valid." msgstr "" -#: viewer/viewer_p.cpp:2066 +#: viewer/viewer_p.cpp:2045 #, kde-format msgid "This web site is a malware, do you want to continue to show it?" msgstr "" -#: viewer/viewer_p.cpp:2067 +#: viewer/viewer_p.cpp:2046 #, kde-format msgid "Malware" msgstr "" -#: viewer/viewer_p.cpp:2122 +#: viewer/viewer_p.cpp:2101 #, kde-format msgid "Copy Email Address" msgstr "" -#: viewer/viewer_p.cpp:2207 +#: viewer/viewer_p.cpp:2195 #, kde-format msgid "Message as Plain Text" msgstr "" -#: viewer/viewer_p.cpp:2406 +#: viewer/viewer_p.cpp:2390 #, kde-format msgid "Print Document" msgstr "" -#: viewer/viewer_p.cpp:2492 +#: viewer/viewer_p.cpp:2441 #, kde-format msgid "Attachments:" msgstr "" -#: viewer/viewer_p.cpp:2850 +#: viewer/viewer_p.cpp:2770 #, kde-format msgid "URL copied to clipboard." msgstr "" -#: viewer/viewer_p.cpp:3039 +#: viewer/viewer_p.cpp:2911 #, kde-format msgid "Message loading failed: %1." msgstr "" -#: viewer/viewer_p.cpp:3044 +#: viewer/viewer_p.cpp:2916 #, kde-format msgid "Message not found." msgstr "" @@ -1876,7 +1812,7 @@ msgid "Do not ask again" msgstr "" -#: widgets/htmlstatusbar.cpp:147 +#: widgets/htmlstatusbar.cpp:129 #, kde-format msgctxt "" "'HTML Message' with html linebreaks between each letter and in bold text." @@ -1885,7 +1821,7 @@ ">a
    g
    e" msgstr "" -#: widgets/htmlstatusbar.cpp:151 +#: widgets/htmlstatusbar.cpp:133 #, kde-format msgctxt "'No HTML Message' with html linebreaks between each letter." msgid "" @@ -1893,7 +1829,7 @@ ">e
    s
    s
    a
    g
    e" msgstr "" -#: widgets/htmlstatusbar.cpp:156 +#: widgets/htmlstatusbar.cpp:138 #, kde-format msgctxt "'Plain Message' with html linebreaks between each letter." msgid "" @@ -1901,7 +1837,7 @@ ">s
    a
    g
    e
    " msgstr "" -#: widgets/htmlstatusbar.cpp:160 +#: widgets/htmlstatusbar.cpp:142 #, kde-format msgctxt "'Calendar Message' with html linebreaks between each letter." msgid "" @@ -1909,7 +1845,7 @@ ">M
    e
    s
    s
    a
    g
    e
    " msgstr "" -#: widgets/htmlstatusbar.cpp:174 +#: widgets/htmlstatusbar.cpp:156 #, kde-format msgid "Click to toggle between HTML, plain text and calendar." msgstr "" @@ -1949,7 +1885,21 @@ msgid "HTML code for displaying the message to the user" msgstr "" -#: widgets/openattachmentfolderwidget.cpp:49 +#: widgets/mailtrackingwarningwidget.cpp:33 +#, kde-format +msgid "" +"Some Mail Tracker was found and was blocked.(Details...)" +msgstr "" + +#: widgets/mailtrackingwarningwidget.cpp:60 +#, kde-format +msgid "1 tracker from the company %2 (%3)" +msgid_plural "%1 trackers from the company %2 (%3)" +msgstr[0] "" +msgstr[1] "" + +#: widgets/openattachmentfolderwidget.cpp:48 #, kde-format msgid "Open folder where attachment was saved" msgstr "" diff -Nru kf5-messagelib-17.12.3/po/ast/libmimetreeparser.po kf5-messagelib-18.04.3/po/ast/libmimetreeparser.po --- kf5-messagelib-17.12.3/po/ast/libmimetreeparser.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/ast/libmimetreeparser.po 2018-07-10 00:15:57.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-10-30 03:12+0100\n" +"POT-Creation-Date: 2017-11-15 05:55+0100\n" "PO-Revision-Date: 2016-12-19 03:04+0100\n" "Last-Translator: enolp \n" "Language-Team: Asturian \n" @@ -17,51 +17,51 @@ "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 2.0\n" -#: src/messagepart.cpp:415 +#: src/messagepart.cpp:423 #, kde-format msgctxt "display name for an unnamed attachment" msgid "Unnamed" msgstr "" -#: src/messagepart.cpp:787 src/messagepart.cpp:812 src/messagepart.cpp:1108 +#: src/messagepart.cpp:693 src/messagepart.cpp:718 src/messagepart.cpp:1024 #, kde-format msgid "Wrong Crypto Plug-In." msgstr "" -#: src/messagepart.cpp:871 src/messagepart.cpp:1298 +#: src/messagepart.cpp:777 src/messagepart.cpp:1219 #, kde-format msgid "No appropriate crypto plug-in was found." msgstr "" -#: src/messagepart.cpp:874 +#: src/messagepart.cpp:780 #, kde-format msgctxt "%1 is either 'OpenPGP' or 'S/MIME'" msgid "No %1 plug-in was found." msgstr "" -#: src/messagepart.cpp:878 +#: src/messagepart.cpp:784 #, kde-format msgid "Crypto plug-in \"%1\" cannot verify signatures." msgstr "" -#: src/messagepart.cpp:881 +#: src/messagepart.cpp:787 #, kde-format msgid "" "The message is signed, but the validity of the signature cannot be verified." "
    Reason: %1" msgstr "" -#: src/messagepart.cpp:1300 +#: src/messagepart.cpp:1221 #, kde-format msgid "Crypto plug-in \"%1\" cannot decrypt messages." msgstr "" -#: src/messagepart.cpp:1303 +#: src/messagepart.cpp:1224 #, kde-format msgid "Crypto plug-in \"%1\" could not decrypt the data." msgstr "" -#: src/messagepart.cpp:1305 +#: src/messagepart.cpp:1226 #, kde-format msgid "Error: %1" msgstr "Fallu: %1" diff -Nru kf5-messagelib-17.12.3/po/ast/libtemplateparser.po kf5-messagelib-18.04.3/po/ast/libtemplateparser.po --- kf5-messagelib-17.12.3/po/ast/libtemplateparser.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/ast/libtemplateparser.po 2018-07-10 00:15:57.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-11-10 03:16+0100\n" +"POT-Creation-Date: 2018-03-14 03:31+0100\n" "PO-Revision-Date: 2016-12-19 02:55+0100\n" "Last-Translator: enolp \n" "Language-Team: Asturian \n" @@ -89,23 +89,23 @@ msgid "Remove Template?" msgstr "" -#: customtemplatesmenu.cpp:80 +#: customtemplatesmenu.cpp:66 #, kde-format msgid "With Custom Template" msgstr "" -#: customtemplatesmenu.cpp:84 +#: customtemplatesmenu.cpp:70 #, kde-format msgid "Reply With Custom Template" msgstr "" -#: customtemplatesmenu.cpp:88 +#: customtemplatesmenu.cpp:74 #, kde-format msgid "Reply to All With Custom Template" msgstr "" -#: customtemplatesmenu.cpp:225 customtemplatesmenu.cpp:231 -#: customtemplatesmenu.cpp:237 +#: customtemplatesmenu.cpp:189 customtemplatesmenu.cpp:195 +#: customtemplatesmenu.cpp:201 #, kde-format msgid "(no custom templates)" msgstr "" @@ -237,291 +237,230 @@ msgid "Quote characters" msgstr "" -#: templateparserjob.cpp:389 +#: templateparserjob.cpp:396 #, kde-format msgctxt "@info" msgid "Cannot insert content from file %1: %2" msgstr "" -#: templateparserjob.cpp:567 +#: templateparserjob.cpp:574 #, kde-format msgctxt "@item:intext email To" msgid "To:" msgstr "" -#: templateparserjob.cpp:578 +#: templateparserjob.cpp:585 #, kde-format msgctxt "@item:intext email CC" msgid "CC:" msgstr "" -#: templateparserjob.cpp:1242 +#: templateparserjob.cpp:1249 #, kde-format msgctxt "@item:intext" msgid "Attachment %1" msgstr "" -#: templateparserjob.cpp:1452 +#: templateparserjob.cpp:1459 #, kde-kuit-format msgctxt "@info" msgid "Pipe command %1 failed." msgstr "" -#: templatesconfiguration.cpp:67 -#, kde-format -msgid "" -"

    Here you can create and manage templates to use when composing new " -"messages, replies or forwarded messages.

    The message templates support " -"substitution commands, either simply type them or select them from the " -"Insert command menu.

    " -msgstr "" - -#: templatesconfiguration.cpp:75 -#, kde-format -msgid "" -"

    Templates specified here are folder-specific. They override both global " -"templates and per-identity templates.

    " -msgstr "" - -#: templatesconfiguration.cpp:80 -#, kde-format -msgid "" -"

    Templates specified here are identity-specific. They override global " -"templates, but can be overridden by per-folder templates if they are " -"specified.

    " -msgstr "" - -#: templatesconfiguration.cpp:85 -#, kde-format -msgid "" -"

    These are global (default) templates. They can be overridden by per-" -"identity templates or per-folder templates if they are specified.

    " -msgstr "" - -#: templatesconfiguration.cpp:127 -#, kde-format -msgid "Do you want to reset current template or all templates to default?" -msgstr "" - -#: templatesconfiguration.cpp:128 -#, kde-format -msgid "Reset to default" -msgstr "" - -#: templatesconfiguration.cpp:129 -#, kde-format -msgid "Reset Current Template" -msgstr "" - -#: templatesconfiguration.cpp:130 -#, kde-format -msgid "Reset All Templates" -msgstr "" - -#: templatesconfiguration.cpp:389 -#, kde-format -msgid "" -"Use of \"Reply using plain text\" and \"Reply using HTML text\" in pairs is " -"not correct. Use only one of the aforementioned commands with \" Reply as " -"Quoted Message command\" as per your need\n" -"(a)Reply using plain text for quotes to be strictly in plain text\n" -"(b)Reply using HTML text for quotes being in HTML format if present" -msgstr "" - -#: templatesinsertcommand.cpp:48 +#: templatescommandmenu.cpp:49 #, kde-format msgid "Quoted Message Text" msgstr "" -#: templatesinsertcommand.cpp:53 +#: templatescommandmenu.cpp:54 #, kde-format msgid "Message Text as Is" msgstr "" -#: templatesinsertcommand.cpp:58 +#: templatescommandmenu.cpp:59 #, kde-format msgid "Message Id" msgstr "" -#: templatesinsertcommand.cpp:63 templatesinsertcommand.cpp:197 +#: templatescommandmenu.cpp:64 templatescommandmenu.cpp:198 #, kde-format msgid "Date" msgstr "" -#: templatesinsertcommand.cpp:68 templatesinsertcommand.cpp:202 +#: templatescommandmenu.cpp:69 templatescommandmenu.cpp:203 #, kde-format msgid "Date in Short Format" msgstr "" -#: templatesinsertcommand.cpp:73 templatesinsertcommand.cpp:207 +#: templatescommandmenu.cpp:74 templatescommandmenu.cpp:208 #, kde-format msgid "Date in C Locale" msgstr "" -#: templatesinsertcommand.cpp:78 templatesinsertcommand.cpp:212 +#: templatescommandmenu.cpp:79 templatescommandmenu.cpp:213 #, kde-format msgid "Day of Week" msgstr "" -#: templatesinsertcommand.cpp:83 templatesinsertcommand.cpp:217 +#: templatescommandmenu.cpp:84 templatescommandmenu.cpp:218 #, kde-format msgid "Time" msgstr "" -#: templatesinsertcommand.cpp:88 templatesinsertcommand.cpp:222 +#: templatescommandmenu.cpp:89 templatescommandmenu.cpp:223 #, kde-format msgid "Time in Long Format" msgstr "" -#: templatesinsertcommand.cpp:93 templatesinsertcommand.cpp:227 +#: templatescommandmenu.cpp:94 templatescommandmenu.cpp:228 #, kde-format msgid "Time in C Locale" msgstr "" -#: templatesinsertcommand.cpp:98 templatesinsertcommand.cpp:231 +#: templatescommandmenu.cpp:99 templatescommandmenu.cpp:232 #, kde-format msgid "To Field Address" msgstr "" -#: templatesinsertcommand.cpp:103 templatesinsertcommand.cpp:236 +#: templatescommandmenu.cpp:104 templatescommandmenu.cpp:237 #, kde-format msgid "To Field Name" msgstr "" -#: templatesinsertcommand.cpp:108 templatesinsertcommand.cpp:241 +#: templatescommandmenu.cpp:109 templatescommandmenu.cpp:242 #, kde-format msgid "To Field First Name" msgstr "" -#: templatesinsertcommand.cpp:113 templatesinsertcommand.cpp:246 +#: templatescommandmenu.cpp:114 templatescommandmenu.cpp:247 #, kde-format msgid "To Field Last Name" msgstr "" -#: templatesinsertcommand.cpp:118 templatesinsertcommand.cpp:251 +#: templatescommandmenu.cpp:119 templatescommandmenu.cpp:252 #, kde-format msgid "CC Field Address" msgstr "" -#: templatesinsertcommand.cpp:123 templatesinsertcommand.cpp:256 +#: templatescommandmenu.cpp:124 templatescommandmenu.cpp:257 #, kde-format msgid "CC Field Name" msgstr "" -#: templatesinsertcommand.cpp:128 templatesinsertcommand.cpp:261 +#: templatescommandmenu.cpp:129 templatescommandmenu.cpp:262 #, kde-format msgid "CC Field First Name" msgstr "" -#: templatesinsertcommand.cpp:133 templatesinsertcommand.cpp:266 +#: templatescommandmenu.cpp:134 templatescommandmenu.cpp:267 #, kde-format msgid "CC Field Last Name" msgstr "" -#: templatesinsertcommand.cpp:138 templatesinsertcommand.cpp:271 +#: templatescommandmenu.cpp:139 templatescommandmenu.cpp:272 #, kde-format msgid "From Field Address" msgstr "" -#: templatesinsertcommand.cpp:143 +#: templatescommandmenu.cpp:144 #, kde-format msgid "From Field Name" msgstr "" -#: templatesinsertcommand.cpp:148 templatesinsertcommand.cpp:281 +#: templatescommandmenu.cpp:149 templatescommandmenu.cpp:282 #, kde-format msgid "From Field First Name" msgstr "" -#: templatesinsertcommand.cpp:153 templatesinsertcommand.cpp:286 +#: templatescommandmenu.cpp:154 templatescommandmenu.cpp:287 #, kde-format msgid "From Field Last Name" msgstr "" -#: templatesinsertcommand.cpp:158 +#: templatescommandmenu.cpp:159 #, kde-format msgid "Addresses of all recipients" msgstr "" -#: templatesinsertcommand.cpp:163 +#: templatescommandmenu.cpp:164 #, kde-format msgctxt "Template value for subject of the message" msgid "Subject" msgstr "" -#: templatesinsertcommand.cpp:168 +#: templatescommandmenu.cpp:169 #, kde-format msgid "Quoted Headers" msgstr "" -#: templatesinsertcommand.cpp:173 +#: templatescommandmenu.cpp:174 #, kde-format msgid "Headers as Is" msgstr "" -#: templatesinsertcommand.cpp:178 templatesinsertcommand.cpp:296 +#: templatescommandmenu.cpp:179 templatescommandmenu.cpp:297 #, kde-format msgid "Header Content" msgstr "" -#: templatesinsertcommand.cpp:183 +#: templatescommandmenu.cpp:184 #, kde-format msgid "Reply as Quoted Plain Text" msgstr "" -#: templatesinsertcommand.cpp:188 +#: templatescommandmenu.cpp:189 #, kde-format msgid "Reply as Quoted HTML Text" msgstr "" -#: templatesinsertcommand.cpp:276 +#: templatescommandmenu.cpp:277 #, kde-format msgid "From field Name" msgstr "" -#: templatesinsertcommand.cpp:291 +#: templatescommandmenu.cpp:292 #, kde-format msgctxt "Template subject command." msgid "Subject" msgstr "" -#: templatesinsertcommand.cpp:304 +#: templatescommandmenu.cpp:305 #, kde-format msgid "Pipe Original Message Body and Insert Result as Quoted Text" msgstr "" -#: templatesinsertcommand.cpp:309 +#: templatescommandmenu.cpp:310 #, kde-format msgid "Pipe Original Message Body and Insert Result as Is" msgstr "" -#: templatesinsertcommand.cpp:314 +#: templatescommandmenu.cpp:315 #, kde-format msgid "Pipe Original Message with Headers and Insert Result as Is" msgstr "" -#: templatesinsertcommand.cpp:319 +#: templatescommandmenu.cpp:320 #, kde-format msgid "Pipe Current Message Body and Insert Result as Is" msgstr "" -#: templatesinsertcommand.cpp:324 +#: templatescommandmenu.cpp:325 #, kde-format msgid "Pipe Current Message Body and Replace with Result" msgstr "" -#: templatesinsertcommand.cpp:334 +#: templatescommandmenu.cpp:335 #, kde-format msgctxt "Inserts user signature, also known as footer, into message" msgid "Signature" msgstr "" -#: templatesinsertcommand.cpp:339 +#: templatescommandmenu.cpp:340 #, kde-format msgid "Insert File Content" msgstr "" -#: templatesinsertcommand.cpp:346 +#: templatescommandmenu.cpp:347 #, kde-format msgctxt "" "All characters, up to and including the next newline, are discarded without " @@ -529,95 +468,162 @@ msgid "Discard to Next Line" msgstr "" -#: templatesinsertcommand.cpp:351 +#: templatescommandmenu.cpp:352 #, kde-format msgid "Template Comment" msgstr "" -#: templatesinsertcommand.cpp:356 +#: templatescommandmenu.cpp:357 #, kde-format msgid "No Operation" msgstr "" -#: templatesinsertcommand.cpp:361 +#: templatescommandmenu.cpp:362 #, kde-format msgid "Clear Generated Message" msgstr "" -#: templatesinsertcommand.cpp:366 +#: templatescommandmenu.cpp:366 +#, kde-format +msgid "Cursor position" +msgstr "" + +#: templatescommandmenu.cpp:371 +#, kde-format +msgid "Blank text" +msgstr "" + +#: templatescommandmenu.cpp:376 +#, kde-format +msgid "Dictionary Language" +msgstr "" + +#: templatescommandmenu.cpp:380 +#, kde-format +msgid "Language" +msgstr "" + +#: templatescommandmenu.cpp:390 #, kde-format msgid "Turn Debug On" msgstr "" -#: templatesinsertcommand.cpp:371 +#: templatescommandmenu.cpp:395 #, kde-format msgid "Turn Debug Off" msgstr "" -#: templatesinsertcommand.cpp:376 +#: templatescommandmenu.cpp:432 #, kde-format -msgid "Cursor position" +msgid "Insert Command" msgstr "" -#: templatesinsertcommand.cpp:381 +#: templatescommandmenu.cpp:445 #, kde-format -msgid "Blank text" +msgid "Original Message" msgstr "" -#: templatesinsertcommand.cpp:386 +#: templatescommandmenu.cpp:459 #, kde-format -msgid "Dictionary Language" +msgid "Current Message" msgstr "" -#: templatesinsertcommand.cpp:390 +#: templatescommandmenu.cpp:472 #, kde-format -msgid "Language" +msgid "Process with External Programs" msgstr "" -#: templatesinsertcommand.cpp:414 +#: templatescommandmenu.cpp:485 #, kde-format -msgid "&Insert Command" +msgctxt "Miscellaneous template commands menu" +msgid "Miscellaneous" msgstr "" -#: templatesinsertcommand.cpp:422 +#: templatescommandmenu.cpp:499 #, kde-format -msgid "Insert Command" +msgctxt "Debug template commands menu" +msgid "Debug" msgstr "" -#: templatesinsertcommand.cpp:425 +#: templatesconfiguration.cpp:67 #, kde-format -msgctxt "@info:tooltip" -msgid "Select a command to insert into the template" +msgid "" +"

    Here you can create and manage templates to use when composing new " +"messages, replies or forwarded messages.

    The message templates support " +"substitution commands, either simply type them or select them from the " +"Insert command menu.

    " msgstr "" -#: templatesinsertcommand.cpp:428 +#: templatesconfiguration.cpp:75 #, kde-format -msgctxt "@info:whatsthis" msgid "" -"Traverse this menu to find a command to insert into the current template " -"being edited. The command will be inserted at the cursor location, so you " -"want to move your cursor to the desired insertion point first." +"

    Templates specified here are folder-specific. They override both global " +"templates and per-identity templates.

    " msgstr "" -#: templatesinsertcommand.cpp:433 +#: templatesconfiguration.cpp:80 #, kde-format -msgid "Original Message" +msgid "" +"

    Templates specified here are identity-specific. They override global " +"templates, but can be overridden by per-folder templates if they are " +"specified.

    " msgstr "" -#: templatesinsertcommand.cpp:445 +#: templatesconfiguration.cpp:85 #, kde-format -msgid "Current Message" +msgid "" +"

    These are global (default) templates. They can be overridden by per-" +"identity templates or per-folder templates if they are specified.

    " msgstr "" -#: templatesinsertcommand.cpp:456 +#: templatesconfiguration.cpp:127 #, kde-format -msgid "Process with External Programs" +msgid "Do you want to reset current template or all templates to default?" msgstr "" -#: templatesinsertcommand.cpp:467 +#: templatesconfiguration.cpp:128 #, kde-format -msgctxt "Miscellaneous template commands menu" -msgid "Miscellaneous" +msgid "Reset to default" +msgstr "" + +#: templatesconfiguration.cpp:129 +#, kde-format +msgid "Reset Current Template" +msgstr "" + +#: templatesconfiguration.cpp:130 +#, kde-format +msgid "Reset All Templates" +msgstr "" + +#: templatesconfiguration.cpp:389 +#, kde-format +msgid "" +"Use of \"Reply using plain text\" and \"Reply using HTML text\" in pairs is " +"not correct. Use only one of the aforementioned commands with \" Reply as " +"Quoted Message command\" as per your need\n" +"(a)Reply using plain text for quotes to be strictly in plain text\n" +"(b)Reply using HTML text for quotes being in HTML format if present" +msgstr "" + +#: templatesinsertcommandpushbutton.cpp:35 +#, kde-format +msgid "&Insert Command" +msgstr "" + +#: templatesinsertcommandpushbutton.cpp:46 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a command to insert into the template" +msgstr "" + +#: templatesinsertcommandpushbutton.cpp:49 +#, kde-format +msgctxt "@info:whatsthis" +msgid "" +"Traverse this menu to find a command to insert into the current template " +"being edited. The command will be inserted at the cursor location, so you " +"want to move your cursor to the desired insertion point first." msgstr "" #. i18n: ectx: property (toolTip), widget (KLineEdit, mName) @@ -713,28 +719,28 @@ msgstr "" #. i18n: ectx: property (text), widget (QLabel, mToLabel) -#: ui/customtemplates_base.ui:183 +#: ui/customtemplates_base.ui:195 #, kde-format msgctxt "@label:textbox Recipient mail address" msgid "To:" msgstr "" #. i18n: ectx: property (text), widget (QLabel, mCCLabel) -#: ui/customtemplates_base.ui:190 +#: ui/customtemplates_base.ui:202 #, kde-format msgctxt "@label" msgid "CC:" msgstr "" #. i18n: ectx: property (toolTip), widget (TemplateParser::TemplateParserEmailAddressRequesterInterfaceWidget, mToEdit) -#: ui/customtemplates_base.ui:207 +#: ui/customtemplates_base.ui:219 #, kde-format msgctxt "@info:tooltip" msgid "Additional recipients of the message" msgstr "" #. i18n: ectx: property (whatsThis), widget (TemplateParser::TemplateParserEmailAddressRequesterInterfaceWidget, mToEdit) -#: ui/customtemplates_base.ui:210 +#: ui/customtemplates_base.ui:222 #, kde-format msgctxt "@info:whatsthis" msgid "" @@ -743,14 +749,14 @@ msgstr "" #. i18n: ectx: property (toolTip), widget (TemplateParser::TemplateParserEmailAddressRequesterInterfaceWidget, mCCEdit) -#: ui/customtemplates_base.ui:223 +#: ui/customtemplates_base.ui:235 #, kde-format msgctxt "@info:tooltip" msgid "Additional recipients who get a copy of the message" msgstr "" #. i18n: ectx: property (whatsThis), widget (TemplateParser::TemplateParserEmailAddressRequesterInterfaceWidget, mCCEdit) -#: ui/customtemplates_base.ui:226 +#: ui/customtemplates_base.ui:238 #, kde-format msgctxt "@info:whatsthis" msgid "" @@ -759,56 +765,56 @@ msgstr "" #. i18n: ectx: property (toolTip), widget (TemplateParser::TemplatesTextEdit, mEdit) -#: ui/customtemplates_base.ui:243 +#: ui/customtemplates_base.ui:255 #, kde-format msgctxt "@info:tooltip" msgid "The custom template" msgstr "" #. i18n: ectx: property (whatsThis), widget (TemplateParser::TemplatesTextEdit, mEdit) -#: ui/customtemplates_base.ui:246 +#: ui/customtemplates_base.ui:258 #, kde-format msgctxt "@info:whatsthis" msgid "This area contains the associated custom template." msgstr "" #. i18n: ectx: property (text), item, widget (KComboBox, mType) -#: ui/customtemplates_base.ui:271 +#: ui/customtemplates_base.ui:283 #, kde-format msgctxt "@item:inlistbox Universal custom template type." msgid "Universal" msgstr "" #. i18n: ectx: property (text), item, widget (KComboBox, mType) -#: ui/customtemplates_base.ui:276 +#: ui/customtemplates_base.ui:288 #, kde-format msgctxt "@item:inlistbox Custom template type for message replies" msgid "Reply" msgstr "" #. i18n: ectx: property (text), item, widget (KComboBox, mType) -#: ui/customtemplates_base.ui:281 +#: ui/customtemplates_base.ui:293 #, kde-format msgctxt "@item:inlistbox Custom template type for reply-to-all messages" msgid "Reply to All" msgstr "" #. i18n: ectx: property (text), item, widget (KComboBox, mType) -#: ui/customtemplates_base.ui:286 +#: ui/customtemplates_base.ui:298 #, kde-format msgctxt "@item:inlistbox Custom template type for messsage forwards" msgid "Forward" msgstr "" #. i18n: ectx: property (text), widget (QLabel, textLabel1_2) -#: ui/customtemplates_base.ui:294 +#: ui/customtemplates_base.ui:306 #, kde-format msgctxt "@label" msgid "Shortc&ut:" msgstr "" #. i18n: ectx: property (text), widget (QLabel, textLabel1) -#: ui/customtemplates_base.ui:313 +#: ui/customtemplates_base.ui:325 #, kde-format msgctxt "@label" msgid "&Template type:" diff -Nru kf5-messagelib-17.12.3/po/bg/libmessagelist.po kf5-messagelib-18.04.3/po/bg/libmessagelist.po --- kf5-messagelib-17.12.3/po/bg/libmessagelist.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/bg/libmessagelist.po 2018-07-10 00:15:57.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: kmail\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-10-13 03:28+0200\n" +"POT-Creation-Date: 2018-05-04 06:21+0200\n" "PO-Revision-Date: 2008-08-07 11:06+0000\n" "Last-Translator: Zlatko Popov \n" "Language-Team: Bulgarian \n" @@ -18,132 +18,132 @@ "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: core/aggregation.cpp:198 +#: core/aggregation.cpp:193 #, fuzzy, kde-format #| msgid "None" msgctxt "No grouping of messages" msgid "None" msgstr "Без" -#: core/aggregation.cpp:201 +#: core/aggregation.cpp:196 #, kde-format msgid "By Exact Date (of Thread Leaders)" msgstr "" -#: core/aggregation.cpp:204 +#: core/aggregation.cpp:199 #, kde-format msgid "By Smart Date Ranges (of Thread Leaders)" msgstr "" -#: core/aggregation.cpp:207 core/sortorder.cpp:89 +#: core/aggregation.cpp:202 core/sortorder.cpp:89 #, fuzzy, kde-format #| msgid "Sender/Receiver" msgid "By Smart Sender/Receiver" msgstr "Подател/Получател" -#: core/aggregation.cpp:210 core/sortorder.cpp:87 +#: core/aggregation.cpp:205 core/sortorder.cpp:87 #, fuzzy, kde-format #| msgid "Sender" msgid "By Sender" msgstr "Подател" -#: core/aggregation.cpp:213 core/sortorder.cpp:88 +#: core/aggregation.cpp:208 core/sortorder.cpp:88 #, fuzzy, kde-format #| msgid "Receiver" msgid "By Receiver" msgstr "Получател" -#: core/aggregation.cpp:223 +#: core/aggregation.cpp:218 #, fuzzy, kde-format #| msgctxt "View->" #| msgid "&Expand Thread" msgid "Never Expand Groups" msgstr "&Разгъване на нишка" -#: core/aggregation.cpp:225 +#: core/aggregation.cpp:220 #, fuzzy, kde-format #| msgid "Expand the current thread" msgid "Expand Recent Groups" msgstr "Разгъване на текущата нишка" -#: core/aggregation.cpp:227 +#: core/aggregation.cpp:222 #, fuzzy, kde-format #| msgctxt "View->" #| msgid "&Expand Thread" msgid "Always Expand Groups" msgstr "&Разгъване на нишка" -#: core/aggregation.cpp:234 +#: core/aggregation.cpp:229 #, fuzzy, kde-format #| msgid "None" msgctxt "No threading of messages" msgid "None" msgstr "Без" -#: core/aggregation.cpp:237 +#: core/aggregation.cpp:232 #, kde-format msgid "Perfect Only" msgstr "" -#: core/aggregation.cpp:240 +#: core/aggregation.cpp:235 #, kde-format msgid "Perfect and by References" msgstr "" -#: core/aggregation.cpp:243 +#: core/aggregation.cpp:238 #, kde-format msgid "Perfect, by References and by Subject" msgstr "" -#: core/aggregation.cpp:253 +#: core/aggregation.cpp:248 #, fuzzy, kde-format #| msgid "Todo Message" msgid "Topmost Message" msgstr "Съобщения за задача" -#: core/aggregation.cpp:257 +#: core/aggregation.cpp:252 #, fuzzy, kde-format #| msgid "Redirect Message" msgid "Most Recent Message" msgstr "Пренасочване на съобщение" -#: core/aggregation.cpp:268 +#: core/aggregation.cpp:263 #, fuzzy, kde-format #| msgctxt "View->" #| msgid "&Expand Thread" msgid "Never Expand Threads" msgstr "&Разгъване на нишка" -#: core/aggregation.cpp:271 +#: core/aggregation.cpp:266 #, fuzzy, kde-format #| msgid "Message List - Unread Messages" msgid "Expand Threads With Unread Messages" msgstr "Списък със съобщения - непрочетени съобщения" -#: core/aggregation.cpp:274 +#: core/aggregation.cpp:269 #, fuzzy, kde-format #| msgid "Message List - Unread Messages" msgid "Expand Threads With Unread or Important Messages" msgstr "Списък със съобщения - непрочетени съобщения" -#: core/aggregation.cpp:277 +#: core/aggregation.cpp:272 #, fuzzy, kde-format #| msgctxt "View->" #| msgid "&Expand Thread" msgid "Always Expand Threads" msgstr "&Разгъване на нишка" -#: core/aggregation.cpp:284 +#: core/aggregation.cpp:279 #, kde-format msgid "Favor Interactivity" msgstr "" -#: core/aggregation.cpp:287 +#: core/aggregation.cpp:282 #, kde-format msgid "Favor Speed" msgstr "" -#: core/aggregation.cpp:290 +#: core/aggregation.cpp:285 #, kde-format msgid "Batch Job (No Interactivity)" msgstr "" @@ -495,7 +495,7 @@ msgid "A smart multiline and multi item theme with a clickable status column" msgstr "" -#: core/manager.cpp:780 core/view.cpp:2372 core/view.cpp:2375 +#: core/manager.cpp:780 core/view.cpp:2368 core/view.cpp:2371 #, kde-format msgid "Status" msgstr "Състояние" @@ -948,58 +948,58 @@ msgid "Styled Joined Rectangles" msgstr "" -#: core/view.cpp:744 +#: core/view.cpp:740 #, kde-format msgid "Adjust Column Sizes" msgstr "" -#: core/view.cpp:748 +#: core/view.cpp:744 #, fuzzy, kde-format #| msgid "Show Details" msgid "Show Default Columns" msgstr "Показване на подробности" -#: core/view.cpp:753 +#: core/view.cpp:749 #, kde-format msgid "Display Tooltips" msgstr "" -#: core/view.cpp:2353 core/view.cpp:2357 core/widgets/searchlinestatus.cpp:294 +#: core/view.cpp:2349 core/view.cpp:2353 core/widgets/searchlinestatus.cpp:310 #, fuzzy, kde-format #| msgid "&From" msgid "From" msgstr "&От" -#: core/view.cpp:2354 core/view.cpp:2358 +#: core/view.cpp:2350 core/view.cpp:2354 #, fuzzy, kde-format #| msgid "To" msgctxt "Receiver of the email" msgid "To" msgstr "До" -#: core/view.cpp:2355 core/view.cpp:2359 +#: core/view.cpp:2351 core/view.cpp:2355 #, kde-format msgid "Date" msgstr "Дата" -#: core/view.cpp:2373 core/view.cpp:2376 +#: core/view.cpp:2369 core/view.cpp:2372 #, kde-format msgid "Size" msgstr "Размер" -#: core/view.cpp:2381 core/view.cpp:2383 +#: core/view.cpp:2377 core/view.cpp:2379 #, fuzzy, kde-format #| msgid "Notes" msgid "Note" msgstr "Бележки" -#: core/view.cpp:2390 core/view.cpp:2392 +#: core/view.cpp:2386 core/view.cpp:2388 #, fuzzy, kde-format #| msgid "Previous" msgid "Preview" msgstr "Предишно" -#: core/view.cpp:2410 +#: core/view.cpp:2406 #, fuzzy, kde-format #| msgid "Bad signature" msgid "%1 reply" @@ -1007,14 +1007,14 @@ msgstr[0] "Лош подпис" msgstr[1] "Лош подпис" -#: core/view.cpp:2414 +#: core/view.cpp:2410 #, kde-format msgid "%1 message in subtree (%2 unread)" msgid_plural "%1 messages in subtree (%2 unread)" msgstr[0] "" msgstr[1] "" -#: core/view.cpp:2455 +#: core/view.cpp:2451 #, fuzzy, kde-format #| msgid "Threads default to o&pen" msgctxt "" @@ -1022,27 +1022,27 @@ msgid "Threads started on %1" msgstr "Отворени нишки по подразбира&не" -#: core/view.cpp:2461 +#: core/view.cpp:2457 #, fuzzy, kde-format #| msgid "Threads default to o&pen" msgctxt "@info:tooltip Formats to something like 'Threads started Yesterday'" msgid "Threads started %1" msgstr "Отворени нишки по подразбира&не" -#: core/view.cpp:2467 +#: core/view.cpp:2463 #, fuzzy, kde-format #| msgid "&Threaded message list" msgid "Threads with messages dated %1" msgstr "&Списък на съобщенията в нишката" -#: core/view.cpp:2478 +#: core/view.cpp:2474 #, fuzzy, kde-format #| msgid "Message was signed by %1." msgctxt "@info:tooltip Formats to something like 'Messages sent on 2008-12-21'" msgid "Messages sent on %1" msgstr "Съобщението е подписано от %1." -#: core/view.cpp:2484 +#: core/view.cpp:2480 #, fuzzy, kde-format #| msgid "Message was signed by %1." msgctxt "" @@ -1050,93 +1050,93 @@ msgid "Messages received on %1" msgstr "Съобщението е подписано от %1." -#: core/view.cpp:2492 +#: core/view.cpp:2488 #, fuzzy, kde-format #| msgid "Message Tag %1" msgctxt "@info:tooltip Formats to something like 'Messages sent Yesterday'" msgid "Messages sent %1" msgstr "Таг %1" -#: core/view.cpp:2498 +#: core/view.cpp:2494 #, fuzzy, kde-format #| msgid "Message was signed by %1." msgctxt "@info:tooltip Formats to something like 'Messages received Yesterday'" msgid "Messages received %1" msgstr "Съобщението е подписано от %1." -#: core/view.cpp:2509 +#: core/view.cpp:2505 #, fuzzy, kde-format #| msgid "Threads default to o&pen" msgid "Threads started within %1" msgstr "Отворени нишки по подразбира&не" -#: core/view.cpp:2512 +#: core/view.cpp:2508 #, fuzzy, kde-format #| msgid "&Threaded message list" msgid "Threads containing messages with dates within %1" msgstr "&Списък на съобщенията в нишката" -#: core/view.cpp:2520 +#: core/view.cpp:2516 #, fuzzy, kde-format #| msgid "Message was signed with key %1." msgid "Messages sent within %1" msgstr "Съобщението е подписано с ключ %1." -#: core/view.cpp:2522 +#: core/view.cpp:2518 #, fuzzy, kde-format #| msgid "Message was signed with key %1." msgid "Messages received within %1" msgstr "Съобщението е подписано с ключ %1." -#: core/view.cpp:2531 +#: core/view.cpp:2527 #, fuzzy, kde-format #| msgid "Threads default to o&pen" msgid "Threads started by %1" msgstr "Отворени нишки по подразбира&не" -#: core/view.cpp:2534 +#: core/view.cpp:2530 #, fuzzy, kde-format #| msgid "&Threaded message list" msgid "Threads with most recent message by %1" msgstr "&Списък на съобщенията в нишката" -#: core/view.cpp:2543 core/view.cpp:2567 +#: core/view.cpp:2539 core/view.cpp:2563 #, fuzzy, kde-format #| msgid "Message was signed by %1." msgid "Messages sent to %1" msgstr "Съобщението е подписано от %1." -#: core/view.cpp:2545 +#: core/view.cpp:2541 #, fuzzy, kde-format #| msgid "Message was signed by %1." msgid "Messages sent by %1" msgstr "Съобщението е подписано от %1." -#: core/view.cpp:2548 +#: core/view.cpp:2544 #, fuzzy, kde-format #| msgid "Message was signed by %1." msgid "Messages received from %1" msgstr "Съобщението е подписано от %1." -#: core/view.cpp:2556 +#: core/view.cpp:2552 #, fuzzy, kde-format #| msgid "Threads default to o&pen" msgid "Threads directed to %1" msgstr "Отворени нишки по подразбира&не" -#: core/view.cpp:2559 +#: core/view.cpp:2555 #, fuzzy, kde-format #| msgid "&Threaded message list" msgid "Threads with most recent message directed to %1" msgstr "&Списък на съобщенията в нишката" -#: core/view.cpp:2569 +#: core/view.cpp:2565 #, fuzzy, kde-format #| msgid "Message was signed by %1." msgid "Messages received by %1" msgstr "Съобщението е подписано от %1." -#: core/view.cpp:2595 +#: core/view.cpp:2591 #, fuzzy, kde-format #| msgid "Bad signature" msgid "%1 thread" @@ -1144,61 +1144,61 @@ msgstr[0] "Лош подпис" msgstr[1] "Лош подпис" -#: core/view.cpp:2600 +#: core/view.cpp:2596 #, kde-format msgid "%1 message (%2 unread)" msgid_plural "%1 messages (%2 unread)" msgstr[0] "" msgstr[1] "" -#: core/widgetbase.cpp:399 messagelistutil.cpp:129 +#: core/widgetbase.cpp:400 messagelistutil.cpp:129 #, fuzzy, kde-format #| msgid "Time" msgid "Theme" msgstr "Време" -#: core/widgetbase.cpp:421 core/widgetbase.cpp:514 +#: core/widgetbase.cpp:422 core/widgetbase.cpp:515 #: utils/aggregationconfigbutton.cpp:48 utils/themeconfigbutton.cpp:64 #, fuzzy, kde-format #| msgid "Configure KMail..." msgid "Configure..." msgstr "Настройване на KMail..." -#: core/widgetbase.cpp:492 messagelistutil.cpp:124 +#: core/widgetbase.cpp:493 messagelistutil.cpp:124 #, kde-format msgid "Aggregation" msgstr "" -#: core/widgetbase.cpp:577 +#: core/widgetbase.cpp:578 #, fuzzy, kde-format #| msgid "Message Part Properties" msgid "Message Sort Order" msgstr "Информация за част от съобщение" -#: core/widgetbase.cpp:600 +#: core/widgetbase.cpp:601 #, fuzzy, kde-format #| msgid "Message tag &icon:" msgid "Message Sort Direction" msgstr "&Икона на тага:" -#: core/widgetbase.cpp:618 +#: core/widgetbase.cpp:619 #, fuzzy, kde-format #| msgid "Delete Folder" msgid "Group Sort Order" msgstr "Изтриване на папка" -#: core/widgetbase.cpp:637 +#: core/widgetbase.cpp:638 #, fuzzy, kde-format #| msgid "Message tag &icon:" msgid "Group Sort Direction" msgstr "&Икона на тага:" -#: core/widgetbase.cpp:653 +#: core/widgetbase.cpp:654 #, kde-format msgid "Folder Always Uses This Sort Order" msgstr "" -#: core/widgets/quicksearchline.cpp:53 +#: core/widgets/quicksearchline.cpp:54 #, fuzzy, kde-format #| msgid "Search" msgctxt "Search for messages." @@ -1223,19 +1223,19 @@ "excluded from indexing completely. The results below may be incomplete." msgstr "" -#: core/widgets/searchlinestatus.cpp:76 +#: core/widgets/searchlinestatus.cpp:92 #, kde-format msgctxt "@info:tooltip" msgid "Prevent the quick search field from being cleared when changing folders" msgstr "" -#: core/widgets/searchlinestatus.cpp:79 +#: core/widgets/searchlinestatus.cpp:95 #, kde-format msgctxt "@info:tooltip" msgid "Clear the quick search field when changing folders" msgstr "" -#: core/widgets/searchlinestatus.cpp:100 +#: core/widgets/searchlinestatus.cpp:116 #, kde-format msgctxt "@info:whatsthis" msgid "" @@ -1243,19 +1243,19 @@ "to other folders or when narrowing the search by message status." msgstr "" -#: core/widgets/searchlinestatus.cpp:111 +#: core/widgets/searchlinestatus.cpp:127 #, fuzzy, kde-format #| msgid "Filter Rules" msgid "Filter Mails by Status" msgstr "Правила за филтриране" -#: core/widgets/searchlinestatus.cpp:186 +#: core/widgets/searchlinestatus.cpp:202 #, fuzzy, kde-format #| msgid "&Create Filter" msgid "Clear Filter" msgstr "С&ъздаване на филтър" -#: core/widgets/searchlinestatus.cpp:191 +#: core/widgets/searchlinestatus.cpp:207 #, fuzzy, kde-format #| msgctxt "msg status" #| msgid "Unread" @@ -1263,7 +1263,7 @@ msgid "Unread" msgstr "Непрочетено" -#: core/widgets/searchlinestatus.cpp:195 +#: core/widgets/searchlinestatus.cpp:211 #, fuzzy, kde-format #| msgctxt "msg status" #| msgid "Replied" @@ -1271,7 +1271,7 @@ msgid "Replied" msgstr "Отговорено" -#: core/widgets/searchlinestatus.cpp:199 +#: core/widgets/searchlinestatus.cpp:215 #, fuzzy, kde-format #| msgctxt "msg status" #| msgid "Forwarded" @@ -1279,7 +1279,7 @@ msgid "Forwarded" msgstr "Препратено" -#: core/widgets/searchlinestatus.cpp:203 +#: core/widgets/searchlinestatus.cpp:219 #, fuzzy, kde-format #| msgctxt "msg status" #| msgid "Important" @@ -1287,14 +1287,14 @@ msgid "Important" msgstr "Важно" -#: core/widgets/searchlinestatus.cpp:207 +#: core/widgets/searchlinestatus.cpp:223 #, fuzzy, kde-format #| msgid "Action Item" msgctxt "@action:inmenu Status of a message" msgid "Action Item" msgstr "Действие" -#: core/widgets/searchlinestatus.cpp:211 +#: core/widgets/searchlinestatus.cpp:227 #, fuzzy, kde-format #| msgctxt "msg status" #| msgid "Watched" @@ -1302,7 +1302,7 @@ msgid "Watched" msgstr "Следено" -#: core/widgets/searchlinestatus.cpp:215 +#: core/widgets/searchlinestatus.cpp:231 #, fuzzy, kde-format #| msgctxt "msg status" #| msgid "Ignored" @@ -1310,7 +1310,7 @@ msgid "Ignored" msgstr "Игнорирано" -#: core/widgets/searchlinestatus.cpp:219 +#: core/widgets/searchlinestatus.cpp:235 #, fuzzy, kde-format #| msgctxt "message status" #| msgid "Has Attachment" @@ -1318,57 +1318,57 @@ msgid "Has Attachment" msgstr "Имащи прикрепени файлове" -#: core/widgets/searchlinestatus.cpp:223 +#: core/widgets/searchlinestatus.cpp:239 #, fuzzy, kde-format #| msgid "Advanced Options" msgctxt "@action:inmenu Status of a message" msgid "Has Invitation" msgstr "Допълнителни настройки" -#: core/widgets/searchlinestatus.cpp:227 +#: core/widgets/searchlinestatus.cpp:243 #, fuzzy, kde-format #| msgid "Spam" msgctxt "@action:inmenu Status of a message" msgid "Spam" msgstr "Спам" -#: core/widgets/searchlinestatus.cpp:231 +#: core/widgets/searchlinestatus.cpp:247 #, fuzzy, kde-format #| msgid "Ham" msgctxt "@action:inmenu Status of a message" msgid "Ham" msgstr "Любителски" -#: core/widgets/searchlinestatus.cpp:241 +#: core/widgets/searchlinestatus.cpp:257 #, fuzzy, kde-format #| msgid "Full message" msgid "Full Message" msgstr "Цялото съобщение" -#: core/widgets/searchlinestatus.cpp:248 +#: core/widgets/searchlinestatus.cpp:264 #, kde-format msgid "Body" msgstr "" -#: core/widgets/searchlinestatus.cpp:253 +#: core/widgets/searchlinestatus.cpp:269 #, fuzzy, kde-format #| msgid "Subject" msgid "Subject" msgstr "Тема" -#: core/widgets/searchlinestatus.cpp:264 +#: core/widgets/searchlinestatus.cpp:280 #, fuzzy, kde-format #| msgid "BCC" msgid "BCC" msgstr "Скр. копие до" -#: core/widgets/searchlinestatus.cpp:292 +#: core/widgets/searchlinestatus.cpp:308 #, fuzzy, kde-format #| msgid "To" msgid "To" msgstr "До" -#: core/widgets/searchlinestatus.cpp:344 +#: core/widgets/searchlinestatus.cpp:360 #, fuzzy, kde-format #| msgid "&Create Filter" msgid "Clear History" @@ -1417,58 +1417,58 @@ msgid "Show Quick Search Bar" msgstr "Показване на бързо търсене" -#: pane.cpp:235 +#: pane.cpp:237 #, kde-format msgid "Message List" msgstr "Списък със съобщения" -#: pane.cpp:241 +#: pane.cpp:243 #, fuzzy, kde-format #| msgid "&Sender identity:" msgid "Create New Tab" msgstr "Самоличност на пода&теля:" -#: pane.cpp:252 +#: pane.cpp:254 #, fuzzy, kde-format #| msgctxt "View->" #| msgid "C&ollapse All Threads" msgid "Close Tab" msgstr "Сгъване на вси&чки нишки" -#: pane.cpp:259 +#: pane.cpp:261 #, kde-format msgid "Activate Next Tab" msgstr "" -#: pane.cpp:264 +#: pane.cpp:266 #, kde-format msgid "Activate Previous Tab" msgstr "" -#: pane.cpp:269 +#: pane.cpp:271 #, kde-format msgid "Move Tab Left" msgstr "" -#: pane.cpp:274 +#: pane.cpp:276 #, kde-format msgid "Move Tab Right" msgstr "" -#: pane.cpp:481 pane.cpp:746 +#: pane.cpp:483 pane.cpp:758 #, fuzzy, kde-format #| msgid "Empty" msgctxt "@title:tab Empty messagelist" msgid "Empty" msgstr "Изхвърляне" -#: pane.cpp:668 +#: pane.cpp:677 #, kde-format msgctxt "@action:inmenu" msgid "Close Tab" msgstr "" -#: pane.cpp:671 +#: pane.cpp:680 #, fuzzy, kde-format #| msgctxt "View->" #| msgid "C&ollapse All Threads" @@ -1545,7 +1545,7 @@ msgstr "" #: utils/configureaggregationsdialog.cpp:129 -#: utils/configureaggregationsdialog.cpp:360 +#: utils/configureaggregationsdialog.cpp:359 #, fuzzy, kde-format #| msgid "Delete T&hread" msgid "New Aggregation" @@ -1575,26 +1575,26 @@ msgid "Delete Aggregation" msgstr "Изтриване на н&ишка" -#: utils/configureaggregationsdialog.cpp:343 +#: utils/configureaggregationsdialog.cpp:342 #, fuzzy, kde-format #| msgid "Delete T&hread" msgid "Unnamed Aggregation" msgstr "Изтриване на н&ишка" -#: utils/configureaggregationsdialog.cpp:412 +#: utils/configureaggregationsdialog.cpp:411 #, fuzzy, kde-format #| msgid "Delete T&hread" msgid "Import Aggregation" msgstr "Изтриване на н&ишка" -#: utils/configureaggregationsdialog.cpp:445 -#: utils/configurethemesdialog.cpp:470 +#: utils/configureaggregationsdialog.cpp:444 +#: utils/configurethemesdialog.cpp:466 #, fuzzy, kde-format #| msgid "&All Fields" msgid "All Files (*)" msgstr "Всички полет&а" -#: utils/configureaggregationsdialog.cpp:445 +#: utils/configureaggregationsdialog.cpp:444 #, fuzzy, kde-format #| msgid "Delete T&hread" msgid "Export Aggregation" @@ -1606,7 +1606,7 @@ msgid "Customize Themes" msgstr "&Потребителски шаблони" -#: utils/configurethemesdialog.cpp:124 utils/configurethemesdialog.cpp:356 +#: utils/configurethemesdialog.cpp:124 utils/configurethemesdialog.cpp:352 #, fuzzy, kde-format #| msgid "New Message" msgid "New Theme" @@ -1618,61 +1618,61 @@ msgid "Clone Theme" msgstr "Ново съобщение" -#: utils/configurethemesdialog.cpp:144 +#: utils/configurethemesdialog.cpp:143 #, fuzzy, kde-format #| msgid "Export..." msgid "Export Theme..." msgstr "Експортиране..." -#: utils/configurethemesdialog.cpp:150 +#: utils/configurethemesdialog.cpp:148 #, fuzzy, kde-format #| msgid "Import..." msgid "Import Theme..." msgstr "Импортиране..." -#: utils/configurethemesdialog.cpp:160 +#: utils/configurethemesdialog.cpp:157 #, fuzzy, kde-format #| msgid "Delete T&hread" msgid "Delete Theme" msgstr "Изтриване на н&ишка" -#: utils/configurethemesdialog.cpp:338 +#: utils/configurethemesdialog.cpp:334 #, fuzzy, kde-format #| msgctxt "Missing profile name placeholder" #| msgid "Unnamed" msgid "Unnamed Theme" msgstr "Без име" -#: utils/configurethemesdialog.cpp:358 utils/themeeditor.cpp:1242 +#: utils/configurethemesdialog.cpp:354 utils/themeeditor.cpp:1242 #, fuzzy, kde-format #| msgid "View Columns" msgid "New Column" msgstr "Преглед на колони" -#: utils/configurethemesdialog.cpp:410 +#: utils/configurethemesdialog.cpp:406 #, kde-format msgid "Do you want to delete selected themes?" msgstr "" -#: utils/configurethemesdialog.cpp:411 +#: utils/configurethemesdialog.cpp:407 #, kde-format msgid "Do you want to delete \"%1\"?" msgstr "" -#: utils/configurethemesdialog.cpp:411 +#: utils/configurethemesdialog.cpp:407 #, fuzzy, kde-format #| msgid "Delete T&hread" msgctxt "@title:window" msgid "Delete Theme" msgstr "Изтриване на н&ишка" -#: utils/configurethemesdialog.cpp:436 +#: utils/configurethemesdialog.cpp:432 #, fuzzy, kde-format #| msgid "&Import Messages..." msgid "Import Theme" msgstr "&Импортиране на съобщения..." -#: utils/configurethemesdialog.cpp:470 +#: utils/configurethemesdialog.cpp:466 #, fuzzy, kde-format #| msgid "Export Filters" msgid "Export Theme" diff -Nru kf5-messagelib-17.12.3/po/bg/libmessageviewer.po kf5-messagelib-18.04.3/po/bg/libmessageviewer.po --- kf5-messagelib-17.12.3/po/bg/libmessageviewer.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/bg/libmessageviewer.po 2018-07-10 00:15:57.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: kmail\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2018-02-21 06:03+0100\n" +"POT-Creation-Date: 2018-05-27 06:21+0200\n" "PO-Revision-Date: 2008-08-07 11:06+0000\n" "Last-Translator: Zlatko Popov \n" "Language-Team: Bulgarian \n" @@ -426,13 +426,13 @@ msgid "Unknown" msgstr "Неизвестно" -#: header/headerstyle_util.cpp:100 header/headerstyle_util.cpp:105 -#: header/headerstyle_util.cpp:116 +#: header/headerstyle_util.cpp:102 header/headerstyle_util.cpp:107 +#: header/headerstyle_util.cpp:118 #, kde-format msgid "No Subject" msgstr "Без тема" -#: header/headerstyle_util.cpp:185 +#: header/headerstyle_util.cpp:187 #, kde-format msgid "" "%1% probability of being spam with confidence %3%.\n" @@ -447,7 +447,7 @@ "Вероятност=%2\n" "Поверителност=%4" -#: header/headerstyle_util.cpp:191 +#: header/headerstyle_util.cpp:193 #, fuzzy, kde-format #| msgid "" #| "%1% probability of being spam.\n" @@ -465,38 +465,38 @@ "Пълен отчет:\n" "%2" -#: header/headerstyle_util.cpp:199 +#: header/headerstyle_util.cpp:201 #, kde-format msgid "No Spam agent" msgstr "" -#: header/headerstyle_util.cpp:202 +#: header/headerstyle_util.cpp:204 #, kde-format msgid "Spam filter score not a number" msgstr "" -#: header/headerstyle_util.cpp:205 +#: header/headerstyle_util.cpp:207 #, kde-format msgid "Threshold not a valid number" msgstr "" -#: header/headerstyle_util.cpp:208 +#: header/headerstyle_util.cpp:210 #, kde-format msgid "Spam filter score could not be extracted from header" msgstr "" -#: header/headerstyle_util.cpp:211 +#: header/headerstyle_util.cpp:213 #, kde-format msgid "Threshold could not be extracted from header" msgstr "" -#: header/headerstyle_util.cpp:214 +#: header/headerstyle_util.cpp:216 #, fuzzy, kde-format #| msgid "Error while uploading message" msgid "Error evaluating spam score" msgstr "Грешка при качване на съобщение" -#: header/headerstyle_util.cpp:218 +#: header/headerstyle_util.cpp:220 #, kde-format msgid "" "%1.\n" @@ -553,149 +553,129 @@ msgid "Reply to: " msgstr "Отговор на: " -#: job/attachmenteditjob.cpp:50 -#, kde-format -msgid "" -"Modifying an attachment might invalidate any digital signature on this " -"message." -msgstr "" -"Промяната на прикрепения файл може да направи невалиден електронния подпис " -"на съобщението." - -#: job/attachmenteditjob.cpp:51 viewer/viewer_p.cpp:669 -#: viewer/viewer_p.cpp:1816 -#, kde-format -msgid "Edit Attachment" -msgstr "Редактиране на прикрепен файл" - -#: job/attachmenteditjob.cpp:52 -#, kde-format -msgid "Edit" -msgstr "Редактиране" - -#: messagepartthemes/default/defaultrenderer.cpp:82 +#: messagepartthemes/default/defaultrenderer.cpp:83 #, kde-format msgid "Error: Signature not verified" msgstr "Грешка: Подписът не е проверен" -#: messagepartthemes/default/defaultrenderer.cpp:85 +#: messagepartthemes/default/defaultrenderer.cpp:86 #, kde-format msgid "Good signature" msgstr "Добър подпис" -#: messagepartthemes/default/defaultrenderer.cpp:88 +#: messagepartthemes/default/defaultrenderer.cpp:89 #, fuzzy, kde-format #| msgid "Good signature" msgid "Bad signature" msgstr "Добър подпис" -#: messagepartthemes/default/defaultrenderer.cpp:91 +#: messagepartthemes/default/defaultrenderer.cpp:92 #, kde-format msgid "No public key to verify the signature" msgstr "Няма публичен ключ за проверка на подписа" -#: messagepartthemes/default/defaultrenderer.cpp:94 +#: messagepartthemes/default/defaultrenderer.cpp:95 #, kde-format msgid "No signature found" msgstr "Не е открит електронен подпис" -#: messagepartthemes/default/defaultrenderer.cpp:97 +#: messagepartthemes/default/defaultrenderer.cpp:98 #, kde-format msgid "Error verifying the signature" msgstr "Грешка при проверка на подписа" -#: messagepartthemes/default/defaultrenderer.cpp:100 +#: messagepartthemes/default/defaultrenderer.cpp:101 #, kde-format msgid "Different results for signatures" msgstr "Различни резултати за електронните подписи" -#: messagepartthemes/default/defaultrenderer.cpp:119 +#: messagepartthemes/default/defaultrenderer.cpp:120 #, kde-format msgid "No status information available." msgstr "Няма налична информация за статус." -#: messagepartthemes/default/defaultrenderer.cpp:126 -#: messagepartthemes/default/defaultrenderer.cpp:211 +#: messagepartthemes/default/defaultrenderer.cpp:127 +#: messagepartthemes/default/defaultrenderer.cpp:212 #, kde-format msgid "Good signature." msgstr "Добър подпис." -#: messagepartthemes/default/defaultrenderer.cpp:147 +#: messagepartthemes/default/defaultrenderer.cpp:148 #, kde-format msgid "One key has expired." msgstr "Един ключ е изтекъл." -#: messagepartthemes/default/defaultrenderer.cpp:151 +#: messagepartthemes/default/defaultrenderer.cpp:152 #, kde-format msgid "The signature has expired." msgstr "Подписът е изтекъл." -#: messagepartthemes/default/defaultrenderer.cpp:156 +#: messagepartthemes/default/defaultrenderer.cpp:157 #, kde-format msgid "Unable to verify: key missing." msgstr "Грешка при проверка: липсва ключ." -#: messagepartthemes/default/defaultrenderer.cpp:163 +#: messagepartthemes/default/defaultrenderer.cpp:164 #, kde-format msgid "CRL not available." msgstr "Не е наличен CRL." -#: messagepartthemes/default/defaultrenderer.cpp:167 +#: messagepartthemes/default/defaultrenderer.cpp:168 #, kde-format msgid "Available CRL is too old." msgstr "Наличният CRL е твърде стар." -#: messagepartthemes/default/defaultrenderer.cpp:171 +#: messagepartthemes/default/defaultrenderer.cpp:172 #, kde-format msgid "A policy was not met." msgstr "Не е открита отговаряща политика." -#: messagepartthemes/default/defaultrenderer.cpp:175 +#: messagepartthemes/default/defaultrenderer.cpp:176 #, kde-format msgid "A system error occurred." msgstr "Системна грешка." -#: messagepartthemes/default/defaultrenderer.cpp:186 +#: messagepartthemes/default/defaultrenderer.cpp:187 #, kde-format msgid "One key has been revoked." msgstr "Един ключ е бил анулиран." -#: messagepartthemes/default/defaultrenderer.cpp:213 +#: messagepartthemes/default/defaultrenderer.cpp:214 #, fuzzy, kde-format #| msgid "Good signature." msgid "Bad signature." msgstr "Добър подпис." -#: messagepartthemes/default/defaultrenderer.cpp:632 -#: messagepartthemes/default/defaultrenderer.cpp:634 +#: messagepartthemes/default/defaultrenderer.cpp:629 +#: messagepartthemes/default/defaultrenderer.cpp:631 #, kde-format msgid "certificate" msgstr "удостоверение" -#: messagepartthemes/default/defaultrenderer.cpp:641 -#: messagepartthemes/default/defaultrenderer.cpp:670 +#: messagepartthemes/default/defaultrenderer.cpp:638 +#: messagepartthemes/default/defaultrenderer.cpp:667 #, fuzzy, kde-format #| msgid "Warning:" msgctxt "Start of warning message." msgid "Warning:" msgstr "Предупреждение:" -#: messagepartthemes/default/defaultrenderer.cpp:644 +#: messagepartthemes/default/defaultrenderer.cpp:641 #, kde-format msgid "Sender's mail address is not stored in the %1 used for signing." msgstr "Адреса на подателя не е записан в %1, който се използва за подписване." -#: messagepartthemes/default/defaultrenderer.cpp:647 +#: messagepartthemes/default/defaultrenderer.cpp:644 #, kde-format msgid "sender: " msgstr "подател: " -#: messagepartthemes/default/defaultrenderer.cpp:650 +#: messagepartthemes/default/defaultrenderer.cpp:647 #, kde-format msgid "stored: " msgstr "запазен: " -#: messagepartthemes/default/defaultrenderer.cpp:672 +#: messagepartthemes/default/defaultrenderer.cpp:669 #, kde-format msgid "" "No mail address is stored in the %1 used for signing, so we cannot compare " @@ -705,6 +685,7 @@ "с адреса на подателя %2." #: scamdetection/scamdetectiondetailsdialog.cpp:47 +#: widgets/mailtrackingdetailsdialog.cpp:32 #, fuzzy, kde-format #| msgid "[Details]" msgid "Details" @@ -738,12 +719,14 @@ msgstr "Изтриване на съобщенията" #: scamdetection/scamdetectionwebengine.cpp:103 +#: widgets/mailtrackingwarningwidget.cpp:55 #, fuzzy, kde-format #| msgid "[Details]" msgid "Details:" msgstr "[Подробности]" #: scamdetection/scamdetectionwebengine.cpp:136 +#: scamdetection/scamdetectionwebengine.cpp:191 #, kde-format msgid "" "This email contains a link which reads as '%1' in the text, but actually " @@ -784,7 +767,7 @@ msgid "This email contains a shorturl (%1). It can redirect to another server." msgstr "" -#: scamdetection/scamdetectionwebengine.cpp:181 +#: scamdetection/scamdetectionwebengine.cpp:206 #, kde-format msgid "Message contains form element. This is often the case in scam emails." msgstr "" @@ -846,13 +829,6 @@ msgid "Close message window after replying or forwarding" msgstr "" -#. i18n: ectx: label, entry (showColorBar), group (Reader) -#: settings/messageviewer.kcfg.cmake:59 -#, fuzzy, kde-format -#| msgid "Show HTML stat&us bar" -msgid "Show HTML Side Bar" -msgstr "Показване на &HTML лентата за състоянието" - #. i18n: ectx: label, entry (ShowExpandQuotesMark), group (Reader) #: settings/messageviewer.kcfg.cmake:63 #, kde-format @@ -892,34 +868,28 @@ msgstr "" "Включете тази опция, ако искате цитираният текст да е с по-малък шрифт." -#. i18n: ectx: label, entry (AllowAttachmentEditing), group (Reader) -#: settings/messageviewer.kcfg.cmake:79 -#, kde-format -msgid "Allow to edit attachments of existing mails." -msgstr "Позволение за редактиране на писмата." - #. i18n: ectx: label, entry (AlwaysDecrypt), group (Reader) -#: settings/messageviewer.kcfg.cmake:83 +#: settings/messageviewer.kcfg.cmake:79 #, fuzzy, kde-format #| msgid "Always decrypt messages when viewing or ask before decrypting" msgid "Always decrypt messages when viewing or ask before decrypting" msgstr "Разшифроване на съобщенията при преглед или питане за това" #. i18n: ectx: label, entry (MimeTreeMode2), group (Reader) -#: settings/messageviewer.kcfg.cmake:86 +#: settings/messageviewer.kcfg.cmake:82 #, kde-format msgid "Message Structure Viewer" msgstr "Преглед структурата на съобщение" #. i18n: ectx: label, entry (MimeTreeMode2), group (Reader) -#: settings/messageviewer.kcfg.cmake:89 +#: settings/messageviewer.kcfg.cmake:85 #, fuzzy, kde-format #| msgid "Show &never" msgid "Show never" msgstr "Без показ&ване" #. i18n: ectx: label, entry (MimeTreeMode2), group (Reader) -#: settings/messageviewer.kcfg.cmake:92 +#: settings/messageviewer.kcfg.cmake:88 #, fuzzy, kde-format #| msgid "Show alway&s" msgid "Show always" @@ -927,50 +897,50 @@ #. i18n: ectx: label, entry (headerPluginStyleName), group (Reader) #. i18n: ectx: label, entry (headerStyle), group (Reader) -#: settings/messageviewer.kcfg.cmake:104 settings/messageviewer.kcfg.cmake:110 +#: settings/messageviewer.kcfg.cmake:100 settings/messageviewer.kcfg.cmake:106 #, kde-format msgid "What style of headers should be displayed" msgstr "" #. i18n: ectx: label, entry (headerSetDisplayed), group (Reader) -#: settings/messageviewer.kcfg.cmake:114 +#: settings/messageviewer.kcfg.cmake:110 #, kde-format msgid "How much of headers should be displayed" msgstr "" #. i18n: ectx: label, entry (htmlMail), group (Reader) -#: settings/messageviewer.kcfg.cmake:118 +#: settings/messageviewer.kcfg.cmake:114 #, kde-format msgid "Prefer HTML to plain text" msgstr "Предпочитане на HTML пред обикновен текст" #. i18n: ectx: label, entry (htmlLoadExternal), group (Reader) -#: settings/messageviewer.kcfg.cmake:122 +#: settings/messageviewer.kcfg.cmake:118 #, kde-format msgid "Allow messages to load external references from the Internet" msgstr "Писмата да зареждат външни препратки от Интернет" #. i18n: ectx: label, entry (attachmentStrategy), group (Reader) -#: settings/messageviewer.kcfg.cmake:126 +#: settings/messageviewer.kcfg.cmake:122 #, fuzzy, kde-format #| msgid "Show attachment icon" msgid "How attachments are shown" msgstr "Показване на иконата за прикрепен файл" #. i18n: ectx: label, entry (RecycleQuoteColors), group (Reader) -#: settings/messageviewer.kcfg.cmake:130 +#: settings/messageviewer.kcfg.cmake:126 #, kde-format msgid "Specifies whether to reuse the quote color, beyond the 3rd level" msgstr "" #. i18n: ectx: label, entry (AccessKeyEnabled), group (Reader) -#: settings/messageviewer.kcfg.cmake:134 +#: settings/messageviewer.kcfg.cmake:130 #, kde-format msgid "Activate Access Key" msgstr "" #. i18n: ectx: label, entry (ScamDetectionEnabled), group (Reader) -#: settings/messageviewer.kcfg.cmake:138 +#: settings/messageviewer.kcfg.cmake:134 #, kde-format msgid "" "KMail can analyze messages for suspected email scams by looking for common " @@ -978,19 +948,19 @@ msgstr "" #. i18n: ectx: label, entry (ScamDetectionWhiteList), group (Reader) -#: settings/messageviewer.kcfg.cmake:142 +#: settings/messageviewer.kcfg.cmake:138 #, kde-format msgid "List of emails in scam white list" msgstr "" #. i18n: ectx: label, entry (notSendWhenEncrypted), group (MDN) -#: settings/messageviewer.kcfg.cmake:148 +#: settings/messageviewer.kcfg.cmake:144 #, kde-format msgid "Do not send MDNs in response to encrypted messages" msgstr "Без изпращане на ИДС в отговор на шифровани съобщения" #. i18n: ectx: label, entry (DefaultPolicy), group (MDN) -#: settings/messageviewer.kcfg.cmake:152 +#: settings/messageviewer.kcfg.cmake:148 #, kde-format msgid "" "Specifies the default policy to use, for the Message Disposition " @@ -998,7 +968,7 @@ msgstr "" #. i18n: ectx: label, entry (QuoteMessage), group (MDN) -#: settings/messageviewer.kcfg.cmake:156 +#: settings/messageviewer.kcfg.cmake:152 #, kde-format msgid "" "Specifies the default quoting action to take, when replying to a message " @@ -1006,13 +976,13 @@ msgstr "" #. i18n: ectx: label, entry (LegacyMangleFromToHeaders), group (Invitations) -#: settings/messageviewer.kcfg.cmake:172 +#: settings/messageviewer.kcfg.cmake:168 #, kde-format msgid "Mangle From:/To: headers in replies to replies" msgstr "Прехвърляне на заглавни части \"От:/До:\" от отговор в отговор" #. i18n: ectx: whatsthis, entry (LegacyMangleFromToHeaders), group (Invitations) -#: settings/messageviewer.kcfg.cmake:173 +#: settings/messageviewer.kcfg.cmake:169 #, kde-format msgid "" "Microsoft Outlook has a number of shortcomings in its implementation of the " @@ -1025,13 +995,13 @@ "потребители, които не могат да получат отговорите ви, опитайте с тази опция." #. i18n: ectx: label, entry (LegacyBodyInvites), group (Invitations) -#: settings/messageviewer.kcfg.cmake:178 +#: settings/messageviewer.kcfg.cmake:174 #, kde-format msgid "Send groupware invitations in the mail body" msgstr "Изпращане на групови покани в тялото на съобщение" #. i18n: ectx: whatsthis, entry (LegacyBodyInvites), group (Invitations) -#: settings/messageviewer.kcfg.cmake:179 +#: settings/messageviewer.kcfg.cmake:175 #, fuzzy, kde-format #| msgid "" #| "Microsoft Outlook has a number of shortcomings in its implementation of " @@ -1049,14 +1019,14 @@ "потребители, които не могат да получат отговорите ви, опитайте с тази опция." #. i18n: ectx: label, entry (ExchangeCompatibleInvitations), group (Invitations) -#: settings/messageviewer.kcfg.cmake:184 +#: settings/messageviewer.kcfg.cmake:180 #, fuzzy, kde-format #| msgid "Exchange compatible invitations naming" msgid "Exchange-compatible invitation naming" msgstr "Обмен на съвместими покани" #. i18n: ectx: whatsthis, entry (ExchangeCompatibleInvitations), group (Invitations) -#: settings/messageviewer.kcfg.cmake:185 +#: settings/messageviewer.kcfg.cmake:181 #, fuzzy, kde-format #| msgid "" #| "Microsoft Outlook, when used in combination with a Microsoft Exchange " @@ -1075,13 +1045,13 @@ "server." #. i18n: ectx: label, entry (AutomaticSending), group (Invitations) -#: settings/messageviewer.kcfg.cmake:190 +#: settings/messageviewer.kcfg.cmake:186 #, kde-format msgid "Automatic invitation sending" msgstr "Автоматично изпращане на покана" #. i18n: ectx: whatsthis, entry (AutomaticSending), group (Invitations) -#: settings/messageviewer.kcfg.cmake:191 +#: settings/messageviewer.kcfg.cmake:187 #, kde-format msgid "" "When this is checked, you will not see the mail composer window. Instead, " @@ -1098,13 +1068,13 @@ #. i18n: ectx: label, entry (DeleteInvitationEmailsAfterSendingReply), group (Invitations) #. i18n: ectx: property (text), widget (QCheckBox, mDeleteInvitations) -#: settings/messageviewer.kcfg.cmake:196 ui/invitationsettings.ui:74 +#: settings/messageviewer.kcfg.cmake:192 ui/invitationsettings.ui:74 #, kde-format msgid "Delete invitation emails after the reply to them has been sent" msgstr "Изтриване на поканите след като отговорът до тях е изпратен." #. i18n: ectx: whatsthis, entry (DeleteInvitationEmailsAfterSendingReply), group (Invitations) -#: settings/messageviewer.kcfg.cmake:197 +#: settings/messageviewer.kcfg.cmake:193 #, kde-format msgid "" "When this is checked, received invitation emails that have been replied to " @@ -1114,27 +1084,27 @@ "преместени в папка \"Кошче\" веднага след изпращането на отговора." #. i18n: ectx: label, entry (UseFixedFont), group (Composer) -#: settings/messageviewer.kcfg.cmake:221 viewer/viewer_p.cpp:1646 +#: settings/messageviewer.kcfg.cmake:217 viewer/viewer_p.cpp:1633 #, kde-format msgid "Use Fi&xed Font" msgstr "&Равноширок шрифт" #. i18n: ectx: whatsthis, entry (LastSelectedFolder), group (Todo) -#: settings/messageviewer.kcfg.cmake:228 +#: settings/messageviewer.kcfg.cmake:224 #, fuzzy, kde-format #| msgid "The most recently selected folder in the folder selection dialog." msgid "The most recent selected folder using for Todo." msgstr "Последно избраната папка в прозореца за избор на папка." #. i18n: ectx: whatsthis, entry (LastEventSelectedFolder), group (Event) -#: settings/messageviewer.kcfg.cmake:234 +#: settings/messageviewer.kcfg.cmake:230 #, fuzzy, kde-format #| msgid "The most recently selected folder in the folder selection dialog." msgid "The most recent selected folder using for Event." msgstr "Последно избраната папка в прозореца за избор на папка." #. i18n: ectx: whatsthis, entry (LastNoteSelectedFolder), group (Note) -#: settings/messageviewer.kcfg.cmake:240 +#: settings/messageviewer.kcfg.cmake:236 #, fuzzy, kde-format #| msgid "The most recently selected folder in the folder selection dialog." msgid "The most recent selected folder using for Notes." @@ -1273,36 +1243,29 @@ msgid "Enable access key" msgstr "" -#. i18n: ectx: property (text), widget (QCheckBox, kcfg_showColorBar) -#: ui/settings.ui:98 -#, fuzzy, kde-format -#| msgid "Show HTML stat&us bar" -msgid "Show &HTML Side Bar" -msgstr "Показване на &HTML лентата за състоянието" - #. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShrinkQuotes) -#: ui/settings.ui:105 +#: ui/settings.ui:98 #, fuzzy, kde-format #| msgid "Reduce font size for quoted text" msgid "Reduce font size for "ed text" msgstr "Намаляване на размера на шрифт на цитиран текст" #. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowExpandQuotesMark) -#: ui/settings.ui:112 +#: ui/settings.ui:105 #, fuzzy, kde-format #| msgid "Show expand/collapse quote marks" msgid "Show &expand/collapse quote marks" msgstr "Показване на отварящи/затварящи кавички" #. i18n: ectx: property (text), widget (QLabel, collapseQuoteLevelLabel) -#: ui/settings.ui:140 +#: ui/settings.ui:133 #, fuzzy, kde-format #| msgid "Automatic collapse level:" msgid "Automatic collapse &level:" msgstr "Ниво на автоматично сгъване:" #. i18n: ectx: property (text), widget (QLabel, label_4) -#: ui/settings.ui:209 +#: ui/settings.ui:202 #, kde-format msgid "&Minimum font size:" msgstr "" @@ -1318,30 +1281,30 @@ msgid "Overwrite File?" msgstr "Презапис на файл?" -#: utils/messageviewerutil.cpp:139 +#: utils/messageviewerutil.cpp:140 #, kde-format msgid "Save Attachments To" msgstr "Запис на прикрепените файлове в" -#: utils/messageviewerutil.cpp:158 +#: utils/messageviewerutil.cpp:159 #, kde-format msgctxt "filename for an unnamed attachment" msgid "attachment.1" msgstr "прикрепен файл.1" -#: utils/messageviewerutil.cpp:166 +#: utils/messageviewerutil.cpp:167 #, fuzzy, kde-format #| msgid "Save Attachment As" msgid "Save Attachment" msgstr "Запис на прикрепения файл като" -#: utils/messageviewerutil.cpp:193 +#: utils/messageviewerutil.cpp:194 #, kde-format msgctxt "filename for the %1-th unnamed attachment" msgid "attachment.%1" msgstr "прикрепен файл.%1" -#: utils/messageviewerutil.cpp:296 +#: utils/messageviewerutil.cpp:299 #, kde-format msgid "" "The part %1 of the message is encrypted. Do you want to keep the encryption " @@ -1350,22 +1313,22 @@ "Частта %1 от съобщението е шифрована. Искате ли да запазите шифроването при " "запис?" -#: utils/messageviewerutil.cpp:298 utils/messageviewerutil.cpp:311 +#: utils/messageviewerutil.cpp:301 utils/messageviewerutil.cpp:314 #, kde-format msgid "KMail Question" msgstr "KMail въпрос" -#: utils/messageviewerutil.cpp:298 +#: utils/messageviewerutil.cpp:301 #, kde-format msgid "Keep Encryption" msgstr "Запазване на шифроването" -#: utils/messageviewerutil.cpp:299 utils/messageviewerutil.cpp:312 +#: utils/messageviewerutil.cpp:302 utils/messageviewerutil.cpp:315 #, kde-format msgid "Do Not Keep" msgstr "Без запазване" -#: utils/messageviewerutil.cpp:309 +#: utils/messageviewerutil.cpp:312 #, kde-format msgid "" "The part %1 of the message is signed. Do you want to keep the signature when " @@ -1374,13 +1337,13 @@ "Частта %1 от съобщението е подписано. Искате ли да запазите подписа при " "запис?" -#: utils/messageviewerutil.cpp:311 +#: utils/messageviewerutil.cpp:314 #, kde-format msgid "Keep Signature" msgstr "Запазване на подписа" -#: utils/messageviewerutil.cpp:376 utils/messageviewerutil.cpp:394 -#: utils/messageviewerutil.cpp:412 +#: utils/messageviewerutil.cpp:379 utils/messageviewerutil.cpp:397 +#: utils/messageviewerutil.cpp:415 #, fuzzy, kde-kuit-format #| msgctxt "%2 is detailed error description" #| msgid "" @@ -1394,30 +1357,30 @@ "Грешка при запис на файл %1:\n" "%2" -#: utils/messageviewerutil.cpp:379 utils/messageviewerutil.cpp:397 -#: utils/messageviewerutil.cpp:415 +#: utils/messageviewerutil.cpp:382 utils/messageviewerutil.cpp:400 +#: utils/messageviewerutil.cpp:418 #, fuzzy, kde-format #| msgid "has an attachment" msgid "Error saving attachment" msgstr "има прикрепен файл" -#: utils/messageviewerutil.cpp:428 +#: utils/messageviewerutil.cpp:431 #, kde-format msgid "Found no attachments to save." msgstr "Не са открити прикрепени файлове, които да бъдат записани." -#: utils/messageviewerutil.cpp:451 +#: utils/messageviewerutil.cpp:450 #, fuzzy, kde-format #| msgid " messages" msgid "message" msgstr " съобщения" -#: utils/messageviewerutil.cpp:458 +#: utils/messageviewerutil.cpp:467 #, kde-format msgid "email messages (*.mbox);;all files (*)" msgstr "" -#: utils/messageviewerutil.cpp:471 +#: utils/messageviewerutil.cpp:480 #, fuzzy, kde-format #| msgid " message" #| msgid_plural " messages" @@ -1426,43 +1389,43 @@ msgstr[0] " съобщение" msgstr[1] " съобщение" -#: utils/messageviewerutil.cpp:484 +#: utils/messageviewerutil.cpp:493 #, fuzzy, kde-format #| msgid "Message will not be encrypted" msgid "File %1 could not be loaded." msgstr "Съобщението няма да бъде шифровано" -#: utils/messageviewerutil.cpp:485 +#: utils/messageviewerutil.cpp:494 #, fuzzy, kde-format #| msgid "Error while uploading message" msgid "Error loading message" msgstr "Грешка при качване на съобщение" -#: utils/messageviewerutil.cpp:487 +#: utils/messageviewerutil.cpp:496 #, fuzzy, kde-format #| msgid "Message will not be encrypted" msgid "File %1 could not be created." msgstr "Съобщението няма да бъде шифровано" -#: utils/messageviewerutil.cpp:488 utils/messageviewerutil.cpp:500 +#: utils/messageviewerutil.cpp:497 utils/messageviewerutil.cpp:509 #, fuzzy, kde-format #| msgid "Moving messages" msgid "Error saving message" msgstr "Преместване на съобщенията" -#: utils/messageviewerutil.cpp:499 +#: utils/messageviewerutil.cpp:508 #, fuzzy, kde-format #| msgid "End of signed message" msgid "We cannot save message." msgstr "Край на подписаното съобщение" -#: utils/messageviewerutil.cpp:516 +#: utils/messageviewerutil.cpp:532 #, fuzzy, kde-format #| msgid "&Open with '%1'" msgid "Open &with %1" msgstr "&Отваряне с \"%1\"" -#: utils/messageviewerutil.cpp:518 +#: utils/messageviewerutil.cpp:534 #, fuzzy, kde-format #| msgid "%" msgctxt "@item:inmenu Open With, %1 is application name" @@ -1511,180 +1474,144 @@ msgid "Size" msgstr "Размер" -#: viewer/urlhandlermanager.cpp:715 +#: viewer/urlhandlermanager.cpp:426 #, kde-format msgid "Turn on HTML rendering for this message." msgstr "Включване на HTML рендиране за това съобщение." -#: viewer/urlhandlermanager.cpp:717 viewer/viewer_p.cpp:1729 +#: viewer/urlhandlermanager.cpp:428 viewer/viewer_p.cpp:1716 #, kde-format msgid "Load external references from the Internet for this message." msgstr "Зареждане на външни препратки от Интернет за това съобщение." -#: viewer/urlhandlermanager.cpp:719 +#: viewer/urlhandlermanager.cpp:430 #, kde-format msgid "Work online." msgstr "Работа в мрежата." -#: viewer/urlhandlermanager.cpp:721 +#: viewer/urlhandlermanager.cpp:432 #, fuzzy, kde-format #| msgid "from checked accounts only" msgid "Make account online." msgstr "само от проверени сметки" -#: viewer/urlhandlermanager.cpp:723 +#: viewer/urlhandlermanager.cpp:434 #, kde-format msgid "Decrypt message." msgstr "Разшифроване на съобщението." -#: viewer/urlhandlermanager.cpp:725 +#: viewer/urlhandlermanager.cpp:436 #, kde-format msgid "Show signature details." msgstr "Показване на подробности за електронния подпис." -#: viewer/urlhandlermanager.cpp:727 +#: viewer/urlhandlermanager.cpp:438 #, kde-format msgid "Hide signature details." msgstr "Скриване на подробностите за подписа." -#: viewer/urlhandlermanager.cpp:729 +#: viewer/urlhandlermanager.cpp:440 #, fuzzy, kde-format #| msgid "Show signature details." msgid "Show encryption details." msgstr "Показване на подробности за електронния подпис." -#: viewer/urlhandlermanager.cpp:731 +#: viewer/urlhandlermanager.cpp:442 #, fuzzy, kde-format #| msgid "Hide signature details." msgid "Hide encryption details." msgstr "Скриване на подробностите за подписа." -#: viewer/urlhandlermanager.cpp:733 -#, fuzzy, kde-format -#| msgid "Save Attachment As" -msgid "Hide attachment list." -msgstr "Запис на прикрепения файл като" - -#: viewer/urlhandlermanager.cpp:735 -#, fuzzy, kde-format -#| msgid "Show attachment icon" -msgid "Show attachment list." -msgstr "Показване на иконата за прикрепен файл" - -#: viewer/urlhandlermanager.cpp:737 -#, fuzzy, kde-format -#| msgid "Show Details" -msgid "Hide full \"To\" list" -msgstr "Показване на подробности" - -#: viewer/urlhandlermanager.cpp:739 -#, fuzzy, kde-format -#| msgid "Show Details" -msgid "Show full \"To\" list" -msgstr "Показване на подробности" - -#: viewer/urlhandlermanager.cpp:741 -#, fuzzy, kde-format -#| msgid "Show Details" -msgid "Hide full \"Cc\" list" -msgstr "Показване на подробности" - -#: viewer/urlhandlermanager.cpp:743 -#, fuzzy, kde-format -#| msgid "Show Details" -msgid "Show full \"Cc\" list" -msgstr "Показване на подробности" - -#: viewer/urlhandlermanager.cpp:748 +#: viewer/urlhandlermanager.cpp:447 #, fuzzy, kde-format #| msgid "Documentation" msgid "Open Documentation" msgstr "Documentation" -#: viewer/urlhandlermanager.cpp:784 +#: viewer/urlhandlermanager.cpp:481 #, kde-format msgid "Expand all quoted text." msgstr "Разгъване на цитирания текст." -#: viewer/urlhandlermanager.cpp:786 +#: viewer/urlhandlermanager.cpp:483 #, kde-format msgid "Collapse quoted text." msgstr "Сгъване на цитирания текст." -#: viewer/urlhandlermanager.cpp:848 +#: viewer/urlhandlermanager.cpp:543 #, kde-format msgid "Could not start certificate manager. Please check your installation." msgstr "" "Грешка при стартиране управлението на удостоверенията. Моля, проверете " "инсталацията си." -#: viewer/urlhandlermanager.cpp:850 +#: viewer/urlhandlermanager.cpp:545 #, kde-format msgid "KMail Error" msgstr "Грешка в Kmail" -#: viewer/urlhandlermanager.cpp:863 +#: viewer/urlhandlermanager.cpp:558 #, kde-format msgid "Show certificate 0x%1" msgstr "Показване на удостоверение 0x%1" -#: viewer/urlhandlermanager.cpp:931 +#: viewer/urlhandlermanager.cpp:620 #, fuzzy, kde-format #| msgid "Open in Address Book" msgid "&Open in Address Book" msgstr "Отваряне в адресника" -#: viewer/urlhandlermanager.cpp:935 +#: viewer/urlhandlermanager.cpp:624 #, fuzzy, kde-format #| msgid "Email Address" msgid "&Copy Email Address" msgstr "Е-поща" -#: viewer/urlhandlermanager.cpp:948 viewer/viewer_p.cpp:2845 +#: viewer/urlhandlermanager.cpp:637 viewer/viewer_p.cpp:2765 #, kde-format msgid "Address copied to clipboard." msgstr "Адресът е копиран в буфера." -#: viewer/urlhandlermanager.cpp:960 +#: viewer/urlhandlermanager.cpp:648 #, fuzzy, kde-format #| msgid "Open in Address Book" msgid "Lookup the contact in KAddressbook" msgstr "Отваряне в адресника" -#: viewer/urlhandlermanager.cpp:1086 +#: viewer/urlhandlermanager.cpp:825 #, kde-format msgid "Attachment: %1" msgstr "Прикрепен файл: %1" -#: viewer/urlhandlermanager.cpp:1089 +#: viewer/urlhandlermanager.cpp:828 #, fuzzy, kde-format #| msgid "Encapsulated message" msgid "Encapsulated Message (Subject: %1)" msgstr "Капсулирано съобщение" -#: viewer/urlhandlermanager.cpp:1092 +#: viewer/urlhandlermanager.cpp:831 #, fuzzy, kde-format #| msgid "Encapsulated message" msgid "Encapsulated Message" msgstr "Капсулирано съобщение" -#: viewer/urlhandlermanager.cpp:1095 +#: viewer/urlhandlermanager.cpp:834 #, fuzzy, kde-format #| msgid "Unable to edit attachment" msgid "Unnamed attachment" msgstr "Прикрепеният файл не може да бъде редактиран" -#: viewer/urlhandlermanager.cpp:1133 +#: viewer/urlhandlermanager.cpp:870 #, kde-format msgid "Show GnuPG Audit Log for this operation" msgstr "Показване на журналния GnuPG файл за тази операция" -#: viewer/urlhandlermanager.cpp:1180 +#: viewer/urlhandlermanager.cpp:913 #, kde-format msgid "Opening URL..." msgstr "Отваряне на адрес (URL)..." -#: viewer/urlhandlermanager.cpp:1191 +#: viewer/urlhandlermanager.cpp:924 #, fuzzy, kde-kuit-format #| msgctxt "@info" #| msgid "Do you really want to execute %1?" @@ -1692,31 +1619,30 @@ msgid "Do you really want to execute %1?" msgstr "Наистина ли искате да изпълните %1?" -#: viewer/urlhandlermanager.cpp:1193 +#: viewer/urlhandlermanager.cpp:926 #, kde-format msgid "Execute" msgstr "Изпълняване" -#: viewer/viewer.cpp:144 +#: viewer/viewer.cpp:146 #, fuzzy, kde-format #| msgid "Moving messages" msgid "Loading message..." msgstr "Преместване на съобщенията" -#: viewer/viewer_p.cpp:410 +#: viewer/viewer_p.cpp:409 #, kde-format msgid "" "Deleting an attachment from an encrypted or old-style mailman message is not " "supported." msgstr "" -#: viewer/viewer_p.cpp:411 viewer/viewer_p.cpp:418 viewer/viewer_p.cpp:676 -#: viewer/viewer_p.cpp:1811 +#: viewer/viewer_p.cpp:410 viewer/viewer_p.cpp:417 viewer/viewer_p.cpp:653 #, kde-format msgid "Delete Attachment" msgstr "Изтриване на прикрепен файл" -#: viewer/viewer_p.cpp:417 +#: viewer/viewer_p.cpp:416 #, kde-format msgid "" "Deleting an attachment might invalidate any digital signature on this " @@ -1725,353 +1651,353 @@ "Изтриването на прикрепения файл може да направи невалиден електронния подпис " "на съобщението." -#: viewer/viewer_p.cpp:514 +#: viewer/viewer_p.cpp:502 #, fuzzy, kde-format #| msgid "&Open With..." msgctxt "@title:menu" msgid "&Open With" msgstr "&Отваряне с..." -#: viewer/viewer_p.cpp:532 +#: viewer/viewer_p.cpp:520 #, fuzzy, kde-format #| msgid "Other Actio&ns" msgctxt "@action:inmenu Open With" msgid "&Other..." msgstr "&Други действия" -#: viewer/viewer_p.cpp:534 viewer/viewer_p.cpp:548 +#: viewer/viewer_p.cpp:522 viewer/viewer_p.cpp:536 #, fuzzy, kde-format #| msgid "&Open With..." msgctxt "@title:menu" msgid "&Open With..." msgstr "&Отваряне с..." -#: viewer/viewer_p.cpp:610 viewer/viewer_p.cpp:1786 +#: viewer/viewer_p.cpp:599 viewer/viewer_p.cpp:1773 #, kde-format msgctxt "to open" msgid "Open" msgstr "Отваряне" -#: viewer/viewer_p.cpp:629 viewer/viewer_p.cpp:1796 +#: viewer/viewer_p.cpp:619 viewer/viewer_p.cpp:1783 #, kde-format msgctxt "to view something" msgid "View" msgstr "Изглед" -#: viewer/viewer_p.cpp:641 +#: viewer/viewer_p.cpp:627 #, kde-format msgid "Scroll To" msgstr "" -#: viewer/viewer_p.cpp:650 +#: viewer/viewer_p.cpp:633 #, kde-format msgid "Save As..." msgstr "Запис като..." -#: viewer/viewer_p.cpp:655 viewer/viewer_p.cpp:1808 +#: viewer/viewer_p.cpp:639 viewer/viewer_p.cpp:1795 #, kde-format msgid "Copy" msgstr "Копиране" -#: viewer/viewer_p.cpp:685 +#: viewer/viewer_p.cpp:664 #, fuzzy, kde-format #| msgid "Reply to A&uthor..." msgid "Reply To Author" msgstr "Отговор до ав&тора..." -#: viewer/viewer_p.cpp:692 +#: viewer/viewer_p.cpp:672 #, fuzzy, kde-format #| msgctxt "Message->" #| msgid "Reply to All" msgid "Reply To All" msgstr "Отговор до всички" -#: viewer/viewer_p.cpp:697 viewer/viewer_p.cpp:1822 +#: viewer/viewer_p.cpp:678 viewer/viewer_p.cpp:1801 #, kde-format msgid "Properties" msgstr "Настройки" -#: viewer/viewer_p.cpp:860 +#: viewer/viewer_p.cpp:841 #, kde-format msgid "KMail" msgstr "KMail" -#: viewer/viewer_p.cpp:861 +#: viewer/viewer_p.cpp:842 #, fuzzy, kde-format #| msgid "KDE Email Client" msgid "The KDE Mail Client" msgstr "Пощенски клиент за KDE" -#: viewer/viewer_p.cpp:1366 +#: viewer/viewer_p.cpp:1349 #, kde-format msgid "View Attachment: %1" msgstr "Преглед на прикрепен файл: %1" -#: viewer/viewer_p.cpp:1558 +#: viewer/viewer_p.cpp:1545 #, kde-format msgctxt "View->" msgid "&Attachments" msgstr "При&крепени файлове" -#: viewer/viewer_p.cpp:1560 +#: viewer/viewer_p.cpp:1547 #, kde-format msgid "Choose display style of attachments" msgstr "Избор на стил за показване на прикрепени файлове" -#: viewer/viewer_p.cpp:1563 +#: viewer/viewer_p.cpp:1550 #, kde-format msgctxt "View->attachments->" msgid "&As Icons" msgstr "&Като икони" -#: viewer/viewer_p.cpp:1566 +#: viewer/viewer_p.cpp:1553 #, kde-format msgid "Show all attachments as icons. Click to see them." msgstr "" "Показване на всички прикрепени файлове като икони. Щракнете за да ги видите." -#: viewer/viewer_p.cpp:1570 +#: viewer/viewer_p.cpp:1557 #, kde-format msgctxt "View->attachments->" msgid "&Smart" msgstr "&Интелигентно" -#: viewer/viewer_p.cpp:1573 +#: viewer/viewer_p.cpp:1560 #, kde-format msgid "Show attachments as suggested by sender." msgstr "Показване на прикрепените файлове както е предложено от подателя." -#: viewer/viewer_p.cpp:1577 +#: viewer/viewer_p.cpp:1564 #, kde-format msgctxt "View->attachments->" msgid "&Inline" msgstr "&Вградени" -#: viewer/viewer_p.cpp:1580 +#: viewer/viewer_p.cpp:1567 #, kde-format msgid "Show all attachments inline (if possible)" msgstr "Показване на всички прикрепени файлове вградени (ако е възможно)" -#: viewer/viewer_p.cpp:1584 +#: viewer/viewer_p.cpp:1571 #, kde-format msgctxt "View->attachments->" msgid "&Hide" msgstr "&Скриване" -#: viewer/viewer_p.cpp:1587 +#: viewer/viewer_p.cpp:1574 #, kde-format msgid "Do not show attachments in the message viewer" msgstr "Скриване на прикрепените файлове при преглед на съобщение" -#: viewer/viewer_p.cpp:1592 +#: viewer/viewer_p.cpp:1579 #, kde-format msgctxt "View->attachments->" msgid "In Header Only" msgstr "" -#: viewer/viewer_p.cpp:1597 +#: viewer/viewer_p.cpp:1584 #, fuzzy, kde-format #| msgid "Show all attachments as icons. Click to see them." msgid "Show Attachments only in the header of the mail" msgstr "" "Показване на всички прикрепени файлове като икони. Щракнете за да ги видите." -#: viewer/viewer_p.cpp:1604 +#: viewer/viewer_p.cpp:1591 #, kde-format msgid "&Set Encoding" msgstr "&Кодова таблица" -#: viewer/viewer_p.cpp:1610 widgets/configurewidget.cpp:58 +#: viewer/viewer_p.cpp:1597 widgets/configurewidget.cpp:58 #: widgets/configurewidget.cpp:105 #, kde-format msgid "Auto" msgstr "Авто" -#: viewer/viewer_p.cpp:1620 +#: viewer/viewer_p.cpp:1607 #, fuzzy, kde-format #| msgid "&Copy To" msgid "Copy Text" msgstr "Копир&ане в" -#: viewer/viewer_p.cpp:1628 +#: viewer/viewer_p.cpp:1615 #, kde-format msgid "Select All Text" msgstr "Маркиране на целия текст" -#: viewer/viewer_p.cpp:1635 viewer/viewer_p.cpp:2124 +#: viewer/viewer_p.cpp:1622 viewer/viewer_p.cpp:2103 #, kde-format msgid "Copy Link Address" msgstr "Копиране на адреса на нишка" -#: viewer/viewer_p.cpp:1641 +#: viewer/viewer_p.cpp:1628 #, kde-format msgid "Open URL" msgstr "Отваряне на адрес (URL)" -#: viewer/viewer_p.cpp:1652 +#: viewer/viewer_p.cpp:1639 #, fuzzy, kde-format #| msgid "Message Structure Viewer" msgid "Show Message Structure" msgstr "Преглед структурата на съобщение" -#: viewer/viewer_p.cpp:1658 +#: viewer/viewer_p.cpp:1645 #, kde-format msgid "&View Source" msgstr "Преглед на &източника" -#: viewer/viewer_p.cpp:1665 +#: viewer/viewer_p.cpp:1652 #, fuzzy, kde-format #| msgid " message" #| msgid_plural " messages" msgid "&Save message..." msgstr " съобщение" -#: viewer/viewer_p.cpp:1671 +#: viewer/viewer_p.cpp:1658 #, fuzzy, kde-format #| msgid "&Save as Draft" msgid "&Save Display Format" msgstr "&Запис като чернова" -#: viewer/viewer_p.cpp:1676 +#: viewer/viewer_p.cpp:1663 #, fuzzy, kde-format #| msgid "&Save as Draft" msgid "&Reset Display Format" msgstr "&Запис като чернова" -#: viewer/viewer_p.cpp:1684 +#: viewer/viewer_p.cpp:1671 #, kde-format msgid "Scroll Message Up" msgstr "Превъртане нагоре" -#: viewer/viewer_p.cpp:1690 +#: viewer/viewer_p.cpp:1677 #, kde-format msgid "Scroll Message Down" msgstr "Превъртане надолу" -#: viewer/viewer_p.cpp:1696 +#: viewer/viewer_p.cpp:1683 #, kde-format msgid "Scroll Message Up (More)" msgstr "Превъртане нагоре" -#: viewer/viewer_p.cpp:1702 +#: viewer/viewer_p.cpp:1689 #, kde-format msgid "Scroll Message Down (More)" msgstr "Превъртане на долу" -#: viewer/viewer_p.cpp:1713 +#: viewer/viewer_p.cpp:1700 #, kde-format msgid "Toggle HTML Display Mode" msgstr "" -#: viewer/viewer_p.cpp:1719 +#: viewer/viewer_p.cpp:1706 #, kde-format msgid "Toggle display mode between HTML and plain text" msgstr "" -#: viewer/viewer_p.cpp:1722 +#: viewer/viewer_p.cpp:1709 #, fuzzy, kde-format #| msgid "Load External References" msgid "Load external references" msgstr "Зареждане на външни препратки" -#: viewer/viewer_p.cpp:1731 widgets/mailsourceviewtextbrowserwidget.cpp:154 +#: viewer/viewer_p.cpp:1718 widgets/mailsourceviewtextbrowserwidget.cpp:157 #, kde-format msgid "Speak Text" msgstr "" -#: viewer/viewer_p.cpp:1737 +#: viewer/viewer_p.cpp:1724 #, fuzzy, kde-format #| msgid "Choose Location" msgid "Copy Image Location" msgstr "Избор на местоположение" -#: viewer/viewer_p.cpp:1746 +#: viewer/viewer_p.cpp:1733 #, kde-format msgid "&Find in Message..." msgstr "Тър&сене в съобщение..." -#: viewer/viewer_p.cpp:1756 +#: viewer/viewer_p.cpp:1743 #, kde-format msgid "Disable Emoticon" msgstr "" -#: viewer/viewer_p.cpp:1781 +#: viewer/viewer_p.cpp:1768 #, kde-format msgid "Save &As..." msgstr "&Запис като..." -#: viewer/viewer_p.cpp:1793 +#: viewer/viewer_p.cpp:1780 #, kde-format msgid "Open With..." msgstr "Отваряне с..." -#: viewer/viewer_p.cpp:1801 +#: viewer/viewer_p.cpp:1788 #, kde-format msgid "Save All Attachments..." msgstr "Запис на всички прикрепени файлове..." -#: viewer/viewer_p.cpp:2041 +#: viewer/viewer_p.cpp:2020 #, kde-format msgid "The network is broken." msgstr "" -#: viewer/viewer_p.cpp:2041 viewer/viewer_p.cpp:2045 +#: viewer/viewer_p.cpp:2020 viewer/viewer_p.cpp:2024 #, kde-format msgid "Check Phishing URL" msgstr "" -#: viewer/viewer_p.cpp:2044 +#: viewer/viewer_p.cpp:2023 #, fuzzy, kde-format #| msgid "The signature file is not valid" msgid "The URL %1 is not valid." msgstr "Файлът за подпис е невалиден" -#: viewer/viewer_p.cpp:2066 +#: viewer/viewer_p.cpp:2045 #, kde-format msgid "This web site is a malware, do you want to continue to show it?" msgstr "" -#: viewer/viewer_p.cpp:2067 +#: viewer/viewer_p.cpp:2046 #, kde-format msgid "Malware" msgstr "" -#: viewer/viewer_p.cpp:2122 +#: viewer/viewer_p.cpp:2101 #, fuzzy, kde-format #| msgid "Email Address" msgid "Copy Email Address" msgstr "Е-поща" -#: viewer/viewer_p.cpp:2207 +#: viewer/viewer_p.cpp:2195 #, kde-format msgid "Message as Plain Text" msgstr "Съобщение като обикновен текст" -#: viewer/viewer_p.cpp:2406 +#: viewer/viewer_p.cpp:2390 #, fuzzy, kde-format #| msgid "Documentation" msgid "Print Document" msgstr "Documentation" -#: viewer/viewer_p.cpp:2492 +#: viewer/viewer_p.cpp:2441 #, fuzzy, kde-format #| msgctxt "Config->Composer->Attachments" #| msgid "A&ttachments" msgid "Attachments:" msgstr "&Прикрепени файлове" -#: viewer/viewer_p.cpp:2850 +#: viewer/viewer_p.cpp:2770 #, kde-format msgid "URL copied to clipboard." msgstr "Адресът (URL) е копиран в буфера." -#: viewer/viewer_p.cpp:3039 +#: viewer/viewer_p.cpp:2911 #, fuzzy, kde-format #| msgid "Message was signed by %1." msgid "Message loading failed: %1." msgstr "Съобщението е подписано от %1." -#: viewer/viewer_p.cpp:3044 +#: viewer/viewer_p.cpp:2916 #, fuzzy, kde-format #| msgid "Message was signed by %1." msgid "Message not found." @@ -2112,7 +2038,7 @@ msgid "Do not ask again" msgstr "" -#: widgets/htmlstatusbar.cpp:147 +#: widgets/htmlstatusbar.cpp:129 #, fuzzy, kde-format #| msgid "" #| "
    H
    T
    M
    L

    M
    e
    s

    H
    T
    M
    L
    " "
    с
    ъ
    о
    б
    щ
    е
    н
    и
    е
    " -#: widgets/htmlstatusbar.cpp:151 +#: widgets/htmlstatusbar.cpp:133 #, fuzzy, kde-format #| msgid "" #| "
    N
    o

    H
    T
    M
    L

    M

    H
    T
    M
    L

    с
    ъ
    о
    б
    щ
    е
    н
    и
    е" -#: widgets/htmlstatusbar.cpp:156 +#: widgets/htmlstatusbar.cpp:138 #, fuzzy, kde-format #| msgid "" #| "
    H
    T
    M
    L

    M
    e
    s

    H
    T
    M
    L
    " "
    с
    ъ
    о
    б
    щ
    е
    н
    и
    е
    " -#: widgets/htmlstatusbar.cpp:160 +#: widgets/htmlstatusbar.cpp:142 #, fuzzy, kde-format #| msgid "" #| "
    N
    o

    H
    T
    M
    L

    M

    H
    T
    M
    L

    с
    ъ
    о
    б
    щ
    е
    н
    и
    е" -#: widgets/htmlstatusbar.cpp:174 +#: widgets/htmlstatusbar.cpp:156 #, kde-format msgid "Click to toggle between HTML, plain text and calendar." msgstr "" @@ -2215,7 +2141,21 @@ msgid "HTML code for displaying the message to the user" msgstr "" -#: widgets/openattachmentfolderwidget.cpp:49 +#: widgets/mailtrackingwarningwidget.cpp:33 +#, kde-format +msgid "" +"Some Mail Tracker was found and was blocked.
    (Details...)" +msgstr "" + +#: widgets/mailtrackingwarningwidget.cpp:60 +#, kde-format +msgid "1 tracker from the company %2 (%3)" +msgid_plural "%1 trackers from the company %2 (%3)" +msgstr[0] "" +msgstr[1] "" + +#: widgets/openattachmentfolderwidget.cpp:48 #, kde-format msgid "Open folder where attachment was saved" msgstr "" @@ -2249,6 +2189,62 @@ msgstr "Пре&дишна карта" #, fuzzy +#~| msgid "Show Details" +#~ msgid "Hide full \"To\" list" +#~ msgstr "Показване на подробности" + +#, fuzzy +#~| msgid "Show Details" +#~ msgid "Show full \"To\" list" +#~ msgstr "Показване на подробности" + +#, fuzzy +#~| msgid "Show Details" +#~ msgid "Hide full \"Cc\" list" +#~ msgstr "Показване на подробности" + +#, fuzzy +#~| msgid "Show Details" +#~ msgid "Show full \"Cc\" list" +#~ msgstr "Показване на подробности" + +#, fuzzy +#~| msgid "Save Attachment As" +#~ msgid "Hide attachment list." +#~ msgstr "Запис на прикрепения файл като" + +#, fuzzy +#~| msgid "Show attachment icon" +#~ msgid "Show attachment list." +#~ msgstr "Показване на иконата за прикрепен файл" + +#~ msgid "" +#~ "Modifying an attachment might invalidate any digital signature on this " +#~ "message." +#~ msgstr "" +#~ "Промяната на прикрепения файл може да направи невалиден електронния " +#~ "подпис на съобщението." + +#~ msgid "Edit Attachment" +#~ msgstr "Редактиране на прикрепен файл" + +#~ msgid "Edit" +#~ msgstr "Редактиране" + +#~ msgid "Allow to edit attachments of existing mails." +#~ msgstr "Позволение за редактиране на писмата." + +#, fuzzy +#~| msgid "Show HTML stat&us bar" +#~ msgid "Show HTML Side Bar" +#~ msgstr "Показване на &HTML лентата за състоянието" + +#, fuzzy +#~| msgid "Show HTML stat&us bar" +#~ msgid "Show &HTML Side Bar" +#~ msgstr "Показване на &HTML лентата за състоянието" + +#, fuzzy #~| msgid "Show user agent in fancy headers" #~ msgid "Show user agent" #~ msgstr "Показване на потребителския агент в декорираните заглавни части" diff -Nru kf5-messagelib-17.12.3/po/bg/libmimetreeparser.po kf5-messagelib-18.04.3/po/bg/libmimetreeparser.po --- kf5-messagelib-17.12.3/po/bg/libmimetreeparser.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/bg/libmimetreeparser.po 2018-07-10 00:15:57.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: kmail\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-10-30 03:12+0100\n" +"POT-Creation-Date: 2017-11-15 05:55+0100\n" "PO-Revision-Date: 2008-08-07 11:06+0000\n" "Last-Translator: Zlatko Popov \n" "Language-Team: Bulgarian \n" @@ -18,7 +18,7 @@ "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: src/messagepart.cpp:415 +#: src/messagepart.cpp:423 #, fuzzy, kde-format #| msgctxt "Missing profile name placeholder" #| msgid "Unnamed" @@ -26,29 +26,29 @@ msgid "Unnamed" msgstr "Без име" -#: src/messagepart.cpp:787 src/messagepart.cpp:812 src/messagepart.cpp:1108 +#: src/messagepart.cpp:693 src/messagepart.cpp:718 src/messagepart.cpp:1024 #, kde-format msgid "Wrong Crypto Plug-In." msgstr "Грешна приставка за шифроване." -#: src/messagepart.cpp:871 src/messagepart.cpp:1298 +#: src/messagepart.cpp:777 src/messagepart.cpp:1219 #, kde-format msgid "No appropriate crypto plug-in was found." msgstr "Не е открита подходяща приставка за шифроване." -#: src/messagepart.cpp:874 +#: src/messagepart.cpp:780 #, kde-format msgctxt "%1 is either 'OpenPGP' or 'S/MIME'" msgid "No %1 plug-in was found." msgstr "Не е открита приставката %1." -#: src/messagepart.cpp:878 +#: src/messagepart.cpp:784 #, fuzzy, kde-format #| msgid "Crypto plug-in \"%1\" cannot verify signatures." msgid "Crypto plug-in \"%1\" cannot verify signatures." msgstr "Приставката за шифроване \"%1\" не може да провери подписите." -#: src/messagepart.cpp:881 +#: src/messagepart.cpp:787 #, kde-format msgid "" "The message is signed, but the validity of the signature cannot be verified." @@ -57,17 +57,17 @@ "Съобщението е подписано, но валидността на подписа не може да бъде проверена." "
    Причина: %1" -#: src/messagepart.cpp:1300 +#: src/messagepart.cpp:1221 #, kde-format msgid "Crypto plug-in \"%1\" cannot decrypt messages." msgstr "Приставката за шифроване \"%1\" не може да разшифрова съобщенията." -#: src/messagepart.cpp:1303 +#: src/messagepart.cpp:1224 #, kde-format msgid "Crypto plug-in \"%1\" could not decrypt the data." msgstr "Приставката за шифроване \"%1\" не може да разшифрова данните." -#: src/messagepart.cpp:1305 +#: src/messagepart.cpp:1226 #, kde-format msgid "Error: %1" msgstr "Грешка: %1" diff -Nru kf5-messagelib-17.12.3/po/bs/libmessagecomposer.po kf5-messagelib-18.04.3/po/bs/libmessagecomposer.po --- kf5-messagelib-17.12.3/po/bs/libmessagecomposer.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/bs/libmessagecomposer.po 2018-07-10 00:15:57.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: libmessagecomposer.po\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-11-29 08:30+0100\n" +"POT-Creation-Date: 2018-03-21 06:23+0100\n" "PO-Revision-Date: 2014-01-31 19:04+0100\n" "Last-Translator: Samir Ribić \n" "Language-Team: bs \n" @@ -98,7 +98,7 @@ msgstr "Priloži" #: attachment/attachmentcontrollerbase.cpp:460 -#: composer/composerviewbase.cpp:1706 +#: composer/composerviewbase.cpp:1698 #, kde-format msgid "&Attach File..." msgstr "&Prikači datoteku..." @@ -195,41 +195,41 @@ msgid "Reload" msgstr "" -#: attachment/attachmentcontrollerbase.cpp:658 -#: attachment/attachmentcontrollerbase.cpp:687 -#: attachment/attachmentcontrollerbase.cpp:745 +#: attachment/attachmentcontrollerbase.cpp:657 +#: attachment/attachmentcontrollerbase.cpp:686 +#: attachment/attachmentcontrollerbase.cpp:743 #, kde-format msgid "KMail was unable to write the attachment to a temporary file." msgstr "KMail nijemogao da napiše prilog na privremenu datoteku." -#: attachment/attachmentcontrollerbase.cpp:659 -#: attachment/attachmentcontrollerbase.cpp:688 -#: attachment/attachmentcontrollerbase.cpp:705 +#: attachment/attachmentcontrollerbase.cpp:658 +#: attachment/attachmentcontrollerbase.cpp:687 +#: attachment/attachmentcontrollerbase.cpp:704 #, kde-format msgid "Unable to open attachment" msgstr "Nije moguće otvoriti prilog" -#: attachment/attachmentcontrollerbase.cpp:704 +#: attachment/attachmentcontrollerbase.cpp:703 #, kde-format msgid "KMail was unable to open the attachment." msgstr "KMail nijemogao da otvori prilog" -#: attachment/attachmentcontrollerbase.cpp:746 +#: attachment/attachmentcontrollerbase.cpp:744 #, kde-format msgid "Unable to edit attachment" msgstr "Ne mogu da uredim prilog" -#: attachment/attachmentcontrollerbase.cpp:788 +#: attachment/attachmentcontrollerbase.cpp:786 #, kde-format msgid "unnamed" msgstr "Bez naziva" -#: attachment/attachmentcontrollerbase.cpp:791 +#: attachment/attachmentcontrollerbase.cpp:789 #, kde-format msgid "Save Attachment As" msgstr "Snimi prilog kao" -#: attachment/attachmentcontrollerbase.cpp:814 +#: attachment/attachmentcontrollerbase.cpp:812 #, kde-format msgid "" "File %1 exists.\n" @@ -238,58 +238,58 @@ "Datoteka %1 postoji.\n" "Želite li je zamijeniti?" -#: attachment/attachmentcontrollerbase.cpp:814 +#: attachment/attachmentcontrollerbase.cpp:812 #, kde-format msgid "Save to File" msgstr "Snimi u datoteku" -#: attachment/attachmentcontrollerbase.cpp:814 +#: attachment/attachmentcontrollerbase.cpp:812 #, kde-format msgid "&Replace" msgstr "&Zamijeni" -#: attachment/attachmentcontrollerbase.cpp:841 -#: attachment/attachmentcontrollerbase.cpp:900 +#: attachment/attachmentcontrollerbase.cpp:839 +#: attachment/attachmentcontrollerbase.cpp:898 #, fuzzy, kde-format #| msgid "Do you really want to attach this directory \"%1\" ?" msgid "Do you really want to attach this directory \"%1\"?" msgstr "Da li želite pridružiti direktorij \"%1\" ?" -#: attachment/attachmentcontrollerbase.cpp:842 -#: attachment/attachmentcontrollerbase.cpp:901 +#: attachment/attachmentcontrollerbase.cpp:840 +#: attachment/attachmentcontrollerbase.cpp:899 #, fuzzy, kde-format #| msgid "Attach directory" msgctxt "@title:window" msgid "Attach directory" msgstr "Pridruži direktorij" -#: attachment/attachmentcontrollerbase.cpp:877 +#: attachment/attachmentcontrollerbase.cpp:875 #, fuzzy, kde-format #| msgid "Attach directory" msgctxt "@title:window" msgid "Attach Directory" msgstr "Pridruži direktorij" -#: attachment/attachmentcontrollerbase.cpp:889 +#: attachment/attachmentcontrollerbase.cpp:887 #, fuzzy, kde-format #| msgid "Attach File" msgctxt "@title:window" msgid "Attach File" msgstr "Dodaj datoteku" -#: attachment/attachmentcontrollerbase.cpp:929 +#: attachment/attachmentcontrollerbase.cpp:927 #, fuzzy, kde-format #| msgid "Failed to attach file" msgctxt "@title:window" msgid "Failed to attach file" msgstr "Neuspjelo prilaganje datoteke" -#: attachment/attachmentcontrollerbase.cpp:952 +#: attachment/attachmentcontrollerbase.cpp:950 #, kde-format msgid "Attach Public OpenPGP Key" msgstr "Priloži javni OpenPGP ključ" -#: attachment/attachmentcontrollerbase.cpp:953 +#: attachment/attachmentcontrollerbase.cpp:951 #, kde-format msgid "Select the public key which should be attached." msgstr "Izaberite javni ključi koji želite priložiti." @@ -353,42 +353,42 @@ msgid "Suggest Automatic Display" msgstr "Predloži automatski prikaz" -#: composer/composer.cpp:274 +#: composer/composer.cpp:263 #, kde-format msgid "No key data for recipients found." msgstr "Nema ključnih podataka za primaoce" -#: composer/composerviewbase.cpp:317 +#: composer/composerviewbase.cpp:308 #, kde-format msgid "&Keep markup, do not sign/encrypt" msgstr "Č&uvaj markup, nemoj potpisati/šifrovati" -#: composer/composerviewbase.cpp:318 +#: composer/composerviewbase.cpp:309 #, kde-format msgid "&Keep markup, do not encrypt" msgstr "Č&uvaj markup, nemoj šifrovati" -#: composer/composerviewbase.cpp:319 +#: composer/composerviewbase.cpp:310 #, kde-format msgid "&Keep markup, do not sign" msgstr "Č&uvaj markup, nemoj potpisati" -#: composer/composerviewbase.cpp:321 +#: composer/composerviewbase.cpp:312 #, kde-format msgid "Sign/Encrypt (delete markup)" msgstr "Potpiši/šifruj (obriši markup)" -#: composer/composerviewbase.cpp:322 +#: composer/composerviewbase.cpp:313 #, kde-format msgid "Encrypt (delete markup)" msgstr "Šifruj (obriši markup)" -#: composer/composerviewbase.cpp:323 +#: composer/composerviewbase.cpp:314 #, kde-format msgid "Sign (delete markup)" msgstr "Potpiši (obriši markup)" -#: composer/composerviewbase.cpp:325 +#: composer/composerviewbase.cpp:316 #, kde-format msgid "" "

    Inline signing/encrypting of HTML messages is not possible;

    do " @@ -397,38 +397,38 @@ "

    Nije moguće potpisivanje/šifrovanje HTML poruka u sastavu poruke.

    Želite li obrisati vaš markup?

    " -#: composer/composerviewbase.cpp:327 +#: composer/composerviewbase.cpp:318 #, kde-format msgid "Sign/Encrypt Message?" msgstr "Potpiši/šifriraj poruku?" -#: composer/composerviewbase.cpp:488 +#: composer/composerviewbase.cpp:479 #, kde-format msgid "It was not possible to create a message composer." msgstr "Nije moguće kreirati sastavljača poruka" -#: composer/composerviewbase.cpp:497 +#: composer/composerviewbase.cpp:488 #, kde-format msgid "Do you want to resize images?" msgstr "Želite li prmijeniti veličinu slike" -#: composer/composerviewbase.cpp:498 +#: composer/composerviewbase.cpp:489 #, kde-format msgid "Auto Resize Images" msgstr "Automatski promijeni veličine slike" -#: composer/composerviewbase.cpp:677 composer/composerviewbase.cpp:691 -#: composer/composerviewbase.cpp:712 +#: composer/composerviewbase.cpp:668 composer/composerviewbase.cpp:682 +#: composer/composerviewbase.cpp:703 #, kde-format msgid "Failed to resolve keys. Please report a bug." msgstr "Neuspjelo razrješenje ključeva, molim prijavite grešku" -#: composer/composerviewbase.cpp:897 composer/composerviewbase.cpp:1165 +#: composer/composerviewbase.cpp:888 composer/composerviewbase.cpp:1156 #, kde-format msgid "Job cancelled by the user" msgstr "Korisnik je otkazao posao" -#: composer/composerviewbase.cpp:902 +#: composer/composerviewbase.cpp:893 #, kde-format msgid "" "Could not compose message: %1 \n" @@ -437,37 +437,37 @@ "Ne mogu sastaviti poruku: %1 \n" " Molim prijavite ovu grešku" -#: composer/composerviewbase.cpp:904 +#: composer/composerviewbase.cpp:895 #, kde-format msgid "Could not compose message: %1" msgstr "Ne mogu sastaviti poruku: %1" -#: composer/composerviewbase.cpp:980 +#: composer/composerviewbase.cpp:971 #, kde-format msgid "There were problems trying to queue the message for sending: %1" msgstr "Došlo je do problema u pokušaju stavljanja poruke u red za slanje: %1" -#: composer/composerviewbase.cpp:1168 +#: composer/composerviewbase.cpp:1159 #, kde-format msgid "Could not autosave message: %1" msgstr "Ne mogu automatski snimiti poruku: %1" -#: composer/composerviewbase.cpp:1188 +#: composer/composerviewbase.cpp:1179 #, kde-format msgid "Could not write all data to file." msgstr "Ne mogu pisati sve podatke u datoteku." -#: composer/composerviewbase.cpp:1191 +#: composer/composerviewbase.cpp:1182 #, kde-format msgid "Could not finalize the file." msgstr "Ne mogu finalizirati datoteku" -#: composer/composerviewbase.cpp:1195 +#: composer/composerviewbase.cpp:1186 #, kde-format msgid "Could not open file." msgstr "Ne mogu da otvorim datoteku." -#: composer/composerviewbase.cpp:1201 +#: composer/composerviewbase.cpp:1192 #, kde-format msgid "" "Autosaving the message as %1 failed.\n" @@ -478,17 +478,17 @@ "%2\n" "Razlog: %3" -#: composer/composerviewbase.cpp:1207 +#: composer/composerviewbase.cpp:1198 #, kde-format msgid "Autosaving Message Failed" msgstr "Automatsko snimanje poruke neuspjelo" -#: composer/composerviewbase.cpp:1295 +#: composer/composerviewbase.cpp:1286 #, kde-format msgid "Failed to save the message: %1" msgstr "Neuspjelo snimanje poruke: %1" -#: composer/composerviewbase.cpp:1702 +#: composer/composerviewbase.cpp:1694 #, kde-format msgid "" "The message you have composed seems to refer to an attached file but you " @@ -499,17 +499,17 @@ "zaboravili zakačiti.\n" "Želite li sada priložiti neku datoteku vašoj poruci?" -#: composer/composerviewbase.cpp:1705 +#: composer/composerviewbase.cpp:1697 #, kde-format msgid "File Attachment Reminder" msgstr "Podsjetnik za prilog" -#: composer/composerviewbase.cpp:1707 +#: composer/composerviewbase.cpp:1699 #, kde-format msgid "&Send as Is" msgstr "Pošalji &kao što jeste" -#: composer/composerviewbase.cpp:1759 +#: composer/composerviewbase.cpp:1751 #, kde-format msgid "" "Examination of the recipient's signing preferences yielded that you be asked " @@ -520,23 +520,23 @@ "potpisati ovu poruku.\n" "Potpisati ovu poruku?" -#: composer/composerviewbase.cpp:1764 composer/composerviewbase.cpp:1793 +#: composer/composerviewbase.cpp:1756 composer/composerviewbase.cpp:1785 #, kde-format msgid "Sign Message?" msgstr "Potpiši poruku?" -#: composer/composerviewbase.cpp:1765 composer/composerviewbase.cpp:1794 +#: composer/composerviewbase.cpp:1757 composer/composerviewbase.cpp:1786 #, kde-format msgctxt "to sign" msgid "&Sign" msgstr "&Potpiši" -#: composer/composerviewbase.cpp:1766 composer/composerviewbase.cpp:1795 +#: composer/composerviewbase.cpp:1758 composer/composerviewbase.cpp:1787 #, kde-format msgid "Do &Not Sign" msgstr "&Ne potpisuj" -#: composer/composerviewbase.cpp:1789 +#: composer/composerviewbase.cpp:1781 #, kde-format msgid "" "There are conflicting signing preferences for these recipients.\n" @@ -545,7 +545,7 @@ "Postavke potpisivanja za ove primatelje su u konfliktu.\n" "Želite li potpisati poruku?" -#: composer/composerviewbase.cpp:1817 +#: composer/composerviewbase.cpp:1809 #, kde-format msgid "" "You have requested to sign this message, but no valid signing keys have been " @@ -554,17 +554,17 @@ "Tražili ste potpisivanje poruke, ali nijedan važeći ključ za potpisivanje " "nije podešen za ovaj identitet." -#: composer/composerviewbase.cpp:1821 +#: composer/composerviewbase.cpp:1813 #, kde-format msgid "Send Unsigned?" msgstr "Poslati nepotpisano?" -#: composer/composerviewbase.cpp:1822 +#: composer/composerviewbase.cpp:1814 #, kde-format msgid "Send &Unsigned" msgstr "Pošalji &nepotpisano" -#: composer/composerviewbase.cpp:1839 +#: composer/composerviewbase.cpp:1831 #, kde-format msgid "" "Some parts of this message will not be signed.\n" @@ -575,7 +575,7 @@ "Slanje samo djelomično potpisane poruke može kršiti politiku sajta.\n" "Da li da umjesto toga potpišem sve dijelove?" -#: composer/composerviewbase.cpp:1842 +#: composer/composerviewbase.cpp:1834 #, kde-format msgid "" "This message will not be signed.\n" @@ -586,27 +586,27 @@ "Slanje nepotpisane poruke može kršiti politiku sajta.\n" "Da ipak potpišem poruku?" -#: composer/composerviewbase.cpp:1846 +#: composer/composerviewbase.cpp:1838 #, kde-format msgid "&Sign All Parts" msgstr "&Potpiši sve dijelove" -#: composer/composerviewbase.cpp:1846 +#: composer/composerviewbase.cpp:1838 #, kde-format msgid "&Sign" msgstr "&Potpiši" -#: composer/composerviewbase.cpp:1848 +#: composer/composerviewbase.cpp:1840 #, kde-format msgid "Unsigned-Message Warning" msgstr "Upozorenje o nepotpisanoj poruci" -#: composer/composerviewbase.cpp:1850 +#: composer/composerviewbase.cpp:1842 #, kde-format msgid "Send &As Is" msgstr "Pošalji &kao što jeste" -#: composer/composerviewbase.cpp:1895 +#: composer/composerviewbase.cpp:1887 #, kde-format msgid "" "Valid trusted encryption keys were found for all recipients.\n" @@ -615,7 +615,7 @@ "Pronađeni su ispravni povjerljivi ključevi za šifrovanje za sve primatelje.\n" "Da šifrujem ovu poruku?" -#: composer/composerviewbase.cpp:1897 +#: composer/composerviewbase.cpp:1889 #, kde-format msgid "" "Examination of the recipient's encryption preferences yielded that you be " @@ -626,34 +626,34 @@ "da li želite šifrovati ovu poruku ili ne.\n" "Želite li šifrovati poruku?" -#: composer/composerviewbase.cpp:1902 composer/composerviewbase.cpp:1935 +#: composer/composerviewbase.cpp:1894 composer/composerviewbase.cpp:1927 #, kde-format msgid "Encrypt Message?" msgstr "Šifrirati poruku?" -#: composer/composerviewbase.cpp:1904 +#: composer/composerviewbase.cpp:1896 #, kde-format msgid "Sign && &Encrypt" msgstr "Potpiši i &Šifruj" -#: composer/composerviewbase.cpp:1905 composer/composerviewbase.cpp:1936 -#: composer/composerviewbase.cpp:1991 composer/keyresolver.cpp:1653 -#: composer/keyresolver.cpp:1696 +#: composer/composerviewbase.cpp:1897 composer/composerviewbase.cpp:1928 +#: composer/composerviewbase.cpp:1983 composer/keyresolver.cpp:1633 +#: composer/keyresolver.cpp:1676 #, kde-format msgid "&Encrypt" msgstr "&Šifruj" -#: composer/composerviewbase.cpp:1907 composer/composerviewbase.cpp:1996 +#: composer/composerviewbase.cpp:1899 composer/composerviewbase.cpp:1988 #, kde-format msgid "&Sign Only" msgstr "&Samo potpiši" -#: composer/composerviewbase.cpp:1908 composer/composerviewbase.cpp:1997 +#: composer/composerviewbase.cpp:1900 composer/composerviewbase.cpp:1989 #, kde-format msgid "&Send As-Is" msgstr "Pošalji &kao što jeste" -#: composer/composerviewbase.cpp:1931 +#: composer/composerviewbase.cpp:1923 #, kde-format msgid "" "There are conflicting encryption preferences for these recipients.\n" @@ -662,12 +662,12 @@ "

    Postavke enkripcije su u konfliktu!

    Da li poruka treba biti " "enkriptovana?

    " -#: composer/composerviewbase.cpp:1937 +#: composer/composerviewbase.cpp:1929 #, kde-format msgid "Do &Not Encrypt" msgstr "Ne &Šifruj" -#: composer/composerviewbase.cpp:1959 +#: composer/composerviewbase.cpp:1951 #, kde-format msgid "" "You have requested to encrypt this message, and to encrypt a copy to " @@ -678,17 +678,17 @@ "ali za ovaj identitet nije konfigurisan nijedan ispravan provjerljiv ključ " "enkripcije." -#: composer/composerviewbase.cpp:1964 +#: composer/composerviewbase.cpp:1956 #, kde-format msgid "Send Unencrypted?" msgstr "Poslati &nešifrovano?" -#: composer/composerviewbase.cpp:1965 composer/keyresolver.cpp:1678 +#: composer/composerviewbase.cpp:1957 composer/keyresolver.cpp:1658 #, kde-format msgid "Send &Unencrypted" msgstr "Pošalji &nešifrovano" -#: composer/composerviewbase.cpp:1982 +#: composer/composerviewbase.cpp:1974 #, kde-format msgid "" "Some parts of this message will not be encrypted.\n" @@ -701,7 +701,7 @@ "ili procuriti osjetljive informacije.\n" "Da li da umjesto toga šifrujem sve dijelove?" -#: composer/composerviewbase.cpp:1986 +#: composer/composerviewbase.cpp:1978 #, kde-format msgid "" "This message will not be encrypted.\n" @@ -714,17 +714,17 @@ "osjetljive informacije.\n" "Da umjesto toga šifrujem poruke?" -#: composer/composerviewbase.cpp:1991 +#: composer/composerviewbase.cpp:1983 #, kde-format msgid "&Encrypt All Parts" msgstr "&Šifruj sve dijelove" -#: composer/composerviewbase.cpp:1993 +#: composer/composerviewbase.cpp:1985 #, kde-format msgid "Unencrypted Message Warning" msgstr "Upozorenje za nešifrovane poruke" -#: composer/keyresolver.cpp:361 +#: composer/keyresolver.cpp:341 #, kde-format msgid "" "One or more of your configured OpenPGP encryption keys or S/MIME " @@ -733,7 +733,7 @@ "Jednom ili više podešenih OpenPGP ključeva za šifrovanje ili S/MIME " "sertifikata ne vjeruje se u potpunosti za šifrovanje." -#: composer/keyresolver.cpp:364 +#: composer/keyresolver.cpp:344 #, kde-format msgid "" "One or more of the OpenPGP encryption keys or S/MIME certificates for " @@ -742,7 +742,7 @@ "Jedan ili više OpenPGP šifriranih ključeva ili S/MIME potvrda za primaoce " "\"%1\" nije upotpunosti povjerljiv za šifriranje." -#: composer/keyresolver.cpp:370 +#: composer/keyresolver.cpp:350 #, kde-format msgid "" "\n" @@ -751,7 +751,7 @@ "\n" "Sljedećim ključevima vjeruje se malo: \n" -#: composer/keyresolver.cpp:374 +#: composer/keyresolver.cpp:354 #, kde-format msgid "" "\n" @@ -760,7 +760,7 @@ "\n" "Nivo povjerenja sljedećim ključevima ili sertifikatima nije poznat: \n" -#: composer/keyresolver.cpp:378 +#: composer/keyresolver.cpp:358 #, kde-format msgid "" "\n" @@ -769,12 +769,12 @@ "\n" "Sljedeći ključevi ili potvrde su opozvani: \n" -#: composer/keyresolver.cpp:382 +#: composer/keyresolver.cpp:362 #, kde-format msgid "Not Fully Trusted Encryption Keys" msgstr "Ključevi za šifrovanje ne u potpunosti od povjerenja" -#: composer/keyresolver.cpp:714 +#: composer/keyresolver.cpp:694 #, kde-format msgid "" "

    Your OpenPGP signing key

    %2 (KeyID 0x%3)Vaš OpenPGP ključ za potpisivanje

    %2 (KeyID 0x" "%3)

    je istekao prije %1 dana.

    " -#: composer/keyresolver.cpp:718 +#: composer/keyresolver.cpp:698 #, kde-format msgid "" "

    Your OpenPGP encryption key

    %2 (KeyID 0x%3)Vaš OpenPGP ključ za šifrovanje

    %2 (KeyID 0x" "%3)

    je istekao prije %1 dana.

    " -#: composer/keyresolver.cpp:722 +#: composer/keyresolver.cpp:702 #, kde-format msgid "" "

    The OpenPGP key for

    %2 (KeyID 0x%3)The OpenPGP key for

    %2 (KeyID 0x%3)

    istekao prije %1 dana.

    " -#: composer/keyresolver.cpp:733 +#: composer/keyresolver.cpp:713 #, kde-format msgid "" "

    The root certificate

    %4

    for your S/MIME " @@ -851,7 +851,7 @@ "certifikat potpisivanja

    %2 (serijski broj %3)

    istekao prije %1 dana.

    " -#: composer/keyresolver.cpp:739 +#: composer/keyresolver.cpp:719 #, kde-format msgid "" "

    The root certificate

    %4

    for your S/MIME " @@ -874,7 +874,7 @@ "certifikat šifrovanja

    %2 (serijski broj%3)

    istekao prije %1 dana.

    " -#: composer/keyresolver.cpp:745 +#: composer/keyresolver.cpp:725 #, kde-format msgid "" "

    The root certificate

    %4

    for S/MIME " @@ -897,7 +897,7 @@ "certifikat

    %2 (serijski broj %3)

    istekao " "prije %1 dana.

    " -#: composer/keyresolver.cpp:752 +#: composer/keyresolver.cpp:732 #, kde-format msgid "" "

    The intermediate CA certificate

    %4

    for " @@ -920,7 +920,7 @@ "certifikat potpisivanja

    %2 (serijski broj %3)

    istekao prije %1 dana.

    " -#: composer/keyresolver.cpp:758 +#: composer/keyresolver.cpp:738 #, kde-format msgid "" "

    The intermediate CA certificate

    %4

    for " @@ -943,7 +943,7 @@ "certifikat šifrovanja

    %2 (serijski broj %3)

    istekao prije %1 dana.

    " -#: composer/keyresolver.cpp:764 +#: composer/keyresolver.cpp:744 #, kde-format msgid "" "

    The intermediate CA certificate

    %4

    for S/" @@ -966,7 +966,7 @@ "certifikat

    %2 (serijski broj %3)

    istekao " "prije %1 dana.

    " -#: composer/keyresolver.cpp:776 +#: composer/keyresolver.cpp:756 #, kde-format msgid "" "

    Your S/MIME signing certificate

    %2 (serial " @@ -984,7 +984,7 @@ "

    Vaš S/MIME certifikat za potpisivanje

    %2 " "(serijski broj %3)

    istekao prije %1 dana.

    " -#: composer/keyresolver.cpp:780 +#: composer/keyresolver.cpp:760 #, kde-format msgid "" "

    Your S/MIME encryption certificate

    %2 (serial " @@ -1002,7 +1002,7 @@ "

    Vaš S/MIME certifikat za šifrovanje

    %2 " "(serijski broj %3)

    istekao prije %1 dana.

    " -#: composer/keyresolver.cpp:784 +#: composer/keyresolver.cpp:764 #, kde-format msgid "" "

    The S/MIME certificate for

    %2 (serial number " @@ -1020,17 +1020,17 @@ "

    S/MIME certifikat

    %2 (serijski broj %3)

    istekao prije %1 dana.

    " -#: composer/keyresolver.cpp:795 +#: composer/keyresolver.cpp:775 #, kde-format msgid "OpenPGP Key Expired" msgstr "OpenPGP ključ je istekao" -#: composer/keyresolver.cpp:796 +#: composer/keyresolver.cpp:776 #, kde-format msgid "S/MIME Certificate Expired" msgstr "S/MIME certifikat je istekao" -#: composer/keyresolver.cpp:820 +#: composer/keyresolver.cpp:800 #, kde-format msgid "" "

    Your OpenPGP signing key

    %2 (KeyID 0x%3)Vaš OpenPGP ključ za potpisivanje

    %2 (KeyID " "0x%3)

    ističe za manje od %1 dana.

    " -#: composer/keyresolver.cpp:824 +#: composer/keyresolver.cpp:804 #, kde-format msgid "" "

    Your OpenPGP encryption key

    %2 (KeyID 0x" @@ -1066,7 +1066,7 @@ "

    Vaš OpenPGP ključ za šifovanje

    %2 (KeyID 0x" "%3)

    ističe za manje od %1 dana.

    " -#: composer/keyresolver.cpp:828 +#: composer/keyresolver.cpp:808 #, kde-format msgid "" "

    The OpenPGP key for

    %2 (KeyID 0x%3)Vaš OpenPGP ključ za

    %2 (KeyID 0x%3)

    ističe za manje od %1 dana.

    " -#: composer/keyresolver.cpp:839 +#: composer/keyresolver.cpp:819 #, kde-format msgid "" "

    The root certificate

    %4

    for your S/" @@ -1107,7 +1107,7 @@ "MIME certifikat za potpisivanje

    %2 (serijski " "broj %3)

    ističe za manje od %1 dana.

    " -#: composer/keyresolver.cpp:845 +#: composer/keyresolver.cpp:825 #, kde-format msgid "" "

    The root certificate

    %4

    for your S/" @@ -1130,7 +1130,7 @@ "MIME certifikat za šifrovanje

    %2 (serijski " "broj %3)

    ističe za manje od %1 dana.

    " -#: composer/keyresolver.cpp:851 +#: composer/keyresolver.cpp:831 #, kde-format msgid "" "

    The root certificate

    %4

    for S/MIME " @@ -1153,7 +1153,7 @@ "certifikat

    %2 (serijski broj %3)

    ističe " "za manje od %1 dana.

    " -#: composer/keyresolver.cpp:858 +#: composer/keyresolver.cpp:838 #, kde-format msgid "" "

    The intermediate CA certificate

    %4

    %2 (serijski broj " "%3)

    ističe za manje od %1 dana.

    " -#: composer/keyresolver.cpp:864 +#: composer/keyresolver.cpp:844 #, kde-format msgid "" "

    The intermediate CA certificate

    %4

    %2 (serijski broj " "%3)

    ističe za manje od %1 dana.

    " -#: composer/keyresolver.cpp:870 +#: composer/keyresolver.cpp:850 #, kde-format msgid "" "

    The intermediate CA certificate

    %4

    %2 (serijski broj %3)

    ističe " "za manje od %1 dana.

    " -#: composer/keyresolver.cpp:882 +#: composer/keyresolver.cpp:862 #, kde-format msgid "" "

    Your S/MIME signing certificate

    %2 (serial " @@ -1240,7 +1240,7 @@ "

    Vaš S/MIME certifikat za potpisivanje

    %2 " "(serijski broj %3)

    ističe za manje od %1 dana.

    " -#: composer/keyresolver.cpp:886 +#: composer/keyresolver.cpp:866 #, kde-format msgid "" "

    Your S/MIME encryption certificate

    %2 " @@ -1258,7 +1258,7 @@ "

    Vaš S/MIME certifikat za šifrovanje

    %2 " "(serijski broj %3)

    ističe za manje od %1 dana.

    " -#: composer/keyresolver.cpp:890 +#: composer/keyresolver.cpp:870 #, kde-format msgid "" "

    The S/MIME certificate for

    %2 (serial " @@ -1276,17 +1276,17 @@ "

    The S/MIME certifikat for

    %2 (seriski broj " "%3)

    ističe za manje od %1 dana.

    " -#: composer/keyresolver.cpp:901 +#: composer/keyresolver.cpp:881 #, kde-format msgid "OpenPGP Key Expires Soon" msgstr "OpenPGP ključ ističe uskoro" -#: composer/keyresolver.cpp:902 +#: composer/keyresolver.cpp:882 #, kde-format msgid "S/MIME Certificate Expires Soon" msgstr "S/MIME certifikat ističe uskoro" -#: composer/keyresolver.cpp:941 +#: composer/keyresolver.cpp:921 #, kde-format msgid "" "One or more of your configured OpenPGP encryption keys or S/MIME " @@ -1303,13 +1303,13 @@ "Ako odlučite da nastavite, a ključevi budu potrebni kasnije, bićete upitani " "da navedete ključeve za upotrebu." -#: composer/keyresolver.cpp:949 composer/keyresolver.cpp:1325 -#: composer/keyresolver.cpp:1353 +#: composer/keyresolver.cpp:929 composer/keyresolver.cpp:1305 +#: composer/keyresolver.cpp:1333 #, kde-format msgid "Unusable Encryption Keys" msgstr "Neupotrebljivi ključevi za šifrovanje" -#: composer/keyresolver.cpp:989 +#: composer/keyresolver.cpp:969 #, kde-format msgid "" "One or more of your configured OpenPGP signing keys or S/MIME signing " @@ -1325,13 +1325,13 @@ "Ako odlučite da nastavite, a ključevi budu potrebni kasnije, bićete upitani " "da navedete ključeve za upotrebu." -#: composer/keyresolver.cpp:997 composer/keyresolver.cpp:1382 -#: composer/keyresolver.cpp:1400 +#: composer/keyresolver.cpp:977 composer/keyresolver.cpp:1362 +#: composer/keyresolver.cpp:1380 #, kde-format msgid "Unusable Signing Keys" msgstr "Neupotrebljivi ključevi za potpisivanje" -#: composer/keyresolver.cpp:1316 +#: composer/keyresolver.cpp:1296 #, kde-format msgid "" "Examination of recipient's encryption preferences yielded that the message " @@ -1347,7 +1347,7 @@ "Možete nastaviti bez šifrovanja samom sebi, ali imajte na umu da ako to " "uradite nećete moći čitati vlastite poruke." -#: composer/keyresolver.cpp:1344 +#: composer/keyresolver.cpp:1324 #, kde-format msgid "" "Examination of recipient's encryption preferences yielded that the message " @@ -1363,7 +1363,7 @@ "Možete nastaviti bez šifrovanja samom sebi, ali imajte na umu da ako to " "uradite nećete moći čitati vlastite poruke." -#: composer/keyresolver.cpp:1376 +#: composer/keyresolver.cpp:1356 #, kde-format msgid "" "Examination of recipient's signing preferences yielded that the message " @@ -1375,12 +1375,12 @@ "šifrovana koristeći OpenPGP, barem za neke od primatelja.\n" "Ali vi niste podesili ispravne OpenPGP ključeve za ovaj identitet." -#: composer/keyresolver.cpp:1383 +#: composer/keyresolver.cpp:1363 #, kde-format msgid "Do Not OpenPGP-Sign" msgstr "Ne potpisuj koristeći OpenPGP" -#: composer/keyresolver.cpp:1394 +#: composer/keyresolver.cpp:1374 #, kde-format msgid "" "Examination of recipient's signing preferences yielded that the message " @@ -1392,12 +1392,12 @@ "šifrovana koristeći S/MIME, barem za neke od primatelja.\n" "Ali vi niste podesili ispravne S/MIME ključeve za ovaj identitet." -#: composer/keyresolver.cpp:1401 +#: composer/keyresolver.cpp:1381 #, kde-format msgid "Do Not S/MIME-Sign" msgstr "Ne potpisuj koristeći S/MIME" -#: composer/keyresolver.cpp:1463 +#: composer/keyresolver.cpp:1443 #, kde-format msgid "" "Examination of recipient's signing preferences showed no common type of " @@ -1408,12 +1408,12 @@ "potpisa koje se poklapaju sa vašim dostupnim ključevima potpisa.\n" "Da pošaljem poruku bez potpisivanja?" -#: composer/keyresolver.cpp:1467 +#: composer/keyresolver.cpp:1447 #, kde-format msgid "No signing possible" msgstr "Nije moguće potpisivanje" -#: composer/keyresolver.cpp:1648 +#: composer/keyresolver.cpp:1628 #, kde-format msgid "" "You did not select an encryption key for yourself (encrypt to self). You " @@ -1422,13 +1422,13 @@ "Niste izabrali ključ kojim ćete šifrovati samim sebi (encrypt to self). " "Nećete moći dešifrovati vlastite poruke nakon što ih šifrujete." -#: composer/keyresolver.cpp:1652 composer/keyresolver.cpp:1677 -#: composer/keyresolver.cpp:1695 +#: composer/keyresolver.cpp:1632 composer/keyresolver.cpp:1657 +#: composer/keyresolver.cpp:1675 #, kde-format msgid "Missing Key Warning" msgstr "Upozorenje o nedostajućem ključu" -#: composer/keyresolver.cpp:1670 +#: composer/keyresolver.cpp:1650 #, kde-format msgid "" "You did not select an encryption key for the recipient of this message; " @@ -1437,7 +1437,7 @@ "Niste izabrali kripto-ključ za primaoca ove poruke; poruka zato neće biti " "šifrovana." -#: composer/keyresolver.cpp:1673 +#: composer/keyresolver.cpp:1653 #, kde-format msgid "" "You did not select an encryption key for any of the recipients of this " @@ -1446,7 +1446,7 @@ "Niste izabrali kripto-ključ ni za jednog od primalaca ove poruke; poruka " "zato neće biti šifrovana." -#: composer/keyresolver.cpp:1685 +#: composer/keyresolver.cpp:1665 #, kde-format msgid "" "You did not select an encryption key for one of the recipients: this person " @@ -1455,7 +1455,7 @@ "Niste izabrali ključ za šifrovanje za jednog od primatelja ove poruke. Ova " "osoba neće moći dešifrovati poruku ako je šifrujete." -#: composer/keyresolver.cpp:1688 +#: composer/keyresolver.cpp:1668 #, kde-format msgid "" "You did not select encryption keys for some of the recipients: these persons " @@ -1464,12 +1464,12 @@ "Niste izabrali ključ za šifrovanje za neke od primatelja ove poruke. Ove " "osobe neće moći dešifrovati poruku ako je šifrujete." -#: composer/keyresolver.cpp:1754 +#: composer/keyresolver.cpp:1734 #, kde-format msgid "Encryption Key Selection" msgstr "Izbor kriptografskog ključa" -#: composer/keyresolver.cpp:1801 +#: composer/keyresolver.cpp:1781 #, kde-format msgctxt "" "if in your language something like 'certificate(s)' is not possible please " @@ -1483,7 +1483,7 @@ "\n" "Molim ponovo odaberite certifikat(e) za ovog primaoca." -#: composer/keyresolver.cpp:1847 +#: composer/keyresolver.cpp:1827 #, kde-format msgctxt "" "if in your language something like 'certificate(s)' is not possible please " @@ -1500,7 +1500,7 @@ "certifikata na listi takođe možete tražiti spoljnje certifikate klikom na " "dugme: traži spoljnje certifikate." -#: composer/keyresolver.cpp:1857 +#: composer/keyresolver.cpp:1837 #, kde-format msgctxt "" "if in your language something like 'certificate(s)' is not possible please " @@ -1590,12 +1590,12 @@ msgid "Select Format..." msgstr "Odaberite format..." -#: imagescaling/imagescalingwidget.cpp:107 +#: imagescaling/imagescalingwidget.cpp:108 #, kde-format msgid "
    How does this work?" msgstr "Kako ovo radi?" -#: imagescaling/imagescalingwidget.cpp:120 +#: imagescaling/imagescalingwidget.cpp:121 #, kde-format msgid "" "

    Here you can define image filename. You can use:

    • %t set " @@ -1607,17 +1607,17 @@ "originalno ime
    • %e originalna ekstenzija
    • %x nova ekstenzija
    " -#: imagescaling/imagescalingwidget.cpp:174 +#: imagescaling/imagescalingwidget.cpp:175 #, kde-format msgid "Custom" msgstr "Proizvoljno" -#: imagescaling/imagescalingwidget.cpp:302 +#: imagescaling/imagescalingwidget.cpp:303 #, kde-format msgid "Please verify minimum and maximum values." msgstr "Molim provjerite minimalne i maksimalne vrijednosti" -#: imagescaling/imagescalingwidget.cpp:302 +#: imagescaling/imagescalingwidget.cpp:303 #, kde-format msgid "Error in minimum Maximum value" msgstr "Greška u minimalnoj vrijednosti Maksimuma" @@ -2421,6 +2421,11 @@ msgid "Mail dispatcher offline." msgstr "Prosljeđivač pošte nije na mreži." +#: widgets/dictionarycombobox.cpp:122 +#, kde-format +msgid "AutoDetect Language" +msgstr "" + #, fuzzy #~| msgid "Use recent addresses for autocompletion" #~ msgid "Use Baloo search for autocompletion" diff -Nru kf5-messagelib-17.12.3/po/bs/libmessagecore.po kf5-messagelib-18.04.3/po/bs/libmessagecore.po --- kf5-messagelib-17.12.3/po/bs/libmessagecore.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/bs/libmessagecore.po 2018-07-10 00:15:57.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: kdepim\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-09-15 03:37+0200\n" +"POT-Creation-Date: 2018-04-27 06:20+0200\n" "PO-Revision-Date: 2013-10-18 20:17+0000\n" "Last-Translator: Samir Ribić \n" "Language-Team: Bosnian \n" @@ -187,8 +187,8 @@ "

    Uključite ovu opciju ako želite da ovaj dio poruke bude šifriran.

    Dio će biti kodiran za primatelja ove poruke.

    " -#: attachment/attachmentpropertiesdialog.cpp:326 -#: attachment/attachmentpropertiesdialog.cpp:341 +#: attachment/attachmentpropertiesdialog.cpp:324 +#: attachment/attachmentpropertiesdialog.cpp:339 #, kde-format msgid "Attachment Properties" msgstr "Osobine priloga" @@ -293,7 +293,7 @@ "no limit)" msgstr "" -#: utils/stringutil.cpp:402 +#: utils/stringutil.cpp:384 #, kde-format msgctxt "signal that this email is defined in my identity" msgid "Me" diff -Nru kf5-messagelib-17.12.3/po/bs/libmessagelist.po kf5-messagelib-18.04.3/po/bs/libmessagelist.po --- kf5-messagelib-17.12.3/po/bs/libmessagelist.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/bs/libmessagelist.po 2018-07-10 00:15:57.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: kdepim\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-10-13 03:28+0200\n" +"POT-Creation-Date: 2018-05-04 06:21+0200\n" "PO-Revision-Date: 2014-02-08 00:09+0100\n" "Last-Translator: Samir Ribić \n" "Language-Team: Bosnian \n" @@ -20,114 +20,114 @@ "X-Launchpad-Export-Date: 2013-11-16 06:22+0000\n" "X-Generator: Launchpad (build 16831)\n" -#: core/aggregation.cpp:198 +#: core/aggregation.cpp:193 #, kde-format msgctxt "No grouping of messages" msgid "None" msgstr "Nikakvo" -#: core/aggregation.cpp:201 +#: core/aggregation.cpp:196 #, kde-format msgid "By Exact Date (of Thread Leaders)" msgstr "Po tačnom datumu (nitnog pokretača)" -#: core/aggregation.cpp:204 +#: core/aggregation.cpp:199 #, kde-format msgid "By Smart Date Ranges (of Thread Leaders)" msgstr "Po pametnom opsegu datumua(nitnog pokretača)" -#: core/aggregation.cpp:207 core/sortorder.cpp:89 +#: core/aggregation.cpp:202 core/sortorder.cpp:89 #, kde-format msgid "By Smart Sender/Receiver" msgstr "Prema pametnom pošiljaocu/primaocu" -#: core/aggregation.cpp:210 core/sortorder.cpp:87 +#: core/aggregation.cpp:205 core/sortorder.cpp:87 #, kde-format msgid "By Sender" msgstr "Prema pošiljaocu" -#: core/aggregation.cpp:213 core/sortorder.cpp:88 +#: core/aggregation.cpp:208 core/sortorder.cpp:88 #, kde-format msgid "By Receiver" msgstr "Prema primaocu" -#: core/aggregation.cpp:223 +#: core/aggregation.cpp:218 #, kde-format msgid "Never Expand Groups" msgstr "Nikad ne proširuj grupe" -#: core/aggregation.cpp:225 +#: core/aggregation.cpp:220 #, kde-format msgid "Expand Recent Groups" msgstr "Proširi posljednje grupe" -#: core/aggregation.cpp:227 +#: core/aggregation.cpp:222 #, kde-format msgid "Always Expand Groups" msgstr "Uvijek proširi grupe" -#: core/aggregation.cpp:234 +#: core/aggregation.cpp:229 #, kde-format msgctxt "No threading of messages" msgid "None" msgstr "Nikakvo" -#: core/aggregation.cpp:237 +#: core/aggregation.cpp:232 #, kde-format msgid "Perfect Only" msgstr "Samo savršene" -#: core/aggregation.cpp:240 +#: core/aggregation.cpp:235 #, kde-format msgid "Perfect and by References" msgstr "Savršene i po referenci" -#: core/aggregation.cpp:243 +#: core/aggregation.cpp:238 #, kde-format msgid "Perfect, by References and by Subject" msgstr "Savršene, po referenci i po predmetu" -#: core/aggregation.cpp:253 +#: core/aggregation.cpp:248 #, kde-format msgid "Topmost Message" msgstr "Najviša poruka" -#: core/aggregation.cpp:257 +#: core/aggregation.cpp:252 #, kde-format msgid "Most Recent Message" msgstr "Najsvježija poruka" -#: core/aggregation.cpp:268 +#: core/aggregation.cpp:263 #, kde-format msgid "Never Expand Threads" msgstr "Nikad ne proširuj niti" -#: core/aggregation.cpp:271 +#: core/aggregation.cpp:266 #, kde-format msgid "Expand Threads With Unread Messages" msgstr "Proširi niti sa nepročitanim porukama" -#: core/aggregation.cpp:274 +#: core/aggregation.cpp:269 #, kde-format msgid "Expand Threads With Unread or Important Messages" msgstr "Proširi niti sa nepročitanim i važnim porukama" -#: core/aggregation.cpp:277 +#: core/aggregation.cpp:272 #, kde-format msgid "Always Expand Threads" msgstr "Uvijek proširi niti" -#: core/aggregation.cpp:284 +#: core/aggregation.cpp:279 #, kde-format msgid "Favor Interactivity" msgstr "Preferiraj interaktivnost" -#: core/aggregation.cpp:287 +#: core/aggregation.cpp:282 #, kde-format msgid "Favor Speed" msgstr "Preferiraj brzinu" -#: core/aggregation.cpp:290 +#: core/aggregation.cpp:285 #, kde-format msgid "Batch Job (No Interactivity)" msgstr "Serijski posao (nema interaktivnosti)" @@ -455,7 +455,7 @@ msgstr "" "Pametna višelinijska i višeobjektna tema sa statusom na koji se može kliknuti" -#: core/manager.cpp:780 core/view.cpp:2372 core/view.cpp:2375 +#: core/manager.cpp:780 core/view.cpp:2368 core/view.cpp:2371 #, kde-format msgid "Status" msgstr "Stanje" @@ -851,53 +851,53 @@ msgid "Styled Joined Rectangles" msgstr "Oblikovani spojeni pravougaonici" -#: core/view.cpp:744 +#: core/view.cpp:740 #, kde-format msgid "Adjust Column Sizes" msgstr "Prilagodite veličine kolone" -#: core/view.cpp:748 +#: core/view.cpp:744 #, kde-format msgid "Show Default Columns" msgstr "Prikaži podrazumijevane kolone" -#: core/view.cpp:753 +#: core/view.cpp:749 #, kde-format msgid "Display Tooltips" msgstr "Prikaži savjete" -#: core/view.cpp:2353 core/view.cpp:2357 core/widgets/searchlinestatus.cpp:294 +#: core/view.cpp:2349 core/view.cpp:2353 core/widgets/searchlinestatus.cpp:310 #, kde-format msgid "From" msgstr "Od" -#: core/view.cpp:2354 core/view.cpp:2358 +#: core/view.cpp:2350 core/view.cpp:2354 #, kde-format msgctxt "Receiver of the email" msgid "To" msgstr "Za" -#: core/view.cpp:2355 core/view.cpp:2359 +#: core/view.cpp:2351 core/view.cpp:2355 #, kde-format msgid "Date" msgstr "Datum" -#: core/view.cpp:2373 core/view.cpp:2376 +#: core/view.cpp:2369 core/view.cpp:2372 #, kde-format msgid "Size" msgstr "Veličina" -#: core/view.cpp:2381 core/view.cpp:2383 +#: core/view.cpp:2377 core/view.cpp:2379 #, kde-format msgid "Note" msgstr "Bilješka" -#: core/view.cpp:2390 core/view.cpp:2392 +#: core/view.cpp:2386 core/view.cpp:2388 #, kde-format msgid "Preview" msgstr "Pregled" -#: core/view.cpp:2410 +#: core/view.cpp:2406 #, kde-format msgid "%1 reply" msgid_plural "%1 replies" @@ -905,7 +905,7 @@ msgstr[1] "%1 odgovora" msgstr[2] "%1 odgovora" -#: core/view.cpp:2414 +#: core/view.cpp:2410 #, kde-format msgid "%1 message in subtree (%2 unread)" msgid_plural "%1 messages in subtree (%2 unread)" @@ -913,110 +913,110 @@ msgstr[1] "%1poruke u podstablu (%2 nepročitanih)" msgstr[2] "%1poruka u podstablu (%2 nepročitanih)" -#: core/view.cpp:2455 +#: core/view.cpp:2451 #, kde-format msgctxt "" "@info:tooltip Formats to something like 'Threads started on 2008-12-21'" msgid "Threads started on %1" msgstr "Diskusije pokrenute na %1" -#: core/view.cpp:2461 +#: core/view.cpp:2457 #, kde-format msgctxt "@info:tooltip Formats to something like 'Threads started Yesterday'" msgid "Threads started %1" msgstr "Diskusije pokrenute %1" -#: core/view.cpp:2467 +#: core/view.cpp:2463 #, kde-format msgid "Threads with messages dated %1" msgstr "Diskusije sa porukama datirane %1" -#: core/view.cpp:2478 +#: core/view.cpp:2474 #, kde-format msgctxt "@info:tooltip Formats to something like 'Messages sent on 2008-12-21'" msgid "Messages sent on %1" msgstr "Poruke poslane na %1" -#: core/view.cpp:2484 +#: core/view.cpp:2480 #, kde-format msgctxt "" "@info:tooltip Formats to something like 'Messages received on 2008-12-21'" msgid "Messages received on %1" msgstr "Poruke primljene na %1" -#: core/view.cpp:2492 +#: core/view.cpp:2488 #, kde-format msgctxt "@info:tooltip Formats to something like 'Messages sent Yesterday'" msgid "Messages sent %1" msgstr "Poruke poslane %1" -#: core/view.cpp:2498 +#: core/view.cpp:2494 #, kde-format msgctxt "@info:tooltip Formats to something like 'Messages received Yesterday'" msgid "Messages received %1" msgstr "Poruke primljene %1" -#: core/view.cpp:2509 +#: core/view.cpp:2505 #, kde-format msgid "Threads started within %1" msgstr "Diskusije počele u roku od %1" -#: core/view.cpp:2512 +#: core/view.cpp:2508 #, kde-format msgid "Threads containing messages with dates within %1" msgstr "Diskusije koje sadrže poruke sa datumima u roku od %1" -#: core/view.cpp:2520 +#: core/view.cpp:2516 #, kde-format msgid "Messages sent within %1" msgstr "Poruke poslane u roku od %1" -#: core/view.cpp:2522 +#: core/view.cpp:2518 #, kde-format msgid "Messages received within %1" msgstr "Poruke primljene u roku od %1" -#: core/view.cpp:2531 +#: core/view.cpp:2527 #, kde-format msgid "Threads started by %1" msgstr "Teme započete od %1" -#: core/view.cpp:2534 +#: core/view.cpp:2530 #, kde-format msgid "Threads with most recent message by %1" msgstr "Diskusije sa najčešćim porukama od %1" -#: core/view.cpp:2543 core/view.cpp:2567 +#: core/view.cpp:2539 core/view.cpp:2563 #, kde-format msgid "Messages sent to %1" msgstr "Poruke poslane na %1" -#: core/view.cpp:2545 +#: core/view.cpp:2541 #, kde-format msgid "Messages sent by %1" msgstr "Poruke poslane za %1" -#: core/view.cpp:2548 +#: core/view.cpp:2544 #, kde-format msgid "Messages received from %1" msgstr "Poruke primljene od %1" -#: core/view.cpp:2556 +#: core/view.cpp:2552 #, kde-format msgid "Threads directed to %1" msgstr "Niti usmjerene ka %1" -#: core/view.cpp:2559 +#: core/view.cpp:2555 #, kde-format msgid "Threads with most recent message directed to %1" msgstr "Niti sa zadnjom porukom usmjerenom na %1" -#: core/view.cpp:2569 +#: core/view.cpp:2565 #, kde-format msgid "Messages received by %1" msgstr "Poruke primljena od %1" -#: core/view.cpp:2595 +#: core/view.cpp:2591 #, kde-format msgid "%1 thread" msgid_plural "%1 threads" @@ -1024,7 +1024,7 @@ msgstr[1] "%1 niti" msgstr[2] "%1 niti" -#: core/view.cpp:2600 +#: core/view.cpp:2596 #, kde-format msgid "%1 message (%2 unread)" msgid_plural "%1 messages (%2 unread)" @@ -1032,48 +1032,48 @@ msgstr[1] "%1poruke (%2 nepročitanih)" msgstr[2] "%1poruka (%2 nepročitanih)" -#: core/widgetbase.cpp:399 messagelistutil.cpp:129 +#: core/widgetbase.cpp:400 messagelistutil.cpp:129 #, kde-format msgid "Theme" msgstr "Tema" -#: core/widgetbase.cpp:421 core/widgetbase.cpp:514 +#: core/widgetbase.cpp:422 core/widgetbase.cpp:515 #: utils/aggregationconfigbutton.cpp:48 utils/themeconfigbutton.cpp:64 #, kde-format msgid "Configure..." msgstr "Podesi..." -#: core/widgetbase.cpp:492 messagelistutil.cpp:124 +#: core/widgetbase.cpp:493 messagelistutil.cpp:124 #, kde-format msgid "Aggregation" msgstr "Agregacija" -#: core/widgetbase.cpp:577 +#: core/widgetbase.cpp:578 #, kde-format msgid "Message Sort Order" msgstr "Redoslijed sortiranja" -#: core/widgetbase.cpp:600 +#: core/widgetbase.cpp:601 #, kde-format msgid "Message Sort Direction" msgstr "Smijera sortiranja poruka" -#: core/widgetbase.cpp:618 +#: core/widgetbase.cpp:619 #, kde-format msgid "Group Sort Order" msgstr "Poredak grupnog sortiranja" -#: core/widgetbase.cpp:637 +#: core/widgetbase.cpp:638 #, kde-format msgid "Group Sort Direction" msgstr "Pravac grupnog sortiranja" -#: core/widgetbase.cpp:653 +#: core/widgetbase.cpp:654 #, kde-format msgid "Folder Always Uses This Sort Order" msgstr "Direktorij uvijek koristi ovo sortiranje" -#: core/widgets/quicksearchline.cpp:53 +#: core/widgets/quicksearchline.cpp:54 #, kde-format msgctxt "Search for messages." msgid "Search" @@ -1096,19 +1096,19 @@ "excluded from indexing completely. The results below may be incomplete." msgstr "" -#: core/widgets/searchlinestatus.cpp:76 +#: core/widgets/searchlinestatus.cpp:92 #, kde-format msgctxt "@info:tooltip" msgid "Prevent the quick search field from being cleared when changing folders" msgstr "Spriječi da se obriše polje za brzu pretragu pri promjeni fascikli" -#: core/widgets/searchlinestatus.cpp:79 +#: core/widgets/searchlinestatus.cpp:95 #, kde-format msgctxt "@info:tooltip" msgid "Clear the quick search field when changing folders" msgstr "Obriši polje za brzu pretragu pri promjeni fascikli" -#: core/widgets/searchlinestatus.cpp:100 +#: core/widgets/searchlinestatus.cpp:116 #, kde-format msgctxt "@info:whatsthis" msgid "" @@ -1118,111 +1118,111 @@ "Preklopite ovo dugme ako želite zadržati brzu pretragu zaključanom pri " "kretanju u druge fascikle ili pri sužavanju pretrage statusom poruka" -#: core/widgets/searchlinestatus.cpp:111 +#: core/widgets/searchlinestatus.cpp:127 #, kde-format msgid "Filter Mails by Status" msgstr "" -#: core/widgets/searchlinestatus.cpp:186 +#: core/widgets/searchlinestatus.cpp:202 #, kde-format msgid "Clear Filter" msgstr "" -#: core/widgets/searchlinestatus.cpp:191 +#: core/widgets/searchlinestatus.cpp:207 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Unread" msgstr "Nepročitano" -#: core/widgets/searchlinestatus.cpp:195 +#: core/widgets/searchlinestatus.cpp:211 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Replied" msgstr "Odgovorena" -#: core/widgets/searchlinestatus.cpp:199 +#: core/widgets/searchlinestatus.cpp:215 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Forwarded" msgstr "Proslijeđeno" -#: core/widgets/searchlinestatus.cpp:203 +#: core/widgets/searchlinestatus.cpp:219 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Important" msgstr "Važno" -#: core/widgets/searchlinestatus.cpp:207 +#: core/widgets/searchlinestatus.cpp:223 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Action Item" msgstr "Akcijska stavka" -#: core/widgets/searchlinestatus.cpp:211 +#: core/widgets/searchlinestatus.cpp:227 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Watched" msgstr "Pregledana" -#: core/widgets/searchlinestatus.cpp:215 +#: core/widgets/searchlinestatus.cpp:231 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Ignored" msgstr "Ignorisana" -#: core/widgets/searchlinestatus.cpp:219 +#: core/widgets/searchlinestatus.cpp:235 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Has Attachment" msgstr "Ima prilog" -#: core/widgets/searchlinestatus.cpp:223 +#: core/widgets/searchlinestatus.cpp:239 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Has Invitation" msgstr "Ima poziv" -#: core/widgets/searchlinestatus.cpp:227 +#: core/widgets/searchlinestatus.cpp:243 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Spam" msgstr "Spam" -#: core/widgets/searchlinestatus.cpp:231 +#: core/widgets/searchlinestatus.cpp:247 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Ham" msgstr "Ham" -#: core/widgets/searchlinestatus.cpp:241 +#: core/widgets/searchlinestatus.cpp:257 #, fuzzy, kde-format #| msgid "Message" msgid "Full Message" msgstr "Poruka" -#: core/widgets/searchlinestatus.cpp:248 +#: core/widgets/searchlinestatus.cpp:264 #, kde-format msgid "Body" msgstr "Tijelo" -#: core/widgets/searchlinestatus.cpp:253 +#: core/widgets/searchlinestatus.cpp:269 #, kde-format msgid "Subject" msgstr "Tema" -#: core/widgets/searchlinestatus.cpp:264 +#: core/widgets/searchlinestatus.cpp:280 #, kde-format msgid "BCC" msgstr "" -#: core/widgets/searchlinestatus.cpp:292 +#: core/widgets/searchlinestatus.cpp:308 #, fuzzy, kde-format #| msgctxt "Receiver of the email" #| msgid "To" msgid "To" msgstr "Za" -#: core/widgets/searchlinestatus.cpp:344 +#: core/widgets/searchlinestatus.cpp:360 #, kde-format msgid "Clear History" msgstr "" @@ -1264,54 +1264,54 @@ msgid "Show Quick Search Bar" msgstr "Prikaži traku za brzu pretragu" -#: pane.cpp:235 +#: pane.cpp:237 #, kde-format msgid "Message List" msgstr "Popis poruka" -#: pane.cpp:241 +#: pane.cpp:243 #, kde-format msgid "Create New Tab" msgstr "Napravi novu karticu" -#: pane.cpp:252 +#: pane.cpp:254 #, kde-format msgid "Close Tab" msgstr "Zatvori karticu" -#: pane.cpp:259 +#: pane.cpp:261 #, kde-format msgid "Activate Next Tab" msgstr "Aktiviraj sljedeću karticu" -#: pane.cpp:264 +#: pane.cpp:266 #, kde-format msgid "Activate Previous Tab" msgstr "Aktiviraj prethodnu karticu" -#: pane.cpp:269 +#: pane.cpp:271 #, kde-format msgid "Move Tab Left" msgstr "Pomakni karticu ulijevo" -#: pane.cpp:274 +#: pane.cpp:276 #, kde-format msgid "Move Tab Right" msgstr "Pomakni karticu udesno" -#: pane.cpp:481 pane.cpp:746 +#: pane.cpp:483 pane.cpp:758 #, kde-format msgctxt "@title:tab Empty messagelist" msgid "Empty" msgstr "Prazno" -#: pane.cpp:668 +#: pane.cpp:677 #, kde-format msgctxt "@action:inmenu" msgid "Close Tab" msgstr "Zatvori karticu" -#: pane.cpp:671 +#: pane.cpp:680 #, kde-format msgctxt "@action:inmenu" msgid "Close All Other Tabs" @@ -1376,7 +1376,7 @@ msgstr "Prilagođena poruka naćina skupljanja" #: utils/configureaggregationsdialog.cpp:129 -#: utils/configureaggregationsdialog.cpp:360 +#: utils/configureaggregationsdialog.cpp:359 #, kde-format msgid "New Aggregation" msgstr "Novo skupljanje" @@ -1401,23 +1401,23 @@ msgid "Delete Aggregation" msgstr "Izbrišite skupljanje" -#: utils/configureaggregationsdialog.cpp:343 +#: utils/configureaggregationsdialog.cpp:342 #, kde-format msgid "Unnamed Aggregation" msgstr "Neimenovano skupljanje" -#: utils/configureaggregationsdialog.cpp:412 +#: utils/configureaggregationsdialog.cpp:411 #, kde-format msgid "Import Aggregation" msgstr "Uvezi agregaciju" -#: utils/configureaggregationsdialog.cpp:445 -#: utils/configurethemesdialog.cpp:470 +#: utils/configureaggregationsdialog.cpp:444 +#: utils/configurethemesdialog.cpp:466 #, kde-format msgid "All Files (*)" msgstr "" -#: utils/configureaggregationsdialog.cpp:445 +#: utils/configureaggregationsdialog.cpp:444 #, kde-format msgid "Export Aggregation" msgstr "Izvezi agregaciju" @@ -1427,7 +1427,7 @@ msgid "Customize Themes" msgstr "Prilagodite teme" -#: utils/configurethemesdialog.cpp:124 utils/configurethemesdialog.cpp:356 +#: utils/configurethemesdialog.cpp:124 utils/configurethemesdialog.cpp:352 #, kde-format msgid "New Theme" msgstr "Nova tema" @@ -1437,54 +1437,54 @@ msgid "Clone Theme" msgstr "Klon tema" -#: utils/configurethemesdialog.cpp:144 +#: utils/configurethemesdialog.cpp:143 #, kde-format msgid "Export Theme..." msgstr "Izvezi temu..." -#: utils/configurethemesdialog.cpp:150 +#: utils/configurethemesdialog.cpp:148 #, kde-format msgid "Import Theme..." msgstr "Uvezi temu..." -#: utils/configurethemesdialog.cpp:160 +#: utils/configurethemesdialog.cpp:157 #, kde-format msgid "Delete Theme" msgstr "Izbrišite temu" -#: utils/configurethemesdialog.cpp:338 +#: utils/configurethemesdialog.cpp:334 #, kde-format msgid "Unnamed Theme" msgstr "Neimenovana tema" -#: utils/configurethemesdialog.cpp:358 utils/themeeditor.cpp:1242 +#: utils/configurethemesdialog.cpp:354 utils/themeeditor.cpp:1242 #, kde-format msgid "New Column" msgstr "Nova kolona" -#: utils/configurethemesdialog.cpp:410 +#: utils/configurethemesdialog.cpp:406 #, kde-format msgid "Do you want to delete selected themes?" msgstr "" -#: utils/configurethemesdialog.cpp:411 +#: utils/configurethemesdialog.cpp:407 #, kde-format msgid "Do you want to delete \"%1\"?" msgstr "" -#: utils/configurethemesdialog.cpp:411 +#: utils/configurethemesdialog.cpp:407 #, fuzzy, kde-format #| msgid "Delete Theme" msgctxt "@title:window" msgid "Delete Theme" msgstr "Izbrišite temu" -#: utils/configurethemesdialog.cpp:436 +#: utils/configurethemesdialog.cpp:432 #, kde-format msgid "Import Theme" msgstr "Uvezi temu" -#: utils/configurethemesdialog.cpp:470 +#: utils/configurethemesdialog.cpp:466 #, kde-format msgid "Export Theme" msgstr "Izvezi temu" diff -Nru kf5-messagelib-17.12.3/po/bs/libmessageviewer.po kf5-messagelib-18.04.3/po/bs/libmessageviewer.po --- kf5-messagelib-17.12.3/po/bs/libmessageviewer.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/bs/libmessageviewer.po 2018-07-10 00:15:57.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: kdepim\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2018-02-21 06:03+0100\n" +"POT-Creation-Date: 2018-05-27 06:21+0200\n" "PO-Revision-Date: 2014-01-31 19:13+0100\n" "Last-Translator: Samir Ribić \n" "Language-Team: Bosnian \n" @@ -409,13 +409,13 @@ msgid "Unknown" msgstr "Nepoznato" -#: header/headerstyle_util.cpp:100 header/headerstyle_util.cpp:105 -#: header/headerstyle_util.cpp:116 +#: header/headerstyle_util.cpp:102 header/headerstyle_util.cpp:107 +#: header/headerstyle_util.cpp:118 #, kde-format msgid "No Subject" msgstr "Nema teme" -#: header/headerstyle_util.cpp:185 +#: header/headerstyle_util.cpp:187 #, kde-format msgid "" "%1% probability of being spam with confidence %3%.\n" @@ -429,7 +429,7 @@ "Vjerovatnost=%2\n" "Povjerenje=%4" -#: header/headerstyle_util.cpp:191 +#: header/headerstyle_util.cpp:193 #, kde-format msgid "" "%1% probability of being spam.\n" @@ -441,37 +441,37 @@ "Cijeli izvještaj:\n" "Vjerovatnost=%2" -#: header/headerstyle_util.cpp:199 +#: header/headerstyle_util.cpp:201 #, kde-format msgid "No Spam agent" msgstr "Nema agenta spama" -#: header/headerstyle_util.cpp:202 +#: header/headerstyle_util.cpp:204 #, kde-format msgid "Spam filter score not a number" msgstr "Rezultat spam filtera nije broj" -#: header/headerstyle_util.cpp:205 +#: header/headerstyle_util.cpp:207 #, kde-format msgid "Threshold not a valid number" msgstr "Prag nije ispravan broj" -#: header/headerstyle_util.cpp:208 +#: header/headerstyle_util.cpp:210 #, kde-format msgid "Spam filter score could not be extracted from header" msgstr "Rezultat spam filtera nije mogao biti izvađen iz zaglavlja" -#: header/headerstyle_util.cpp:211 +#: header/headerstyle_util.cpp:213 #, kde-format msgid "Threshold could not be extracted from header" msgstr "Prag nije mogao biti izvađen iz zaglavlja" -#: header/headerstyle_util.cpp:214 +#: header/headerstyle_util.cpp:216 #, kde-format msgid "Error evaluating spam score" msgstr "Pogreška ocjenjivanja spam rezultata" -#: header/headerstyle_util.cpp:218 +#: header/headerstyle_util.cpp:220 #, kde-format msgid "" "%1.\n" @@ -530,148 +530,130 @@ msgid "Reply to: " msgstr "Odgovori na: " -#: job/attachmenteditjob.cpp:50 -#, kde-format -msgid "" -"Modifying an attachment might invalidate any digital signature on this " -"message." -msgstr "Izmjena priloga može iskvariti digitalni potpis poruke, ako postoji." - -#: job/attachmenteditjob.cpp:51 viewer/viewer_p.cpp:669 -#: viewer/viewer_p.cpp:1816 -#, kde-format -msgid "Edit Attachment" -msgstr "Izmijeni prilog" - -#: job/attachmenteditjob.cpp:52 -#, kde-format -msgid "Edit" -msgstr "Izmijeni" - -#: messagepartthemes/default/defaultrenderer.cpp:82 +#: messagepartthemes/default/defaultrenderer.cpp:83 #, kde-format msgid "Error: Signature not verified" msgstr "Greška: Potpis nije provjeren" -#: messagepartthemes/default/defaultrenderer.cpp:85 +#: messagepartthemes/default/defaultrenderer.cpp:86 #, kde-format msgid "Good signature" msgstr "Dobar potpis" -#: messagepartthemes/default/defaultrenderer.cpp:88 +#: messagepartthemes/default/defaultrenderer.cpp:89 #, fuzzy, kde-format #| msgid "Good signature" msgid "Bad signature" msgstr "Dobar potpis" -#: messagepartthemes/default/defaultrenderer.cpp:91 +#: messagepartthemes/default/defaultrenderer.cpp:92 #, kde-format msgid "No public key to verify the signature" msgstr "Nema javnog ključa za provjeru potpisa" -#: messagepartthemes/default/defaultrenderer.cpp:94 +#: messagepartthemes/default/defaultrenderer.cpp:95 #, kde-format msgid "No signature found" msgstr "Nije pronađen potpis" -#: messagepartthemes/default/defaultrenderer.cpp:97 +#: messagepartthemes/default/defaultrenderer.cpp:98 #, kde-format msgid "Error verifying the signature" msgstr "Greška pri provjeri potpisa" -#: messagepartthemes/default/defaultrenderer.cpp:100 +#: messagepartthemes/default/defaultrenderer.cpp:101 #, kde-format msgid "Different results for signatures" msgstr "Različiti rezultati za potpise" -#: messagepartthemes/default/defaultrenderer.cpp:119 +#: messagepartthemes/default/defaultrenderer.cpp:120 #, kde-format msgid "No status information available." msgstr "Statusne informacije nisu dostupne." -#: messagepartthemes/default/defaultrenderer.cpp:126 -#: messagepartthemes/default/defaultrenderer.cpp:211 +#: messagepartthemes/default/defaultrenderer.cpp:127 +#: messagepartthemes/default/defaultrenderer.cpp:212 #, kde-format msgid "Good signature." msgstr "Dobar potpis." -#: messagepartthemes/default/defaultrenderer.cpp:147 +#: messagepartthemes/default/defaultrenderer.cpp:148 #, kde-format msgid "One key has expired." msgstr "Jedan ključ je istekao." -#: messagepartthemes/default/defaultrenderer.cpp:151 +#: messagepartthemes/default/defaultrenderer.cpp:152 #, kde-format msgid "The signature has expired." msgstr "Potpis je istekao." -#: messagepartthemes/default/defaultrenderer.cpp:156 +#: messagepartthemes/default/defaultrenderer.cpp:157 #, kde-format msgid "Unable to verify: key missing." msgstr "Ne mogu provjeriti: nedostaje ključ." -#: messagepartthemes/default/defaultrenderer.cpp:163 +#: messagepartthemes/default/defaultrenderer.cpp:164 #, kde-format msgid "CRL not available." msgstr "CRL nije dostupan." -#: messagepartthemes/default/defaultrenderer.cpp:167 +#: messagepartthemes/default/defaultrenderer.cpp:168 #, kde-format msgid "Available CRL is too old." msgstr "Dostupni CRL je previše star." -#: messagepartthemes/default/defaultrenderer.cpp:171 +#: messagepartthemes/default/defaultrenderer.cpp:172 #, kde-format msgid "A policy was not met." msgstr "Pravilo nije zadovoljeno." -#: messagepartthemes/default/defaultrenderer.cpp:175 +#: messagepartthemes/default/defaultrenderer.cpp:176 #, kde-format msgid "A system error occurred." msgstr "Došlo je do sistemske greške." -#: messagepartthemes/default/defaultrenderer.cpp:186 +#: messagepartthemes/default/defaultrenderer.cpp:187 #, kde-format msgid "One key has been revoked." msgstr "Jedan ključ je povučen." -#: messagepartthemes/default/defaultrenderer.cpp:213 +#: messagepartthemes/default/defaultrenderer.cpp:214 #, fuzzy, kde-format #| msgid "Good signature." msgid "Bad signature." msgstr "Dobar potpis." -#: messagepartthemes/default/defaultrenderer.cpp:632 -#: messagepartthemes/default/defaultrenderer.cpp:634 +#: messagepartthemes/default/defaultrenderer.cpp:629 +#: messagepartthemes/default/defaultrenderer.cpp:631 #, kde-format msgid "certificate" msgstr "certifikat" -#: messagepartthemes/default/defaultrenderer.cpp:641 -#: messagepartthemes/default/defaultrenderer.cpp:670 +#: messagepartthemes/default/defaultrenderer.cpp:638 +#: messagepartthemes/default/defaultrenderer.cpp:667 #, kde-format msgctxt "Start of warning message." msgid "Warning:" msgstr "Upozorenje:" -#: messagepartthemes/default/defaultrenderer.cpp:644 +#: messagepartthemes/default/defaultrenderer.cpp:641 #, kde-format msgid "Sender's mail address is not stored in the %1 used for signing." msgstr "" "E-mail adresa pošiljaoca nije smještena u %1 koji je korišten za " "potpisivanje." -#: messagepartthemes/default/defaultrenderer.cpp:647 +#: messagepartthemes/default/defaultrenderer.cpp:644 #, kde-format msgid "sender: " msgstr "pošiljalac: " -#: messagepartthemes/default/defaultrenderer.cpp:650 +#: messagepartthemes/default/defaultrenderer.cpp:647 #, kde-format msgid "stored: " msgstr "spremljeno: " -#: messagepartthemes/default/defaultrenderer.cpp:672 +#: messagepartthemes/default/defaultrenderer.cpp:669 #, kde-format msgid "" "No mail address is stored in the %1 used for signing, so we cannot compare " @@ -681,6 +663,7 @@ "je ne možemo uporediti sa adresom pošiljaoca %2." #: scamdetection/scamdetectiondetailsdialog.cpp:47 +#: widgets/mailtrackingdetailsdialog.cpp:32 #, kde-format msgid "Details" msgstr "Detalji" @@ -713,11 +696,13 @@ msgstr "Iskljucite scam detekciju za sve poruke" #: scamdetection/scamdetectionwebengine.cpp:103 +#: widgets/mailtrackingwarningwidget.cpp:55 #, kde-format msgid "Details:" msgstr "Detalji:" #: scamdetection/scamdetectionwebengine.cpp:136 +#: scamdetection/scamdetectionwebengine.cpp:191 #, kde-format msgid "" "This email contains a link which reads as '%1' in the text, but actually " @@ -769,7 +754,7 @@ msgstr "" "Ova pošta sadrži kratki url (%1), On može obaviti redirekciju na drugi" -#: scamdetection/scamdetectionwebengine.cpp:181 +#: scamdetection/scamdetectionwebengine.cpp:206 #, kde-format msgid "Message contains form element. This is often the case in scam emails." msgstr "Poruka sadrži element. To je često slučaj u prijevari e-pošte." @@ -834,13 +819,6 @@ msgid "Close message window after replying or forwarding" msgstr "" -#. i18n: ectx: label, entry (showColorBar), group (Reader) -#: settings/messageviewer.kcfg.cmake:59 -#, fuzzy, kde-format -#| msgid "Show HTML status bar" -msgid "Show HTML Side Bar" -msgstr "Pokaži HTML statusnu traku" - #. i18n: ectx: label, entry (ShowExpandQuotesMark), group (Reader) #: settings/messageviewer.kcfg.cmake:63 #, kde-format @@ -876,82 +854,76 @@ msgstr "" "Uključite ovu opciju da bi se citirani tekst prikazivao sa manjim fontom." -#. i18n: ectx: label, entry (AllowAttachmentEditing), group (Reader) -#: settings/messageviewer.kcfg.cmake:79 -#, kde-format -msgid "Allow to edit attachments of existing mails." -msgstr "Omogući uređivanje priloga postojećih poruka." - #. i18n: ectx: label, entry (AlwaysDecrypt), group (Reader) -#: settings/messageviewer.kcfg.cmake:83 +#: settings/messageviewer.kcfg.cmake:79 #, kde-format msgid "Always decrypt messages when viewing or ask before decrypting" msgstr "" "Uvijek dekriptirati poruke prilikom pregleda ili pitati prije dešifriranja" #. i18n: ectx: label, entry (MimeTreeMode2), group (Reader) -#: settings/messageviewer.kcfg.cmake:86 +#: settings/messageviewer.kcfg.cmake:82 #, kde-format msgid "Message Structure Viewer" msgstr "Preglednik strukture poruke" #. i18n: ectx: label, entry (MimeTreeMode2), group (Reader) -#: settings/messageviewer.kcfg.cmake:89 +#: settings/messageviewer.kcfg.cmake:85 #, kde-format msgid "Show never" msgstr "Nikad prikazati" #. i18n: ectx: label, entry (MimeTreeMode2), group (Reader) -#: settings/messageviewer.kcfg.cmake:92 +#: settings/messageviewer.kcfg.cmake:88 #, kde-format msgid "Show always" msgstr "Uvijek prikazati" #. i18n: ectx: label, entry (headerPluginStyleName), group (Reader) #. i18n: ectx: label, entry (headerStyle), group (Reader) -#: settings/messageviewer.kcfg.cmake:104 settings/messageviewer.kcfg.cmake:110 +#: settings/messageviewer.kcfg.cmake:100 settings/messageviewer.kcfg.cmake:106 #, kde-format msgid "What style of headers should be displayed" msgstr "Kakav oblik zaglavlja bi trebao biti prikazan" #. i18n: ectx: label, entry (headerSetDisplayed), group (Reader) -#: settings/messageviewer.kcfg.cmake:114 +#: settings/messageviewer.kcfg.cmake:110 #, kde-format msgid "How much of headers should be displayed" msgstr "Koliko zaglavlja bi trebalo biti prikazano" #. i18n: ectx: label, entry (htmlMail), group (Reader) -#: settings/messageviewer.kcfg.cmake:118 +#: settings/messageviewer.kcfg.cmake:114 #, kde-format msgid "Prefer HTML to plain text" msgstr "Koristi HTML umjesto običnog teksta" #. i18n: ectx: label, entry (htmlLoadExternal), group (Reader) -#: settings/messageviewer.kcfg.cmake:122 +#: settings/messageviewer.kcfg.cmake:118 #, kde-format msgid "Allow messages to load external references from the Internet" msgstr "Dozvoli porukama da učitaju vanjske reference sa Mreže" #. i18n: ectx: label, entry (attachmentStrategy), group (Reader) -#: settings/messageviewer.kcfg.cmake:126 +#: settings/messageviewer.kcfg.cmake:122 #, kde-format msgid "How attachments are shown" msgstr "Kako su prilozi prikazani" #. i18n: ectx: label, entry (RecycleQuoteColors), group (Reader) -#: settings/messageviewer.kcfg.cmake:130 +#: settings/messageviewer.kcfg.cmake:126 #, kde-format msgid "Specifies whether to reuse the quote color, beyond the 3rd level" msgstr "Navodi da li će se ponovo koristiti boja citiranja iza trećeg nivoa." #. i18n: ectx: label, entry (AccessKeyEnabled), group (Reader) -#: settings/messageviewer.kcfg.cmake:134 +#: settings/messageviewer.kcfg.cmake:130 #, kde-format msgid "Activate Access Key" msgstr "Aktiviraj pristupni ključ" #. i18n: ectx: label, entry (ScamDetectionEnabled), group (Reader) -#: settings/messageviewer.kcfg.cmake:138 +#: settings/messageviewer.kcfg.cmake:134 #, kde-format msgid "" "KMail can analyze messages for suspected email scams by looking for common " @@ -961,19 +933,19 @@ "tehnike koje se koriste da vas navuku." #. i18n: ectx: label, entry (ScamDetectionWhiteList), group (Reader) -#: settings/messageviewer.kcfg.cmake:142 +#: settings/messageviewer.kcfg.cmake:138 #, kde-format msgid "List of emails in scam white list" msgstr "Popis e-pošte u scam bijeloj listi" #. i18n: ectx: label, entry (notSendWhenEncrypted), group (MDN) -#: settings/messageviewer.kcfg.cmake:148 +#: settings/messageviewer.kcfg.cmake:144 #, kde-format msgid "Do not send MDNs in response to encrypted messages" msgstr "Nemoj slati MDN kao odgovor na šifrovanu poruku" #. i18n: ectx: label, entry (DefaultPolicy), group (MDN) -#: settings/messageviewer.kcfg.cmake:152 +#: settings/messageviewer.kcfg.cmake:148 #, kde-format msgid "" "Specifies the default policy to use, for the Message Disposition " @@ -983,7 +955,7 @@ "poruka (samo za internu upotrebu)" #. i18n: ectx: label, entry (QuoteMessage), group (MDN) -#: settings/messageviewer.kcfg.cmake:156 +#: settings/messageviewer.kcfg.cmake:152 #, kde-format msgid "" "Specifies the default quoting action to take, when replying to a message " @@ -993,13 +965,13 @@ "internu upotrebu)" #. i18n: ectx: label, entry (LegacyMangleFromToHeaders), group (Invitations) -#: settings/messageviewer.kcfg.cmake:172 +#: settings/messageviewer.kcfg.cmake:168 #, kde-format msgid "Mangle From:/To: headers in replies to replies" msgstr "Zamijeni Od:/Za: polja u zaglavlju u odgovoru na poziv" #. i18n: ectx: whatsthis, entry (LegacyMangleFromToHeaders), group (Invitations) -#: settings/messageviewer.kcfg.cmake:173 +#: settings/messageviewer.kcfg.cmake:169 #, kde-format msgid "" "Microsoft Outlook has a number of shortcomings in its implementation of the " @@ -1013,13 +985,13 @@ "podesiti ovu opciju." #. i18n: ectx: label, entry (LegacyBodyInvites), group (Invitations) -#: settings/messageviewer.kcfg.cmake:178 +#: settings/messageviewer.kcfg.cmake:174 #, kde-format msgid "Send groupware invitations in the mail body" msgstr "Šalji groupware pozivnice u tijelu poruke" #. i18n: ectx: whatsthis, entry (LegacyBodyInvites), group (Invitations) -#: settings/messageviewer.kcfg.cmake:179 +#: settings/messageviewer.kcfg.cmake:175 #, kde-format msgid "" "Microsoft Outlook has a number of shortcomings in its implementation of the " @@ -1033,13 +1005,13 @@ "ovu opciju." #. i18n: ectx: label, entry (ExchangeCompatibleInvitations), group (Invitations) -#: settings/messageviewer.kcfg.cmake:184 +#: settings/messageviewer.kcfg.cmake:180 #, kde-format msgid "Exchange-compatible invitation naming" msgstr "Imenovanje kompatibilno s Exchange pozivnivama" #. i18n: ectx: whatsthis, entry (ExchangeCompatibleInvitations), group (Invitations) -#: settings/messageviewer.kcfg.cmake:185 +#: settings/messageviewer.kcfg.cmake:181 #, kde-format msgid "" "Microsoft Outlook, when used in combination with a Microsoft Exchange " @@ -1053,13 +1025,13 @@ "razumije." #. i18n: ectx: label, entry (AutomaticSending), group (Invitations) -#: settings/messageviewer.kcfg.cmake:190 +#: settings/messageviewer.kcfg.cmake:186 #, kde-format msgid "Automatic invitation sending" msgstr "Automatsko slanje pozivnica" #. i18n: ectx: whatsthis, entry (AutomaticSending), group (Invitations) -#: settings/messageviewer.kcfg.cmake:191 +#: settings/messageviewer.kcfg.cmake:187 #, kde-format msgid "" "When this is checked, you will not see the mail composer window. Instead, " @@ -1076,13 +1048,13 @@ #. i18n: ectx: label, entry (DeleteInvitationEmailsAfterSendingReply), group (Invitations) #. i18n: ectx: property (text), widget (QCheckBox, mDeleteInvitations) -#: settings/messageviewer.kcfg.cmake:196 ui/invitationsettings.ui:74 +#: settings/messageviewer.kcfg.cmake:192 ui/invitationsettings.ui:74 #, kde-format msgid "Delete invitation emails after the reply to them has been sent" msgstr "Obriši pozivnice pošto se pošalje odgovor na njih" #. i18n: ectx: whatsthis, entry (DeleteInvitationEmailsAfterSendingReply), group (Invitations) -#: settings/messageviewer.kcfg.cmake:197 +#: settings/messageviewer.kcfg.cmake:193 #, kde-format msgid "" "When this is checked, received invitation emails that have been replied to " @@ -1092,25 +1064,25 @@ "premještaju se u fascikl smeća, čim se odgovor uspješno pošalje." #. i18n: ectx: label, entry (UseFixedFont), group (Composer) -#: settings/messageviewer.kcfg.cmake:221 viewer/viewer_p.cpp:1646 +#: settings/messageviewer.kcfg.cmake:217 viewer/viewer_p.cpp:1633 #, kde-format msgid "Use Fi&xed Font" msgstr "K&oristi fiksni font" #. i18n: ectx: whatsthis, entry (LastSelectedFolder), group (Todo) -#: settings/messageviewer.kcfg.cmake:228 +#: settings/messageviewer.kcfg.cmake:224 #, kde-format msgid "The most recent selected folder using for Todo." msgstr "" #. i18n: ectx: whatsthis, entry (LastEventSelectedFolder), group (Event) -#: settings/messageviewer.kcfg.cmake:234 +#: settings/messageviewer.kcfg.cmake:230 #, kde-format msgid "The most recent selected folder using for Event." msgstr "" #. i18n: ectx: whatsthis, entry (LastNoteSelectedFolder), group (Note) -#: settings/messageviewer.kcfg.cmake:240 +#: settings/messageviewer.kcfg.cmake:236 #, kde-format msgid "The most recent selected folder using for Notes." msgstr "" @@ -1234,34 +1206,27 @@ msgid "Enable access key" msgstr "Ukljuci pristupni kljuc" -#. i18n: ectx: property (text), widget (QCheckBox, kcfg_showColorBar) -#: ui/settings.ui:98 -#, fuzzy, kde-format -#| msgid "Show &HTML status bar" -msgid "Show &HTML Side Bar" -msgstr "Pokaži statusnu traku &HTMLa" - #. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShrinkQuotes) -#: ui/settings.ui:105 +#: ui/settings.ui:98 #, kde-format msgid "Reduce font size for "ed text" msgstr "Smanjivanje veličine fonta za &citirani tekst" #. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowExpandQuotesMark) -#: ui/settings.ui:112 +#: ui/settings.ui:105 #, kde-format msgid "Show &expand/collapse quote marks" msgstr "Prikaži proširen&e/sažete navodnike" #. i18n: ectx: property (text), widget (QLabel, collapseQuoteLevelLabel) -#: ui/settings.ui:140 +#: ui/settings.ui:133 #, fuzzy, kde-format #| msgid "Automatic collapse level:" msgid "Automatic collapse &level:" msgstr "Nivo automatskog sažimanja:" #. i18n: ectx: property (text), widget (QLabel, label_4) -#: ui/settings.ui:209 +#: ui/settings.ui:202 #, fuzzy, kde-format #| msgid "Minimum font size:" msgid "&Minimum font size:" @@ -1280,29 +1245,29 @@ msgid "Overwrite File?" msgstr "Prebrisati datoteku?" -#: utils/messageviewerutil.cpp:139 +#: utils/messageviewerutil.cpp:140 #, kde-format msgid "Save Attachments To" msgstr "Snimi prilog kao" -#: utils/messageviewerutil.cpp:158 +#: utils/messageviewerutil.cpp:159 #, kde-format msgctxt "filename for an unnamed attachment" msgid "attachment.1" msgstr "prilog.1" -#: utils/messageviewerutil.cpp:166 +#: utils/messageviewerutil.cpp:167 #, kde-format msgid "Save Attachment" msgstr "Sačuvaj prilog" -#: utils/messageviewerutil.cpp:193 +#: utils/messageviewerutil.cpp:194 #, kde-format msgctxt "filename for the %1-th unnamed attachment" msgid "attachment.%1" msgstr "prilog.%1" -#: utils/messageviewerutil.cpp:296 +#: utils/messageviewerutil.cpp:299 #, kde-format msgid "" "The part %1 of the message is encrypted. Do you want to keep the encryption " @@ -1310,22 +1275,22 @@ msgstr "" "Dio %1 poruke je šifrovan. Želite li zadržati enkripciju prilikom snimanja?" -#: utils/messageviewerutil.cpp:298 utils/messageviewerutil.cpp:311 +#: utils/messageviewerutil.cpp:301 utils/messageviewerutil.cpp:314 #, kde-format msgid "KMail Question" msgstr "KMail pitanje" -#: utils/messageviewerutil.cpp:298 +#: utils/messageviewerutil.cpp:301 #, kde-format msgid "Keep Encryption" msgstr "Očuvaj šifrovanje" -#: utils/messageviewerutil.cpp:299 utils/messageviewerutil.cpp:312 +#: utils/messageviewerutil.cpp:302 utils/messageviewerutil.cpp:315 #, kde-format msgid "Do Not Keep" msgstr "Ne čuvaj" -#: utils/messageviewerutil.cpp:309 +#: utils/messageviewerutil.cpp:312 #, kde-format msgid "" "The part %1 of the message is signed. Do you want to keep the signature when " @@ -1333,13 +1298,13 @@ msgstr "" "Dio %1 poruke je potpisan. Želite li zadržati potpis prilikom snimanja?" -#: utils/messageviewerutil.cpp:311 +#: utils/messageviewerutil.cpp:314 #, kde-format msgid "Keep Signature" msgstr "Zadrži potpis" -#: utils/messageviewerutil.cpp:376 utils/messageviewerutil.cpp:394 -#: utils/messageviewerutil.cpp:412 +#: utils/messageviewerutil.cpp:379 utils/messageviewerutil.cpp:397 +#: utils/messageviewerutil.cpp:415 #, fuzzy, kde-kuit-format #| msgctxt "1 = file name, 2 = error string" #| msgid "Could not write to the file
    %1

    %2" @@ -1349,23 +1314,23 @@ "qt>" msgstr "Ne mogu pisati u datoteku
    %1

    %2" -#: utils/messageviewerutil.cpp:379 utils/messageviewerutil.cpp:397 -#: utils/messageviewerutil.cpp:415 +#: utils/messageviewerutil.cpp:382 utils/messageviewerutil.cpp:400 +#: utils/messageviewerutil.cpp:418 #, kde-format msgid "Error saving attachment" msgstr "Pogreška spremanja priloga" -#: utils/messageviewerutil.cpp:428 +#: utils/messageviewerutil.cpp:431 #, kde-format msgid "Found no attachments to save." msgstr "Nisam pronašao priloge koje bi trebalo snimiti." -#: utils/messageviewerutil.cpp:451 +#: utils/messageviewerutil.cpp:450 #, kde-format msgid "message" msgstr "poruka" -#: utils/messageviewerutil.cpp:458 +#: utils/messageviewerutil.cpp:467 #, fuzzy, kde-format #| msgid "" #| "*.mbox|email messages (*.mbox)\n" @@ -1375,7 +1340,7 @@ "*.mbox|email poruke (*.mbox)\n" "*|sve datoteke (*)" -#: utils/messageviewerutil.cpp:471 +#: utils/messageviewerutil.cpp:480 #, kde-format msgid "Save Message" msgid_plural "Save Messages" @@ -1383,37 +1348,37 @@ msgstr[1] "Snimi poruke" msgstr[2] "Snimi poruke" -#: utils/messageviewerutil.cpp:484 +#: utils/messageviewerutil.cpp:493 #, kde-format msgid "File %1 could not be loaded." msgstr "Fajl %1 nije učitana." -#: utils/messageviewerutil.cpp:485 +#: utils/messageviewerutil.cpp:494 #, kde-format msgid "Error loading message" msgstr "Greška pri učitavanju poruke" -#: utils/messageviewerutil.cpp:487 +#: utils/messageviewerutil.cpp:496 #, kde-format msgid "File %1 could not be created." msgstr "Fajl %1 nije kreiran." -#: utils/messageviewerutil.cpp:488 utils/messageviewerutil.cpp:500 +#: utils/messageviewerutil.cpp:497 utils/messageviewerutil.cpp:509 #, kde-format msgid "Error saving message" msgstr "Greška pri snimanju poruke" -#: utils/messageviewerutil.cpp:499 +#: utils/messageviewerutil.cpp:508 #, kde-format msgid "We cannot save message." msgstr "Ne mozemo spasiti poruku" -#: utils/messageviewerutil.cpp:516 +#: utils/messageviewerutil.cpp:532 #, kde-format msgid "Open &with %1" msgstr "Otvori &sa %1" -#: utils/messageviewerutil.cpp:518 +#: utils/messageviewerutil.cpp:534 #, kde-format msgctxt "@item:inmenu Open With, %1 is application name" msgid "%1" @@ -1458,530 +1423,499 @@ msgid "Size" msgstr "Veličina" -#: viewer/urlhandlermanager.cpp:715 +#: viewer/urlhandlermanager.cpp:426 #, kde-format msgid "Turn on HTML rendering for this message." msgstr "Uključi HTML crtanje za ovu poruku." -#: viewer/urlhandlermanager.cpp:717 viewer/viewer_p.cpp:1729 +#: viewer/urlhandlermanager.cpp:428 viewer/viewer_p.cpp:1716 #, kde-format msgid "Load external references from the Internet for this message." msgstr "Učitaj spoljne reference sa Interneta za ovu poruku." -#: viewer/urlhandlermanager.cpp:719 +#: viewer/urlhandlermanager.cpp:430 #, kde-format msgid "Work online." msgstr "Radi na vezi." -#: viewer/urlhandlermanager.cpp:721 +#: viewer/urlhandlermanager.cpp:432 #, kde-format msgid "Make account online." msgstr "Stavi nalog na mrežu" -#: viewer/urlhandlermanager.cpp:723 +#: viewer/urlhandlermanager.cpp:434 #, kde-format msgid "Decrypt message." msgstr "Dešifruj poruku." -#: viewer/urlhandlermanager.cpp:725 +#: viewer/urlhandlermanager.cpp:436 #, kde-format msgid "Show signature details." msgstr "Prikaži detalje potpisa." -#: viewer/urlhandlermanager.cpp:727 +#: viewer/urlhandlermanager.cpp:438 #, kde-format msgid "Hide signature details." msgstr "Sakrij detalje potpisa." -#: viewer/urlhandlermanager.cpp:729 +#: viewer/urlhandlermanager.cpp:440 #, fuzzy, kde-format #| msgid "Show signature details." msgid "Show encryption details." msgstr "Prikaži detalje potpisa." -#: viewer/urlhandlermanager.cpp:731 +#: viewer/urlhandlermanager.cpp:442 #, fuzzy, kde-format #| msgid "Hide signature details." msgid "Hide encryption details." msgstr "Sakrij detalje potpisa." -#: viewer/urlhandlermanager.cpp:733 -#, kde-format -msgid "Hide attachment list." -msgstr "Sakrij listu priloga." - -#: viewer/urlhandlermanager.cpp:735 -#, kde-format -msgid "Show attachment list." -msgstr "Prikaži listu priloga." - -#: viewer/urlhandlermanager.cpp:737 -#, kde-format -msgid "Hide full \"To\" list" -msgstr "Sakrij punu \"Za\" listu" - -#: viewer/urlhandlermanager.cpp:739 -#, kde-format -msgid "Show full \"To\" list" -msgstr "Prikaži punu \"Za\" listu" - -#: viewer/urlhandlermanager.cpp:741 -#, kde-format -msgid "Hide full \"Cc\" list" -msgstr "Sakrij punu \"Cc\" listu" - -#: viewer/urlhandlermanager.cpp:743 -#, kde-format -msgid "Show full \"Cc\" list" -msgstr "Pokaži punu \"Cc\" listu" - -#: viewer/urlhandlermanager.cpp:748 +#: viewer/urlhandlermanager.cpp:447 #, kde-format msgid "Open Documentation" msgstr "" -#: viewer/urlhandlermanager.cpp:784 +#: viewer/urlhandlermanager.cpp:481 #, kde-format msgid "Expand all quoted text." msgstr "Raširi sav citirani tekst." -#: viewer/urlhandlermanager.cpp:786 +#: viewer/urlhandlermanager.cpp:483 #, kde-format msgid "Collapse quoted text." msgstr "Sažmi citirani tekst." -#: viewer/urlhandlermanager.cpp:848 +#: viewer/urlhandlermanager.cpp:543 #, kde-format msgid "Could not start certificate manager. Please check your installation." msgstr "" "Ne mogu pokrenuti upravitelj certifikatima. Molim provjerite vašu " "instalaciju." -#: viewer/urlhandlermanager.cpp:850 +#: viewer/urlhandlermanager.cpp:545 #, kde-format msgid "KMail Error" msgstr "KMail greška" -#: viewer/urlhandlermanager.cpp:863 +#: viewer/urlhandlermanager.cpp:558 #, kde-format msgid "Show certificate 0x%1" msgstr "Pokaži certifikat 0x%1" -#: viewer/urlhandlermanager.cpp:931 +#: viewer/urlhandlermanager.cpp:620 #, kde-format msgid "&Open in Address Book" msgstr "&Otvori u adresaru" -#: viewer/urlhandlermanager.cpp:935 +#: viewer/urlhandlermanager.cpp:624 #, kde-format msgid "&Copy Email Address" msgstr "&Kopiraj adresu e‑pošte" -#: viewer/urlhandlermanager.cpp:948 viewer/viewer_p.cpp:2845 +#: viewer/urlhandlermanager.cpp:637 viewer/viewer_p.cpp:2765 #, kde-format msgid "Address copied to clipboard." msgstr "Adresa kopirana na clipboard." -#: viewer/urlhandlermanager.cpp:960 +#: viewer/urlhandlermanager.cpp:648 #, kde-format msgid "Lookup the contact in KAddressbook" msgstr "Gledaj kontakt u KAddressbook" -#: viewer/urlhandlermanager.cpp:1086 +#: viewer/urlhandlermanager.cpp:825 #, kde-format msgid "Attachment: %1" msgstr "Prilog: %1" -#: viewer/urlhandlermanager.cpp:1089 +#: viewer/urlhandlermanager.cpp:828 #, kde-format msgid "Encapsulated Message (Subject: %1)" msgstr "Enkapsulirana poruka (Tema: %1)" -#: viewer/urlhandlermanager.cpp:1092 +#: viewer/urlhandlermanager.cpp:831 #, kde-format msgid "Encapsulated Message" msgstr "Enkapsulirana poruka" -#: viewer/urlhandlermanager.cpp:1095 +#: viewer/urlhandlermanager.cpp:834 #, kde-format msgid "Unnamed attachment" msgstr "Neimenovani prilog" -#: viewer/urlhandlermanager.cpp:1133 +#: viewer/urlhandlermanager.cpp:870 #, kde-format msgid "Show GnuPG Audit Log for this operation" msgstr "Prikaži dnevnik revizije GnuPG-a za ovu operaciju" -#: viewer/urlhandlermanager.cpp:1180 +#: viewer/urlhandlermanager.cpp:913 #, kde-format msgid "Opening URL..." msgstr "Otvaram URL..." -#: viewer/urlhandlermanager.cpp:1191 +#: viewer/urlhandlermanager.cpp:924 #, kde-kuit-format msgctxt "@info" msgid "Do you really want to execute %1?" msgstr "Da li stvarno želite da izvršite %1?" -#: viewer/urlhandlermanager.cpp:1193 +#: viewer/urlhandlermanager.cpp:926 #, kde-format msgid "Execute" msgstr "Izvrši" -#: viewer/viewer.cpp:144 +#: viewer/viewer.cpp:146 #, kde-format msgid "Loading message..." msgstr "Učitavam poruku..." -#: viewer/viewer_p.cpp:410 +#: viewer/viewer_p.cpp:409 #, kde-format msgid "" "Deleting an attachment from an encrypted or old-style mailman message is not " "supported." msgstr "Brisanje priloga za šifrovanu ili staru mailman poruku nije podržano." -#: viewer/viewer_p.cpp:411 viewer/viewer_p.cpp:418 viewer/viewer_p.cpp:676 -#: viewer/viewer_p.cpp:1811 +#: viewer/viewer_p.cpp:410 viewer/viewer_p.cpp:417 viewer/viewer_p.cpp:653 #, kde-format msgid "Delete Attachment" msgstr "Obriši prilog" -#: viewer/viewer_p.cpp:417 +#: viewer/viewer_p.cpp:416 #, kde-format msgid "" "Deleting an attachment might invalidate any digital signature on this " "message." msgstr "Brisanje priloga može iskvariti digitalni potpis poruke, ako postoji." -#: viewer/viewer_p.cpp:514 +#: viewer/viewer_p.cpp:502 #, kde-format msgctxt "@title:menu" msgid "&Open With" msgstr "&Otvori pomoću" -#: viewer/viewer_p.cpp:532 +#: viewer/viewer_p.cpp:520 #, kde-format msgctxt "@action:inmenu Open With" msgid "&Other..." msgstr "&Drugo..." -#: viewer/viewer_p.cpp:534 viewer/viewer_p.cpp:548 +#: viewer/viewer_p.cpp:522 viewer/viewer_p.cpp:536 #, kde-format msgctxt "@title:menu" msgid "&Open With..." msgstr "&Otvori pomoću..." -#: viewer/viewer_p.cpp:610 viewer/viewer_p.cpp:1786 +#: viewer/viewer_p.cpp:599 viewer/viewer_p.cpp:1773 #, kde-format msgctxt "to open" msgid "Open" msgstr "Otvori" -#: viewer/viewer_p.cpp:629 viewer/viewer_p.cpp:1796 +#: viewer/viewer_p.cpp:619 viewer/viewer_p.cpp:1783 #, kde-format msgctxt "to view something" msgid "View" msgstr "Pogled" -#: viewer/viewer_p.cpp:641 +#: viewer/viewer_p.cpp:627 #, kde-format msgid "Scroll To" msgstr "Pomaknite se na" -#: viewer/viewer_p.cpp:650 +#: viewer/viewer_p.cpp:633 #, kde-format msgid "Save As..." msgstr "Sačuvaj kao..." -#: viewer/viewer_p.cpp:655 viewer/viewer_p.cpp:1808 +#: viewer/viewer_p.cpp:639 viewer/viewer_p.cpp:1795 #, kde-format msgid "Copy" msgstr "Kopiraj" -#: viewer/viewer_p.cpp:685 +#: viewer/viewer_p.cpp:664 #, fuzzy, kde-format #| msgid "Reply to: " msgid "Reply To Author" msgstr "Odgovori na: " -#: viewer/viewer_p.cpp:692 +#: viewer/viewer_p.cpp:672 #, fuzzy, kde-format #| msgid "Reply to: " msgid "Reply To All" msgstr "Odgovori na: " -#: viewer/viewer_p.cpp:697 viewer/viewer_p.cpp:1822 +#: viewer/viewer_p.cpp:678 viewer/viewer_p.cpp:1801 #, kde-format msgid "Properties" msgstr "Svojstva" -#: viewer/viewer_p.cpp:860 +#: viewer/viewer_p.cpp:841 #, fuzzy, kde-format #| msgid "KMail Error" msgid "KMail" msgstr "KMail greška" -#: viewer/viewer_p.cpp:861 +#: viewer/viewer_p.cpp:842 #, fuzzy, kde-format #| msgid "The KDE email client." msgid "The KDE Mail Client" msgstr "KDE klijent elektronske pošte." -#: viewer/viewer_p.cpp:1366 +#: viewer/viewer_p.cpp:1349 #, kde-format msgid "View Attachment: %1" msgstr "Pogledaj prilog: %1" -#: viewer/viewer_p.cpp:1558 +#: viewer/viewer_p.cpp:1545 #, kde-format msgctxt "View->" msgid "&Attachments" msgstr "&Prilozi" -#: viewer/viewer_p.cpp:1560 +#: viewer/viewer_p.cpp:1547 #, kde-format msgid "Choose display style of attachments" msgstr "Izaberite način prikaza priloga" -#: viewer/viewer_p.cpp:1563 +#: viewer/viewer_p.cpp:1550 #, kde-format msgctxt "View->attachments->" msgid "&As Icons" msgstr "&Kao ikone" -#: viewer/viewer_p.cpp:1566 +#: viewer/viewer_p.cpp:1553 #, kde-format msgid "Show all attachments as icons. Click to see them." msgstr "Prikaži sve priloge kao ikone. Klik za gledanje priloga." -#: viewer/viewer_p.cpp:1570 +#: viewer/viewer_p.cpp:1557 #, kde-format msgctxt "View->attachments->" msgid "&Smart" msgstr "&Pametno" -#: viewer/viewer_p.cpp:1573 +#: viewer/viewer_p.cpp:1560 #, kde-format msgid "Show attachments as suggested by sender." msgstr "Prikaži priloge kako je pošiljalac sugerisao." -#: viewer/viewer_p.cpp:1577 +#: viewer/viewer_p.cpp:1564 #, kde-format msgctxt "View->attachments->" msgid "&Inline" msgstr "&U sastavu poruke" -#: viewer/viewer_p.cpp:1580 +#: viewer/viewer_p.cpp:1567 #, kde-format msgid "Show all attachments inline (if possible)" msgstr "Prikaži sve priloge u sastavu poruke (ako je moguće)" -#: viewer/viewer_p.cpp:1584 +#: viewer/viewer_p.cpp:1571 #, kde-format msgctxt "View->attachments->" msgid "&Hide" msgstr "&Sakrij" -#: viewer/viewer_p.cpp:1587 +#: viewer/viewer_p.cpp:1574 #, kde-format msgid "Do not show attachments in the message viewer" msgstr "Ne prikazuj priloge u pregledu poruke" -#: viewer/viewer_p.cpp:1592 +#: viewer/viewer_p.cpp:1579 #, kde-format msgctxt "View->attachments->" msgid "In Header Only" msgstr "Samo u zaglavlju" -#: viewer/viewer_p.cpp:1597 +#: viewer/viewer_p.cpp:1584 #, kde-format msgid "Show Attachments only in the header of the mail" msgstr "Prikaži priloge samo u zaglavlju pošte" -#: viewer/viewer_p.cpp:1604 +#: viewer/viewer_p.cpp:1591 #, kde-format msgid "&Set Encoding" msgstr "Podesi &kodiranje" -#: viewer/viewer_p.cpp:1610 widgets/configurewidget.cpp:58 +#: viewer/viewer_p.cpp:1597 widgets/configurewidget.cpp:58 #: widgets/configurewidget.cpp:105 #, kde-format msgid "Auto" msgstr "Automatski" -#: viewer/viewer_p.cpp:1620 +#: viewer/viewer_p.cpp:1607 #, fuzzy, kde-format #| msgid "Speak Text" msgid "Copy Text" msgstr "Izgovori tekst" -#: viewer/viewer_p.cpp:1628 +#: viewer/viewer_p.cpp:1615 #, kde-format msgid "Select All Text" msgstr "Odaberi sav tekst" -#: viewer/viewer_p.cpp:1635 viewer/viewer_p.cpp:2124 +#: viewer/viewer_p.cpp:1622 viewer/viewer_p.cpp:2103 #, kde-format msgid "Copy Link Address" msgstr "Kopiraj adresu veze" -#: viewer/viewer_p.cpp:1641 +#: viewer/viewer_p.cpp:1628 #, kde-format msgid "Open URL" msgstr "Otvori URL" -#: viewer/viewer_p.cpp:1652 +#: viewer/viewer_p.cpp:1639 #, kde-format msgid "Show Message Structure" msgstr "Prikaži strukturu poruke" -#: viewer/viewer_p.cpp:1658 +#: viewer/viewer_p.cpp:1645 #, kde-format msgid "&View Source" msgstr "Pogledaj &izvorni kod" -#: viewer/viewer_p.cpp:1665 +#: viewer/viewer_p.cpp:1652 #, kde-format msgid "&Save message..." msgstr "&Sačuvaj poruku..." -#: viewer/viewer_p.cpp:1671 +#: viewer/viewer_p.cpp:1658 #, kde-format msgid "&Save Display Format" msgstr "&Spremi Ekranski Format" -#: viewer/viewer_p.cpp:1676 +#: viewer/viewer_p.cpp:1663 #, kde-format msgid "&Reset Display Format" msgstr "&Resetuj ekranski format" -#: viewer/viewer_p.cpp:1684 +#: viewer/viewer_p.cpp:1671 #, kde-format msgid "Scroll Message Up" msgstr "Pomjeri poruku gore" -#: viewer/viewer_p.cpp:1690 +#: viewer/viewer_p.cpp:1677 #, kde-format msgid "Scroll Message Down" msgstr "Zapisati poruku dolje" -#: viewer/viewer_p.cpp:1696 +#: viewer/viewer_p.cpp:1683 #, kde-format msgid "Scroll Message Up (More)" msgstr "Pomjeri poruku gore (više)" -#: viewer/viewer_p.cpp:1702 +#: viewer/viewer_p.cpp:1689 #, kde-format msgid "Scroll Message Down (More)" msgstr "Pomjeri poruku dolje (više)" -#: viewer/viewer_p.cpp:1713 +#: viewer/viewer_p.cpp:1700 #, kde-format msgid "Toggle HTML Display Mode" msgstr "Preklopi HTML prikaz" -#: viewer/viewer_p.cpp:1719 +#: viewer/viewer_p.cpp:1706 #, kde-format msgid "Toggle display mode between HTML and plain text" msgstr "Preklop prikaza između HTML i običnog teksta" -#: viewer/viewer_p.cpp:1722 +#: viewer/viewer_p.cpp:1709 #, kde-format msgid "Load external references" msgstr "Učitaj vanjske reference" -#: viewer/viewer_p.cpp:1731 widgets/mailsourceviewtextbrowserwidget.cpp:154 +#: viewer/viewer_p.cpp:1718 widgets/mailsourceviewtextbrowserwidget.cpp:157 #, kde-format msgid "Speak Text" msgstr "Izgovori tekst" -#: viewer/viewer_p.cpp:1737 +#: viewer/viewer_p.cpp:1724 #, kde-format msgid "Copy Image Location" msgstr "Kopiraj lokaciju slike" -#: viewer/viewer_p.cpp:1746 +#: viewer/viewer_p.cpp:1733 #, kde-format msgid "&Find in Message..." msgstr "&Nađi u poruci..." -#: viewer/viewer_p.cpp:1756 +#: viewer/viewer_p.cpp:1743 #, kde-format msgid "Disable Emoticon" msgstr "" -#: viewer/viewer_p.cpp:1781 +#: viewer/viewer_p.cpp:1768 #, kde-format msgid "Save &As..." msgstr "Snimi k&ao..." -#: viewer/viewer_p.cpp:1793 +#: viewer/viewer_p.cpp:1780 #, kde-format msgid "Open With..." msgstr "Otvori sa..." -#: viewer/viewer_p.cpp:1801 +#: viewer/viewer_p.cpp:1788 #, kde-format msgid "Save All Attachments..." msgstr "Snimi sve priloge..." -#: viewer/viewer_p.cpp:2041 +#: viewer/viewer_p.cpp:2020 #, kde-format msgid "The network is broken." msgstr "" -#: viewer/viewer_p.cpp:2041 viewer/viewer_p.cpp:2045 +#: viewer/viewer_p.cpp:2020 viewer/viewer_p.cpp:2024 #, kde-format msgid "Check Phishing URL" msgstr "" -#: viewer/viewer_p.cpp:2044 +#: viewer/viewer_p.cpp:2023 #, fuzzy, kde-format #| msgid "Grantlee theme \"%1\" is not valid." msgid "The URL %1 is not valid." msgstr "Grentl tema \"%1\" nije vazeca." -#: viewer/viewer_p.cpp:2066 +#: viewer/viewer_p.cpp:2045 #, kde-format msgid "This web site is a malware, do you want to continue to show it?" msgstr "" -#: viewer/viewer_p.cpp:2067 +#: viewer/viewer_p.cpp:2046 #, kde-format msgid "Malware" msgstr "" -#: viewer/viewer_p.cpp:2122 +#: viewer/viewer_p.cpp:2101 #, kde-format msgid "Copy Email Address" msgstr "Kopiraj e-mail adresu" -#: viewer/viewer_p.cpp:2207 +#: viewer/viewer_p.cpp:2195 #, kde-format msgid "Message as Plain Text" msgstr "Poruka kao čisti tekst" -#: viewer/viewer_p.cpp:2406 +#: viewer/viewer_p.cpp:2390 #, kde-format msgid "Print Document" msgstr "" -#: viewer/viewer_p.cpp:2492 +#: viewer/viewer_p.cpp:2441 #, kde-format msgid "Attachments:" msgstr "Prilozi:" -#: viewer/viewer_p.cpp:2850 +#: viewer/viewer_p.cpp:2770 #, kde-format msgid "URL copied to clipboard." msgstr "URL kopiran na clipboard." -#: viewer/viewer_p.cpp:3039 +#: viewer/viewer_p.cpp:2911 #, kde-format msgid "Message loading failed: %1." msgstr "Učitavanje poruke neuspjlo: %1." -#: viewer/viewer_p.cpp:3044 +#: viewer/viewer_p.cpp:2916 #, kde-format msgid "Message not found." msgstr "Poruka nije nađena." @@ -2020,7 +1954,7 @@ msgid "Do not ask again" msgstr "Ne pitaj ponovo" -#: widgets/htmlstatusbar.cpp:147 +#: widgets/htmlstatusbar.cpp:129 #, kde-format msgctxt "" "'HTML Message' with html linebreaks between each letter and in bold text." @@ -2031,7 +1965,7 @@ "
    H
    T
    M
    L

    M
    e
    s
    s
    a
    g
    e
    " -#: widgets/htmlstatusbar.cpp:151 +#: widgets/htmlstatusbar.cpp:133 #, kde-format msgctxt "'No HTML Message' with html linebreaks between each letter." msgid "" @@ -2041,7 +1975,7 @@ "
    N
    o

    H
    T
    M
    L

    M
    e
    s
    s
    a
    g
    e
    " -#: widgets/htmlstatusbar.cpp:156 +#: widgets/htmlstatusbar.cpp:138 #, kde-format msgctxt "'Plain Message' with html linebreaks between each letter." msgid "" @@ -2051,7 +1985,7 @@ "
    Č
    i
    s
    t
    i

    T
    e
    k
    s
    t
    " -#: widgets/htmlstatusbar.cpp:160 +#: widgets/htmlstatusbar.cpp:142 #, fuzzy, kde-format #| msgctxt "'No HTML Message' with html linebreaks between each letter." #| msgid "" @@ -2065,7 +1999,7 @@ "
    N
    o

    H
    T
    M
    L

    M
    e
    s
    s
    a
    g
    e
    " -#: widgets/htmlstatusbar.cpp:174 +#: widgets/htmlstatusbar.cpp:156 #, fuzzy, kde-format #| msgid "Click to toggle between HTML and plain text." msgid "Click to toggle between HTML, plain text and calendar." @@ -2116,7 +2050,22 @@ msgid "HTML code for displaying the message to the user" msgstr "HTML kod za prikaz poruke korisniku" -#: widgets/openattachmentfolderwidget.cpp:49 +#: widgets/mailtrackingwarningwidget.cpp:33 +#, kde-format +msgid "" +"Some Mail Tracker was found and was blocked.(Details...)" +msgstr "" + +#: widgets/mailtrackingwarningwidget.cpp:60 +#, kde-format +msgid "1 tracker from the company %2 (%3)" +msgid_plural "%1 trackers from the company %2 (%3)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: widgets/openattachmentfolderwidget.cpp:48 #, kde-format msgid "Open folder where attachment was saved" msgstr "" @@ -2148,6 +2097,49 @@ msgid "&Previous Card" msgstr "&Prethodna kartica" +#~ msgid "Hide full \"To\" list" +#~ msgstr "Sakrij punu \"Za\" listu" + +#~ msgid "Show full \"To\" list" +#~ msgstr "Prikaži punu \"Za\" listu" + +#~ msgid "Hide full \"Cc\" list" +#~ msgstr "Sakrij punu \"Cc\" listu" + +#~ msgid "Show full \"Cc\" list" +#~ msgstr "Pokaži punu \"Cc\" listu" + +#~ msgid "Hide attachment list." +#~ msgstr "Sakrij listu priloga." + +#~ msgid "Show attachment list." +#~ msgstr "Prikaži listu priloga." + +#~ msgid "" +#~ "Modifying an attachment might invalidate any digital signature on this " +#~ "message." +#~ msgstr "" +#~ "Izmjena priloga može iskvariti digitalni potpis poruke, ako postoji." + +#~ msgid "Edit Attachment" +#~ msgstr "Izmijeni prilog" + +#~ msgid "Edit" +#~ msgstr "Izmijeni" + +#~ msgid "Allow to edit attachments of existing mails." +#~ msgstr "Omogući uređivanje priloga postojećih poruka." + +#, fuzzy +#~| msgid "Show HTML status bar" +#~ msgid "Show HTML Side Bar" +#~ msgstr "Pokaži HTML statusnu traku" + +#, fuzzy +#~| msgid "Show &HTML status bar" +#~ msgid "Show &HTML Side Bar" +#~ msgstr "Pokaži statusnu traku &HTMLa" + #, fuzzy #~| msgid "Show user agent in fancy headers" #~ msgid "Show user agent" diff -Nru kf5-messagelib-17.12.3/po/bs/libmimetreeparser.po kf5-messagelib-18.04.3/po/bs/libmimetreeparser.po --- kf5-messagelib-17.12.3/po/bs/libmimetreeparser.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/bs/libmimetreeparser.po 2018-07-10 00:15:57.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: kdepim\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-10-30 03:12+0100\n" +"POT-Creation-Date: 2017-11-15 05:55+0100\n" "PO-Revision-Date: 2014-01-31 19:13+0100\n" "Last-Translator: Samir Ribić \n" "Language-Team: Bosnian \n" @@ -20,35 +20,35 @@ "X-Launchpad-Export-Date: 2014-01-03 06:21+0000\n" "X-Generator: Launchpad (build 16877)\n" -#: src/messagepart.cpp:415 +#: src/messagepart.cpp:423 #, kde-format msgctxt "display name for an unnamed attachment" msgid "Unnamed" msgstr "Neimenovan" -#: src/messagepart.cpp:787 src/messagepart.cpp:812 src/messagepart.cpp:1108 +#: src/messagepart.cpp:693 src/messagepart.cpp:718 src/messagepart.cpp:1024 #, kde-format msgid "Wrong Crypto Plug-In." msgstr "Pogrešan Kripto dodatak!" -#: src/messagepart.cpp:871 src/messagepart.cpp:1298 +#: src/messagepart.cpp:777 src/messagepart.cpp:1219 #, kde-format msgid "No appropriate crypto plug-in was found." msgstr "Nije pronađen odgovarajući kripto dodatak." -#: src/messagepart.cpp:874 +#: src/messagepart.cpp:780 #, kde-format msgctxt "%1 is either 'OpenPGP' or 'S/MIME'" msgid "No %1 plug-in was found." msgstr "Nije pronađen %1 dodatak." -#: src/messagepart.cpp:878 +#: src/messagepart.cpp:784 #, fuzzy, kde-format #| msgid "Crypto plug-in \"%1\" cannot verify signatures." msgid "Crypto plug-in \"%1\" cannot verify signatures." msgstr "Kripto dodatak \"%1\" ne može provjeravati potpise." -#: src/messagepart.cpp:881 +#: src/messagepart.cpp:787 #, kde-format msgid "" "The message is signed, but the validity of the signature cannot be verified." @@ -57,17 +57,17 @@ "Poruka je potpisana, ali ispravnost potpisa ne može biti potvrđena.
    Razlog: %1" -#: src/messagepart.cpp:1300 +#: src/messagepart.cpp:1221 #, kde-format msgid "Crypto plug-in \"%1\" cannot decrypt messages." msgstr "Kripto dodatak \"%1\" ne može dešifrovati poruke." -#: src/messagepart.cpp:1303 +#: src/messagepart.cpp:1224 #, kde-format msgid "Crypto plug-in \"%1\" could not decrypt the data." msgstr "Kripto dodatak \"%1\" ne može dešifrovati podatke." -#: src/messagepart.cpp:1305 +#: src/messagepart.cpp:1226 #, kde-format msgid "Error: %1" msgstr "Greška: %1" diff -Nru kf5-messagelib-17.12.3/po/bs/libtemplateparser.po kf5-messagelib-18.04.3/po/bs/libtemplateparser.po --- kf5-messagelib-17.12.3/po/bs/libtemplateparser.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/bs/libtemplateparser.po 2018-07-10 00:15:57.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: libtemplateparser.po\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-11-10 03:16+0100\n" +"POT-Creation-Date: 2018-03-14 03:31+0100\n" "PO-Revision-Date: 2013-11-15 13:52+0000\n" "Last-Translator: Samir Ribić \n" "Language-Team: bs \n" @@ -102,23 +102,23 @@ msgid "Remove Template?" msgstr "Ukloniti predložak?" -#: customtemplatesmenu.cpp:80 +#: customtemplatesmenu.cpp:66 #, kde-format msgid "With Custom Template" msgstr "Uz prilagođeni predložak" -#: customtemplatesmenu.cpp:84 +#: customtemplatesmenu.cpp:70 #, kde-format msgid "Reply With Custom Template" msgstr "Odgovori uz poseban predložak" -#: customtemplatesmenu.cpp:88 +#: customtemplatesmenu.cpp:74 #, kde-format msgid "Reply to All With Custom Template" msgstr "Odgovori svima uz poseban predložak" -#: customtemplatesmenu.cpp:225 customtemplatesmenu.cpp:231 -#: customtemplatesmenu.cpp:237 +#: customtemplatesmenu.cpp:189 customtemplatesmenu.cpp:195 +#: customtemplatesmenu.cpp:201 #, kde-format msgid "(no custom templates)" msgstr "(nema posebnih predložaka)" @@ -265,310 +265,230 @@ msgid "Quote characters" msgstr "Znakovi citiranja" -#: templateparserjob.cpp:389 +#: templateparserjob.cpp:396 #, kde-format msgctxt "@info" msgid "Cannot insert content from file %1: %2" msgstr "Ne mogu da ubacim sadržaj iz datoteke %1: %2" -#: templateparserjob.cpp:567 +#: templateparserjob.cpp:574 #, kde-format msgctxt "@item:intext email To" msgid "To:" msgstr "Za:" -#: templateparserjob.cpp:578 +#: templateparserjob.cpp:585 #, kde-format msgctxt "@item:intext email CC" msgid "CC:" msgstr "CC:" -#: templateparserjob.cpp:1242 +#: templateparserjob.cpp:1249 #, kde-format msgctxt "@item:intext" msgid "Attachment %1" msgstr "Prilog %1" -#: templateparserjob.cpp:1452 +#: templateparserjob.cpp:1459 #, kde-kuit-format msgctxt "@info" msgid "Pipe command %1 failed." msgstr "Cijevna naredba %1 nije uspjela." -#: templatesconfiguration.cpp:67 -#, kde-format -msgid "" -"

    Here you can create and manage templates to use when composing new " -"messages, replies or forwarded messages.

    The message templates support " -"substitution commands, either simply type them or select them from the " -"Insert command menu.

    " -msgstr "" -"

    Ovdje možete stvoriti i upravljati predlošcima koje koristite za " -"stvaranje novih poruka, odgovora ili proslijeđenih poruka.

    Predlošci " -"poruka podržavaju izmjenu kontrola, ili jednostavno ih upišite ili odaberite " -"iz Ubaci naredbu menija.

    " - -#: templatesconfiguration.cpp:75 -#, kde-format -msgid "" -"

    Templates specified here are folder-specific. They override both global " -"templates and per-identity templates.

    " -msgstr "" -"

    Navedeni predlošci ovdje su specifični za direktorij. Oni nadjačavaju i " -"globalne predloške i predloške po identitetu.

    " - -#: templatesconfiguration.cpp:80 -#, kde-format -msgid "" -"

    Templates specified here are identity-specific. They override global " -"templates, but can be overridden by per-folder templates if they are " -"specified.

    " -msgstr "" -"

    Navedeni predlošci ovdje su specifični za identitet. Oni nadjačavaju " -"globalne predloške, ali mogu biti nadjačani od predložaka po direktoriju " -"ako su oni navedeni.

    " - -#: templatesconfiguration.cpp:85 -#, kde-format -msgid "" -"

    These are global (default) templates. They can be overridden by per-" -"identity templates or per-folder templates if they are specified.

    " -msgstr "" -"

    Ovo su globalni (podrazumijevani) predlošci. Oni mogu biti nadjačani od " -"po-direktorij ili po-identitetu predložaka ako su navedeni.

    " - -#: templatesconfiguration.cpp:127 -#, kde-format -msgid "Do you want to reset current template or all templates to default?" -msgstr "" -"Da li želite da resetujete trenutni predložak ili sve predloške na " -"podrazumijevano?" - -#: templatesconfiguration.cpp:128 -#, kde-format -msgid "Reset to default" -msgstr "Reset na podrazumijevano" - -#: templatesconfiguration.cpp:129 -#, kde-format -msgid "Reset Current Template" -msgstr "Reset trenutnog predloška" - -#: templatesconfiguration.cpp:130 -#, kde-format -msgid "Reset All Templates" -msgstr "Reset svih predložaka" - -#: templatesconfiguration.cpp:389 -#, kde-format -msgid "" -"Use of \"Reply using plain text\" and \"Reply using HTML text\" in pairs is " -"not correct. Use only one of the aforementioned commands with \" Reply as " -"Quoted Message command\" as per your need\n" -"(a)Reply using plain text for quotes to be strictly in plain text\n" -"(b)Reply using HTML text for quotes being in HTML format if present" -msgstr "" -"Korištenje \"Odgovori koristeći otvoreni tekst\" i \"Odgovori koristeći HTML " -"tekst\" u parovima nije korektno. Koristi samo jednu od navedenih komandi " -"kao \" Odgovori kao naredbu u poruci pod navodnicima\" prema potrebi\n" -"(a)Odgovori kao otvoreni tekst pod navodnicima da bude striktno otvoren " -"tekst\n" -"(b)Odgovori kao HTML pod navodnicima da bude u HTML formatu ako je moguće" - -#: templatesinsertcommand.cpp:48 +#: templatescommandmenu.cpp:49 #, kde-format msgid "Quoted Message Text" msgstr "Citirani tekst poruke" -#: templatesinsertcommand.cpp:53 +#: templatescommandmenu.cpp:54 #, kde-format msgid "Message Text as Is" msgstr "Tekst poruke kakav jeste" -#: templatesinsertcommand.cpp:58 +#: templatescommandmenu.cpp:59 #, kde-format msgid "Message Id" msgstr "Id. poruka" -#: templatesinsertcommand.cpp:63 templatesinsertcommand.cpp:197 +#: templatescommandmenu.cpp:64 templatescommandmenu.cpp:198 #, kde-format msgid "Date" msgstr "Datum" -#: templatesinsertcommand.cpp:68 templatesinsertcommand.cpp:202 +#: templatescommandmenu.cpp:69 templatescommandmenu.cpp:203 #, kde-format msgid "Date in Short Format" msgstr "Datum u kratkom formatu" -#: templatesinsertcommand.cpp:73 templatesinsertcommand.cpp:207 +#: templatescommandmenu.cpp:74 templatescommandmenu.cpp:208 #, kde-format msgid "Date in C Locale" msgstr "Datum u C-lokalu" -#: templatesinsertcommand.cpp:78 templatesinsertcommand.cpp:212 +#: templatescommandmenu.cpp:79 templatescommandmenu.cpp:213 #, kde-format msgid "Day of Week" msgstr "Dan u sedmici" -#: templatesinsertcommand.cpp:83 templatesinsertcommand.cpp:217 +#: templatescommandmenu.cpp:84 templatescommandmenu.cpp:218 #, kde-format msgid "Time" msgstr "Vrijeme" -#: templatesinsertcommand.cpp:88 templatesinsertcommand.cpp:222 +#: templatescommandmenu.cpp:89 templatescommandmenu.cpp:223 #, kde-format msgid "Time in Long Format" msgstr "Vrijeme u dugom formatu" -#: templatesinsertcommand.cpp:93 templatesinsertcommand.cpp:227 +#: templatescommandmenu.cpp:94 templatescommandmenu.cpp:228 #, kde-format msgid "Time in C Locale" msgstr "Vrijeme u C-lokalu" -#: templatesinsertcommand.cpp:98 templatesinsertcommand.cpp:231 +#: templatescommandmenu.cpp:99 templatescommandmenu.cpp:232 #, kde-format msgid "To Field Address" msgstr "Na adresu polja" -#: templatesinsertcommand.cpp:103 templatesinsertcommand.cpp:236 +#: templatescommandmenu.cpp:104 templatescommandmenu.cpp:237 #, kde-format msgid "To Field Name" msgstr "Na naziv polja" -#: templatesinsertcommand.cpp:108 templatesinsertcommand.cpp:241 +#: templatescommandmenu.cpp:109 templatescommandmenu.cpp:242 #, kde-format msgid "To Field First Name" msgstr "Na prvi naziv polja" -#: templatesinsertcommand.cpp:113 templatesinsertcommand.cpp:246 +#: templatescommandmenu.cpp:114 templatescommandmenu.cpp:247 #, kde-format msgid "To Field Last Name" msgstr "Na zadnji naziv polja" -#: templatesinsertcommand.cpp:118 templatesinsertcommand.cpp:251 +#: templatescommandmenu.cpp:119 templatescommandmenu.cpp:252 #, kde-format msgid "CC Field Address" msgstr "Adresa u polju CC" -#: templatesinsertcommand.cpp:123 templatesinsertcommand.cpp:256 +#: templatescommandmenu.cpp:124 templatescommandmenu.cpp:257 #, kde-format msgid "CC Field Name" msgstr "Ime i prezime u polju CC" -#: templatesinsertcommand.cpp:128 templatesinsertcommand.cpp:261 +#: templatescommandmenu.cpp:129 templatescommandmenu.cpp:262 #, kde-format msgid "CC Field First Name" msgstr "Ime u polju CC" -#: templatesinsertcommand.cpp:133 templatesinsertcommand.cpp:266 +#: templatescommandmenu.cpp:134 templatescommandmenu.cpp:267 #, kde-format msgid "CC Field Last Name" msgstr "Prezime u polju CC" -#: templatesinsertcommand.cpp:138 templatesinsertcommand.cpp:271 +#: templatescommandmenu.cpp:139 templatescommandmenu.cpp:272 #, kde-format msgid "From Field Address" msgstr "Iz adrese polja" -#: templatesinsertcommand.cpp:143 +#: templatescommandmenu.cpp:144 #, kde-format msgid "From Field Name" msgstr "Iz naziva polja" -#: templatesinsertcommand.cpp:148 templatesinsertcommand.cpp:281 +#: templatescommandmenu.cpp:149 templatescommandmenu.cpp:282 #, kde-format msgid "From Field First Name" msgstr "Ime u polju od" -#: templatesinsertcommand.cpp:153 templatesinsertcommand.cpp:286 +#: templatescommandmenu.cpp:154 templatescommandmenu.cpp:287 #, kde-format msgid "From Field Last Name" msgstr "Prezime u polju od" -#: templatesinsertcommand.cpp:158 +#: templatescommandmenu.cpp:159 #, kde-format msgid "Addresses of all recipients" msgstr "Adrese svih primaoca" -#: templatesinsertcommand.cpp:163 +#: templatescommandmenu.cpp:164 #, kde-format msgctxt "Template value for subject of the message" msgid "Subject" msgstr "Predmet" -#: templatesinsertcommand.cpp:168 +#: templatescommandmenu.cpp:169 #, kde-format msgid "Quoted Headers" msgstr "Citirana zaglavlja" -#: templatesinsertcommand.cpp:173 +#: templatescommandmenu.cpp:174 #, kde-format msgid "Headers as Is" msgstr "Zaglavlja kakva jesu" -#: templatesinsertcommand.cpp:178 templatesinsertcommand.cpp:296 +#: templatescommandmenu.cpp:179 templatescommandmenu.cpp:297 #, kde-format msgid "Header Content" msgstr "Sadržaj zaglavlja" -#: templatesinsertcommand.cpp:183 +#: templatescommandmenu.cpp:184 #, kde-format msgid "Reply as Quoted Plain Text" msgstr "Odgovori kao otvoreni tekst pod navodnicima" -#: templatesinsertcommand.cpp:188 +#: templatescommandmenu.cpp:189 #, kde-format msgid "Reply as Quoted HTML Text" msgstr "Odgovori kao HTML pod navodnicima" -#: templatesinsertcommand.cpp:276 +#: templatescommandmenu.cpp:277 #, kde-format msgid "From field Name" msgstr "Iz polja Ime" -#: templatesinsertcommand.cpp:291 +#: templatescommandmenu.cpp:292 #, kde-format msgctxt "Template subject command." msgid "Subject" msgstr "Predmet" -#: templatesinsertcommand.cpp:304 +#: templatescommandmenu.cpp:305 #, kde-format msgid "Pipe Original Message Body and Insert Result as Quoted Text" msgstr "Provuci tijelo izvorne poruke i umetni rezultat kao citiran tekst" -#: templatesinsertcommand.cpp:309 +#: templatescommandmenu.cpp:310 #, kde-format msgid "Pipe Original Message Body and Insert Result as Is" msgstr "Provuci tijelo izvorne poruke i umetni rezultat kakav jeste" -#: templatesinsertcommand.cpp:314 +#: templatescommandmenu.cpp:315 #, kde-format msgid "Pipe Original Message with Headers and Insert Result as Is" msgstr "Provuci izvornu poruku sa zaglavljima i umetni rezultat kakav jeste" -#: templatesinsertcommand.cpp:319 +#: templatescommandmenu.cpp:320 #, kde-format msgid "Pipe Current Message Body and Insert Result as Is" msgstr "Provuci tijelo tekuće poruke i umetni rezultat kakav jeste" -#: templatesinsertcommand.cpp:324 +#: templatescommandmenu.cpp:325 #, kde-format msgid "Pipe Current Message Body and Replace with Result" msgstr "Provuci tijelo tekuće poruke i zamjeni rezultatom" -#: templatesinsertcommand.cpp:334 +#: templatescommandmenu.cpp:335 #, kde-format msgctxt "Inserts user signature, also known as footer, into message" msgid "Signature" msgstr "Potpis" -#: templatesinsertcommand.cpp:339 +#: templatescommandmenu.cpp:340 #, kde-format msgid "Insert File Content" msgstr "Umetni sadržaj datoteke" -#: templatesinsertcommand.cpp:346 +#: templatescommandmenu.cpp:347 #, kde-format msgctxt "" "All characters, up to and including the next newline, are discarded without " @@ -576,100 +496,186 @@ msgid "Discard to Next Line" msgstr "Odbaci do sljedeće linije" -#: templatesinsertcommand.cpp:351 +#: templatescommandmenu.cpp:352 #, kde-format msgid "Template Comment" msgstr "Komentar predloška" -#: templatesinsertcommand.cpp:356 +#: templatescommandmenu.cpp:357 #, kde-format msgid "No Operation" msgstr "Nema operacija" -#: templatesinsertcommand.cpp:361 +#: templatescommandmenu.cpp:362 #, kde-format msgid "Clear Generated Message" msgstr "Očisti stvorenu poruku" -#: templatesinsertcommand.cpp:366 -#, kde-format -msgid "Turn Debug On" -msgstr "Uključi ispravljanje" - -#: templatesinsertcommand.cpp:371 -#, kde-format -msgid "Turn Debug Off" -msgstr "Isključi ispravljanje" - -#: templatesinsertcommand.cpp:376 +#: templatescommandmenu.cpp:366 #, kde-format msgid "Cursor position" msgstr "Pozicija kursora" -#: templatesinsertcommand.cpp:381 +#: templatescommandmenu.cpp:371 #, kde-format msgid "Blank text" msgstr "Prazan tekst" -#: templatesinsertcommand.cpp:386 +#: templatescommandmenu.cpp:376 #, kde-format msgid "Dictionary Language" msgstr "" -#: templatesinsertcommand.cpp:390 +#: templatescommandmenu.cpp:380 #, kde-format msgid "Language" msgstr "" -#: templatesinsertcommand.cpp:414 +#: templatescommandmenu.cpp:390 #, kde-format -msgid "&Insert Command" -msgstr "&Ubaci naredbu" - -#: templatesinsertcommand.cpp:422 -#, kde-format -msgid "Insert Command" -msgstr "Ubaci naredbu" +msgid "Turn Debug On" +msgstr "Uključi ispravljanje" -#: templatesinsertcommand.cpp:425 +#: templatescommandmenu.cpp:395 #, kde-format -msgctxt "@info:tooltip" -msgid "Select a command to insert into the template" -msgstr "Izaberite naredbu za umetanje u predložak" +msgid "Turn Debug Off" +msgstr "Isključi ispravljanje" -#: templatesinsertcommand.cpp:428 +#: templatescommandmenu.cpp:432 #, kde-format -msgctxt "@info:whatsthis" -msgid "" -"Traverse this menu to find a command to insert into the current template " -"being edited. The command will be inserted at the cursor location, so you " -"want to move your cursor to the desired insertion point first." -msgstr "" -"Pretražite ovaj izbornik kako bi pronašli naredbu za umetanje u trenutni " -"predložak koji se uređuje. Naredba će biti stavljena na mjesto kursora, tako " -"sto ćete prvo vaš kursor premjestiti na željeno mjesto umetanja." +msgid "Insert Command" +msgstr "Ubaci naredbu" -#: templatesinsertcommand.cpp:433 +#: templatescommandmenu.cpp:445 #, kde-format msgid "Original Message" msgstr "Originalna poruka" -#: templatesinsertcommand.cpp:445 +#: templatescommandmenu.cpp:459 #, kde-format msgid "Current Message" msgstr "Tekuća poruka" -#: templatesinsertcommand.cpp:456 +#: templatescommandmenu.cpp:472 #, kde-format msgid "Process with External Programs" msgstr "Uradi sa vanjskim programima" -#: templatesinsertcommand.cpp:467 +#: templatescommandmenu.cpp:485 #, kde-format msgctxt "Miscellaneous template commands menu" msgid "Miscellaneous" msgstr "Razno" +#: templatescommandmenu.cpp:499 +#, kde-format +msgctxt "Debug template commands menu" +msgid "Debug" +msgstr "" + +#: templatesconfiguration.cpp:67 +#, kde-format +msgid "" +"

    Here you can create and manage templates to use when composing new " +"messages, replies or forwarded messages.

    The message templates support " +"substitution commands, either simply type them or select them from the " +"Insert command menu.

    " +msgstr "" +"

    Ovdje možete stvoriti i upravljati predlošcima koje koristite za " +"stvaranje novih poruka, odgovora ili proslijeđenih poruka.

    Predlošci " +"poruka podržavaju izmjenu kontrola, ili jednostavno ih upišite ili odaberite " +"iz Ubaci naredbu menija.

    " + +#: templatesconfiguration.cpp:75 +#, kde-format +msgid "" +"

    Templates specified here are folder-specific. They override both global " +"templates and per-identity templates.

    " +msgstr "" +"

    Navedeni predlošci ovdje su specifični za direktorij. Oni nadjačavaju i " +"globalne predloške i predloške po identitetu.

    " + +#: templatesconfiguration.cpp:80 +#, kde-format +msgid "" +"

    Templates specified here are identity-specific. They override global " +"templates, but can be overridden by per-folder templates if they are " +"specified.

    " +msgstr "" +"

    Navedeni predlošci ovdje su specifični za identitet. Oni nadjačavaju " +"globalne predloške, ali mogu biti nadjačani od predložaka po direktoriju " +"ako su oni navedeni.

    " + +#: templatesconfiguration.cpp:85 +#, kde-format +msgid "" +"

    These are global (default) templates. They can be overridden by per-" +"identity templates or per-folder templates if they are specified.

    " +msgstr "" +"

    Ovo su globalni (podrazumijevani) predlošci. Oni mogu biti nadjačani od " +"po-direktorij ili po-identitetu predložaka ako su navedeni.

    " + +#: templatesconfiguration.cpp:127 +#, kde-format +msgid "Do you want to reset current template or all templates to default?" +msgstr "" +"Da li želite da resetujete trenutni predložak ili sve predloške na " +"podrazumijevano?" + +#: templatesconfiguration.cpp:128 +#, kde-format +msgid "Reset to default" +msgstr "Reset na podrazumijevano" + +#: templatesconfiguration.cpp:129 +#, kde-format +msgid "Reset Current Template" +msgstr "Reset trenutnog predloška" + +#: templatesconfiguration.cpp:130 +#, kde-format +msgid "Reset All Templates" +msgstr "Reset svih predložaka" + +#: templatesconfiguration.cpp:389 +#, kde-format +msgid "" +"Use of \"Reply using plain text\" and \"Reply using HTML text\" in pairs is " +"not correct. Use only one of the aforementioned commands with \" Reply as " +"Quoted Message command\" as per your need\n" +"(a)Reply using plain text for quotes to be strictly in plain text\n" +"(b)Reply using HTML text for quotes being in HTML format if present" +msgstr "" +"Korištenje \"Odgovori koristeći otvoreni tekst\" i \"Odgovori koristeći HTML " +"tekst\" u parovima nije korektno. Koristi samo jednu od navedenih komandi " +"kao \" Odgovori kao naredbu u poruci pod navodnicima\" prema potrebi\n" +"(a)Odgovori kao otvoreni tekst pod navodnicima da bude striktno otvoren " +"tekst\n" +"(b)Odgovori kao HTML pod navodnicima da bude u HTML formatu ako je moguće" + +#: templatesinsertcommandpushbutton.cpp:35 +#, kde-format +msgid "&Insert Command" +msgstr "&Ubaci naredbu" + +#: templatesinsertcommandpushbutton.cpp:46 +#, kde-format +msgctxt "@info:tooltip" +msgid "Select a command to insert into the template" +msgstr "Izaberite naredbu za umetanje u predložak" + +#: templatesinsertcommandpushbutton.cpp:49 +#, kde-format +msgctxt "@info:whatsthis" +msgid "" +"Traverse this menu to find a command to insert into the current template " +"being edited. The command will be inserted at the cursor location, so you " +"want to move your cursor to the desired insertion point first." +msgstr "" +"Pretražite ovaj izbornik kako bi pronašli naredbu za umetanje u trenutni " +"predložak koji se uređuje. Naredba će biti stavljena na mjesto kursora, tako " +"sto ćete prvo vaš kursor premjestiti na željeno mjesto umetanja." + #. i18n: ectx: property (toolTip), widget (KLineEdit, mName) #: ui/customtemplates_base.ui:86 #, kde-format @@ -771,28 +777,28 @@ msgstr "Naziv" #. i18n: ectx: property (text), widget (QLabel, mToLabel) -#: ui/customtemplates_base.ui:183 +#: ui/customtemplates_base.ui:195 #, kde-format msgctxt "@label:textbox Recipient mail address" msgid "To:" msgstr "Za:" #. i18n: ectx: property (text), widget (QLabel, mCCLabel) -#: ui/customtemplates_base.ui:190 +#: ui/customtemplates_base.ui:202 #, kde-format msgctxt "@label" msgid "CC:" msgstr "CC:" #. i18n: ectx: property (toolTip), widget (TemplateParser::TemplateParserEmailAddressRequesterInterfaceWidget, mToEdit) -#: ui/customtemplates_base.ui:207 +#: ui/customtemplates_base.ui:219 #, kde-format msgctxt "@info:tooltip" msgid "Additional recipients of the message" msgstr "Dodatni primaoci poruke" #. i18n: ectx: property (whatsThis), widget (TemplateParser::TemplateParserEmailAddressRequesterInterfaceWidget, mToEdit) -#: ui/customtemplates_base.ui:210 +#: ui/customtemplates_base.ui:222 #, kde-format msgctxt "@info:whatsthis" msgid "" @@ -803,14 +809,14 @@ "Ovo je zarezom odvojen popis mail adresa." #. i18n: ectx: property (toolTip), widget (TemplateParser::TemplateParserEmailAddressRequesterInterfaceWidget, mCCEdit) -#: ui/customtemplates_base.ui:223 +#: ui/customtemplates_base.ui:235 #, kde-format msgctxt "@info:tooltip" msgid "Additional recipients who get a copy of the message" msgstr "Dodatni primaoci koji dobijaju kopiju poruke" #. i18n: ectx: property (whatsThis), widget (TemplateParser::TemplateParserEmailAddressRequesterInterfaceWidget, mCCEdit) -#: ui/customtemplates_base.ui:226 +#: ui/customtemplates_base.ui:238 #, kde-format msgctxt "@info:whatsthis" msgid "" @@ -822,56 +828,56 @@ "adresa." #. i18n: ectx: property (toolTip), widget (TemplateParser::TemplatesTextEdit, mEdit) -#: ui/customtemplates_base.ui:243 +#: ui/customtemplates_base.ui:255 #, kde-format msgctxt "@info:tooltip" msgid "The custom template" msgstr "Prilagođeni predložak" #. i18n: ectx: property (whatsThis), widget (TemplateParser::TemplatesTextEdit, mEdit) -#: ui/customtemplates_base.ui:246 +#: ui/customtemplates_base.ui:258 #, kde-format msgctxt "@info:whatsthis" msgid "This area contains the associated custom template." msgstr "Ovo područje sadrži pripadajući prilagođeni predložak" #. i18n: ectx: property (text), item, widget (KComboBox, mType) -#: ui/customtemplates_base.ui:271 +#: ui/customtemplates_base.ui:283 #, kde-format msgctxt "@item:inlistbox Universal custom template type." msgid "Universal" msgstr "Univerzalno" #. i18n: ectx: property (text), item, widget (KComboBox, mType) -#: ui/customtemplates_base.ui:276 +#: ui/customtemplates_base.ui:288 #, kde-format msgctxt "@item:inlistbox Custom template type for message replies" msgid "Reply" msgstr "Odgovor" #. i18n: ectx: property (text), item, widget (KComboBox, mType) -#: ui/customtemplates_base.ui:281 +#: ui/customtemplates_base.ui:293 #, kde-format msgctxt "@item:inlistbox Custom template type for reply-to-all messages" msgid "Reply to All" msgstr "Odgovor svima" #. i18n: ectx: property (text), item, widget (KComboBox, mType) -#: ui/customtemplates_base.ui:286 +#: ui/customtemplates_base.ui:298 #, kde-format msgctxt "@item:inlistbox Custom template type for messsage forwards" msgid "Forward" msgstr "Prosljeđivanje" #. i18n: ectx: property (text), widget (QLabel, textLabel1_2) -#: ui/customtemplates_base.ui:294 +#: ui/customtemplates_base.ui:306 #, kde-format msgctxt "@label" msgid "Shortc&ut:" msgstr "&Prečica:" #. i18n: ectx: property (text), widget (QLabel, textLabel1) -#: ui/customtemplates_base.ui:313 +#: ui/customtemplates_base.ui:325 #, kde-format msgctxt "@label" msgid "&Template type:" diff -Nru kf5-messagelib-17.12.3/po/ca/libmessagecomposer.po kf5-messagelib-18.04.3/po/ca/libmessagecomposer.po --- kf5-messagelib-17.12.3/po/ca/libmessagecomposer.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/ca/libmessagecomposer.po 2018-07-10 00:15:57.000000000 +0000 @@ -1,18 +1,18 @@ # Translation of libmessagecomposer.po to Catalan -# Copyright (C) 2010-2017 This_file_is_part_of_KDE +# Copyright (C) 2010-2018 This_file_is_part_of_KDE # This file is distributed under the license LGPL version 2.1 or # version 3 or later versions approved by the membership of KDE e.V. # # Manuel Tortosa , 2010, 2011. # Josep Ma. Ferrer , 2010, 2011, 2012, 2013, 2014, 2015, 2017. -# Antoni Bella Pérez , 2013, 2014, 2015, 2016, 2017. +# Antoni Bella Pérez , 2013, 2014, 2015, 2016, 2017, 2018. msgid "" msgstr "" "Project-Id-Version: libmessagecomposer\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-11-29 08:30+0100\n" -"PO-Revision-Date: 2017-12-30 18:07+0100\n" -"Last-Translator: Josep Ma. Ferrer \n" +"POT-Creation-Date: 2018-03-21 06:23+0100\n" +"PO-Revision-Date: 2018-06-23 19:14+0100\n" +"Last-Translator: Antoni Bella Pérez \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" @@ -99,7 +99,7 @@ msgstr "Adjunta" #: attachment/attachmentcontrollerbase.cpp:460 -#: composer/composerviewbase.cpp:1706 +#: composer/composerviewbase.cpp:1698 #, kde-format msgid "&Attach File..." msgstr "&Adjunta un fitxer..." @@ -192,41 +192,41 @@ msgid "Reload" msgstr "Recarrega" -#: attachment/attachmentcontrollerbase.cpp:658 -#: attachment/attachmentcontrollerbase.cpp:687 -#: attachment/attachmentcontrollerbase.cpp:745 +#: attachment/attachmentcontrollerbase.cpp:657 +#: attachment/attachmentcontrollerbase.cpp:686 +#: attachment/attachmentcontrollerbase.cpp:743 #, kde-format msgid "KMail was unable to write the attachment to a temporary file." msgstr "El KMail no ha pogut escriure l'adjunt a un fitxer temporal." -#: attachment/attachmentcontrollerbase.cpp:659 -#: attachment/attachmentcontrollerbase.cpp:688 -#: attachment/attachmentcontrollerbase.cpp:705 +#: attachment/attachmentcontrollerbase.cpp:658 +#: attachment/attachmentcontrollerbase.cpp:687 +#: attachment/attachmentcontrollerbase.cpp:704 #, kde-format msgid "Unable to open attachment" msgstr "No s'ha pogut obrir l'adjunt" -#: attachment/attachmentcontrollerbase.cpp:704 +#: attachment/attachmentcontrollerbase.cpp:703 #, kde-format msgid "KMail was unable to open the attachment." msgstr "El KMail no ha pogut obrir l'adjunt." -#: attachment/attachmentcontrollerbase.cpp:746 +#: attachment/attachmentcontrollerbase.cpp:744 #, kde-format msgid "Unable to edit attachment" msgstr "No es pot editar l'adjunt" -#: attachment/attachmentcontrollerbase.cpp:788 +#: attachment/attachmentcontrollerbase.cpp:786 #, kde-format msgid "unnamed" msgstr "sense nom" -#: attachment/attachmentcontrollerbase.cpp:791 +#: attachment/attachmentcontrollerbase.cpp:789 #, kde-format msgid "Save Attachment As" msgstr "Desa l'adjunt com a" -#: attachment/attachmentcontrollerbase.cpp:814 +#: attachment/attachmentcontrollerbase.cpp:812 #, kde-format msgid "" "File %1 exists.\n" @@ -235,53 +235,53 @@ "El fitxer %1 ja existeix.\n" "Voleu substituir-lo?" -#: attachment/attachmentcontrollerbase.cpp:814 +#: attachment/attachmentcontrollerbase.cpp:812 #, kde-format msgid "Save to File" msgstr "Desa a un fitxer" -#: attachment/attachmentcontrollerbase.cpp:814 +#: attachment/attachmentcontrollerbase.cpp:812 #, kde-format msgid "&Replace" msgstr "&Substitueix" -#: attachment/attachmentcontrollerbase.cpp:841 -#: attachment/attachmentcontrollerbase.cpp:900 +#: attachment/attachmentcontrollerbase.cpp:839 +#: attachment/attachmentcontrollerbase.cpp:898 #, kde-format msgid "Do you really want to attach this directory \"%1\"?" msgstr "Realment voleu adjuntar aquest directori «%1»?" -#: attachment/attachmentcontrollerbase.cpp:842 -#: attachment/attachmentcontrollerbase.cpp:901 +#: attachment/attachmentcontrollerbase.cpp:840 +#: attachment/attachmentcontrollerbase.cpp:899 #, kde-format msgctxt "@title:window" msgid "Attach directory" msgstr "Adjunta un directori" -#: attachment/attachmentcontrollerbase.cpp:877 +#: attachment/attachmentcontrollerbase.cpp:875 #, kde-format msgctxt "@title:window" msgid "Attach Directory" msgstr "Adjunta un directori" -#: attachment/attachmentcontrollerbase.cpp:889 +#: attachment/attachmentcontrollerbase.cpp:887 #, kde-format msgctxt "@title:window" msgid "Attach File" msgstr "Adjunta un fitxer" -#: attachment/attachmentcontrollerbase.cpp:929 +#: attachment/attachmentcontrollerbase.cpp:927 #, kde-format msgctxt "@title:window" msgid "Failed to attach file" msgstr "Ha fallat en adjuntar el fitxer" -#: attachment/attachmentcontrollerbase.cpp:952 +#: attachment/attachmentcontrollerbase.cpp:950 #, kde-format msgid "Attach Public OpenPGP Key" msgstr "Adjunta una clau pública OpenPGP" -#: attachment/attachmentcontrollerbase.cpp:953 +#: attachment/attachmentcontrollerbase.cpp:951 #, kde-format msgid "Select the public key which should be attached." msgstr "Seleccioneu la clau pública que s'hauria d'adjuntar." @@ -345,42 +345,42 @@ msgid "Suggest Automatic Display" msgstr "Suggereix mostrar automàticament" -#: composer/composer.cpp:274 +#: composer/composer.cpp:263 #, kde-format msgid "No key data for recipients found." msgstr "No s'han trobat dades de les claus pels destinataris." -#: composer/composerviewbase.cpp:317 +#: composer/composerviewbase.cpp:308 #, kde-format msgid "&Keep markup, do not sign/encrypt" msgstr "&Mantén els marcadors, no signis/encriptis" -#: composer/composerviewbase.cpp:318 +#: composer/composerviewbase.cpp:309 #, kde-format msgid "&Keep markup, do not encrypt" msgstr "&Mantén els marcadors, no encriptis" -#: composer/composerviewbase.cpp:319 +#: composer/composerviewbase.cpp:310 #, kde-format msgid "&Keep markup, do not sign" msgstr "&Mantén els marcadors, no signis" -#: composer/composerviewbase.cpp:321 +#: composer/composerviewbase.cpp:312 #, kde-format msgid "Sign/Encrypt (delete markup)" msgstr "Signa/encripta (elimina els marcadors)" -#: composer/composerviewbase.cpp:322 +#: composer/composerviewbase.cpp:313 #, kde-format msgid "Encrypt (delete markup)" msgstr "Encripta (elimina els marcadors)" -#: composer/composerviewbase.cpp:323 +#: composer/composerviewbase.cpp:314 #, kde-format msgid "Sign (delete markup)" msgstr "Signa (elimina els marcadors)" -#: composer/composerviewbase.cpp:325 +#: composer/composerviewbase.cpp:316 #, kde-format msgid "" "

    Inline signing/encrypting of HTML messages is not possible;

    do " @@ -389,38 +389,38 @@ "

    No és possible la signatura/encriptatge inclosa dels missatges HTML.

    Voleu eliminar els marcadors?

    " -#: composer/composerviewbase.cpp:327 +#: composer/composerviewbase.cpp:318 #, kde-format msgid "Sign/Encrypt Message?" msgstr "Signo/Encripto el missatge?" -#: composer/composerviewbase.cpp:488 +#: composer/composerviewbase.cpp:479 #, kde-format msgid "It was not possible to create a message composer." msgstr "No s'ha pogut crear un editor de missatges." -#: composer/composerviewbase.cpp:497 +#: composer/composerviewbase.cpp:488 #, kde-format msgid "Do you want to resize images?" msgstr "Voleu redimensionar les imatges?" -#: composer/composerviewbase.cpp:498 +#: composer/composerviewbase.cpp:489 #, kde-format msgid "Auto Resize Images" msgstr "Redimensió automàtica de les imatges" -#: composer/composerviewbase.cpp:677 composer/composerviewbase.cpp:691 -#: composer/composerviewbase.cpp:712 +#: composer/composerviewbase.cpp:668 composer/composerviewbase.cpp:682 +#: composer/composerviewbase.cpp:703 #, kde-format msgid "Failed to resolve keys. Please report a bug." msgstr "Ha fallat en resoldre les claus. Si us plau, informeu de l'error." -#: composer/composerviewbase.cpp:897 composer/composerviewbase.cpp:1165 +#: composer/composerviewbase.cpp:888 composer/composerviewbase.cpp:1156 #, kde-format msgid "Job cancelled by the user" msgstr "Treball cancel·lat per l'usuari" -#: composer/composerviewbase.cpp:902 +#: composer/composerviewbase.cpp:893 #, kde-format msgid "" "Could not compose message: %1 \n" @@ -429,39 +429,39 @@ "No s'ha pogut editar el missatge: %1 \n" " Si us plau, informeu d'aquest error." -#: composer/composerviewbase.cpp:904 +#: composer/composerviewbase.cpp:895 #, kde-format msgid "Could not compose message: %1" msgstr "No s'ha pogut editar el missatge: %1" -#: composer/composerviewbase.cpp:980 +#: composer/composerviewbase.cpp:971 #, kde-format msgid "There were problems trying to queue the message for sending: %1" msgstr "" "S'han produït errors en intentar posar el missatge a la cua per al seu " "enviament: %1" -#: composer/composerviewbase.cpp:1168 +#: composer/composerviewbase.cpp:1159 #, kde-format msgid "Could not autosave message: %1" msgstr "No s'ha pogut autodesar el missatge: %1" -#: composer/composerviewbase.cpp:1188 +#: composer/composerviewbase.cpp:1179 #, kde-format msgid "Could not write all data to file." msgstr "No s'han pogut escriure totes les dades al fitxer." -#: composer/composerviewbase.cpp:1191 +#: composer/composerviewbase.cpp:1182 #, kde-format msgid "Could not finalize the file." msgstr "No s'ha pogut finalitzar el fitxer." -#: composer/composerviewbase.cpp:1195 +#: composer/composerviewbase.cpp:1186 #, kde-format msgid "Could not open file." msgstr "No s'ha pogut obrir el fitxer." -#: composer/composerviewbase.cpp:1201 +#: composer/composerviewbase.cpp:1192 #, kde-format msgid "" "Autosaving the message as %1 failed.\n" @@ -472,17 +472,17 @@ "%2\n" "Motiu: %3" -#: composer/composerviewbase.cpp:1207 +#: composer/composerviewbase.cpp:1198 #, kde-format msgid "Autosaving Message Failed" msgstr "El desament automàtic del missatge ha fallat." -#: composer/composerviewbase.cpp:1295 +#: composer/composerviewbase.cpp:1286 #, kde-format msgid "Failed to save the message: %1" msgstr "Ha fallat en desar el missatge: %1" -#: composer/composerviewbase.cpp:1702 +#: composer/composerviewbase.cpp:1694 #, kde-format msgid "" "The message you have composed seems to refer to an attached file but you " @@ -493,17 +493,17 @@ "no heu adjuntat res.\n" "Voleu adjuntar un fitxer al missatge?" -#: composer/composerviewbase.cpp:1705 +#: composer/composerviewbase.cpp:1697 #, kde-format msgid "File Attachment Reminder" msgstr "Recordatori de fitxer adjunt" -#: composer/composerviewbase.cpp:1707 +#: composer/composerviewbase.cpp:1699 #, kde-format msgid "&Send as Is" msgstr "Envia t&al qual" -#: composer/composerviewbase.cpp:1759 +#: composer/composerviewbase.cpp:1751 #, kde-format msgid "" "Examination of the recipient's signing preferences yielded that you be asked " @@ -514,51 +514,51 @@ "que s'ha de preguntar si se signa o no aquest missatge.\n" "Signo aquest missatge?" -#: composer/composerviewbase.cpp:1764 composer/composerviewbase.cpp:1793 +#: composer/composerviewbase.cpp:1756 composer/composerviewbase.cpp:1785 #, kde-format msgid "Sign Message?" msgstr "Signo el missatge?" -#: composer/composerviewbase.cpp:1765 composer/composerviewbase.cpp:1794 +#: composer/composerviewbase.cpp:1757 composer/composerviewbase.cpp:1786 #, kde-format msgctxt "to sign" msgid "&Sign" msgstr "&Signa" -#: composer/composerviewbase.cpp:1766 composer/composerviewbase.cpp:1795 +#: composer/composerviewbase.cpp:1758 composer/composerviewbase.cpp:1787 #, kde-format msgid "Do &Not Sign" msgstr "&No signis" -#: composer/composerviewbase.cpp:1789 +#: composer/composerviewbase.cpp:1781 #, kde-format msgid "" "There are conflicting signing preferences for these recipients.\n" "Sign this message?" msgstr "" -"Hi ha conflictes de preferència de signatura per aquests destinataris.\n" +"Hi ha conflictes de preferència de signatura per a aquests destinataris.\n" "Signo aquest missatge?" -#: composer/composerviewbase.cpp:1817 +#: composer/composerviewbase.cpp:1809 #, kde-format msgid "" "You have requested to sign this message, but no valid signing keys have been " "configured for this identity." msgstr "" "Heu sol·licitat signar aquest missatge, però no s'ha configurat cap clau de " -"signatura vàlida per aquesta identitat." +"signatura vàlida per a aquesta identitat." -#: composer/composerviewbase.cpp:1821 +#: composer/composerviewbase.cpp:1813 #, kde-format msgid "Send Unsigned?" msgstr "Envio sense signar?" -#: composer/composerviewbase.cpp:1822 +#: composer/composerviewbase.cpp:1814 #, kde-format msgid "Send &Unsigned" msgstr "Envia &sense signar" -#: composer/composerviewbase.cpp:1839 +#: composer/composerviewbase.cpp:1831 #, kde-format msgid "" "Some parts of this message will not be signed.\n" @@ -570,7 +570,7 @@ "política del lloc.\n" "Signo totes les parts?" -#: composer/composerviewbase.cpp:1842 +#: composer/composerviewbase.cpp:1834 #, kde-format msgid "" "This message will not be signed.\n" @@ -582,27 +582,27 @@ "lloc.\n" "Signo el missatge?" -#: composer/composerviewbase.cpp:1846 +#: composer/composerviewbase.cpp:1838 #, kde-format msgid "&Sign All Parts" msgstr "&Signa totes les parts" -#: composer/composerviewbase.cpp:1846 +#: composer/composerviewbase.cpp:1838 #, kde-format msgid "&Sign" msgstr "&Signa" -#: composer/composerviewbase.cpp:1848 +#: composer/composerviewbase.cpp:1840 #, kde-format msgid "Unsigned-Message Warning" msgstr "Avís de missatge sense signar" -#: composer/composerviewbase.cpp:1850 +#: composer/composerviewbase.cpp:1842 #, kde-format msgid "Send &As Is" msgstr "Envia t&al qual" -#: composer/composerviewbase.cpp:1895 +#: composer/composerviewbase.cpp:1887 #, kde-format msgid "" "Valid trusted encryption keys were found for all recipients.\n" @@ -611,7 +611,7 @@ "S'han trobat claus d'encriptatge vàlides per a tots els destinataris.\n" "Encripto aquest missatge?" -#: composer/composerviewbase.cpp:1897 +#: composer/composerviewbase.cpp:1889 #, kde-format msgid "" "Examination of the recipient's encryption preferences yielded that you be " @@ -622,48 +622,49 @@ "que s'ha de preguntar si s'encripta o no aquest missatge.\n" "Encripto aquest missatge?" -#: composer/composerviewbase.cpp:1902 composer/composerviewbase.cpp:1935 +#: composer/composerviewbase.cpp:1894 composer/composerviewbase.cpp:1927 #, kde-format msgid "Encrypt Message?" msgstr "Encripto el missatge?" -#: composer/composerviewbase.cpp:1904 +#: composer/composerviewbase.cpp:1896 #, kde-format msgid "Sign && &Encrypt" msgstr "Signa i &encripta" -#: composer/composerviewbase.cpp:1905 composer/composerviewbase.cpp:1936 -#: composer/composerviewbase.cpp:1991 composer/keyresolver.cpp:1653 -#: composer/keyresolver.cpp:1696 +#: composer/composerviewbase.cpp:1897 composer/composerviewbase.cpp:1928 +#: composer/composerviewbase.cpp:1983 composer/keyresolver.cpp:1633 +#: composer/keyresolver.cpp:1676 #, kde-format msgid "&Encrypt" msgstr "&Encripta" -#: composer/composerviewbase.cpp:1907 composer/composerviewbase.cpp:1996 +#: composer/composerviewbase.cpp:1899 composer/composerviewbase.cpp:1988 #, kde-format msgid "&Sign Only" msgstr "Només &signa" -#: composer/composerviewbase.cpp:1908 composer/composerviewbase.cpp:1997 +#: composer/composerviewbase.cpp:1900 composer/composerviewbase.cpp:1989 #, kde-format msgid "&Send As-Is" msgstr "En&via tal qual" -#: composer/composerviewbase.cpp:1931 +#: composer/composerviewbase.cpp:1923 #, kde-format msgid "" "There are conflicting encryption preferences for these recipients.\n" "Encrypt this message?" msgstr "" -"Hi ha conflictes de preferència d'encriptatge per aquests destinataris.\n" +"Hi ha conflictes de preferència de l'encriptatge per a aquests " +"destinataris.\n" "Encripto aquest missatge?" -#: composer/composerviewbase.cpp:1937 +#: composer/composerviewbase.cpp:1929 #, kde-format msgid "Do &Not Encrypt" msgstr "&No l'encriptis" -#: composer/composerviewbase.cpp:1959 +#: composer/composerviewbase.cpp:1951 #, kde-format msgid "" "You have requested to encrypt this message, and to encrypt a copy to " @@ -671,20 +672,20 @@ "identity." msgstr "" "Heu sol·licitat encriptar aquest missatge, i encriptar una còpia per vós, " -"però no s'ha configurat cap clau fiable d'encriptatge vàlida per aquesta " +"però no s'ha configurat cap clau fiable d'encriptatge vàlida per a aquesta " "identitat." -#: composer/composerviewbase.cpp:1964 +#: composer/composerviewbase.cpp:1956 #, kde-format msgid "Send Unencrypted?" msgstr "Envio sense encriptar?" -#: composer/composerviewbase.cpp:1965 composer/keyresolver.cpp:1678 +#: composer/composerviewbase.cpp:1957 composer/keyresolver.cpp:1658 #, kde-format msgid "Send &Unencrypted" msgstr "Envia se&nse encriptar" -#: composer/composerviewbase.cpp:1982 +#: composer/composerviewbase.cpp:1974 #, kde-format msgid "" "Some parts of this message will not be encrypted.\n" @@ -697,7 +698,7 @@ "política del lloc.\n" "Encripto totes les parts?" -#: composer/composerviewbase.cpp:1986 +#: composer/composerviewbase.cpp:1978 #, kde-format msgid "" "This message will not be encrypted.\n" @@ -710,17 +711,17 @@ "lloc i/o perdre informació sensible.\n" "Encripto totes les parts?" -#: composer/composerviewbase.cpp:1991 +#: composer/composerviewbase.cpp:1983 #, kde-format msgid "&Encrypt All Parts" msgstr "&Encripta totes les parts" -#: composer/composerviewbase.cpp:1993 +#: composer/composerviewbase.cpp:1985 #, kde-format msgid "Unencrypted Message Warning" msgstr "Avís de missatge sense encriptar" -#: composer/keyresolver.cpp:361 +#: composer/keyresolver.cpp:341 #, kde-format msgid "" "One or more of your configured OpenPGP encryption keys or S/MIME " @@ -729,7 +730,7 @@ "Una o més de les claus d'encriptatge OpenPGP configurades o certificats S/" "MIME no és de plena confiança per a l'encriptatge." -#: composer/keyresolver.cpp:364 +#: composer/keyresolver.cpp:344 #, kde-format msgid "" "One or more of the OpenPGP encryption keys or S/MIME certificates for " @@ -738,7 +739,7 @@ "Una o més de les claus d'encriptatge OpenPGP configurades o certificats S/" "MIME pel destinatari «%1» no és de plena confiança per a l'encriptatge." -#: composer/keyresolver.cpp:370 +#: composer/keyresolver.cpp:350 #, kde-format msgid "" "\n" @@ -747,7 +748,7 @@ "\n" "Les claus següents només són de confiança parcial: \n" -#: composer/keyresolver.cpp:374 +#: composer/keyresolver.cpp:354 #, kde-format msgid "" "\n" @@ -756,7 +757,7 @@ "\n" "Les claus següents tenen un nivell de confiança desconegut: \n" -#: composer/keyresolver.cpp:378 +#: composer/keyresolver.cpp:358 #, kde-format msgid "" "\n" @@ -765,12 +766,12 @@ "\n" "Les claus següents o certificats estan revocats: \n" -#: composer/keyresolver.cpp:382 +#: composer/keyresolver.cpp:362 #, kde-format msgid "Not Fully Trusted Encryption Keys" msgstr "Claus d'encriptatge sense confiança completa" -#: composer/keyresolver.cpp:714 +#: composer/keyresolver.cpp:694 #, kde-format msgid "" "

    Your OpenPGP signing key

    %2 (KeyID 0x%3)La vostra clau OpenPGP de signatura

    %2 (ID de " "clau 0x%3)

    ha vençut fa %1 dies.

    " -#: composer/keyresolver.cpp:718 +#: composer/keyresolver.cpp:698 #, kde-format msgid "" "

    Your OpenPGP encryption key

    %2 (KeyID 0x%3)La vostra clau OpenPGP d'encriptatge

    %2 (ID de " "clau 0x%3)

    ha vençut fa %1 dies.

    " -#: composer/keyresolver.cpp:722 +#: composer/keyresolver.cpp:702 #, kde-format msgid "" "

    The OpenPGP key for

    %2 (KeyID 0x%3)La clau OpenPGP per

    %2 (ID de clau 0x%3)

    ha vençut fa %1 dies.

    " -#: composer/keyresolver.cpp:733 +#: composer/keyresolver.cpp:713 #, kde-format msgid "" "

    The root certificate

    %4

    for your S/MIME " @@ -834,7 +835,7 @@ "certificat de signatura S/MIME

    %2 (número de sèrie " "%3)

    ha vençut fa %1 dies.

    " -#: composer/keyresolver.cpp:739 +#: composer/keyresolver.cpp:719 #, kde-format msgid "" "

    The root certificate

    %4

    for your S/MIME " @@ -853,7 +854,7 @@ "certificat d'encriptatge S/MIME

    %2 (número de " "sèrie %3)

    ha vençut fa %1 dies.

    " -#: composer/keyresolver.cpp:745 +#: composer/keyresolver.cpp:725 #, kde-format msgid "" "

    The root certificate

    %4

    for S/MIME " @@ -872,7 +873,7 @@ "MIME

    %2 (número de sèrie %3)

    ha vençut fa %1 " "dies.

    " -#: composer/keyresolver.cpp:752 +#: composer/keyresolver.cpp:732 #, kde-format msgid "" "

    The intermediate CA certificate

    %4

    for " @@ -891,7 +892,7 @@ "

    del vostre certificat de signatura S/MIME

    %2 " "(número de sèrie %3)

    ha vençut fa %1 dies.

    " -#: composer/keyresolver.cpp:758 +#: composer/keyresolver.cpp:738 #, kde-format msgid "" "

    The intermediate CA certificate

    %4

    for " @@ -910,7 +911,7 @@ "

    del vostre certificat d'encriptatge S/MIME

    %2 " "(número de sèrie %3)

    ha vençut fa %1 dies.

    " -#: composer/keyresolver.cpp:764 +#: composer/keyresolver.cpp:744 #, kde-format msgid "" "

    The intermediate CA certificate

    %4

    for S/" @@ -929,7 +930,7 @@ "

    del certificat S/MIME

    %2 (número de sèrie %3)

    ha vençut fa %1 dies.

    " -#: composer/keyresolver.cpp:776 +#: composer/keyresolver.cpp:756 #, kde-format msgid "" "

    Your S/MIME signing certificate

    %2 (serial " @@ -944,7 +945,7 @@ "

    El vostre certificat de signatura S/MIME

    %2 " "(número de sèrie %3)

    ha vençut fa %1 dies.

    " -#: composer/keyresolver.cpp:780 +#: composer/keyresolver.cpp:760 #, kde-format msgid "" "

    Your S/MIME encryption certificate

    %2 (serial " @@ -959,7 +960,7 @@ "

    El vostre certificat d'encriptatge S/MIME

    %2 " "(número de sèrie %3)

    ha vençut fa %1 dies.

    " -#: composer/keyresolver.cpp:784 +#: composer/keyresolver.cpp:764 #, kde-format msgid "" "

    The S/MIME certificate for

    %2 (serial number " @@ -974,17 +975,17 @@ "

    El certificat S/MIME per

    %2 (número de sèrie " "%3)

    ha vençut fa %1 dies.

    " -#: composer/keyresolver.cpp:795 +#: composer/keyresolver.cpp:775 #, kde-format msgid "OpenPGP Key Expired" msgstr "Clau OpenPGP vençuda" -#: composer/keyresolver.cpp:796 +#: composer/keyresolver.cpp:776 #, kde-format msgid "S/MIME Certificate Expired" msgstr "Certificat S/MIME vençut" -#: composer/keyresolver.cpp:820 +#: composer/keyresolver.cpp:800 #, kde-format msgid "" "

    Your OpenPGP signing key

    %2 (KeyID 0x%3)La vostra clau OpenPGP de signatura

    %2 (ID " "de clau 0x%3)

    venç en menys de %1 dies.

    " -#: composer/keyresolver.cpp:824 +#: composer/keyresolver.cpp:804 #, kde-format msgid "" "

    Your OpenPGP encryption key

    %2 (KeyID 0x" @@ -1014,7 +1015,7 @@ "

    La vostra clau OpenPGP d'encriptatge

    %2 (ID " "de clau 0x%3)

    venç en menys de %1 dies.

    " -#: composer/keyresolver.cpp:828 +#: composer/keyresolver.cpp:808 #, kde-format msgid "" "

    The OpenPGP key for

    %2 (KeyID 0x%3)La clau OpenPGP per

    %2 (ID de clau 0x%3)

    venç en menys de %1 dies.

    " -#: composer/keyresolver.cpp:839 +#: composer/keyresolver.cpp:819 #, kde-format msgid "" "

    The root certificate

    %4

    for your S/" @@ -1048,7 +1049,7 @@ "certificat de signatura S/MIME

    %2 (número de " "sèrie %3)

    venç en menys de %1 dies.

    " -#: composer/keyresolver.cpp:845 +#: composer/keyresolver.cpp:825 #, kde-format msgid "" "

    The root certificate

    %4

    for your S/" @@ -1067,7 +1068,7 @@ "certificat d'encriptatge S/MIME

    %2 (número de " "sèrie %3)

    venç en menys de %1 dies.

    " -#: composer/keyresolver.cpp:851 +#: composer/keyresolver.cpp:831 #, kde-format msgid "" "

    The root certificate

    %4

    for S/MIME " @@ -1086,7 +1087,7 @@ "S/MIME

    %2 (número de sèrie %3)

    venç en " "menys de %1 dies.

    " -#: composer/keyresolver.cpp:858 +#: composer/keyresolver.cpp:838 #, kde-format msgid "" "

    The intermediate CA certificate

    %4del vostre certificat de signatura S/MIME

    %2 (número de sèrie %3)

    venç en menys de %1 dies.

    " -#: composer/keyresolver.cpp:864 +#: composer/keyresolver.cpp:844 #, kde-format msgid "" "

    The intermediate CA certificate

    %4del vostre certificat d'encriptatge S/MIME

    %2 (número de sèrie %3)

    venç en menys de %1 dies.

    " -#: composer/keyresolver.cpp:870 +#: composer/keyresolver.cpp:850 #, kde-format msgid "" "

    The intermediate CA certificate

    %4del certificat S/MIME

    %2 (número de sèrie " "%3)

    venç en menys de %1 dies.

    " -#: composer/keyresolver.cpp:882 +#: composer/keyresolver.cpp:862 #, kde-format msgid "" "

    Your S/MIME signing certificate

    %2 (serial " @@ -1158,7 +1159,7 @@ "

    El vostre certificat de signatura S/MIME

    %2 " "(número de sèrie %3)

    venç en menys de %1 dies.

    " -#: composer/keyresolver.cpp:886 +#: composer/keyresolver.cpp:866 #, kde-format msgid "" "

    Your S/MIME encryption certificate

    %2 " @@ -1173,7 +1174,7 @@ "

    El vostre certificat d'encriptatge S/MIME

    %2 (número de sèrie %3)

    venç en menys de %1 dies.

    " -#: composer/keyresolver.cpp:890 +#: composer/keyresolver.cpp:870 #, kde-format msgid "" "

    The S/MIME certificate for

    %2 (serial " @@ -1188,17 +1189,17 @@ "

    El certificat S/MIME per

    %2 (número de " "sèrie %3)

    venç en menys de %1 dies.

    " -#: composer/keyresolver.cpp:901 +#: composer/keyresolver.cpp:881 #, kde-format msgid "OpenPGP Key Expires Soon" msgstr "La clau OpenPGP venç aviat" -#: composer/keyresolver.cpp:902 +#: composer/keyresolver.cpp:882 #, kde-format msgid "S/MIME Certificate Expires Soon" msgstr "El certificat S/MIME venç aviat" -#: composer/keyresolver.cpp:941 +#: composer/keyresolver.cpp:921 #, kde-format msgid "" "One or more of your configured OpenPGP encryption keys or S/MIME " @@ -1210,18 +1211,18 @@ msgstr "" "Una o més de les claus d'encriptatge OpenPGP o certificats S/MIME " "configurades no són utilitzables per a l'encriptatge. Torneu a configurar " -"les vostres claus i certificats d'encriptatge per aquesta identitat en el " +"les vostres claus i certificats d'encriptatge per a aquesta identitat en el " "diàleg de configuració de la identitat.\n" "Si trieu continuar, i més tard es necessiten les claus, se us preguntarà que " "indiqueu les claus a utilitzar." -#: composer/keyresolver.cpp:949 composer/keyresolver.cpp:1325 -#: composer/keyresolver.cpp:1353 +#: composer/keyresolver.cpp:929 composer/keyresolver.cpp:1305 +#: composer/keyresolver.cpp:1333 #, kde-format msgid "Unusable Encryption Keys" msgstr "Claus d'encriptatge no utilitzables" -#: composer/keyresolver.cpp:989 +#: composer/keyresolver.cpp:969 #, kde-format msgid "" "One or more of your configured OpenPGP signing keys or S/MIME signing " @@ -1232,18 +1233,18 @@ msgstr "" "Una o més de les claus de signatura OpenPGP o certificats S/MIME configurats " "no són utilitzables per a la signatura. Torneu a configurar les vostres " -"claus i certificats de signatura per aquesta identitat en el diàleg de " +"claus i certificats de signatura per a aquesta identitat en el diàleg de " "configuració de la identitat.\n" "Si trieu continuar, i més tard es necessiten les claus, se us preguntarà que " "indiqueu les claus a utilitzar." -#: composer/keyresolver.cpp:997 composer/keyresolver.cpp:1382 -#: composer/keyresolver.cpp:1400 +#: composer/keyresolver.cpp:977 composer/keyresolver.cpp:1362 +#: composer/keyresolver.cpp:1380 #, kde-format msgid "Unusable Signing Keys" msgstr "Claus d'encriptatge no utilitzables" -#: composer/keyresolver.cpp:1316 +#: composer/keyresolver.cpp:1296 #, kde-format msgid "" "Examination of recipient's encryption preferences yielded that the message " @@ -1257,11 +1258,11 @@ "que el missatge s'hauria d'encriptar utilitzant OpenPGP, com a mínim per " "alguns destinataris;\n" "malgrat això, no s'ha configurat cap clau d'encriptatge OpenPGP de confiança " -"i vàlida per aquesta identitat.\n" +"i vàlida per a aquesta identitat.\n" "Podeu continuar sense encriptatge per a vós mateix, però sapigueu que no " "podreu llegir els vostres propis missatges si ho feu." -#: composer/keyresolver.cpp:1344 +#: composer/keyresolver.cpp:1324 #, kde-format msgid "" "Examination of recipient's encryption preferences yielded that the message " @@ -1275,11 +1276,11 @@ "que el missatge s'hauria d'encriptar utilitzant S/MIME, com a mínim per " "alguns destinataris;\n" "malgrat això, no s'ha configurat cap certificat d'encriptatge S/MIME vàlid " -"per aquesta identitat.\n" +"per a aquesta identitat.\n" "Podeu continuar sense encriptatge per a vós mateix, però sapigueu que no " "podreu llegir els vostres propis missatges si ho feu." -#: composer/keyresolver.cpp:1376 +#: composer/keyresolver.cpp:1356 #, kde-format msgid "" "Examination of recipient's signing preferences yielded that the message " @@ -1293,12 +1294,12 @@ "malgrat això, no s'ha configurat cap clau de signatura OpenPGP vàlida per " "aquesta identitat." -#: composer/keyresolver.cpp:1383 +#: composer/keyresolver.cpp:1363 #, kde-format msgid "Do Not OpenPGP-Sign" msgstr "No signis amb OpenPGP" -#: composer/keyresolver.cpp:1394 +#: composer/keyresolver.cpp:1374 #, kde-format msgid "" "Examination of recipient's signing preferences yielded that the message " @@ -1310,14 +1311,14 @@ "que el missatge s'hauria de signar utilitzant S/MIME, com a mínim per alguns " "destinataris;\n" "malgrat això, no s'ha configurat cap certificat de signatura S/MIME vàlid " -"per aquesta identitat." +"per a aquesta identitat." -#: composer/keyresolver.cpp:1401 +#: composer/keyresolver.cpp:1381 #, kde-format msgid "Do Not S/MIME-Sign" msgstr "No signis amb S/MIME" -#: composer/keyresolver.cpp:1463 +#: composer/keyresolver.cpp:1443 #, kde-format msgid "" "Examination of recipient's signing preferences showed no common type of " @@ -1329,12 +1330,12 @@ "claus de signatura.\n" "Envio el missatge sense signar?" -#: composer/keyresolver.cpp:1467 +#: composer/keyresolver.cpp:1447 #, kde-format msgid "No signing possible" msgstr "No es pot signar" -#: composer/keyresolver.cpp:1648 +#: composer/keyresolver.cpp:1628 #, kde-format msgid "" "You did not select an encryption key for yourself (encrypt to self). You " @@ -1343,13 +1344,13 @@ "No heu seleccionat cap clau d'encriptatge per a vós (encripta a mi mateix). " "Si l'encripteu, no podreu desencriptar el vostre propi missatge." -#: composer/keyresolver.cpp:1652 composer/keyresolver.cpp:1677 -#: composer/keyresolver.cpp:1695 +#: composer/keyresolver.cpp:1632 composer/keyresolver.cpp:1657 +#: composer/keyresolver.cpp:1675 #, kde-format msgid "Missing Key Warning" msgstr "Avís de manca de clau" -#: composer/keyresolver.cpp:1670 +#: composer/keyresolver.cpp:1650 #, kde-format msgid "" "You did not select an encryption key for the recipient of this message; " @@ -1358,7 +1359,7 @@ "No heu seleccionat cap clau d'encriptatge pel destinatari d'aquest missatge; " "per tant, el missatge no s'encriptarà." -#: composer/keyresolver.cpp:1673 +#: composer/keyresolver.cpp:1653 #, kde-format msgid "" "You did not select an encryption key for any of the recipients of this " @@ -1367,7 +1368,7 @@ "No heu seleccionat cap clau d'encriptatge per algun dels destinataris " "d'aquest missatge; per tant, el missatge no s'encriptarà." -#: composer/keyresolver.cpp:1685 +#: composer/keyresolver.cpp:1665 #, kde-format msgid "" "You did not select an encryption key for one of the recipients: this person " @@ -1376,7 +1377,7 @@ "No heu seleccionat cap clau d'encriptatge per a un dels destinataris; " "aquesta persona no podrà desencriptar el missatge si l'encripteu." -#: composer/keyresolver.cpp:1688 +#: composer/keyresolver.cpp:1668 #, kde-format msgid "" "You did not select encryption keys for some of the recipients: these persons " @@ -1385,12 +1386,12 @@ "No heu seleccionat cap clau d'encriptatge per algun dels destinataris; " "aquestes persones no podran desencriptar el missatge si l'encripteu." -#: composer/keyresolver.cpp:1754 +#: composer/keyresolver.cpp:1734 #, kde-format msgid "Encryption Key Selection" msgstr "Selecció de la clau d'encriptatge" -#: composer/keyresolver.cpp:1801 +#: composer/keyresolver.cpp:1781 #, kde-format msgctxt "" "if in your language something like 'certificate(s)' is not possible please " @@ -1405,7 +1406,7 @@ "Si us plau, torneu a seleccionar el/s certificat/s que s'hauran d'emprar per " "a aquest destinatari." -#: composer/keyresolver.cpp:1847 +#: composer/keyresolver.cpp:1827 #, kde-format msgctxt "" "if in your language something like 'certificate(s)' is not possible please " @@ -1423,7 +1424,7 @@ "podreu cercar certificats externs clicant el botó: cerca certificats externs." "
    " -#: composer/keyresolver.cpp:1857 +#: composer/keyresolver.cpp:1837 #, kde-format msgctxt "" "if in your language something like 'certificate(s)' is not possible please " @@ -1497,7 +1498,7 @@ "\n" msgstr "" "\n" -"Aquests és un reenviament d'un resum MIME. El contingut del missatge és a/ls " +"Aquest és un reenviament d'un resum MIME. El contingut del missatge és a/ls " "l'adjunt/s.\n" "\n" "\n" @@ -1513,12 +1514,12 @@ msgid "Select Format..." msgstr "Selecciona el format..." -#: imagescaling/imagescalingwidget.cpp:107 +#: imagescaling/imagescalingwidget.cpp:108 #, kde-format msgid "How does this work?" msgstr "Com funciona això?" -#: imagescaling/imagescalingwidget.cpp:120 +#: imagescaling/imagescalingwidget.cpp:121 #, kde-format msgid "" "

    Here you can define image filename. You can use:

    • %t set " @@ -1529,17 +1530,17 @@ "%t estableix l'hora actual
    • %d estableix la data actual
    • %n " "és el nom del fitxer original
    • %x és l'extensió nova
    " -#: imagescaling/imagescalingwidget.cpp:174 +#: imagescaling/imagescalingwidget.cpp:175 #, kde-format msgid "Custom" msgstr "Personalitzada" -#: imagescaling/imagescalingwidget.cpp:302 +#: imagescaling/imagescalingwidget.cpp:303 #, kde-format msgid "Please verify minimum and maximum values." msgstr "Verifiqueu els valors mínim i màxim." -#: imagescaling/imagescalingwidget.cpp:302 +#: imagescaling/imagescalingwidget.cpp:303 #, kde-format msgid "Error in minimum Maximum value" msgstr "Error en el valor mínim o màxim" @@ -2347,3 +2348,322 @@ #, kde-format msgid "Mail dispatcher offline." msgstr "El distribuïdor de correu està fora de línia." + +#: widgets/dictionarycombobox.cpp:122 +#, kde-format +msgid "AutoDetect Language" +msgstr "Autodetecta l'idioma" + +#~ msgid "Use Baloo search for autocompletion" +#~ msgstr "Usa la cerca del Baloo per a la compleció automàtica" + +#~ msgid "" +#~ "Disable this option if you do not want baloo search addresses to appear " +#~ "in the autocompletion list in the composer's address fields." +#~ msgstr "" +#~ "Desactiveu aquesta opció si no voleu que les adreces cercades pel Baloo " +#~ "apareguin en la llista de compleció automàtica en els camps d'adreça de " +#~ "l'editor." + +#~ msgid "Select email from contact" +#~ msgstr "Selecciona l'adreça de correu del contacte" + +#~ msgid "vCard Import Failed" +#~ msgstr "La importació de la vCard ha fallat" + +#~ msgid "Unable to access %1." +#~ msgstr "No s'ha pogut accedir a %1." + +#~ msgid "Configure Completion..." +#~ msgstr "Configura la compleció..." + +#~ msgid "Automatically expand groups" +#~ msgstr "Expandeix automàticament els grups" + +#~ msgid "Expand Groups..." +#~ msgstr "Expandeix els grups..." + +#~ msgid "Recent Addresses" +#~ msgstr "Adreces recents" + +#~ msgctxt "@title:window" +#~ msgid "Insert HTML" +#~ msgstr "Insereix HTML" + +#~ msgid "Insert HTML tags and texts:" +#~ msgstr "Insereix les etiquetes HTML i el text:" + +#~ msgid "Example: Hello word " +#~ msgstr "Exemple: Hola món " + +#~ msgctxt "@action:button" +#~ msgid "Insert" +#~ msgstr "Insereix" + +#~ msgid "Manage Link" +#~ msgstr "Gestió de l'enllaç" + +#~ msgid "Link Text:" +#~ msgstr "Text de l'enllaç:" + +#~ msgid "Link URL:" +#~ msgstr "URL de l'enllaç:" + +#~ msgctxt "@action" +#~ msgid "Align &Left" +#~ msgstr "Alinea a &l'esquerra" + +#~ msgctxt "@label left justify" +#~ msgid "Left" +#~ msgstr "Esquerra" + +#~ msgctxt "@action" +#~ msgid "Align &Center" +#~ msgstr "Alinea al ¢re" + +#~ msgctxt "@label center justify" +#~ msgid "Center" +#~ msgstr "Centre" + +#~ msgctxt "@action" +#~ msgid "Align &Right" +#~ msgstr "Alinea a la d&reta" + +#~ msgctxt "@label right justify" +#~ msgid "Right" +#~ msgstr "Dreta" + +#~ msgctxt "@action" +#~ msgid "&Justify" +#~ msgstr "&Justifica" + +#~ msgctxt "@label justify fill" +#~ msgid "Justify" +#~ msgstr "Justificat" + +#~ msgctxt "@action" +#~ msgid "Left-to-Right" +#~ msgstr "D'esquerra a dreta" + +#~ msgctxt "@label left-to-right" +#~ msgid "Left-to-Right" +#~ msgstr "D'esquerra a dreta" + +#~ msgctxt "@action" +#~ msgid "Right-to-Left" +#~ msgstr "De dreta a esquerra" + +#~ msgctxt "@label right-to-left" +#~ msgid "Right-to-Left" +#~ msgstr "De dreta a esquerra" + +#~ msgctxt "@action" +#~ msgid "Subscript" +#~ msgstr "Subíndex" + +#~ msgctxt "@action" +#~ msgid "Superscript" +#~ msgstr "Superíndex" + +#~ msgctxt "@action boldify selected text" +#~ msgid "&Bold" +#~ msgstr "&Negreta" + +#~ msgctxt "@action italicize selected text" +#~ msgid "&Italic" +#~ msgstr "&Itàlica" + +#~ msgctxt "@action underline selected text" +#~ msgid "&Underline" +#~ msgstr "&Subratllat" + +#~ msgctxt "@action" +#~ msgid "&Strike Out" +#~ msgstr "&Barrat" + +#~ msgctxt "@action" +#~ msgid "&Font" +#~ msgstr "&Tipus de lletra" + +#~ msgctxt "@action" +#~ msgid "Font &Size" +#~ msgstr "&Mida del tipus de lletra" + +#~ msgctxt "@action" +#~ msgid "Insert Rule Line" +#~ msgstr "Insereix una línia de regla" + +#~ msgctxt "@action" +#~ msgid "Text &Color..." +#~ msgstr "&Color del text..." + +#~ msgctxt "@label stroke color" +#~ msgid "Color" +#~ msgstr "Color" + +#~ msgctxt "@action" +#~ msgid "Text &Highlight..." +#~ msgstr "&Ressalta el text..." + +#~ msgctxt "@action" +#~ msgid "Link" +#~ msgstr "Enllaç" + +#~ msgctxt "@action" +#~ msgid "Increase Indent" +#~ msgstr "Augmenta el sagnat" + +#~ msgctxt "@action" +#~ msgid "Decrease Indent" +#~ msgstr "Minva el sagnat" + +#~ msgctxt "@title:menu" +#~ msgid "List Style" +#~ msgstr "Estil de llista" + +#~ msgctxt "@item:inmenu no list style" +#~ msgid "None" +#~ msgstr "Cap" + +#~ msgctxt "@item:inmenu disc list style" +#~ msgid "Disc" +#~ msgstr "Disc" + +#~ msgctxt "@item:inmenu circle list style" +#~ msgid "Circle" +#~ msgstr "Cercle" + +#~ msgctxt "@item:inmenu square list style" +#~ msgid "Square" +#~ msgstr "Quadrat" + +#~ msgctxt "@item:inmenu numbered lists" +#~ msgid "123" +#~ msgstr "123" + +#~ msgctxt "@item:inmenu lowercase abc lists" +#~ msgid "abc" +#~ msgstr "abc" + +#~ msgctxt "@item:inmenu uppercase abc lists" +#~ msgid "ABC" +#~ msgstr "ABC" + +#~ msgctxt "@item:inmenu lower case roman numerals" +#~ msgid "i ii iii" +#~ msgstr "i ii iii" + +#~ msgctxt "@item:inmenu upper case roman numerals" +#~ msgid "I II III" +#~ msgstr "I II III" + +#~ msgid "Pa&ste as Quotation" +#~ msgstr "Enganxa com a &citació" + +#~ msgid "Add &Quote Characters" +#~ msgstr "Afegeix els caràcters de &citació" + +#~ msgid "Re&move Quote Characters" +#~ msgstr "E&limina els caràcters de citació" + +#~ msgid "Paste Without Formatting" +#~ msgstr "Enganxa sense formatat" + +#~ msgid "Add Image" +#~ msgstr "Afegeix una imatge" + +#~ msgid "Insert HTML" +#~ msgstr "Insereix HTML" + +#~ msgid "Table" +#~ msgstr "Taula" + +#~ msgid "Delete Line" +#~ msgstr "Suprimeix la línia" + +#~ msgid "Reset Font Settings" +#~ msgstr "Reinicia els paràmetres del tipus de lletra" + +#~ msgid "Reset Font" +#~ msgstr "Reinicia el tipus de lletra" + +#~ msgctxt "@action" +#~ msgid "Format Painter" +#~ msgstr "Pintor de formats" + +#~ msgid "I've linked 1 file to this email:" +#~ msgstr "He vinculat 1 fitxer a aquest correu electrònic:" + +#~ msgid "Only local files are supported." +#~ msgstr "Només s'admeten fitxers locals." + +#~ msgctxt "@info" +#~ msgid "Unable to load image %1." +#~ msgstr "No s'ha pogut carregar la imatge %1." + +#~ msgctxt "Start of the filename for an image" +#~ msgid "image" +#~ msgstr "imatge" + +#~ msgid "Command line is empty. Please verify settings." +#~ msgstr "La línia d'ordres és buida. Si us plau, verifiqueu els paràmetres." + +#~ msgid "Empty command line" +#~ msgstr "Línia d'ordres buida" + +#~ msgid "External editor cannot be started. Please verify command \"%1\"" +#~ msgstr "No s'ha pogut iniciar l'editor extern. Verifiqueu l'ordre «%1»" + +#~ msgid "Error was found when we started external editor." +#~ msgstr "S'ha trobat un error en iniciar l'editor extern." + +#~ msgid "External Editor Closed" +#~ msgstr "S'ha tancat l'editor extern" + +#~ msgctxt "@info" +#~ msgid "" +#~ "The external editor is still running.Do you want to stop the editor " +#~ "or keep it running?Stopping the editor will cause all your " +#~ "unsaved changes to be lost." +#~ msgstr "" +#~ "L'editor extern encara es troba en execució.Voleu aturar l'editor " +#~ "mantenir-lo executant-se?Aturar l'editor causarà que es " +#~ "perdin tots els canvis sense desar." + +#~ msgctxt "@title:window" +#~ msgid "External Editor Running" +#~ msgstr "Editor extern en execució" + +#~ msgctxt "@action:button" +#~ msgid "Stop Editor" +#~ msgstr "Atura l'editor" + +#~ msgctxt "@action:button" +#~ msgid "Keep Editor Running" +#~ msgstr "Mantén l'editor executant-se" + +#~ msgid "Write to format" +#~ msgstr "Escriu al format" + +#~ msgid "Current word has already a replacement." +#~ msgstr "La paraula actual ja té una substitució." + +#~ msgid "Add New Autocorrect" +#~ msgstr "Afegeix una correcció automàtica nova" + +#~ msgctxt "@title:window" +#~ msgid "Insert File" +#~ msgstr "Inserció d'un fitxer" + +#~ msgid "Edit Recent Addresses..." +#~ msgstr "Edita les adreces recents..." + +#~ msgid "&Attach" +#~ msgstr "&Adjunta" + +#~ msgid "" +#~ "The maximum size in bits that email attachments are allowed to have (-1 " +#~ "for no limit)" +#~ msgstr "" +#~ "Mida màxima en bits que es permet en els adjunts del correu (-1 per a " +#~ "sense límit)" diff -Nru kf5-messagelib-17.12.3/po/ca/libmessagecore.po kf5-messagelib-18.04.3/po/ca/libmessagecore.po --- kf5-messagelib-17.12.3/po/ca/libmessagecore.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/ca/libmessagecore.po 2018-07-10 00:15:57.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: libmessagecore\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-09-15 03:37+0200\n" +"POT-Creation-Date: 2018-04-27 06:20+0200\n" "PO-Revision-Date: 2017-12-30 18:08+0100\n" "Last-Translator: Josep Ma. Ferrer \n" "Language-Team: Catalan \n" @@ -194,8 +194,8 @@ "

    Marqueu aquesta opció si desitgeu que aquesta part del missatge " "s'encripti.

    La part s'encriptarà per als destinataris del missatge.

    " -#: attachment/attachmentpropertiesdialog.cpp:326 -#: attachment/attachmentpropertiesdialog.cpp:341 +#: attachment/attachmentpropertiesdialog.cpp:324 +#: attachment/attachmentpropertiesdialog.cpp:339 #, kde-format msgid "Attachment Properties" msgstr "Propietats de l'adjunt" @@ -303,8 +303,75 @@ "Mida màxima en bits que es permet en els adjunts del correu (-1 per a sense " "límit)" -#: utils/stringutil.cpp:402 +#: utils/stringutil.cpp:384 #, kde-format msgctxt "signal that this email is defined in my identity" msgid "Me" msgstr "Jo" + +#~ msgid "TextLabel" +#~ msgstr "Etiqueta de text" + +#~ msgid "This is the color used to highlight misspelled words" +#~ msgstr "" +#~ "Aquest és el color utilitzat per a ressaltar les paraules mal escrites" + +#~ msgid "Specifies the font to use for the message body" +#~ msgstr "Especifica el tipus de lletra utilitzat pel cos del missatge" + +#~ msgid "Specifies the font to use for printing" +#~ msgstr "Especifica el tipus de lletra utilitzat per imprimir" + +#~ msgid "This is the color used for highlighting all signed messages" +#~ msgstr "" +#~ "Aquest és el color utilitzat per a ressaltar tots els missatges signats" + +#~ msgid "This is the color used for highlighting all encrypted messages" +#~ msgstr "" +#~ "Aquest és el color utilitzat per a ressaltar tots els missatges encriptats" + +#~ msgid "" +#~ "Disregard the user's umask setting and use \"read-write for the user only" +#~ "\" instead" +#~ msgstr "" +#~ "Ignora el paràmetre «umask» de l'usuari i en el seu lloc usa «lectura i " +#~ "escriptura només per l'usuari»" + +#~ msgid "" +#~ "Some emails, especially those generated automatically, do not specify the " +#~ "character encoding which needs to be used to properly display them. In " +#~ "such cases a fallback character encoding will be used, which you can " +#~ "configure here. Set it to the character encoding most commonly used in " +#~ "your part of the world. As a default the encoding configured for the " +#~ "whole system is used." +#~ msgstr "" +#~ "Alguns correus, especialment els generats automàticament, no especifiquen " +#~ "la codificació de caràcters que s'ha d'usar per a mostrar-los " +#~ "correctament. En aquests casos s'usarà una codificació de caràcters de " +#~ "reserva, que podeu configurar aquí. Establiu-ho a la codificació de " +#~ "caràcters més comuna a la vostra part del món. Per omissió s'usa la " +#~ "codificació configurada per a tot el sistema." + +#~ msgid "Could not read file %1." +#~ msgstr "No s'ha pogut llegir el fitxer %1." + +#~ msgid "Edit Note" +#~ msgstr "Edita la nota" + +#~ msgid "Add Note" +#~ msgstr "Afegeix una nota" + +#~ msgid "Enter the text that should be stored as a note to the mail:" +#~ msgstr "Introduïu el text que s'ha d'emmagatzemar com a nota al correu:" + +#~ msgid "Note type:" +#~ msgstr "Tipus de nota:" + +#~ msgid "Private note" +#~ msgstr "Nota privada" + +#~ msgid "Shared note" +#~ msgstr "Nota compartida" + +#~ msgid "Open Address Book" +#~ msgstr "Obre la llibreta d'adreces" diff -Nru kf5-messagelib-17.12.3/po/ca/libmessagelist.po kf5-messagelib-18.04.3/po/ca/libmessagelist.po --- kf5-messagelib-17.12.3/po/ca/libmessagelist.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/ca/libmessagelist.po 2018-07-10 00:15:57.000000000 +0000 @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: libmessagelist\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2017-10-13 03:28+0200\n" +"POT-Creation-Date: 2018-05-04 06:21+0200\n" "PO-Revision-Date: 2017-12-30 18:09+0100\n" "Last-Translator: Josep Ma. Ferrer \n" "Language-Team: Catalan \n" @@ -24,114 +24,114 @@ "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Accelerator-Marker: &\n" -#: core/aggregation.cpp:198 +#: core/aggregation.cpp:193 #, kde-format msgctxt "No grouping of messages" msgid "None" msgstr "Cap" -#: core/aggregation.cpp:201 +#: core/aggregation.cpp:196 #, kde-format msgid "By Exact Date (of Thread Leaders)" msgstr "Per data exacta (dels líders dels fils)" -#: core/aggregation.cpp:204 +#: core/aggregation.cpp:199 #, kde-format msgid "By Smart Date Ranges (of Thread Leaders)" msgstr "Per intervals intel·ligents de dates (dels líders dels fils)" -#: core/aggregation.cpp:207 core/sortorder.cpp:89 +#: core/aggregation.cpp:202 core/sortorder.cpp:89 #, kde-format msgid "By Smart Sender/Receiver" msgstr "Per remitent/destinatari intel·ligents" -#: core/aggregation.cpp:210 core/sortorder.cpp:87 +#: core/aggregation.cpp:205 core/sortorder.cpp:87 #, kde-format msgid "By Sender" msgstr "Per remitent" -#: core/aggregation.cpp:213 core/sortorder.cpp:88 +#: core/aggregation.cpp:208 core/sortorder.cpp:88 #, kde-format msgid "By Receiver" msgstr "Per destinatari" -#: core/aggregation.cpp:223 +#: core/aggregation.cpp:218 #, kde-format msgid "Never Expand Groups" msgstr "No despleguis mai els grups" -#: core/aggregation.cpp:225 +#: core/aggregation.cpp:220 #, kde-format msgid "Expand Recent Groups" msgstr "Desplega els grups recents" -#: core/aggregation.cpp:227 +#: core/aggregation.cpp:222 #, kde-format msgid "Always Expand Groups" msgstr "Desplega sempre els grups" -#: core/aggregation.cpp:234 +#: core/aggregation.cpp:229 #, kde-format msgctxt "No threading of messages" msgid "None" msgstr "Cap" -#: core/aggregation.cpp:237 +#: core/aggregation.cpp:232 #, kde-format msgid "Perfect Only" msgstr "Només els perfectes" -#: core/aggregation.cpp:240 +#: core/aggregation.cpp:235 #, kde-format msgid "Perfect and by References" msgstr "Perfectes i per referències" -#: core/aggregation.cpp:243 +#: core/aggregation.cpp:238 #, kde-format msgid "Perfect, by References and by Subject" msgstr "Perfectes, per referències i per assumpte" -#: core/aggregation.cpp:253 +#: core/aggregation.cpp:248 #, kde-format msgid "Topmost Message" msgstr "El missatge de més amunt" -#: core/aggregation.cpp:257 +#: core/aggregation.cpp:252 #, kde-format msgid "Most Recent Message" msgstr "El missatge més recent" -#: core/aggregation.cpp:268 +#: core/aggregation.cpp:263 #, kde-format msgid "Never Expand Threads" msgstr "No despleguis mai els fils" -#: core/aggregation.cpp:271 +#: core/aggregation.cpp:266 #, kde-format msgid "Expand Threads With Unread Messages" msgstr "Desplega els fils amb missatges sense llegir" -#: core/aggregation.cpp:274 +#: core/aggregation.cpp:269 #, kde-format msgid "Expand Threads With Unread or Important Messages" msgstr "Desplega els fils amb missatges sense llegir o importants" -#: core/aggregation.cpp:277 +#: core/aggregation.cpp:272 #, kde-format msgid "Always Expand Threads" msgstr "Desplega sempre els fils" -#: core/aggregation.cpp:284 +#: core/aggregation.cpp:279 #, kde-format msgid "Favor Interactivity" msgstr "Afavoreix la interactivitat" -#: core/aggregation.cpp:287 +#: core/aggregation.cpp:282 #, kde-format msgid "Favor Speed" msgstr "Afavoreix la velocitat" -#: core/aggregation.cpp:290 +#: core/aggregation.cpp:285 #, kde-format msgid "Batch Job (No Interactivity)" msgstr "Treball per lots (sense interactivitat)" @@ -460,7 +460,7 @@ "Un tema intel·ligent multilineal i multielement amb una columna d'estat que " "es pot clicar" -#: core/manager.cpp:780 core/view.cpp:2372 core/view.cpp:2375 +#: core/manager.cpp:780 core/view.cpp:2368 core/view.cpp:2371 #, kde-format msgid "Status" msgstr "Estat" @@ -851,225 +851,225 @@ msgid "Styled Joined Rectangles" msgstr "Rectangles estilitzats units" -#: core/view.cpp:744 +#: core/view.cpp:740 #, kde-format msgid "Adjust Column Sizes" msgstr "Ajusta la mida de les columnes" -#: core/view.cpp:748 +#: core/view.cpp:744 #, kde-format msgid "Show Default Columns" msgstr "Mostra les columnes per omissió" -#: core/view.cpp:753 +#: core/view.cpp:749 #, kde-format msgid "Display Tooltips" msgstr "Mostra els consells" -#: core/view.cpp:2353 core/view.cpp:2357 core/widgets/searchlinestatus.cpp:294 +#: core/view.cpp:2349 core/view.cpp:2353 core/widgets/searchlinestatus.cpp:310 #, kde-format msgid "From" msgstr "Des de" -#: core/view.cpp:2354 core/view.cpp:2358 +#: core/view.cpp:2350 core/view.cpp:2354 #, kde-format msgctxt "Receiver of the email" msgid "To" msgstr "A" -#: core/view.cpp:2355 core/view.cpp:2359 +#: core/view.cpp:2351 core/view.cpp:2355 #, kde-format msgid "Date" msgstr "Data" -#: core/view.cpp:2373 core/view.cpp:2376 +#: core/view.cpp:2369 core/view.cpp:2372 #, kde-format msgid "Size" msgstr "Mida" -#: core/view.cpp:2381 core/view.cpp:2383 +#: core/view.cpp:2377 core/view.cpp:2379 #, kde-format msgid "Note" msgstr "Nota" -#: core/view.cpp:2390 core/view.cpp:2392 +#: core/view.cpp:2386 core/view.cpp:2388 #, kde-format msgid "Preview" msgstr "Vista prèvia" -#: core/view.cpp:2410 +#: core/view.cpp:2406 #, kde-format msgid "%1 reply" msgid_plural "%1 replies" msgstr[0] "%1 resposta" msgstr[1] "%1 respostes" -#: core/view.cpp:2414 +#: core/view.cpp:2410 #, kde-format msgid "%1 message in subtree (%2 unread)" msgid_plural "%1 messages in subtree (%2 unread)" msgstr[0] "%1 missatge en subarbre (%2 sense llegir)" msgstr[1] "%1 missatges en subarbre (%2 sense llegir)" -#: core/view.cpp:2455 +#: core/view.cpp:2451 #, kde-format msgctxt "" "@info:tooltip Formats to something like 'Threads started on 2008-12-21'" msgid "Threads started on %1" msgstr "Fils iniciats el %1" -#: core/view.cpp:2461 +#: core/view.cpp:2457 #, kde-format msgctxt "@info:tooltip Formats to something like 'Threads started Yesterday'" msgid "Threads started %1" msgstr "Fils iniciats %1" -#: core/view.cpp:2467 +#: core/view.cpp:2463 #, kde-format msgid "Threads with messages dated %1" msgstr "Fils amb missatges amb data %1" -#: core/view.cpp:2478 +#: core/view.cpp:2474 #, kde-format msgctxt "@info:tooltip Formats to something like 'Messages sent on 2008-12-21'" msgid "Messages sent on %1" msgstr "Missatges enviats el %1" -#: core/view.cpp:2484 +#: core/view.cpp:2480 #, kde-format msgctxt "" "@info:tooltip Formats to something like 'Messages received on 2008-12-21'" msgid "Messages received on %1" msgstr "Missatges rebuts el %1" -#: core/view.cpp:2492 +#: core/view.cpp:2488 #, kde-format msgctxt "@info:tooltip Formats to something like 'Messages sent Yesterday'" msgid "Messages sent %1" msgstr "Missatges enviats %1" -#: core/view.cpp:2498 +#: core/view.cpp:2494 #, kde-format msgctxt "@info:tooltip Formats to something like 'Messages received Yesterday'" msgid "Messages received %1" msgstr "Missatges rebuts %1" -#: core/view.cpp:2509 +#: core/view.cpp:2505 #, kde-format msgid "Threads started within %1" msgstr "Fils iniciats en %1" -#: core/view.cpp:2512 +#: core/view.cpp:2508 #, kde-format msgid "Threads containing messages with dates within %1" msgstr "Fils que contenen missatges amb dates entre %1" -#: core/view.cpp:2520 +#: core/view.cpp:2516 #, kde-format msgid "Messages sent within %1" msgstr "Missatges enviats entre %1" -#: core/view.cpp:2522 +#: core/view.cpp:2518 #, kde-format msgid "Messages received within %1" msgstr "Missatges rebuts entre %1" -#: core/view.cpp:2531 +#: core/view.cpp:2527 #, kde-format msgid "Threads started by %1" msgstr "Fils iniciats per %1" -#: core/view.cpp:2534 +#: core/view.cpp:2530 #, kde-format msgid "Threads with most recent message by %1" msgstr "Fils amb el missatge més recent per %1" -#: core/view.cpp:2543 core/view.cpp:2567 +#: core/view.cpp:2539 core/view.cpp:2563 #, kde-format msgid "Messages sent to %1" msgstr "Missatges enviats a %1" -#: core/view.cpp:2545 +#: core/view.cpp:2541 #, kde-format msgid "Messages sent by %1" msgstr "Missatges enviats per %1" -#: core/view.cpp:2548 +#: core/view.cpp:2544 #, kde-format msgid "Messages received from %1" msgstr "Missatges rebuts de %1" -#: core/view.cpp:2556 +#: core/view.cpp:2552 #, kde-format msgid "Threads directed to %1" msgstr "Fils dirigits a %1" -#: core/view.cpp:2559 +#: core/view.cpp:2555 #, kde-format msgid "Threads with most recent message directed to %1" msgstr "Fils amb el missatge més recent dirigit a %1" -#: core/view.cpp:2569 +#: core/view.cpp:2565 #, kde-format msgid "Messages received by %1" msgstr "Missatges rebuts per %1" -#: core/view.cpp:2595 +#: core/view.cpp:2591 #, kde-format msgid "%1 thread" msgid_plural "%1 threads" msgstr[0] "%1 fil" msgstr[1] "%1 fils" -#: core/view.cpp:2600 +#: core/view.cpp:2596 #, kde-format msgid "%1 message (%2 unread)" msgid_plural "%1 messages (%2 unread)" msgstr[0] "%1 missatge (%2 sense llegir)" msgstr[1] "%1 missatges (%2 sense llegir)" -#: core/widgetbase.cpp:399 messagelistutil.cpp:129 +#: core/widgetbase.cpp:400 messagelistutil.cpp:129 #, kde-format msgid "Theme" msgstr "Tema" -#: core/widgetbase.cpp:421 core/widgetbase.cpp:514 +#: core/widgetbase.cpp:422 core/widgetbase.cpp:515 #: utils/aggregationconfigbutton.cpp:48 utils/themeconfigbutton.cpp:64 #, kde-format msgid "Configure..." msgstr "Configura..." -#: core/widgetbase.cpp:492 messagelistutil.cpp:124 +#: core/widgetbase.cpp:493 messagelistutil.cpp:124 #, kde-format msgid "Aggregation" msgstr "Agregació" -#: core/widgetbase.cpp:577 +#: core/widgetbase.cpp:578 #, kde-format msgid "Message Sort Order" msgstr "Criteri d'ordenació dels missatges" -#: core/widgetbase.cpp:600 +#: core/widgetbase.cpp:601 #, kde-format msgid "Message Sort Direction" msgstr "Direcció d'ordenació dels missatges" -#: core/widgetbase.cpp:618 +#: core/widgetbase.cpp:619 #, kde-format msgid "Group Sort Order" msgstr "Criteri d'ordenació dels grups" -#: core/widgetbase.cpp:637 +#: core/widgetbase.cpp:638 #, kde-format msgid "Group Sort Direction" msgstr "Direcció d'ordenació dels grups" -#: core/widgetbase.cpp:653 +#: core/widgetbase.cpp:654 #, kde-format msgid "Folder Always Uses This Sort Order" msgstr "La carpeta sempre usa aquest criteri d'ordenació" -#: core/widgets/quicksearchline.cpp:53 +#: core/widgets/quicksearchline.cpp:54 #, kde-format msgctxt "Search for messages." msgid "Search" @@ -1094,19 +1094,19 @@ "Algunes de les carpetes de cerca en aquesta consulta encara s'estan indexan " "o seran excloses. Els resultats a continuació poden estar incomplets." -#: core/widgets/searchlinestatus.cpp:76 +#: core/widgets/searchlinestatus.cpp:92 #, kde-format msgctxt "@info:tooltip" msgid "Prevent the quick search field from being cleared when changing folders" msgstr "Evita que es netegi el camp de cerca ràpida en canviar de carpeta" -#: core/widgets/searchlinestatus.cpp:79 +#: core/widgets/searchlinestatus.cpp:95 #, kde-format msgctxt "@info:tooltip" msgid "Clear the quick search field when changing folders" msgstr "Neteja el camp de cerca ràpida en canviar de carpeta" -#: core/widgets/searchlinestatus.cpp:100 +#: core/widgets/searchlinestatus.cpp:116 #, kde-format msgctxt "@info:whatsthis" msgid "" @@ -1116,108 +1116,108 @@ "Activeu aquest botó si voleu mantenir la cerca ràpida bloquejada en moure's " "cap a altres carpetes o quan refineu la cerca per estat del missatge." -#: core/widgets/searchlinestatus.cpp:111 +#: core/widgets/searchlinestatus.cpp:127 #, kde-format msgid "Filter Mails by Status" msgstr "Filtra el correu per l'estat" -#: core/widgets/searchlinestatus.cpp:186 +#: core/widgets/searchlinestatus.cpp:202 #, kde-format msgid "Clear Filter" msgstr "Neteja el filtre" -#: core/widgets/searchlinestatus.cpp:191 +#: core/widgets/searchlinestatus.cpp:207 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Unread" msgstr "Sense llegir" -#: core/widgets/searchlinestatus.cpp:195 +#: core/widgets/searchlinestatus.cpp:211 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Replied" msgstr "Respost" -#: core/widgets/searchlinestatus.cpp:199 +#: core/widgets/searchlinestatus.cpp:215 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Forwarded" msgstr "Reenviat" -#: core/widgets/searchlinestatus.cpp:203 +#: core/widgets/searchlinestatus.cpp:219 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Important" msgstr "Important" -#: core/widgets/searchlinestatus.cpp:207 +#: core/widgets/searchlinestatus.cpp:223 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Action Item" msgstr "Element d'acció" -#: core/widgets/searchlinestatus.cpp:211 +#: core/widgets/searchlinestatus.cpp:227 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Watched" msgstr "Vigilat" -#: core/widgets/searchlinestatus.cpp:215 +#: core/widgets/searchlinestatus.cpp:231 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Ignored" msgstr "Ignorat" -#: core/widgets/searchlinestatus.cpp:219 +#: core/widgets/searchlinestatus.cpp:235 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Has Attachment" msgstr "Té un adjunt" -#: core/widgets/searchlinestatus.cpp:223 +#: core/widgets/searchlinestatus.cpp:239 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Has Invitation" msgstr "Té una invitació" -#: core/widgets/searchlinestatus.cpp:227 +#: core/widgets/searchlinestatus.cpp:243 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Spam" msgstr "Correu brossa" -#: core/widgets/searchlinestatus.cpp:231 +#: core/widgets/searchlinestatus.cpp:247 #, kde-format msgctxt "@action:inmenu Status of a message" msgid "Ham" msgstr "Correu legítim" -#: core/widgets/searchlinestatus.cpp:241 +#: core/widgets/searchlinestatus.cpp:257 #, kde-format msgid "Full Message" msgstr "Tot el missatge" -#: core/widgets/searchlinestatus.cpp:248 +#: core/widgets/searchlinestatus.cpp:264 #, kde-format msgid "Body" msgstr "Cos" -#: core/widgets/searchlinestatus.cpp:253 +#: core/widgets/searchlinestatus.cpp:269 #, kde-format msgid "Subject" msgstr "Assumpte" -#: core/widgets/searchlinestatus.cpp:264 +#: core/widgets/searchlinestatus.cpp:280 #, kde-format msgid "BCC" msgstr "BCC" -#: core/widgets/searchlinestatus.cpp:292 +#: core/widgets/searchlinestatus.cpp:308 #, kde-format msgid "To" msgstr "A" -#: core/widgets/searchlinestatus.cpp:344 +#: core/widgets/searchlinestatus.cpp:360 #, kde-format msgid "Clear History" msgstr "Neteja l'historial" @@ -1259,54 +1259,54 @@ msgid "Show Quick Search Bar" msgstr "Mostra la barra de cerca ràpida" -#: pane.cpp:235 +#: pane.cpp:237 #, kde-format msgid "Message List" msgstr "Llista de missatges" -#: pane.cpp:241 +#: pane.cpp:243 #, kde-format msgid "Create New Tab" msgstr "Crea una pestanya nova" -#: pane.cpp:252 +#: pane.cpp:254 #, kde-format msgid "Close Tab" msgstr "Tanca la pestanya" -#: pane.cpp:259 +#: pane.cpp:261 #, kde-format msgid "Activate Next Tab" msgstr "Activa la pestanya següent" -#: pane.cpp:264 +#: pane.cpp:266 #, kde-format msgid "Activate Previous Tab" msgstr "Activa la pestanya anterior" -#: pane.cpp:269 +#: pane.cpp:271 #, kde-format msgid "Move Tab Left" msgstr "Mou la pestanya a l'esquerra" -#: pane.cpp:274 +#: pane.cpp:276 #, kde-format msgid "Move Tab Right" msgstr "Mou la pestanya a la dreta" -#: pane.cpp:481 pane.cpp:746 +#: pane.cpp:483 pane.cpp:758 #, kde-format msgctxt "@title:tab Empty messagelist" msgid "Empty" msgstr "Buida" -#: pane.cpp:668 +#: pane.cpp:677 #, kde-format msgctxt "@action:inmenu" msgid "Close Tab" msgstr "Tanca la pestanya" -#: pane.cpp:671 +#: pane.cpp:680 #, kde-format msgctxt "@action:inmenu" msgid "Close All Other Tabs" @@ -1371,7 +1371,7 @@ msgstr "Personalitza els modes d'agregació dels missatges" #: utils/configureaggregationsdialog.cpp:129 -#: utils/configureaggregationsdialog.cpp:360 +#: utils/configureaggregationsdialog.cpp:359 #, kde-format msgid "New Aggregation" msgstr "Agregació nova" @@ -1396,23 +1396,23 @@ msgid "Delete Aggregation" msgstr "Suprimeix l'agregació" -#: utils/configureaggregationsdialog.cpp:343 +#: utils/configureaggregationsdialog.cpp:342 #, kde-format msgid "Unnamed Aggregation" msgstr "Agregació sense nom" -#: utils/configureaggregationsdialog.cpp:412 +#: utils/configureaggregationsdialog.cpp:411 #, kde-format msgid "Import Aggregation" msgstr "Importació d'una agregació" -#: utils/configureaggregationsdialog.cpp:445 -#: utils/configurethemesdialog.cpp:470 +#: utils/configureaggregationsdialog.cpp:444 +#: utils/configurethemesdialog.cpp:466 #, kde-format msgid "All Files (*)" msgstr "Tots els fitxers (*)" -#: utils/configureaggregationsdialog.cpp:445 +#: utils/configureaggregationsdialog.cpp:444 #, kde-format msgid "Export Aggregation" msgstr "Exportació d'una agregació" @@ -1422,7 +1422,7 @@ msgid "Customize Themes" msgstr "Temes personalitzats" -#: utils/configurethemesdialog.cpp:124 utils/configurethemesdialog.cpp:356 +#: utils/configurethemesdialog.cpp:124 utils/configurethemesdialog.cpp:352 #, kde-format msgid "New Theme" msgstr "Tema nou" @@ -1432,53 +1432,53 @@ msgid "Clone Theme" msgstr "Clona el tema" -#: utils/configurethemesdialog.cpp:144 +#: utils/configurethemesdialog.cpp:143 #, kde-format msgid "Export Theme..." msgstr "Exporta el tema..." -#: utils/configurethemesdialog.cpp:150 +#: utils/configurethemesdialog.cpp:148 #, kde-format msgid "Import Theme..." msgstr "Importa un tema..." -#: utils/configurethemesdialog.cpp:160 +#: utils/configurethemesdialog.cpp:157 #, kde-format msgid "Delete Theme" msgstr "Suprimeix el tema" -#: utils/configurethemesdialog.cpp:338 +#: utils/configurethemesdialog.cpp:334 #, kde-format msgid "Unnamed Theme" msgstr "Tema sense nom" -#: utils/configurethemesdialog.cpp:358 utils/themeeditor.cpp:1242 +#: utils/configurethemesdialog.cpp:354 utils/themeeditor.cpp:1242 #, kde-format msgid "New Column" msgstr "Columna nova" -#: utils/configurethemesdialog.cpp:410 +#: utils/configurethemesdialog.cpp:406 #, kde-format msgid "Do you want to delete selected themes?" msgstr "Voleu suprimir els temes seleccionats?" -#: utils/configurethemesdialog.cpp:411 +#: utils/configurethemesdialog.cpp:407 #, kde-format msgid "Do you want to delete \"%1\"?" msgstr "Voleu suprimir la llista «%1»?" -#: utils/configurethemesdialog.cpp:411 +#: utils/configurethemesdialog.cpp:407 #, kde-format msgctxt "@title:window" msgid "Delete Theme" msgstr "Suprimeix el tema" -#: utils/configurethemesdialog.cpp:436 +#: utils/configurethemesdialog.cpp:432 #, kde-format msgid "Import Theme" msgstr "Importació d'un tema" -#: utils/configurethemesdialog.cpp:470 +#: utils/configurethemesdialog.cpp:466 #, kde-format msgid "Export Theme" msgstr "Exportació d'un tema" @@ -1813,3 +1813,53 @@ #, kde-format msgid "C&ancel" msgstr "C&ancel·la" + +#~ msgid "Show close button on each tab" +#~ msgstr "Mostra el botó de tancament en cada pestanya" + +#~ msgid "Enable this option if you want to have a close button on each tab." +#~ msgstr "" +#~ "Activeu aquesta opció si voleu tenir un botó de tancament en cada " +#~ "pestanya." + +#~ msgid "Hide tab bar when only one tab is open" +#~ msgstr "Oculta la barra de pestanyes quan només hi hagi una pestanya oberta" + +#~ msgid "" +#~ "With this option enabled the tab bar will be displayed only when there " +#~ "are two or more tabs. With this option disabled the tab bar will be " +#~ "always shown. When the tab bar is hidden you can always open a folder in " +#~ "a new tab by middle-clicking it." +#~ msgstr "" +#~ "Si aquesta opció està activada, la barra de pestanyes només es " +#~ "visualitzarà quan hi hagi dues o més pestanyes. Si aquesta opció està " +#~ "desactivada, la barra de pestanyes sempre es visualitzarà. Quan la barra " +#~ "de pestanyes està oculta sempre podreu obrir una carpeta en una pestanya " +#~ "nova fent-hi clic amb el botó del mig." + +#~ msgid "bcc" +#~ msgstr "BCC" + +#~ msgid "Filter message by:" +#~ msgstr "Filtrar el missatge per:" + +#~ msgid "Quick Filter:" +#~ msgstr "Filtre ràpid:" + +#~ msgid "More..." +#~ msgstr "Més..." + +#~ msgctxt "@action:button" +#~ msgid "Lock search" +#~ msgstr "Bloqueja la cerca" + +#~ msgid "Do not remember me it." +#~ msgstr "No m'ho recordis." + +#~ msgctxt "@action:inmenu Font setting" +#~ msgid "Default" +#~ msgstr "Omissió" + +#~ msgctxt "@action:inmenu Font setting" +#~ msgid "Custom..." +#~ msgstr "Personalitza..." diff -Nru kf5-messagelib-17.12.3/po/ca/libmessageviewer.po kf5-messagelib-18.04.3/po/ca/libmessageviewer.po --- kf5-messagelib-17.12.3/po/ca/libmessageviewer.po 2018-03-06 00:32:31.000000000 +0000 +++ kf5-messagelib-18.04.3/po/ca/libmessageviewer.po 2018-07-10 00:15:57.000000000 +0000 @@ -1,8 +1,8 @@ # Translation of libmessageviewer.po to Catalan -# Copyright (C) 1998-2017 This_file_is_part_of_KDE +# Copyright (C) 1998-2018 This_file_is_part_of_KDE # # Sebastià Pla i Sanz , 1998, 1999, 2000, 2004, 2005, 2006. -# Antoni Bella Pérez , 2002, 2003, 2004, 2013, 2014, 2015, 2016, 2017. +# Antoni Bella Pérez , 2002, 2003, 2004, 2013, 2014, 2015, 2016, 2017, 2018. # Albert Astals Cid , 2004, 2005, 2009. # David Gil , 2005. # Josep Ma. Ferrer , 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017. @@ -12,9 +12,9 @@ msgstr "" "Project-Id-Version: libmessageviewer\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" -"POT-Creation-Date: 2018-02-21 06:03+0100\n" -"PO-Revision-Date: 2017-12-30 18:12+0100\n" -"Last-Translator: Josep Ma. Ferrer \n" +"POT-Creation-Date: 2018-05-27 06:21+0200\n" +"PO-Revision-Date: 2018-06-23 19:11+0100\n" +"Last-Translator: Antoni Bella Pérez \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" @@ -387,13 +387,13 @@ msgid "Unknown" msgstr "Desconeguda" -#: header/headerstyle_util.cpp:100 header/headerstyle_util.cpp:105 -#: header/headerstyle_util.cpp:116 +#: header/headerstyle_util.cpp:102 header/headerstyle_util.cpp:107 +#: header/headerstyle_util.cpp:118 #, kde-format msgid "No Subject" msgstr "Sense assumpte" -#: header/headerstyle_util.cpp:185 +#: header/headerstyle_util.cpp:187 #, kde-format msgid "" "%1% probability of being spam with confidence %3%.\n" @@ -408,7 +408,7 @@ "Probabilitat=%2\n" "Confiança=%4" -#: header/headerstyle_util.cpp:191 +#: header/headerstyle_util.cpp:193 #, kde-format msgid "" "%1% probability of being spam.\n" @@ -421,39 +421,39 @@ "Informe complet:\n" "Probabilitat=%2" -#: header/headerstyle_util.cpp:199 +#: header/headerstyle_util.cpp:201 #, kde-format msgid "No Spam agent" msgstr "Cap agent de correu brossa" -#: header/headerstyle_util.cpp:202 +#: header/headerstyle_util.cpp:204 #, kde-format msgid "Spam filter score not a number" msgstr "El filtre de correu brossa no ha puntuat amb un número" -#: header/headerstyle_util.cpp:205 +#: header/headerstyle_util.cpp:207 #, kde-format msgid "Threshold not a valid number" msgstr "El llindar no és un número vàlid" -#: header/headerstyle_util.cpp:208 +#: header/headerstyle_util.cpp:210 #, kde-format msgid "Spam filter score could not be extracted from header" msgstr "" "La puntuació del filtre de correu brossa no s'ha pogut extreure de la " "capçalera" -#: header/headerstyle_util.cpp:211 +#: header/headerstyle_util.cpp:213 #, kde-format msgid "Threshold could not be extracted from header" msgstr "El llindar no s'ha pogut extreure de la capçalera" -#: header/headerstyle_util.cpp:214 +#: header/headerstyle_util.cpp:216 #, kde-format msgid "Error evaluating spam score" msgstr "Error en avaluar la puntuació de correu brossa" -#: header/headerstyle_util.cpp:218 +#: header/headerstyle_util.cpp:220 #, kde-format msgid "" "%1.\n" @@ -513,148 +513,128 @@ msgid "Reply to: " msgstr "Respon a: " -#: job/attachmenteditjob.cpp:50 -#, kde-format -msgid "" -"Modifying an attachment might invalidate any digital signature on this " -"message." -msgstr "" -"La modificació d'un adjunt pot invalidar qualsevol signatura digital " -"d'aquest missatge." - -#: job/attachmenteditjob.cpp:51 viewer/viewer_p.cpp:669 -#: viewer/viewer_p.cpp:1816 -#, kde-format -msgid "Edit Attachment" -msgstr "Edita l'adjunt" - -#: job/attachmenteditjob.cpp:52 -#, kde-format -msgid "Edit" -msgstr "Edita" - -#: messagepartthemes/default/defaultrenderer.cpp:82 +#: messagepartthemes/default/defaultrenderer.cpp:83 #, kde-format msgid "Error: Signature not verified" msgstr "Error: Signatura no verificada" -#: messagepartthemes/default/defaultrenderer.cpp:85 +#: messagepartthemes/default/defaultrenderer.cpp:86 #, kde-format msgid "Good signature" msgstr "Signatura correcta" -#: messagepartthemes/default/defaultrenderer.cpp:88 +#: messagepartthemes/default/defaultrenderer.cpp:89 #, kde-format msgid "Bad signature" msgstr "Signatura dolenta" -#: messagepartthemes/default/defaultrenderer.cpp:91 +#: messagepartthemes/default/defaultrenderer.cpp:92 #, kde-format msgid "No public key to verify the signature" msgstr "No hi ha clau pública per a verificar la signatura" -#: messagepartthemes/default/defaultrenderer.cpp:94 +#: messagepartthemes/default/defaultrenderer.cpp:95 #, kde-format msgid "No signature found" msgstr "No s'ha trobat cap signatura" -#: messagepartthemes/default/defaultrenderer.cpp:97 +#: messagepartthemes/default/defaultrenderer.cpp:98 #, kde-format msgid "Error verifying the signature" msgstr "S'ha produït un error en verificar la signatura" -#: messagepartthemes/default/defaultrenderer.cpp:100 +#: messagepartthemes/default/defaultrenderer.cpp:101 #, kde-format msgid "Different results for signatures" msgstr "Diferents resultats a les signatures" -#: messagepartthemes/default/defaultrenderer.cpp:119 +#: messagepartthemes/default/defaultrenderer.cpp:120 #, kde-format msgid "No status information available." -msgstr "No hi ha informació disponible de l'estat." +msgstr "No hi ha disponible informació sobre l'estat." -#: messagepartthemes/default/defaultrenderer.cpp:126 -#: messagepartthemes/default/defaultrenderer.cpp:211 +#: messagepartthemes/default/defaultrenderer.cpp:127 +#: messagepartthemes/default/defaultrenderer.cpp:212 #, kde-format msgid "Good signature." msgstr "Signatura correcta." -#: messagepartthemes/default/defaultrenderer.cpp:147 +#: messagepartthemes/default/defaultrenderer.cpp:148 #, kde-format msgid "One key has expired." msgstr "Una clau ha caducat." -#: messagepartthemes/default/defaultrenderer.cpp:151 +#: messagepartthemes/default/defaultrenderer.cpp:152 #, kde-format msgid "The signature has expired." msgstr "La signatura ha caducat." -#: messagepartthemes/default/defaultrenderer.cpp:156 +#: messagepartthemes/default/defaultrenderer.cpp:157 #, kde-format msgid "Unable to verify: key missing." msgstr "No s'ha pogut verificar: falta la clau." -#: messagepartthemes/default/defaultrenderer.cpp:163 +#: messagepartthemes/default/defaultrenderer.cpp:164 #, kde-format msgid "CRL not available." -msgstr "No hi ha una CRL disponible." +msgstr "No hi ha disponible una CRL." -#: messagepartthemes/default/defaultrenderer.cpp:167 +#: messagepartthemes/default/defaultrenderer.cpp:168 #, kde-format msgid "Available CRL is too old." msgstr "La CRL disponible és massa antiga." -#: messagepartthemes/default/defaultrenderer.cpp:171 +#: messagepartthemes/default/defaultrenderer.cpp:172 #, kde-format msgid "A policy was not met." msgstr "No s'ha trobat cap política." -#: messagepartthemes/default/defaultrenderer.cpp:175 +#: messagepartthemes/default/defaultrenderer.cpp:176 #, kde-format msgid "A system error occurred." msgstr "S'ha produït un error del sistema." -#: messagepartthemes/default/defaultrenderer.cpp:186 +#: messagepartthemes/default/defaultrenderer.cpp:187 #, kde-format msgid "One key has been revoked." msgstr "S'ha revocat una clau." -#: messagepartthemes/default/defaultrenderer.cpp:213 +#: messagepartthemes/default/defaultrenderer.cpp:214 #, kde-format msgid "Bad signature." msgstr "Signatura dolenta." -#: messagepartthemes/default/defaultrenderer.cpp:632 -#: messagepartthemes/default/defaultrenderer.cpp:634 +#: messagepartthemes/default/defaultrenderer.cpp:629 +#: messagepartthemes/default/defaultrenderer.cpp:631 #, kde-format msgid "certificate" msgstr "certificat" -#: messagepartthemes/default/defaultrenderer.cpp:641 -#: messagepartthemes/default/defaultrenderer.cpp:670 +#: messagepartthemes/default/defaultrenderer.cpp:638 +#: messagepartthemes/default/defaultrenderer.cpp:667 #, kde-format msgctxt "Start of warning message." msgid "Warning:" msgstr "Avís:" -#: messagepartthemes/default/defaultrenderer.cpp:644 +#: messagepartthemes/default/defaultrenderer.cpp:641 #, kde-format msgid "Sender's mail address is not stored in the %1 used for signing." msgstr "" "L'adreça de correu del remitent no està desada en el %1, que s'empra per a " "signar." -#: messagepartthemes/default/defaultrenderer.cpp:647 +#: messagepartthemes/default/defaultrenderer.cpp:644 #, kde-format msgid "sender: " msgstr "remitent: " -#: messagepartthemes/default/defaultrenderer.cpp:650 +#: messagepartthemes/default/defaultrenderer.cpp:647 #, kde-format msgid "stored: " msgstr "desat: " -#: messagepartthemes/default/defaultrenderer.cpp:672 +#: messagepartthemes/default/defaultrenderer.cpp:669 #, kde-format msgid "" "No mail address is stored in the %1 used for signing, so we cannot compare " @@ -664,6 +644,7 @@ "tant no es pot comparar amb l'adreça del remitent %2." #: scamdetection/scamdetectiondetailsdialog.cpp:47 +#: widgets/mailtrackingdetailsdialog.cpp:32 #, kde-format msgid "Details" msgstr "Detalls" @@ -696,11 +677,13 @@ msgstr "Desactiva la detecció de frau per a tots els missatges" #: scamdetection/scamdetectionwebengine.cpp:103 +#: widgets/mailtrackingwarningwidget.cpp:55 #, kde-format msgid "Details:" msgstr "Detalls:" #: scamdetection/scamdetectionwebengine.cpp:136 +#: scamdetection/scamdetectionwebengine.cpp:191 #, kde-format msgid "" "This email contains a link which reads as '%1' in the text, but actually " @@ -754,7 +737,7 @@ "Aquest correu electrònic conté un URL curt (%1). Es pot redirigir a un altre " "servidor." -#: scamdetection/scamdetectionwebengine.cpp:181 +#: scamdetection/scamdetectionwebengine.cpp:206 #, kde-format msgid "Message contains form element. This is often the case in scam emails." msgstr "" @@ -823,12 +806,6 @@ msgid "Close message window after replying or forwarding" msgstr "Tanca la finestra de missatge després de contestar o reenviar" -#. i18n: ectx: label, entry (showColorBar), group (Reader) -#: settings/messageviewer.kcfg.cmake:59 -#, kde-format -msgid "Show HTML Side Bar" -msgstr "Mostra la barra lateral de l'HTML" - #. i18n: ectx: label, entry (ShowExpandQuotesMark), group (Reader) #: settings/messageviewer.kcfg.cmake:63 #, kde-format @@ -865,14 +842,8 @@ "Activeu aquesta opció per a mostrar el text citat amb un tipus de lletra més " "petit." -#. i18n: ectx: label, entry (AllowAttachmentEditing), group (Reader) -#: settings/messageviewer.kcfg.cmake:79 -#, kde-format -msgid "Allow to edit attachments of existing mails." -msgstr "Permet editar adjunts de correus existents." - #. i18n: ectx: label, entry (AlwaysDecrypt), group (Reader) -#: settings/messageviewer.kcfg.cmake:83 +#: settings/messageviewer.kcfg.cmake:79 #, kde-format msgid "Always decrypt messages when viewing or ask before decrypting" msgstr "" @@ -880,56 +851,56 @@ "desencriptar" #. i18n: ectx: label, entry (MimeTreeMode2), group (Reader) -#: settings/messageviewer.kcfg.cmake:86 +#: settings/messageviewer.kcfg.cmake:82 #, kde-format msgid "Message Structure Viewer" msgstr "Visor d'estructura del missatge" #. i18n: ectx: label, entry (MimeTreeMode2), group (Reader) -#: settings/messageviewer.kcfg.cmake:89 +#: settings/messageviewer.kcfg.cmake:85 #, kde-format msgid "Show never" msgstr "No mostris mai" #. i18n: ectx: label, entry (MimeTreeMode2), group (Reader) -#: settings/messageviewer.kcfg.cmake:92 +#: settings/messageviewer.kcfg.cmake:88 #, kde-format msgid "Show always" msgstr "Mostra sempre" #. i18n: ectx: label, entry (headerPluginStyleName), group (Reader) #. i18n: ectx: label, entry (headerStyle), group (Reader) -#: settings/messageviewer.kcfg.cmake:104 settings/messageviewer.kcfg.cmake:110 +#: settings/messageviewer.kcfg.cmake:100 settings/messageviewer.kcfg.cmake:106 #, kde-format msgid "What style of headers should be displayed" msgstr "Quin estil de capçaleres s'ha de mostrar" #. i18n: ectx: label, entry (headerSetDisplayed), group (Reader) -#: settings/messageviewer.kcfg.cmake:114 +#: settings/messageviewer.kcfg.cmake:110 #, kde-format msgid "How much of headers should be displayed" msgstr "Quantes capçaleres s'han de mostrar" #. i18n: ectx: label, entry (htmlMail), group (Reader) -#: settings/messageviewer.kcfg.cmake:118 +#: settings/messageviewer.kcfg.cmake:114 #, kde-format msgid "Prefer HTML to plain text" msgstr "Prefereix HTML sobre text net" #. i18n: ectx: label, entry (htmlLoadExternal), group (Reader) -#: settings/messageviewer.kcfg.cmake:122 +#: settings/messageviewer.kcfg.cmake:118 #, kde-format msgid "Allow messages to load external references from the Internet" msgstr "Permet als missatges carregar les referències externes d'Internet" #. i18n: ectx: label, entry (attachmentStrategy), group (Reader) -#: settings/messageviewer.kcfg.cmake:126 +#: settings/messageviewer.kcfg.cmake:122 #, kde-format msgid "How attachments are shown" msgstr "Com es mostren els adjunts" #. i18n: ectx: label, entry (RecycleQuoteColors), group (Reader) -#: settings/messageviewer.kcfg.cmake:130 +#: settings/messageviewer.kcfg.cmake:126 #, kde-format msgid "Specifies whether to reuse the quote color, beyond the 3rd level" msgstr "" @@ -937,13 +908,13 @@ "nivell" #. i18n: ectx: label, entry (AccessKeyEnabled), group (Reader) -#: settings/messageviewer.kcfg.cmake:134 +#: settings/messageviewer.kcfg.cmake:130 #, kde-format msgid "Activate Access Key" msgstr "Activació de les tecles d'accessibilitat" #. i18n: ectx: label, entry (ScamDetectionEnabled), group (Reader) -#: settings/messageviewer.kcfg.cmake:138 +#: settings/messageviewer.kcfg.cmake:134 #, kde-format msgid "" "KMail can analyze messages for suspected email scams by looking for common " @@ -953,19 +924,19 @@ "sospitoses a la cerca de tècniques comunes usades per enganyar-vos." #. i18n: ectx: label, entry (ScamDetectionWhiteList), group (Reader) -#: settings/messageviewer.kcfg.cmake:142 +#: settings/messageviewer.kcfg.cmake:138 #, kde-format msgid "List of emails in scam white list" msgstr "Llista de correus a la llista blanca de frau" #. i18n: ectx: label, entry (notSendWhenEncrypted), group (MDN) -#: settings/messageviewer.kcfg.cmake:148 +#: settings/messageviewer.kcfg.cmake:144 #, kde-format msgid "Do not send MDNs in response to encrypted messages" msgstr "No enviïs les MDN en resposta a missatges encriptats" #. i18n: ectx: label, entry (DefaultPolicy), group (MDN) -#: settings/messageviewer.kcfg.cmake:152 +#: settings/messageviewer.kcfg.cmake:148 #, kde-format msgid "" "Specifies the default policy to use, for the Message Disposition " @@ -975,7 +946,7 @@ "processament del missatge -MDN- (només per a ús intern)" #. i18n: ectx: label, entry (QuoteMessage), group (MDN) -#: settings/messageviewer.kcfg.cmake:156 +#: settings/messageviewer.kcfg.cmake:152 #, kde-format msgid "" "Specifies the default quoting action to take, when replying to a message " @@ -985,13 +956,13 @@ "missatge (només per a ús intern)" #. i18n: ectx: label, entry (LegacyMangleFromToHeaders), group (Invitations) -#: settings/messageviewer.kcfg.cmake:172 +#: settings/messageviewer.kcfg.cmake:168 #, kde-format msgid "Mangle From:/To: headers in replies to replies" msgstr "Suprimeix les capçaleres De:/A: a les respostes a respostes" #. i18n: ectx: whatsthis, entry (LegacyMangleFromToHeaders), group (Invitations) -#: settings/messageviewer.kcfg.cmake:173 +#: settings/messageviewer.kcfg.cmake:169 #, kde-format msgid "" "Microsoft Outlook has a number of shortcomings in its implementation of the " @@ -1005,13 +976,13 @@ "activant aquesta opció." #. i18n: ectx: label, entry (LegacyBodyInvites), group (Invitations) -#: settings/messageviewer.kcfg.cmake:178 +#: settings/messageviewer.kcfg.cmake:174 #, kde-format msgid "Send groupware invitations in the mail body" msgstr "Envia les invitacions de treball en grup al cos del missatge" #. i18n: ectx: whatsthis, entry (LegacyBodyInvites), group (Invitations) -#: settings/messageviewer.kcfg.cmake:179 +#: settings/messageviewer.kcfg.cmake:175 #, kde-format msgid "" "Microsoft Outlook has a number of shortcomings in its implementation of the " @@ -1025,13 +996,13 @@ "activant aquesta opció." #. i18n: ectx: label, entry (ExchangeCompatibleInvitations), group (Invitations) -#: settings/messageviewer.kcfg.cmake:184 +#: settings/messageviewer.kcfg.cmake:180 #, kde-format msgid "Exchange-compatible invitation naming" msgstr "Denominació de les invitacions compatible amb l'Exchange" #. i18n: ectx: whatsthis, entry (ExchangeCompatibleInvitations), group (Invitations) -#: settings/messageviewer.kcfg.cmake:185 +#: settings/messageviewer.kcfg.cmake:181 #, kde-format msgid "" "Microsoft Outlook, when used in combination with a Microsoft Exchange " @@ -1046,13 +1017,13 @@ "comprengui." #. i18n: ectx: label, entry (AutomaticSending), group (Invitations) -#: settings/messageviewer.kcfg.cmake:190 +#: settings/messageviewer.kcfg.cmake:186 #, kde-format msgid "Automatic invitation sending" msgstr "Enviament automàtic de les invitacions" #. i18n: ectx: whatsthis, entry (AutomaticSending), group (Invitations) -#: settings/messageviewer.kcfg.cmake:191 +#: settings/messageviewer.kcfg.cmake:187 #, kde-format msgid "" "When this is checked, you will not see the mail composer window. Instead, " @@ -1069,13 +1040,13 @@ #. i18n: ectx: label, entry (DeleteInvitationEmailsAfterSendingReply), group (Invitations) #. i18n: ectx: property (text), widget (QCheckBox, mDeleteInvitations) -#: settings/messageviewer.kcfg.cmake:196 ui/invitationsettings.ui:74 +#: settings/messageviewer.kcfg.cmake:192 ui/invitationsettings.ui:74 #, kde-format msgid "Delete invitation emails after the reply to them has been sent" msgstr "Suprimeix els correus d'invitació després d'enviar la seva resposta" #. i18n: ectx: whatsthis, entry (DeleteInvitationEmailsAfterSendingReply), group (Invitations) -#: settings/messageviewer.kcfg.cmake:197 +#: settings/messageviewer.kcfg.cmake:193 #, kde-format msgid "" "When this is checked, received invitation emails that have been replied to " @@ -1085,25 +1056,25 @@ "mouran a la paperera, una vegada s'hagi enviat correctament la resposta." #. i18n: ectx: label, entry (UseFixedFont), group (Composer) -#: settings/messageviewer.kcfg.cmake:221 viewer/viewer_p.cpp:1646 +#: settings/messageviewer.kcfg.cmake:217 viewer/viewer_p.cpp:1633 #, kde-format msgid "Use Fi&xed Font" msgstr "Usa un tipus de lletra d'amplada fi&xa" #. i18n: ectx: whatsthis, entry (LastSelectedFolder), group (Todo) -#: settings/messageviewer.kcfg.cmake:228 +#: settings/messageviewer.kcfg.cmake:224 #, kde-format msgid "The most recent selected folder using for Todo." msgstr "La carpeta seleccionada més recentment per a pendents." #. i18n: ectx: whatsthis, entry (LastEventSelectedFolder), group (Event) -#: settings/messageviewer.kcfg.cmake:234 +#: settings/messageviewer.kcfg.cmake:230 #, kde-format msgid "The most recent selected folder using for Event." msgstr "La carpeta seleccionada més recentment per a esdeveniments." #. i18n: ectx: whatsthis, entry (LastNoteSelectedFolder), group (Note) -#: settings/messageviewer.kcfg.cmake:240 +#: settings/messageviewer.kcfg.cmake:236 #, kde-format msgid "The most recent selected folder using for Notes." msgstr "La carpeta seleccionada més recentment per a notes." @@ -1227,32 +1198,26 @@ msgid "Enable access key" msgstr "Activa les tecles d'accessibilitat" -#. i18n: ectx: property (text), widget (QCheckBox, kcfg_showColorBar) -#: ui/settings.ui:98 -#, kde-format -msgid "Show &HTML Side Bar" -msgstr "Mostra la barra lateral de l'&HTML" - #. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShrinkQuotes) -#: ui/settings.ui:105 +#: ui/settings.ui:98 #, kde-format msgid "Reduce font size for "ed text" msgstr "Redueix la mida del tipus de lletra pel text citat" #. i18n: ectx: property (text), widget (QCheckBox, kcfg_ShowExpandQuotesMark) -#: ui/settings.ui:112 +#: ui/settings.ui:105 #, kde-format msgid "Show &expand/collapse quote marks" msgstr "Mostra les marques per &plegar/desplegar les cites" #. i18n: ectx: property (text), widget (QLabel, collapseQuoteLevelLabel) -#: ui/settings.ui:140 +#: ui/settings.ui:133 #, kde-format msgid "Automatic collapse &level:" msgstr "Nive&ll de plegat automàtic:" #. i18n: ectx: property (text), widget (QLabel, label_4) -#: ui/settings.ui:209 +#: ui/settings.ui:202 #, kde-format msgid "&Minimum font size:" msgstr "Mida &mínima del tipus de lletra:" @@ -1269,29 +1234,29 @@ msgid "Overwrite File?" msgstr "Sobreescriure el fitxer?" -#: utils/messageviewerutil.cpp:139 +#: utils/messageviewerutil.cpp:140 #, kde-format msgid "Save Attachments To" msgstr "Desa els adjunts a" -#: utils/messageviewerutil.cpp:158 +#: utils/messageviewerutil.cpp:159 #, kde-format msgctxt "filename for an unnamed attachment" msgid "attachment.1" msgstr "adjunt.1" -#: utils/messageviewerutil.cpp:166 +#: utils/messageviewerutil.cpp:167 #, kde-format msgid "Save Attachment" msgstr "Desa l'adjunt" -#: utils/messageviewerutil.cpp:193 +#: utils/messageviewerutil.cpp:194 #, kde-format msgctxt "filename for the %1-th unnamed attachment" msgid "attachment.%1" msgstr "adjunt.%1" -#: utils/messageviewerutil.cpp:296 +#: utils/messageviewerutil.cpp:299 #, kde-format msgid "" "The part %1 of the message is encrypted. Do you want to keep the encryption " @@ -1300,22 +1265,22 @@ "La part %1 del missatge està encriptada. Desitgeu mantenir l'encriptatge en " "desar-lo?" -#: utils/messageviewerutil.cpp:298 utils/messageviewerutil.cpp:311 +#: utils/messageviewerutil.cpp:301 utils/messageviewerutil.cpp:314 #, kde-format msgid "KMail Question" msgstr "Pregunta del KMail" -#: utils/messageviewerutil.cpp:298 +#: utils/messageviewerutil.cpp:301 #, kde-format msgid "Keep Encryption" msgstr "Mantén l'encriptatge" -#: utils/messageviewerutil.cpp:299 utils/messageviewerutil.cpp:312 +#: utils/messageviewerutil.cpp:302 utils/messageviewerutil.cpp:315 #, kde-format msgid "Do Not Keep" msgstr "No el mantinguis" -#: utils/messageviewerutil.cpp:309 +#: utils/messageviewerutil.cpp:312 #, kde-format msgid "" "The part %1 of the message is signed. Do you want to keep the signature when " @@ -1324,13 +1289,13 @@ "La part %1 del missatge està signada. Desitgeu mantenir la signatura en " "desar-lo?" -#: utils/messageviewerutil.cpp:311 +#: utils/messageviewerutil.cpp:314 #, kde-format msgid "Keep Signature" msgstr "Mantén la signatura" -#: utils/messageviewerutil.cpp:376 utils/messageviewerutil.cpp:394 -#: utils/messageviewerutil.cpp:412 +#: utils/messageviewerutil.cpp:379 utils/messageviewerutil.cpp:397 +#: utils/messageviewerutil.cpp:415 #, kde-kuit-format msgctxt "1 = file name, 2 = error string" msgid "" @@ -1340,65 +1305,65 @@ "No s'ha pogut escriure el fitxer
    %1

    " "%2
    " -#: utils/messageviewerutil.cpp:379 utils/messageviewerutil.cpp:397 -#: utils/messageviewerutil.cpp:415 +#: utils/messageviewerutil.cpp:382 utils/messageviewerutil.cpp:400 +#: utils/messageviewerutil.cpp:418 #, kde-format msgid "Error saving attachment" msgstr "Hi ha hagut un error en desar l'adjunt" -#: utils/messageviewerutil.cpp:428 +#: utils/messageviewerutil.cpp:431 #, kde-format msgid "Found no attachments to save." msgstr "No s'ha trobat cap adjunt a desar." -#: utils/messageviewerutil.cpp:451 +#: utils/messageviewerutil.cpp:450 #, kde-format msgid "message" msgstr "missatge" -#: utils/messageviewerutil.cpp:458 +#: utils/messageviewerutil.cpp:467 #, kde-format msgid "email messages (*.mbox);;all files (*)" msgstr "Missatges de correu (*.mbox);;Tots els fitxers (*)" -#: utils/messageviewerutil.cpp:471 +#: utils/messageviewerutil.cpp:480 #, kde-format msgid "Save Message" msgid_plural "Save Messages" msgstr[0] "Desa el missatge" msgstr[1] "Desa els missatges" -#: utils/messageviewerutil.cpp:484 +#: utils/messageviewerutil.cpp:493 #, kde-format msgid "File %1 could not be loaded." msgstr "El fitxer %1 no s'ha pogut carregar." -#: utils/messageviewerutil.cpp:485 +#: utils/messageviewerutil.cpp:494 #, kde-format msgid "Error loading message" msgstr "Error en carregar el missatge" -#: utils/messageviewerutil.cpp:487 +#: utils/messageviewerutil.cpp:496 #, kde-format msgid "File %1 could not be created." msgstr "No s'ha pogut crear el fitxer %1." -#: utils/messageviewerutil.cpp:488 utils/messageviewerutil.cpp:500 +#: utils/messageviewerutil.cpp:497 utils/messageviewerutil.cpp:509 #, kde-format msgid "Error saving message" msgstr "Error en desar el missatge" -#: utils/messageviewerutil.cpp:499 +#: utils/messageviewerutil.cpp:508 #, kde-format msgid "We cannot save message." msgstr "No s'ha pogut desar el missatge." -#: utils/messageviewerutil.cpp:516 +#: utils/messageviewerutil.cpp:532 #, kde-format msgid "Open &with %1" msgstr "Obre a&mb %1" -#: utils/messageviewerutil.cpp:518 +#: utils/messageviewerutil.cpp:534 #, kde-format msgctxt "@item:inmenu Open With, %1 is application name" msgid "%1" @@ -1443,180 +1408,150 @@ msgid "Size" msgstr "Mida" -#: viewer/urlhandlermanager.cpp:715 +#: viewer/urlhandlermanager.cpp:426 #, kde-format msgid "Turn on HTML rendering for this message." msgstr "Activa la representació HTML per a aquest missatge." -#: viewer/urlhandlermanager.cpp:717 viewer/viewer_p.cpp:1729 +#: viewer/urlhandlermanager.cpp:428 viewer/viewer_p.cpp:1716 #, kde-format msgid "Load external references from the Internet for this message." msgstr "Carrega les referències externes d'Internet per a aquest missatge." -#: viewer/urlhandlermanager.cpp:719 +#: viewer/urlhandlermanager.cpp:430 #, kde-format msgid "Work online." msgstr "Treballa en línia." -#: viewer/urlhandlermanager.cpp:721 +#: viewer/urlhandlermanager.cpp:432 #, kde-format msgid "Make account online." msgstr "Fa que el compte estigui en línia." -#: viewer/urlhandlermanager.cpp:723 +#: viewer/urlhandlermanager.cpp:434 #, kde-format msgid "Decrypt message." msgstr "Desencripta el missatge." -#: viewer/urlhandlermanager.cpp:725 +#: viewer/urlhandlermanager.cpp:436 #, kde-format msgid "Show signature details." msgstr "Mostra els detalls de la signatura." -#: viewer/urlhandlermanager.cpp:727 +#: viewer/urlhandlermanager.cpp:438 #, kde-format msgid "Hide signature details." msgstr "Oculta els detalls de la signatura." -#: viewer/urlhandlermanager.cpp:729 +#: viewer/urlhandlermanager.cpp:440 #, kde-format msgid "Show encryption details." msgstr "Mostra els detalls de l'encriptatge." -#: viewer/urlhandlermanager.cpp:731 +#: viewer/urlhandlermanager.cpp:442 #, kde-format msgid "Hide encryption details." msgstr "Oculta els detalls de l'encriptatge." -#: viewer/urlhandlermanager.cpp:733 -#, kde-format -msgid "Hide attachment list." -msgstr "Oculta la llista d'adjunts." - -#: viewer/urlhandlermanager.cpp:735 -#, kde-format -msgid "Show attachment list." -msgstr "Mostra la llista d'adjunts." - -#: viewer/urlhandlermanager.cpp:737 -#, kde-format -msgid "Hide full \"To\" list" -msgstr "Oculta la llista «A» completa" - -#: viewer/urlhandlermanager.cpp:739 -#, kde-format -msgid "Show full \"To\" list" -msgstr "Mostra la llista «A» completa" - -#: viewer/urlhandlermanager.cpp:741 -#, kde-format -msgid "Hide full \"Cc\" list" -msgstr "Oculta la llista «Cc» completa" - -#: viewer/urlhandlermanager.cpp:743 -#, kde-format -msgid "Show full \"Cc\" list" -msgstr "Mostra la llista «Cc» completa" - -#: viewer/urlhandlermanager.cpp:748 +#: viewer/urlhandlermanager.cpp:447 #, kde-format msgid "Open Documentation" msgstr "Obre una documentació" -#: viewer/urlhandlermanager.cpp:784 +#: viewer/urlhandlermanager.cpp:481 #, kde-format msgid "Expand all quoted text." msgstr "Desplega tot el text citat." -#: viewer/urlhandlermanager.cpp:786 +#: viewer/urlhandlermanager.cpp:483 #, kde-format msgid "Collapse quoted text." msgstr "Plega el text citat." -#: viewer/urlhandlermanager.cpp:848 +#: viewer/urlhandlermanager.cpp:543 #, kde-format msgid "Could not start certificate manager. Please check your installation." msgstr "" "No s'ha pogut iniciar l'assistent de certificats. Comproveu la vostra " "instal·lació." -#: viewer/urlhandlermanager.cpp:850 +#: viewer/urlhandlermanager.cpp:545 #, kde-format msgid "KMail Error" msgstr "S'ha produït un error al KMail" -#: viewer/urlhandlermanager.cpp:863 +#: viewer/urlhandlermanager.cpp:558 #, kde-format msgid "Show certificate 0x%1" msgstr "Mostra el certificat 0x%1" -#: viewer/urlhandlermanager.cpp:931 +#: viewer/urlhandlermanager.cpp:620 #, kde-format msgid "&Open in Address Book" msgstr "&Obre a la llibreta d'adreces" -#: viewer/urlhandlermanager.cpp:935 +#: viewer/urlhandlermanager.cpp:624 #, kde-format msgid "&Copy Email Address" msgstr "&Copia l'adreça de correu" -#: viewer/urlhandlermanager.cpp:948 viewer/viewer_p.cpp:2845 +#: viewer/urlhandlermanager.cpp:637 viewer/viewer_p.cpp:2765 #, kde-format msgid "Address copied to clipboard." msgstr "Adreça copiada al porta-retalls." -#: viewer/urlhandlermanager.cpp:960 +#: viewer/urlhandlermanager.cpp:648 #, kde-format msgid "Lookup the contact in KAddressbook" msgstr "Cerca el contacte en el KAddressbook" -#: viewer/urlhandlermanager.cpp:1086 +#: viewer/urlhandlermanager.cpp:825 #, kde-format msgid "Attachment: %1" msgstr "Adjunt: %1" -#: viewer/urlhandlermanager.cpp:1089 +#: viewer/urlhandlermanager.cpp:828 #, kde-format msgid "Encapsulated Message (Subject: %1)" msgstr "Missatge encapsulat (assumpte: %1)" -#: viewer/urlhandlermanager.cpp:1092 +#: viewer/urlhandlermanager.cpp:831 #, kde-format msgid "Encapsulated Message" msgstr "Missatge encapsulat" -#: viewer/urlhandlermanager.cpp:1095 +#: viewer/urlhandlermanager.cpp:834 #, kde-format msgid "Unnamed attachment" msgstr "Adjunt sense nom" -#: viewer/urlhandlermanager.cpp:1133 +#: viewer/urlhandlermanager.cpp:870 #, kde-format msgid "Show GnuPG Audit Log for this operation" -msgstr "Mostra el registre d'auditoria del GnuPG per aquesta operació" +msgstr "Mostra el registre d'auditoria del GnuPG per a aquesta operació" -#: viewer/urlhandlermanager.cpp:1180 +#: viewer/urlhandlermanager.cpp:913 #, kde-format msgid "Opening URL..." msgstr "S'està obrint l'URL..." -#: viewer/urlhandlermanager.cpp:1191 +#: viewer/urlhandlermanager.cpp:924 #, kde-kuit-format msgctxt "@info" msgid "Do you really want to execute %1?" msgstr "Realment voleu executar %1?" -#: viewer/urlhandlermanager.cpp:1193 +#: viewer/urlhandlermanager.cpp:926 #, kde-format msgid "Execute" msgstr "Executa" -#: viewer/viewer.cpp:144 +#: viewer/viewer.cpp:146 #, kde-format msgid "Loading message..." msgstr "S'està carregant el missatge..." -#: viewer/viewer_p.cpp:410 +#: viewer/viewer_p.cpp:409 #, kde-format msgid "" "Deleting an attachment from an encrypted or old-style mailman message is not " @@ -1625,13 +1560,12 @@ "No està permès suprimir un adjunt d'un missatge encriptat o de l'antic estil " "del mailman." -#: viewer/viewer_p.cpp:411 viewer/viewer_p.cpp:418 viewer/viewer_p.cpp:676 -#: viewer/viewer_p.cpp:1811 +#: viewer/viewer_p.cpp:410 viewer/viewer_p.cpp:417 viewer/viewer_p.cpp:653 #, kde-format msgid "Delete Attachment" msgstr "Elimina l'adjunt" -#: viewer/viewer_p.cpp:417 +#: viewer/viewer_p.cpp:416 #, kde-format msgid "" "Deleting an attachment might invalidate any digital signature on this " @@ -1640,329 +1574,329 @@ "La supressió d'un adjunt pot invalidar qualsevol signatura digital d'aquest " "missatge." -#: viewer/viewer_p.cpp:514 +#: viewer/viewer_p.cpp:502 #, kde-format msgctxt "@title:menu" msgid "&Open With" msgstr "&Obre amb" -#: viewer/viewer_p.cpp:532 +#: viewer/viewer_p.cpp:520 #, kde-format msgctxt "@action:inmenu Open With" msgid "&Other..." msgstr "&Altres..." -#: viewer/viewer_p.cpp:534 viewer/viewer_p.cpp:548 +#: viewer/viewer_p.cpp:522 viewer/viewer_p.cpp:536 #, kde-format msgctxt "@title:menu" msgid "&Open With..." msgstr "&Obre amb..." -#: viewer/viewer_p.cpp:610 viewer/viewer_p.cpp:1786 +#: viewer/viewer_p.cpp:599 viewer/viewer_p.cpp:1773 #, kde-format msgctxt "to open" msgid "Open" msgstr "Obre" -#: viewer/viewer_p.cpp:629 viewer/viewer_p.cpp:1796 +#: viewer/viewer_p.cpp:619 viewer/viewer_p.cpp:1783 #, kde-format msgctxt "to view something" msgid "View" msgstr "Visualitza" -#: viewer/viewer_p.cpp:641 +#: viewer/viewer_p.cpp:627 #, kde-format msgid "Scroll To" msgstr "Desplaça a" -#: viewer/viewer_p.cpp:650 +#: viewer/viewer_p.cpp:633 #, kde-format msgid "Save As..." msgstr "Desa com a..." -#: viewer/viewer_p.cpp:655 viewer/viewer_p.cpp:1808 +#: viewer/viewer_p.cpp:639 viewer/viewer_p.cpp:1795 #, kde-format msgid "Copy" msgstr "Copia" -#: viewer/viewer_p.cpp:685 +#: viewer/viewer_p.cpp:664 #, kde-format msgid "Reply To Author" msgstr "Respon a l'autor" -#: viewer/viewer_p.cpp:692 +#: viewer/viewer_p.cpp:672 #, kde-format msgid "Reply To All" msgstr "Respon a tots" -#: viewer/viewer_p.cpp:697 viewer/viewer_p.cpp:1822 +#: viewer/viewer_p.cpp:678 viewer/viewer_p.cpp:1801 #, kde-format msgid "Properties" msgstr "Propietats" -#: viewer/viewer_p.cpp:860 +#: viewer/viewer_p.cpp:841 #, kde-format msgid "KMail" msgstr "KMail" -#: viewer/viewer_p.cpp:861 +#: viewer/viewer_p.cpp:842 #, kde-format msgid "The KDE Mail Client" msgstr "El client de correu del KDE" -#: viewer/viewer_p.cpp:1366 +#: viewer/viewer_p.cpp:1349 #, kde-format msgid "View Attachment: %1" msgstr "Visualitza l'adjunt: %1" -#: viewer/viewer_p.cpp:1558 +#: viewer/viewer_p.cpp:1545 #, kde-format msgctxt "View->" msgid "&Attachments" msgstr "&Adjunts" -#: viewer/viewer_p.cpp:1560 +#: viewer/viewer_p.cpp:1547 #, kde-format msgid "Choose display style of attachments" msgstr "Escolliu l'estil per a veure els adjunts" -#: viewer/viewer_p.cpp:1563 +#: viewer/viewer_p.cpp:1550 #, kde-format msgctxt "View->attachments->" msgid "&As Icons" msgstr "Com a i&cones" -#: viewer/viewer_p.cpp:1566 +#: viewer/viewer_p.cpp:1553 #, kde-format msgid "Show all attachments as icons. Click to see them." msgstr "Mostra tots els adjunts com a icones. Feu clic per a veure'ls." -#: viewer/viewer_p.cpp:1570 +#: viewer/viewer_p.cpp:1557 #, kde-format msgctxt "View->attachments->" msgid "&Smart" msgstr "&Intel·ligents" -#: viewer/viewer_p.cpp:1573 +#: viewer/viewer_p.cpp:1560 #, kde-format msgid "Show attachments as suggested by sender." msgstr "Mostra els adjunts tal com suggereix el remitent." -#: viewer/viewer_p.cpp:1577 +#: viewer/viewer_p.cpp:1564 #, kde-format msgctxt "View->attachments->" msgid "&Inline" msgstr "&Inclosos" -#: viewer/viewer_p.cpp:1580 +#: viewer/viewer_p.cpp:1567 #, kde-format msgid "Show all attachments inline (if possible)" msgstr "Mostra tots els adjunts inclosos (si fos possible)" -#: viewer/viewer_p.cpp:1584 +#: viewer/viewer_p.cpp:1571 #, kde-format msgctxt "View->attachments->" msgid "&Hide" msgstr "&Oculta" -#: viewer/viewer_p.cpp:1587 +#: viewer/viewer_p.cpp:1574 #, kde-format msgid "Do not show attachments in the message viewer" msgstr "No mostris els adjunts en el visor de missatges" -#: viewer/viewer_p.cpp:1592 +#: viewer/viewer_p.cpp:1579 #, kde-format msgctxt "View->attachments->" msgid "In Header Only" msgstr "Només en la capçalera" -#: viewer/viewer_p.cpp:1597 +#: viewer/viewer_p.cpp:1584 #, kde-format msgid "Show Attachments only in the header of the mail" msgstr "Mostra els adjunts només en la capçalera del correu" -#: viewer/viewer_p.cpp:1604 +#: viewer/viewer_p.cpp:1591 #, kde-format msgid "&Set Encoding" msgstr "Estableix la co&dificació" -#: viewer/viewer_p.cpp:1610 widgets/configurewidget.cpp:58 +#: viewer/viewer_p.cpp:1597 widgets/configurewidget.cpp:58 #: widgets/configurewidget.cpp:105 #, kde-format msgid "Auto" msgstr "Automàtic" -#: viewer/viewer_p.cpp:1620 +#: viewer/viewer_p.cpp:1607 #, kde-format msgid "Copy Text" msgstr "Copia el text" -#: viewer/viewer_p.cpp:1628 +#: viewer/viewer_p.cpp:1615 #, kde-format msgid "Select All Text" msgstr "Selecciona tot el text" -#: viewer/viewer_p.cpp:1635 viewer/viewer_p.cpp:2124 +#: viewer/viewer_p.cpp:1622 viewer/viewer_p.cpp:2103 #, kde-format msgid "Copy Link Address" msgstr "Copia l'adreça de l'enllaç" -#: viewer/viewer_p.cpp:1641 +#: viewer/viewer_p.cpp:1628 #, kde-format msgid "Open URL" msgstr "Obre l'URL" -#: viewer/viewer_p.cpp:1652 +#: viewer/viewer_p.cpp:1639 #, kde-format msgid "Show Message Structure" msgstr "Mostra l'estructura del missatge" -#: viewer/viewer_p.cpp:1658 +#: viewer/viewer_p.cpp:1645 #, kde-format msgid "&View Source" msgstr "&Mostra el codi font" -#: viewer/viewer_p.cpp:1665 +#: viewer/viewer_p.cpp:1652 #, kde-format msgid "&Save message..." msgstr "De&sa el missatge..." -#: viewer/viewer_p.cpp:1671 +#: viewer/viewer_p.cpp:1658 #, kde-format msgid "&Save Display Format" msgstr "De&sa el format de visualització" -#: viewer/viewer_p.cpp:1676 +#: viewer/viewer_p.cpp:1663 #, kde-format msgid "&Reset Display Format" msgstr "&Reinicia el format de visualització" -#: viewer/viewer_p.cpp:1684 +#: viewer/viewer_p.cpp:1671 #, kde-format msgid "Scroll Message Up" msgstr "Desplaça el missatge cap amunt" -#: viewer/viewer_p.cpp:1690 +#: viewer/viewer_p.cpp:1677 #, kde-format msgid "Scroll Message Down" msgstr "Desplaça el missatge cap avall" -#: viewer/viewer_p.cpp:1696 +#: viewer/viewer_p.cpp:1683 #, kde-format msgid "Scroll Message Up (More)" msgstr "Desplaça el missatge cap amunt (més)" -#: viewer/viewer_p.cpp:1702 +#: viewer/viewer_p.cpp:1689 #, kde-format msgid "Scroll Message Down (More)" msgstr "Desplaça el missatge cap avall (més)" -#: viewer/viewer_p.cpp:1713 +#: viewer/viewer_p.cpp:1700 #, kde-format msgid "Toggle HTML Display Mode" msgstr "Commuta el mode de visualització HTML" -#: viewer/viewer_p.cpp:1719 +#: viewer/viewer_p.cpp:1706 #, kde-format msgid "Toggle display mode between HTML and plain text" msgstr "Commuta el mode de visualització entre HTML i text net" -#: viewer/viewer_p.cpp:1722 +#: viewer/viewer_p.cpp:1709 #, kde-format msgid "Load external references" msgstr "Carrega les referències externes" -#: viewer/viewer_p.cpp:1731 widgets/mailsourceviewtextbrowserwidget.cpp:154 +#: viewer/viewer_p.cpp:1718 widgets/mailsourceviewtextbrowserwidget.cpp:157 #, kde-format msgid "Speak Text" msgstr "Pronuncia el text" -#: viewer/viewer_p.cpp:1737 +#: viewer/viewer_p.cpp:1724 #, kde-format msgid "Copy Image Location" msgstr "Copia la ubicació de la imatge" -#: viewer/viewer_p.cpp:1746 +#: viewer/viewer_p.cpp:1733 #, kde-format msgid "&Find in Message..." msgstr "C&erca al missatge..." -#: viewer/viewer_p.cpp:1756 +#: viewer/viewer_p.cpp:1743 #, kde-format msgid "Disable Emoticon" msgstr "Desactiva les emoticones" -#: viewer/viewer_p.cpp:1781 +#: viewer/viewer_p.cpp:1768 #, kde-format msgid "Save &As..." msgstr "&Desa com a..." -#: viewer/viewer_p.cpp:1793 +#: viewer/viewer_p.cpp:1780 #, kde-format msgid "Open With..." msgstr "Obre amb..." -#: viewer/viewer_p.cpp:1801 +#: viewer/viewer_p.cpp:1788 #, kde-format msgid "Save All Attachments..." msgstr "Desa tots els adjunts..." -#: viewer/viewer_p.cpp:2041 +#: viewer/viewer_p.cpp:2020 #, kde-format msgid "The network is broken." msgstr "La xarxa no funciona." -#: viewer/viewer_p.cpp:2041 viewer/viewer_p.cpp:2045 +#: viewer/viewer_p.cpp:2020 viewer/viewer_p.cpp:2024 #, kde-format msgid "Check Phishing URL" msgstr "Comprovació d'URL de pesca" -#: viewer/viewer_p.cpp:2044 +#: viewer/viewer_p.cpp:2023 #, kde-format msgid "The URL %1 is not valid." msgstr "L'URL %1 no és vàlid." -#: viewer/viewer_p.cpp:2066 +#: viewer/viewer_p.cpp:2045 #, kde-format msgid "This web site is a malware, do you want to continue to show it?" msgstr "Aquest lloc web és maliciós. Voleu continuar mostrant-lo?" -#: viewer/viewer_p.cpp:2067 +#: viewer/viewer_p.cpp:2046 #, kde-format msgid "Malware" msgstr "Programari maliciós" -#: viewer/viewer_p.cpp:2122 +#: viewer/viewer_p.cpp:2101 #, kde-format msgid "Copy Email Address" msgstr "Copia l'adreça de correu" -#: viewer/viewer_p.cpp:2207 +#: viewer/viewer_p.cpp:2195 #, kde-format msgid "Message as Plain Text" msgstr "Missatge com a text net" -#: viewer/viewer_p.cpp:2406 +#: viewer/viewer_p.cpp:2390 #, kde-format msgid "Print Document" msgstr "Imprimeix el document" -#: viewer/viewer_p.cpp:2492 +#: viewer/viewer_p.cpp:2441 #, kde-format msgid "Attachments:" msgstr "Adjunts:" -#: viewer/viewer_p.cpp:2850 +#: viewer/viewer_p.cpp:2770 #, kde-format msgid "URL copied to clipboard." msgstr "URL copiat al porta-retalls." -#: viewer/viewer_p.cpp:3039 +#: viewer/viewer_p.cpp:2911 #, kde-format msgid "Message loading failed: %1." msgstr "Ha fallat en carregar el missatge: %1." -#: viewer/viewer_p.cpp:3044 +#: viewer/viewer_p.cpp:2916 #, kde-format msgid "Message not found." msgstr "No s'ha trobat el missatge." @@ -1997,7 +1931,7 @@ msgid "Do not ask again" msgstr "No ho tornis a preguntar" -#: widgets/htmlstatusbar.cpp:147 +#: widgets/htmlstatusbar.cpp:129 #, kde-format msgctxt "" "'HTML Message' with html linebreaks between each letter and in bold text." @@ -2008,7 +1942,7 @@ "
    M
    i
    s
    s
    a
    t
    g
    e

    H
    T
    M
    L
    " -#: widgets/htmlstatusbar.cpp:151 +#: widgets/htmlstatusbar.cpp:133 #, kde-format msgctxt "'No HTML Message' with html linebreaks between each letter." msgid "" @@ -2018,7 +1952,7 @@ "
    M
    i
    s
    s
    a
    t
    g
    e

    n
    o

    H
    T
    M
    L
    " -#: widgets/htmlstatusbar.cpp:156 +#: widgets/htmlstatusbar.cpp:138 #, kde-format msgctxt "'Plain Message' with html linebreaks between each letter." msgid "" @@ -2028,7 +1962,7 @@ "
    M
    i
    s
    s
    a
    t
    g
    e

    p
    l
    a
    " -#: widgets/htmlstatusbar.cpp:160 +#: widgets/htmlstatusbar.cpp:142 #, kde-format msgctxt "'Calendar Message' with html linebreaks between each letter." msgid "" @@ -2039,7 +1973,7 @@ ">d
    e

    c
    a
    l
    e
    n
    d
    a
    r
    i
    " -#: widgets/htmlstatusbar.cpp:174 +#: widgets/htmlstatusbar.cpp:156 #, kde-format msgid "Click to toggle between HTML, plain text and calendar." msgstr "Feu clic per a commutar entre HTML, text net i calendari." @@ -2058,7 +1992,7 @@ msgstr "" "Les invitacions normalment s'envien com a adjunts a un correu. Aquest " "interruptor canvia els correus d'invitació perquè s'enviïn al text del " -"correu; això és necessari per enviar invitacions i respostes a Microsoft " +"correu; això és necessari per enviar invitacions i respostes al Microsoft " "Outlook.
    Però, quan feu això, ja no obteniu text descriptiu que puguin " "llegir els programes de correu; per tant, els missatges resultants semblaran " "molt estranys a la gent que té programes de correu que no entenen les " @@ -2089,7 +2023,23 @@ msgid "HTML code for displaying the message to the user" msgstr "Codi HTML per mostrar el missatge a l'usuari" -#: widgets/openattachmentfolderwidget.cpp:49 +#: widgets/mailtrackingwarningwidget.cpp:33 +#, kde-format +msgid "" +"Some Mail Tracker was found and was blocked.(Details...)" +msgstr "" +"S'ha trobat algun seguidor de correu i s'ha bloquejat.(Detalls...)" + +#: widgets/mailtrackingwarningwidget.cpp:60 +#, kde-format +msgid "1 tracker from the company %2 (%3)" +msgid_plural "%1 trackers from the company %2 (%3)" +msgstr[0] "1 seguidor des de l'empresa %2 (%3)" +msgstr[1] "%1 seguidors des de l'empresa %2 (%3)" + +#: widgets/openattachmentfolderwidget.cpp:48 #, kde-format msgid "Open folder where attachment was saved" msgstr "Obre la carpeta on s'ha desat l'adjunt" @@ -2120,3 +2070,943 @@ #, kde-format msgid "&Previous Card" msgstr "Targeta &prèvia" + +#~ msgid "Hide full \"To\" list" +#~ msgstr "Oculta la llista «A» completa" + +#~ msgid "Show full \"To\" list" +#~ msgstr "Mostra la llista «A» completa" + +#~ msgid "Hide full \"Cc\" list" +#~ msgstr "Oculta la llista «Cc» completa" + +#~ msgid "Show full \"Cc\" list" +#~ msgstr "Mostra la llista «Cc» completa" + +#~ msgid "Hide attachment list." +#~ msgstr "Oculta la llista d'adjunts." + +#~ msgid "Show attachment list." +#~ msgstr "Mostra la llista d'adjunts." + +#~ msgid "" +#~ "Modifying an attachment might invalidate any digital signature on this " +#~ "message." +#~ msgstr "" +#~ "La modificació d'un adjunt pot invalidar qualsevol signatura digital " +#~ "d'aquest missatge." + +#~ msgid "Edit Attachment" +#~ msgstr "Edita l'adjunt" + +#~ msgid "Edit" +#~ msgstr "Edita" + +#~ msgid "Allow to edit attachments of existing mails." +#~ msgstr "Permet editar adjunts de correus existents." + +#~ msgid "Show HTML Side Bar" +#~ msgstr "Mostra la barra lateral de l'HTML" + +#~ msgid "Show &HTML Side Bar" +#~ msgstr "Mostra la barra lateral de l'&HTML" + +#~ msgid "Show user agent" +#~ msgstr "Mostra l'agent d'usuari" + +#~ msgid "" +#~ "Enable this option to get the User-Agent and X-Mailer header lines " +#~ "displayed." +#~ msgstr "" +#~ "Activeu aquesta opció per mostrar les línies de capçalera User-Agent i X-" +#~ "Mailer." + +#~ msgid "Enabled ad block" +#~ msgstr "El bloqueig publicitari està permès" + +#~ msgid "Hide advertisement enabled" +#~ msgstr "Oculta l'anunci està activat" + +#~ msgid "Update interval list of adblock" +#~ msgstr "Interval d'actualització per a la llista de bloqueig publicitari" + +#~ msgid "Show user agent in fancy headers" +#~ msgstr "Mostra l'agent d'usuari en les capçaleres sofisticades" + +#~ msgctxt "display name for an unnamed attachment" +#~ msgid "Unnamed" +#~ msgstr "Sense nom" + +#~ msgid "Unnamed plugin" +#~ msgstr "Connector sense nom" + +#~ msgid "No description available" +#~ msgstr "No hi ha disponible cap descripció" + +#~ msgid "Reply" +#~ msgstr "Respon" + +#~ msgid "Reply to All" +#~ msgstr "Respon a tots" + +#~ msgid "Forward" +#~ msgstr "Reenvia" + +#~ msgid "New Message" +#~ msgstr "Missatge nou" + +#~ msgid "Print" +#~ msgstr "Imprimeix" + +#~ msgid "Print Preview" +#~ msgstr "Vista prèvia d'impressió" + +#~ msgid "Move To Trash" +#~ msgstr "Mou a la paperera" + +#~ msgid "Print Message" +#~ msgstr "Imprimeix el missatge" + +#~ msgid "Print Preview Message" +#~ msgstr "Imprimeix la vista prèvia d'impressió" + +#~ msgid "Replace smileys by emoticons" +#~ msgstr "Substitueix les cares per emoticones" + +#~ msgid "" +#~ "Enable this if you want smileys like :-) appearing in the message text to " +#~ "be replaced by emoticons (small pictures)." +#~ msgstr "" +#~ "Activeu-ho si voleu substituir les cares com ara :-) que apareguin al " +#~ "text del missatge per emoticones (petites imatges)." + +#~ msgid "Replace smileys &by emoticons" +#~ msgstr "Su&bstitueix les cares per emoticones" + +#~ msgid "Hide full address list" +#~ msgstr "Oculta la llista completa d'adreces" + +#~ msgid "Show full address list" +#~ msgstr "Mostra la llista completa d'adreces" + +#~ msgctxt "View->headers->" +#~ msgid "&Standard Headers" +#~ msgstr "Capçaleres e&stàndard" + +#~ msgid "Show standard list of message headers" +#~ msgstr "Mostra una llista estàndard de les capçaleres del missatge" + +#~ msgid "Bad signature" +#~ msgstr "Signatura incorrecta" + +#~ msgid "Bad signature." +#~ msgstr "Signatura incorrecta." + +#~ msgid "Show spam status in fancy headers" +#~ msgstr "Mostra l'estat de correu brossa en les capçaleres sofisticades" + +#~ msgid "Show spam status &in fancy headers" +#~ msgstr "Mostra l'estat de correu bro&ssa en les capçaleres sofisticades" + +#~ msgid "Outlook compatible invitation reply comments" +#~ msgstr "Comentaris de resposta a una invitació compatibles amb l'Outlook" + +#~ msgid "" +#~ "When replying to invitations, send the reply comment in way that " +#~ "Microsoft Outlook understands." +#~ msgstr "" +#~ "En respondre a invitacions, envia el comentari de la resposta de manera " +#~ "que l'entengui el Microsoft Outlook." + +#~ msgid "Show invitation update differences in the Outlook style" +#~ msgstr "" +#~ "Mostra les diferències d'actualització de les invitacions a l'estil de " +#~ "l'Outlook" + +#~ msgid "" +#~ "When viewing invitation updates, show the differences in the Microsoft " +#~ "Outlook style." +#~ msgstr "" +#~ "En visualitzar les actualitzacions de les invitacions, mostra les " +#~ "diferències a l'estil del Microsoft Outlook." + +#~ msgid "" +#~ "Send invitation reply comments in a way that Microsoft Outlook(tm) " +#~ "understands." +#~ msgstr "" +#~ "Envia comentaris de resposta a una invitació de manera que les entengui " +#~ "Microsoft Outlook(tm)." + +#~ msgid "" +#~ "Display invitation update differences in the Microsoft Outlook(tm) style." +#~ msgstr "" +#~ "Mostra les diferències d'actualització de les invitacions a l'estil del " +#~ "Microsoft Outlook(tm)." + +#~ msgid "Wrong Crypto Plug-In." +#~ msgstr "Connector criptogràfic erroni." + +#~ msgid "No appropriate crypto plug-in was found." +#~ msgstr "No s'han trobat els connectors criptogràfics apropiats." + +#~ msgid "Crypto plug-in \"%1\" cannot decrypt messages." +#~ msgstr "El connector criptogràfic «%1» no pot desencriptar missatges." + +#~ msgid "Crypto plug-in \"%1\" could not decrypt the data." +#~ msgstr "El connector criptogràfic «%1» no pot desencriptar les dades." + +#~ msgid "Error: %1" +#~ msgstr "Error: %1" + +#~ msgctxt "%1 is either 'OpenPGP' or 'S/MIME'" +#~ msgid "No %1 plug-in was found." +#~ msgstr "No s'ha trobat el connector %1." + +#~ msgid "Crypto plug-in \"%1\" cannot verify signatures." +#~ msgstr "El connector criptogràfic «%1» no pot verificar signatures." + +#~ msgid "" +#~ "The message is signed, but the validity of the signature cannot be " +#~ "verified.
    Reason: %1" +#~ msgstr "" +#~ "El missatge està signat, però no es pot comprovar la validesa de la " +#~ "signatura.
    Motiu: %1" + +#~ msgid "&Zoom In" +#~ msgstr "&Amplia" + +#~ msgid "Zoom &Out" +#~ msgstr "Red&ueix" + +#~ msgid "Reset" +#~ msgstr "Reinicia" + +#~ msgid "Zoom" +#~ msgstr "Zoom" + +#~ msgid "Close" +#~ msgstr "Tanca" + +#~ msgctxt "Find text" +#~ msgid "F&ind:" +#~ msgstr "&Cerca:" + +#~ msgid "Text to search for" +#~ msgstr "Text a cercar per" + +#~ msgctxt "Find and go to the next search match" +#~ msgid "Next" +#~ msgstr "Següent" + +#~ msgid "Jump to next match" +#~ msgstr "Salta a la coincidència següent" + +#~ msgctxt "Find and go to the previous search match" +#~ msgid "Previous" +#~ msgstr "Anterior" + +#~ msgid "Jump to previous match" +#~ msgstr "Salta a la coincidència anterior" + +#~ msgid "Modify search behavior" +#~ msgstr "Modifica el comportament de la cerca" + +#~ msgid "Case sensitive" +#~ msgstr "Sensible a majúscules" + +#~ msgid "Phrase not found" +#~ msgstr "No s'ha trobat la frase" + +#~ msgid "Blockable Items" +#~ msgstr "Elements bloquejables" + +#~ msgid "No blockable element found." +#~ msgstr "No s'ha trobat cap element bloquejable." + +#~ msgid "Filter" +#~ msgstr "Filtre" + +#~ msgid "Address" +#~ msgstr "Adreça" + +#~ msgid "Search..." +#~ msgstr "Cerca..." + +#~ msgid "Image" +#~ msgstr "Imatge" + +#~ msgid "Script" +#~ msgstr "Script" + +#~ msgid "Stylesheet" +#~ msgstr "Full d'estil" + +#~ msgid "Font" +#~ msgstr "Tipus de lletra" + +#~ msgid "Frame" +#~ msgstr "Marc" + +#~ msgid "XML Request" +#~ msgstr "Petició XML" + +#~ msgid "Object" +#~ msgstr "Objecte" + +#~ msgid "Audio/Video" +#~ msgstr "Àudio/vídeo" + +#~ msgid "Popup window" +#~ msgstr "Finestra emergent" + +#~ msgid "Unknown" +#~ msgstr "Desconegut" + +#~ msgid "Copy url" +#~ msgstr "Copia l'URL" + +#~ msgid "Copy filter" +#~ msgstr "Copia el filtre" + +#~ msgid "Block item..." +#~ msgstr "Bloca l'element..." + +#~ msgid "Open" +#~ msgstr "Obre" + +#~ msgid "Remove filter" +#~ msgstr "Elimina el filtre" + +#~ msgid "Download new ad-block list was failed." +#~ msgstr "La baixada de la llista de bloqueig publicitari nova ha fallat." + +#~ msgid "Download new ad-block list was done." +#~ msgstr "La baixada de la llista de bloqueig publicitari nova ha finalitzat." + +#~ msgid "Add subscription" +#~ msgstr "Afegeix una subscripció" + +#~ msgid "Select List:" +#~ msgstr "Seleccioneu una llista:" + +#~ msgid "Show List" +#~ msgstr "Mostra la llista" + +#~ msgid "Use default" +#~ msgstr "Usa el predeterminat" + +#~ msgid "Yes" +#~ msgstr "Sí" + +#~ msgid "Not" +#~ msgstr "No" + +#~ msgid "Not subscription added..." +#~ msgstr "No s'ha afegit cap subscripció..." + +#~ msgid "" +#~ "Filter expression (e.g. http://www.example.com/ad/*,
    more information):" +#~ msgstr "" +#~ "Expressió de filtre (p. ex. http://www.exemple.com/ad/*, més informació):" + +#~ msgid " day" +#~ msgid_plural " days" +#~ msgstr[0] " dia" +#~ msgstr[1] " dies" + +#~ msgid "" +#~ "

    Enter an expression to filter. Filters can be defined as either:" +#~ "

    • a shell-style wildcard, e.g. http://www.example.com/ads*, the wildcards *?[] may be used
    • a full regular " +#~ "expression by surrounding the string with '/', e.g. /\\/(ad|" +#~ "banner)\\./

    Any filter string can be preceded by " +#~ "'@@' to whitelist (allow) any matching URL, which takes priority " +#~ "over any blacklist (blocking) filter.
    %2" +#~ msgstr "" +#~ "

    Introduïu una expressió a filtrar. Els filtres es poden definir " +#~ "com: