diff --git a/src/conf/CMakeLists.txt b/src/conf/CMakeLists.txt index 1e969c484..6d1fd11a8 100644 --- a/src/conf/CMakeLists.txt +++ b/src/conf/CMakeLists.txt @@ -1,75 +1,77 @@ include_directories(${kleopatra_SOURCE_DIR}/src) set(_kcm_kleopatra_libkleopatraclient_extra_SRCS smimevalidationconfigurationwidget.cpp smimevalidationconfigurationpage.cpp cryptooperationsconfigwidget.cpp cryptooperationsconfigpage.cpp smimevalidationconfigurationwidget.h smimevalidationconfigurationpage.h cryptooperationsconfigwidget.h cryptooperationsconfigpage.h smartcardconfigpage.cpp smartcardconfigpage.h ) ki18n_wrap_ui(_kcm_kleopatra_libkleopatraclient_extra_SRCS smimevalidationconfigurationwidget.ui ) kconfig_add_kcfg_files(_kcm_kleopatra_libkleopatraclient_extra_SRCS ${kleopatra_SOURCE_DIR}/src/kcfg/smimevalidationpreferences.kcfgc ) set(_kcm_kleopatra_libkleopatraclient_extra_LIBS kleopatraclientgui) set(kcm_kleopatra_PART_SRCS dirservconfigpage.cpp appearanceconfigpage.cpp appearanceconfigwidget.cpp gnupgsystemconfigurationpage.cpp dirservconfigpage.h appearanceconfigpage.h appearanceconfigwidget.h gnupgsystemconfigurationpage.h labelledwidget.cpp labelledwidget.h labelledwidget.cpp labelledwidget.h + pluralhandlingspinbox.cpp + pluralhandlingspinbox.h ${kleopatra_BINARY_DIR}/src/kleopatra_debug.cpp ${_kcm_kleopatra_libkleopatraclient_extra_SRCS} ) ki18n_wrap_ui(kcm_kleopatra_PART_SRCS smimevalidationconfigurationwidget.ui ) kconfig_add_kcfg_files(kcm_kleopatra_PART_SRCS ${kleopatra_SOURCE_DIR}/src/kcfg/tooltippreferences.kcfgc ${kleopatra_SOURCE_DIR}/src/kcfg/emailoperationspreferences.kcfgc ${kleopatra_SOURCE_DIR}/src/kcfg/fileoperationspreferences.kcfgc ${kleopatra_SOURCE_DIR}/src/kcfg/tagspreferences.kcfgc ${kleopatra_SOURCE_DIR}/src/kcfg/settings.kcfgc ) add_library(kcm_kleopatra_static STATIC ${kcm_kleopatra_PART_SRCS}) set_property(TARGET kcm_kleopatra_static PROPERTY POSITION_INDEPENDENT_CODE ON) target_link_libraries(kcm_kleopatra_static KPim${KF_MAJOR_VERSION}::Libkleo KF${KF_MAJOR_VERSION}::I18n KF${KF_MAJOR_VERSION}::IconThemes KF${KF_MAJOR_VERSION}::KCMUtils KF${KF_MAJOR_VERSION}::WidgetsAddons ${_kcm_kleopatra_extra_libs} ${_kleopatra_dbusaddons_libs} ${_kcm_kleopatra_libkleopatraclient_extra_LIBS} ) if (NOT WIN32) add_library(kleopatra_config_gnupgsystem MODULE kcm_gnupgsystemconfigurationpage.cpp) target_link_libraries(kleopatra_config_gnupgsystem kcm_kleopatra_static KF${KF_MAJOR_VERSION}::CoreAddons) install(TARGETS kleopatra_config_gnupgsystem DESTINATION ${KDE_INSTALL_PLUGINDIR}/pim${QT_MAJOR_VERSION}/kcms/kleopatra) endif() diff --git a/src/conf/pluralhandlingspinbox.cpp b/src/conf/pluralhandlingspinbox.cpp new file mode 100644 index 000000000..7f306b21a --- /dev/null +++ b/src/conf/pluralhandlingspinbox.cpp @@ -0,0 +1,52 @@ +/* + SPDX-FileCopyrightText: 2014 Laurent Montel + + SPDX-License-Identifier: LGPL-2.1-or-later + + This is a copy of KPluralHandlingSpinBox from KTextWidgets. +*/ + +#include "pluralhandlingspinbox.h" + +class PluralHandlingSpinBoxPrivate +{ +public: + PluralHandlingSpinBoxPrivate(QSpinBox *q) + : q(q) + { + QObject::connect(q, &QSpinBox::valueChanged, q, [this](int value) { + updateSuffix(value); + }); + } + + void updateSuffix(int value) + { + if (!pluralSuffix.isEmpty()) { + KLocalizedString s = pluralSuffix; + q->setSuffix(s.subs(value).toString()); + } + } + + QSpinBox *const q; + KLocalizedString pluralSuffix; +}; + +PluralHandlingSpinBox::PluralHandlingSpinBox(QWidget *parent) + : QSpinBox(parent) + , d(new PluralHandlingSpinBoxPrivate(this)) +{ +} + +PluralHandlingSpinBox::~PluralHandlingSpinBox() = default; + +void PluralHandlingSpinBox::setSuffix(const KLocalizedString &suffix) +{ + d->pluralSuffix = suffix; + if (suffix.isEmpty()) { + QSpinBox::setSuffix(QString()); + } else { + d->updateSuffix(value()); + } +} + +#include "moc_pluralhandlingspinbox.cpp" diff --git a/src/conf/pluralhandlingspinbox.h b/src/conf/pluralhandlingspinbox.h new file mode 100644 index 000000000..5c7023440 --- /dev/null +++ b/src/conf/pluralhandlingspinbox.h @@ -0,0 +1,39 @@ +/* + SPDX-FileCopyrightText: 2014 Laurent Montel + + SPDX-License-Identifier: LGPL-2.1-or-later + + This is a copy of KPluralHandlingSpinBox from KTextWidgets. +*/ + +#pragma once + +#include + +#include + +#include + +class PluralHandlingSpinBox : public QSpinBox +{ + Q_OBJECT +public: + /** + * Default constructor + */ + + explicit PluralHandlingSpinBox(QWidget *parent = nullptr); + ~PluralHandlingSpinBox() override; + + /** + * Sets the suffix to @p suffix. + * Use this to add a plural-aware suffix, e.g. by using ki18np("singular", "plural"). + */ + void setSuffix(const KLocalizedString &suffix); + +private: + friend class PluralHandlingSpinBoxPrivate; + std::unique_ptr const d; + + Q_DISABLE_COPY(PluralHandlingSpinBox) +};