diff --git a/CMakeLists.txt b/CMakeLists.txt index d9c5433..3b20f66 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,95 +1,95 @@ # SPDX-FileCopyrightText: 2023 g10 code Gmbh # SPDX-Contributor: Carl Schwan <carl.schwan@gnupg.com> # SPDX-License-Identifier: BSD-2-Clause cmake_minimum_required(VERSION 3.20) set(VERSION "0.0.1") project(gpgoljs VERSION ${VERSION}) set(KF_MIN_VERSION "6.0.0") set(QT_MIN_VERSION "6.6.0") -set(MIMETREEPARSER_VERSION "6.0.0") -set(LIBKLEO_VERSION "6.0.0") -set(LIBKDEPIM_VERSION "6.0.0") -set(PIMTEXTEDIT_VERSION "6.0.0") +set(MIMETREEPARSER_VERSION "6.3.41") +set(LIBKLEO_VERSION "6.2.0") +set(LIBKDEPIM_VERSION "6.2.0") +set(PIMTEXTEDIT_VERSION "6.2.0") set(GPG_ERROR_REQUIRED_VERSION "1.36") find_package(ECM ${KF_MIN_VERSION} CONFIG REQUIRED) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ) find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) include(FeatureSummary) include(KDEInstallDirs) include(KDECMakeSettings) include(KDECompilerSettings NO_POLICY_SCOPE) include(KDEGitCommitHooks) include(KDECMakeSettings) include(KDEClangFormat) include(ECMQtDeclareLoggingCategory) include(ECMAddTests) include(ECMSetupVersion) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) ecm_setup_version(${VERSION} VARIABLE_PREFIX GPGOLJS VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/client/gpgoljs_version.h") find_package(Qt6 ${QT_MIN_VERSION} NO_MODULE COMPONENTS Core HttpServer Widgets PrintSupport WebSockets) set_package_properties(Qt6 PROPERTIES TYPE REQUIRED PURPOSE "Basic application components" ) find_package(KF6 ${KF_MIN_VERSION} COMPONENTS Contacts Completion CoreAddons WidgetsAddons Config ColorScheme Codecs XmlGui GuiAddons JobWidgets Sonnet CalendarCore Archive) set_package_properties(KF6 PROPERTIES TYPE REQUIRED PURPOSE "Basic application components" ) find_package(KPim6Libkleo ${LIBKLEO_VERSION} CONFIG REQUIRED) find_package(KPim6Libkdepim ${LIBKDEPIM_LIB_VERSION} CONFIG REQUIRED) find_package(KPim6MimeTreeParserWidgets ${MIMETREEPARSER_VERSION} CONFIG REQUIRED) find_package(KPim6TextEdit ${PIMTEXTEDIT_VERSION} CONFIG REQUIRED) find_package(KF6TextAutoCorrectionCore CONFIG REQUIRED) find_package(LibGpgError ${GPG_ERROR_REQUIRED_VERSION} REQUIRED) # Optional packages if (WIN32) # Only a replacement available for Windows so this # is required on other platforms. find_package(KF6DBusAddons ${KF_MIN_VERSION} CONFIG) set_package_properties(KF6DBusAddons PROPERTIES DESCRIPTION "Support library to work with DBus" PURPOSE "DBus session integration" URL "https://inqlude.org/libraries/kdbusaddons.html" TYPE OPTIONAL) else() find_package(KF6DBusAddons ${KF_MIN_VERSION} CONFIG REQUIRED) message("called") set(_gpgol_dbusaddons_libs KF6::DBusAddons) endif() if (BUILD_TESTING) find_package(Qt6 ${QT_MIN_VERSION} NO_MODULE COMPONENTS Test) endif() add_subdirectory(common) add_subdirectory(server) add_subdirectory(client) feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES client/*.cpp client/*.h server/*.cpp server/*.h) kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES}) kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT) diff --git a/client/emailviewer.cpp b/client/emailviewer.cpp index ebe3528..3068cad 100644 --- a/client/emailviewer.cpp +++ b/client/emailviewer.cpp @@ -1,61 +1,71 @@ // SPDX-FileCopyrightText: 2024 g10 code GmbH // SPDX-Contributor: Carl Schwan <carl.schwan@gnupg.com> // SPDX-License-Identifier: GPL-2.0-or-later #include "emailviewer.h" #include "editor/composerwindow.h" #include "editor/composerwindowfactory.h" #include <KLocalizedString> +#include <QMenuBar> #include <QToolBar> #include <QToolButton> using namespace Qt::Literals::StringLiterals; static KMime::Message::Ptr toMessage(const QString &content) { KMime::Message::Ptr message(new KMime::Message()); message->setContent(KMime::CRLFtoLF(content.toUtf8())); message->parse(); return message; } EmailViewer::EmailViewer(const QString &content, const QString &accountEmail, const QString &displayName, const QString &bearerToken) - : MimeTreeParser::Widgets::MessageViewerDialog({toMessage(content)}) + : MimeTreeParser::Widgets::MessageViewerWindow() { + setMessages({toMessage(content)}); + const auto message = messages().at(0); toolBar()->show(); // spacer QWidget *spacer = new QWidget(); spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); toolBar()->addWidget(spacer); + auto messageMenu = menuBar()->findChild<QMenu *>("messageMenu"); + Q_ASSERT(messageMenu); + + messageMenu->addSeparator(); + // reply auto replyAction = new QAction(QIcon::fromTheme(u"mail-reply-sender-symbolic"_s), i18nc("@action:button", "Reply"), toolBar()); connect(replyAction, &QAction::triggered, this, [message, accountEmail, displayName, bearerToken](bool) { auto dialog = ComposerWindowFactory::self().create(accountEmail, displayName, bearerToken.toUtf8()); dialog->reply(message); dialog->show(); dialog->activateWindow(); dialog->raise(); }); toolBar()->addAction(replyAction); + messageMenu->addAction(replyAction); auto widget = qobject_cast<QToolButton *>(toolBar()->widgetForAction(replyAction)); widget->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); // forward auto forwardAction = new QAction(QIcon::fromTheme(u"mail-forward-symbolic"_s), i18nc("@action:button", "Forward"), toolBar()); connect(forwardAction, &QAction::triggered, this, [message, accountEmail, displayName, bearerToken](bool) { auto dialog = ComposerWindowFactory::self().create(accountEmail, displayName, bearerToken.toUtf8()); dialog->reply(message); dialog->show(); dialog->activateWindow(); dialog->raise(); }); toolBar()->addAction(forwardAction); + messageMenu->addAction(forwardAction); widget = qobject_cast<QToolButton *>(toolBar()->widgetForAction(forwardAction)); widget->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); } diff --git a/client/emailviewer.h b/client/emailviewer.h index 9980831..b772050 100644 --- a/client/emailviewer.h +++ b/client/emailviewer.h @@ -1,13 +1,13 @@ // SPDX-FileCopyrightText: 2024 g10 code GmbH // SPDX-Contributor: Carl Schwan <carl.schwan@gnupg.com> // SPDX-License-Identifier: GPL-2.0-or-later -#include <MimeTreeParserWidgets/MessageViewerDialog> +#include <MimeTreeParserWidgets/MessageViewerWindow> -class EmailViewer : public MimeTreeParser::Widgets::MessageViewerDialog +class EmailViewer : public MimeTreeParser::Widgets::MessageViewerWindow { Q_OBJECT public: EmailViewer(const QString &content, const QString &accountEmail, const QString &displayName, const QString &bearerToken); };