diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 41ed8a171..dc2fcaf5f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,358 +1,355 @@ # SPDX-License-Identifier: CC0-1.0 # SPDX-FileCopyrightText: none # target_include_directories does not handle empty include paths include_directories( ${Boost_INCLUDE_DIRS} ${GPGME_INCLUDES} ) add_definitions(-DTRANSLATION_DOMAIN=\"libkleopatra\") #add_definitions( -DQT_NO_CAST_FROM_ASCII ) #add_definitions( -DQT_NO_CAST_TO_ASCII ) kde_enable_exceptions() add_definitions( -DGPGMEPP_ERR_SOURCE_DEFAULT=13 ) # 13 is GPG_ERR_SOURCE_KLEO, even if gpg-error's too old to know about add_subdirectory( pics ) if (BUILD_TESTING) add_subdirectory( tests ) endif() add_library(KF5Libkleo) add_library(KF5::Libkleo ALIAS KF5Libkleo) ########### next target ############### target_sources(KF5Libkleo PRIVATE kleo/checksumdefinition.cpp kleo/checksumdefinition.h kleo/debug.cpp kleo/debug.h kleo/defaultkeyfilter.cpp kleo/defaultkeyfilter.h kleo/defaultkeygenerationjob.cpp kleo/defaultkeygenerationjob.h kleo/docaction.cpp kleo/dn.cpp kleo/dn.h kleo/enum.cpp kleo/enum.h kleo/kconfigbasedkeyfilter.cpp kleo/kconfigbasedkeyfilter.h kleo/keyfilter.h kleo/keyfiltermanager.cpp kleo/keyfiltermanager.h kleo/keygroup.cpp kleo/keygroup.h kleo/keygroupconfig.cpp kleo/keygroupconfig.h kleo/keygroupimportexport.cpp kleo/keygroupimportexport.h kleo/keyresolver.cpp kleo/keyresolver.h kleo/keyresolvercore.cpp kleo/keyresolvercore.h kleo/keyserverconfig.cpp kleo/keyserverconfig.h kleo/kleoexception.cpp kleo/kleoexception.h kleo/oidmap.cpp kleo/oidmap.h kleo/predicates.h kleo/stl_util.h models/keycache.cpp models/keycache.h models/keycache_p.h models/keylist.h models/keylistmodel.cpp models/keylistmodel.h models/keylistmodelinterface.cpp models/keylistmodelinterface.h models/keylistsortfilterproxymodel.cpp models/keylistsortfilterproxymodel.h models/keyrearrangecolumnsproxymodel.cpp models/keyrearrangecolumnsproxymodel.h models/subkeylistmodel.cpp models/subkeylistmodel.h models/useridlistmodel.cpp models/useridlistmodel.h utils/algorithm.h utils/assuan.cpp utils/assuan.h utils/classify.cpp utils/classify.h utils/compat.cpp utils/compat.h utils/cryptoconfig.cpp utils/cryptoconfig.h utils/cryptoconfig_p.h utils/filesystemwatcher.cpp utils/filesystemwatcher.h utils/formatting.cpp utils/formatting.h utils/gnupg-registry.c utils/gnupg-registry.h utils/gnupg.cpp utils/gnupg.h utils/hex.cpp utils/hex.h utils/keyhelpers.cpp utils/keyhelpers.h utils/qtstlhelpers.cpp utils/qtstlhelpers.h utils/scdaemon.cpp utils/scdaemon.h utils/stringutils.cpp utils/stringutils.h utils/test.cpp utils/test.h utils/uniquelock.cpp utils/uniquelock.h ) ecm_qt_declare_logging_category(KF5Libkleo HEADER libkleo_debug.h IDENTIFIER LIBKLEO_LOG CATEGORY_NAME org.kde.pim.libkleo DESCRIPTION "libkleo (kleo_core)" EXPORT LIBKLEO ) target_sources(KF5Libkleo PRIVATE ui/auditlogviewer.cpp ui/auditlogviewer.h ui/cryptoconfigentryreaderport.cpp ui/cryptoconfigentryreaderport_p.h ui/cryptoconfigmodule.cpp ui/cryptoconfigmodule.h ui/cryptoconfigmodule_p.h ui/directoryserviceswidget.cpp ui/directoryserviceswidget.h ui/dnattributeorderconfigwidget.cpp ui/dnattributeorderconfigwidget.h ui/editdirectoryservicedialog.cpp ui/editdirectoryservicedialog.h ui/filenamerequester.cpp ui/filenamerequester.h - ui/kdhorizontalline.cpp - ui/kdhorizontalline.h ui/messagebox.cpp ui/messagebox.h ui/progressbar.cpp ui/progressbar.h ui/progressdialog.cpp ui/progressdialog.h ui/readerportselection.cpp ui/readerportselection.h ) ecm_qt_declare_logging_category(KF5Libkleo HEADER kleo_ui_debug.h IDENTIFIER KLEO_UI_LOG CATEGORY_NAME org.kde.pim.kleo_ui DESCRIPTION "libkleo (kleo_ui)" OLD_CATEGORY_NAMES log_kleo_ui EXPORT LIBKLEO ) target_sources(KF5Libkleo PRIVATE # make this a separate lib. ui/keyapprovaldialog.cpp ui/keyapprovaldialog.h ui/keylistview.cpp ui/keylistview.h ui/keyrequester.cpp ui/keyrequester.h ui/keyselectioncombo.cpp ui/keyselectioncombo.h ui/keyselectiondialog.cpp ui/keyselectiondialog.h ui/newkeyapprovaldialog.cpp ui/newkeyapprovaldialog.h ) target_link_libraries(KF5Libkleo PUBLIC QGpgme Gpgmepp PRIVATE Qt${QT_MAJOR_VERSION}::Widgets KF5::I18n KF5::Completion KF5::ConfigCore KF5::CoreAddons KF5::WidgetsAddons KF5::ItemModels KF5::Codecs) if (QT_MAJOR_VERSION STREQUAL "6") target_link_libraries(KF5Libkleo PRIVATE Qt6Core5Compat) endif() # Boost::headers may not be available for old versions of Boost if (TARGET Boost::headers) target_link_libraries(KF5Libkleo PRIVATE Boost::headers) endif() if (KF5PimTextEdit_FOUND) add_definitions(-DHAVE_PIMTEXTEDIT) target_link_libraries(KF5Libkleo PRIVATE KF5::PimTextEdit) endif() if (COMPILE_WITH_UNITY_CMAKE_SUPPORT) set_target_properties(KF5Libkleo PROPERTIES UNITY_BUILD ON) endif() generate_export_header(KF5Libkleo BASE_NAME kleo) if(WIN32) target_link_libraries(KF5Libkleo ${GPGME_VANILLA_LIBRARIES} ) endif() set_target_properties(KF5Libkleo PROPERTIES VERSION ${LIBKLEO_VERSION} SOVERSION ${LIBKLEO_SOVERSION} EXPORT_NAME Libkleo ) install(TARGETS KF5Libkleo EXPORT KF5LibkleoTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS} ) target_include_directories(KF5Libkleo INTERFACE "$") target_include_directories(KF5Libkleo PUBLIC "$") ecm_generate_headers(libkleo_CamelCase_HEADERS HEADER_NAMES ChecksumDefinition Debug DefaultKeyFilter DefaultKeyGenerationJob DocAction Dn Enum KConfigBasedKeyFilter KeyFilter KeyFilterManager KeyGroup KeyGroupConfig KeyGroupImportExport KeyResolver KeyResolverCore KeyserverConfig KleoException OidMap Predicates Stl_Util REQUIRED_HEADERS libkleo_HEADERS PREFIX Libkleo RELATIVE kleo ) ecm_generate_headers(libkleo_CamelCase_models_HEADERS HEADER_NAMES KeyCache KeyList KeyListModel KeyListModelInterface KeyListSortFilterProxyModel KeyRearrangeColumnsProxyModel SubkeyListModel UserIDListModel REQUIRED_HEADERS libkleo_models_HEADERS PREFIX Libkleo RELATIVE models ) ecm_generate_headers(libkleo_CamelCase_utils_HEADERS HEADER_NAMES Algorithm Assuan Classify Compat CryptoConfig FileSystemWatcher Formatting GnuPG Hex KeyHelpers QtStlHelpers SCDaemon StringUtils Test UniqueLock REQUIRED_HEADERS libkleo_utils_HEADERS PREFIX Libkleo RELATIVE utils ) ecm_generate_headers(libkleo_CamelCase_ui_HEADERS HEADER_NAMES CryptoConfigModule DNAttributeOrderConfigWidget DirectoryServicesWidget EditDirectoryServiceDialog FileNameRequester - KDHorizontalLine KeyApprovalDialog KeyRequester KeySelectionCombo KeySelectionDialog MessageBox NewKeyApprovalDialog ProgressDialog ReaderPortSelection REQUIRED_HEADERS libkleo_ui_HEADERS PREFIX Libkleo RELATIVE ui ) ecm_generate_pri_file(BASE_NAME Libkleo LIB_NAME KF5Libkleo DEPS "QGpgme" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF}/Libkleo ) install(FILES ${libkleo_CamelCase_HEADERS} ${libkleo_CamelCase_models_HEADERS} ${libkleo_CamelCase_ui_HEADERS} ${libkleo_CamelCase_utils_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/Libkleo/Libkleo COMPONENT Devel ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kleo_export.h ${libkleo_HEADERS} ${libkleo_models_HEADERS} ${libkleo_ui_HEADERS} ${libkleo_utils_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/Libkleo/libkleo COMPONENT Devel ) install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR}) if ( WIN32 ) install ( FILES libkleopatrarc-win32.desktop DESTINATION ${KDE_INSTALL_CONFDIR} RENAME libkleopatrarc ) else () install ( FILES libkleopatrarc.desktop DESTINATION ${KDE_INSTALL_CONFDIR} RENAME libkleopatrarc ) endif () if (BUILD_QCH) ecm_add_qch( KF5Libkleo_QCH NAME KF5Libkleo BASE_NAME KF5Libkleo VERSION ${PIM_VERSION} ORG_DOMAIN org.kde SOURCES # using only public headers, to cover only public API ${libkleo_HEADERS} ${libkleo_models_HEADERS} ${libkleo_ui_HEADERS} ${libkleo_utils_HEADERS} #MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md" #IMAGE_DIRS "${CMAKE_SOURCE_DIR}/docs/pics" LINK_QCHS Qt5Core_QCH Qt5Gui_QCH Qt5Widgets_QCH INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR} BLANK_MACROS KLEO_EXPORT TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} COMPONENT Devel ) endif() diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 38b97ece2..ead8d60d4 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -1,24 +1,23 @@ # SPDX-License-Identifier: CC0-1.0 # SPDX-FileCopyrightText: none include(ECMMarkAsTest) # Convenience macro to add kleo unit tests. macro( add_kleo_test _source ) set( _test ${_source} ) get_filename_component( _name ${_source} NAME_WE ) add_executable( ${_name} ${_test} ) ecm_mark_as_test(kleo-${_name}) target_link_libraries(${_name} KF5::Libkleo Qt${QT_MAJOR_VERSION}::Widgets KF5::CoreAddons KF5::I18n KF5::WidgetsAddons) endmacro() -add_kleo_test(test_kdhorizontalline.cpp) add_kleo_test(test_jobs.cpp) add_kleo_test(test_cryptoconfig.cpp) add_kleo_test(test_keyselectiondialog.cpp) add_kleo_test(test_keygen.cpp) add_kleo_test(test_keylister.cpp) add_kleo_test(test_auditlog.cpp) add_kleo_test(test_keyformailbox.cpp) add_kleo_test(test_keyselectioncombo.cpp) add_kleo_test(test_keyresolver.cpp) diff --git a/src/tests/test_kdhorizontalline.cpp b/src/tests/test_kdhorizontalline.cpp deleted file mode 100644 index 804b9a619..000000000 --- a/src/tests/test_kdhorizontalline.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/* - test_kdhorizontalline.cpp - - This file is part of libkleopatra's test suite. - SPDX-FileCopyrightText: 2008 Klarälvdalens Datakonsult AB - - SPDX-License-Identifier: GPL-2.0-only -*/ - -#include "ui/kdhorizontalline.h" - -#include -#include -#include -#include -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - QWidget w; - QGridLayout glay(&w); - - KDHorizontalLine hl1(QStringLiteral("Foo"), &w); - glay.addWidget(&hl1, 0, 0, 1, 2); - - QLabel lb1(QStringLiteral("Foo 1:"), &w); - glay.addWidget(&lb1, 1, 0); - QLineEdit le1(&w); - glay.addWidget(&le1, 1, 1); - - glay.setColumnStretch(1, 1); - glay.setRowStretch(2, 1); - - w.show(); - - return app.exec(); -} diff --git a/src/ui/kdhorizontalline.cpp b/src/ui/kdhorizontalline.cpp deleted file mode 100644 index 00a72de48..000000000 --- a/src/ui/kdhorizontalline.cpp +++ /dev/null @@ -1,156 +0,0 @@ -/* -*- Mode: C++ -*- - KD Tools - a set of useful widgets for Qt -*/ - -/**************************************************************************** -** SPDX-FileCopyrightText: 2005 Klarälvdalens Datakonsult AB. All rights reserved. -** -** This file is part of the KD Tools library. -** -** SPDX-License-Identifier: GPL-2.0-or-later -** -**********************************************************************/ - -#include "kdhorizontalline.h" - -#include -#include -#ifdef QT_ACCESSIBILITY_SUPPORT -#include -#endif -#include -#include -#include - -KDHorizontalLine::KDHorizontalLine(QWidget *parent, const char *name, Qt::WindowFlags f) - : QFrame(parent, f) - , mAlign(Qt::AlignLeft) - , mLenVisible(0) -{ - setObjectName(QLatin1String(name)); - QFrame::setFrameStyle(HLine | Sunken); -} - -KDHorizontalLine::KDHorizontalLine(const QString &title, QWidget *parent, const char *name, Qt::WindowFlags f) - : QFrame(parent, f) - , mAlign(Qt::AlignLeft) - , mLenVisible(0) -{ - setObjectName(QLatin1String(name)); - QFrame::setFrameStyle(HLine | Sunken); - setTitle(title); -} - -KDHorizontalLine::~KDHorizontalLine() -{ -} - -void KDHorizontalLine::setFrameStyle(int style) -{ - QFrame::setFrameStyle((style & ~Shape_Mask) | HLine); // force HLine -} - -void KDHorizontalLine::setTitle(const QString &title) -{ - if (mTitle == title) { - return; - } - mTitle = title; - calculateFrame(); - update(); - updateGeometry(); -#ifdef QT_ACCESSIBILITY_SUPPORT - QAccessible::updateAccessibility(this, 0, QAccessible::NameChanged); -#endif -} - -void KDHorizontalLine::calculateFrame() -{ - mLenVisible = mTitle.length(); -#if 0 - if (mLenVisible) { - const QFontMetrics fm = fontMetrics(); - while (mLenVisible) { - const int tw = fm.width(mTitle, mLenVisible) + 4 * fm.width(QChar(' ')); - if (tw < width()) { - break; - } - mLenVisible--; - } - qDebug("mLenVisible = %d (of %d)", mLenVisible, mTitle.length()); - if (mLenVisible) { // but do we also have a visible label? - QRect r = rect(); - const int va = style().styleHint(QStyle::SH_GroupBox_TextLabelVerticalAlignment, this); - if (va & Qt::AlignVCenter) { - r.setTop(fm.height() / 2); // frame rect should be - } else if (va & Qt::AlignTop) { - r.setTop(fm.ascent()); - } - setFrameRect(r); // smaller than client rect - return; - } - } - // no visible label - setFrameRect(QRect(0, 0, 0, 0)); // then use client rect -#endif -} - -QSizePolicy KDHorizontalLine::sizePolicy() const -{ - return {QSizePolicy::Minimum, QSizePolicy::Fixed}; -} - -QSize KDHorizontalLine::sizeHint() const -{ - return minimumSizeHint(); -} - -QSize KDHorizontalLine::minimumSizeHint() const -{ - const int w = fontMetrics().horizontalAdvance(mTitle, mLenVisible) + fontMetrics().boundingRect(QLatin1Char(' ')).width(); - const int h = fontMetrics().height(); - return QSize(qMax(w, indentHint()), h).expandedTo(qApp->globalStrut()); -} - -void KDHorizontalLine::paintEvent(QPaintEvent *e) -{ - QPainter paint(this); - - if (mLenVisible) { // draw title - const QFontMetrics &fm = paint.fontMetrics(); - const int h = fm.height(); - const int tw = fm.horizontalAdvance(mTitle, mLenVisible) + fm.horizontalAdvance(QLatin1Char(' ')); - int x; - if (mAlign & Qt::AlignHCenter) { // center alignment - x = frameRect().width() / 2 - tw / 2; - } else if (mAlign & Qt::AlignRight) { // right alignment - x = frameRect().width() - tw; - } else if (mAlign & Qt::AlignLeft) { // left alignment - x = 0; - } else { // auto align - if (QApplication::isRightToLeft()) { - x = frameRect().width() - tw; - } else { - x = 0; - } - } - QRect r(x, 0, tw, h); - int va = style()->styleHint(QStyle::SH_GroupBox_TextLabelVerticalAlignment, nullptr, this); - if (va & Qt::AlignTop) { - r.translate(0, fm.descent()); - } - const QColor pen((QRgb)style()->styleHint(QStyle::SH_GroupBox_TextLabelColor, nullptr, this)); - if (!style()->styleHint(QStyle::SH_UnderlineShortcut, nullptr, this)) { - va |= Qt::TextHideMnemonic; - } - style()->drawItemText(&paint, r, Qt::TextShowMnemonic | Qt::AlignHCenter | va, palette(), isEnabled(), mTitle); - paint.setClipRegion(e->region().subtracted(r)); // clip everything but title - } - drawFrame(&paint); -} - -// static -int KDHorizontalLine::indentHint() -{ - return 30; -} diff --git a/src/ui/kdhorizontalline.h b/src/ui/kdhorizontalline.h deleted file mode 100644 index c61e7cb5f..000000000 --- a/src/ui/kdhorizontalline.h +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- Mode: C++ -*- - KD Tools - a set of useful widgets for Qt -*/ - -/**************************************************************************** -** SPDX-FileCopyrightText: 2005 Klarälvdalens Datakonsult AB. All rights reserved. -** -** This file is part of the KD Tools library. -** -** SPDX-License-Identifier: GPL-2.0-or-later -** -**********************************************************************/ - -#pragma once - -#include "kleo_export.h" - -#include - -class KLEO_EXPORT KDHorizontalLine : public QFrame -{ - Q_OBJECT - Q_PROPERTY(QString title READ title WRITE setTitle) -public: - explicit KDHorizontalLine(QWidget *parent = nullptr, const char *name = nullptr, Qt::WindowFlags f = {}); - explicit KDHorizontalLine(const QString &title, QWidget *parent = nullptr, const char *name = nullptr, Qt::WindowFlags f = {}); - ~KDHorizontalLine() override; - - QString title() const - { - return mTitle; - } - - /*! \reimp to hard-code the frame shape */ - void setFrameStyle(int style); - - QSize sizeHint() const override; - QSize minimumSizeHint() const override; - QSizePolicy sizePolicy() const; - - static int indentHint(); - -public Q_SLOTS: - virtual void setTitle(const QString &title); - -protected: - void paintEvent(QPaintEvent *) override; - -private: - void calculateFrame(); - -private: - QString mTitle; - Qt::Alignment mAlign; - int mLenVisible; -};