From fb37084b3e7c396cd10bf4d3253fee730320988a Mon Sep 17 00:00:00 2001 From: "Friedrich W. H. Kossebau" Date: Tue, 8 Oct 2019 15:22:49 +0200 Subject: Use ECMGenerateExportHeader to manage deprecated API better Summary: Allows * projects linking to KConfigCore/Gui to hide deprecated API up to a given version or silence deprecation warnings after a given version, using * -DKCONFIGCORE_DISABLE_DEPRECATED_BEFORE_AND_AT * -DKCONFIGCORE_NO_DEPRECATED * -DKCONFIGCORE_DEPRECATED_WARNINGS_SINCE * -DKCONFIGCORE_NO_DEPRECATED_WARNINGS * -DKCONFIGGUI_DISABLE_DEPRECATED_BEFORE_AND_AT * -DKCONFIGGUI_NO_DEPRECATED * -DKCONFIGGUI_DEPRECATED_WARNINGS_SINCE * -DKCONFIGGUI_NO_DEPRECATED_WARNINGS or * -DKF_DISABLE_DEPRECATED_BEFORE_AND_AT * -DKF_NO_DEPRECATED * -DKF_DEPRECATED_WARNINGS_SINCE * -DKF_NO_DEPRECATED_WARNINGS * to build KConfigCore/Gui optionally with deprecated API excluded from the build, using "EXCLUDE_DEPRECATED_BEFORE_AND_AT" cmake argument. Test Plan: Builds with EXCLUDE_DEPRECATED_BEFORE_AND_AT set to 0, 4.0.0, 5.0.0, 5.11.0, 5.24.0, 5.39.0, 5.42.0, CURRENT. Reviewers: #frameworks, mlaurent Reviewed By: mlaurent Subscribers: mlaurent, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D24496 --- src/gui/CMakeLists.txt | 9 ++++++++- src/gui/kconfiggui.cpp | 2 +- src/gui/kconfiggui.h | 5 +++-- src/gui/kconfigloader.cpp | 4 ++++ src/gui/kconfigloader.h | 4 ++++ src/gui/kstandardshortcut.cpp | 5 +++++ src/gui/kstandardshortcut.h | 4 ++++ 7 files changed, 29 insertions(+), 4 deletions(-) (limited to 'src/gui') diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index 6ae7729c..58afe38a 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -9,8 +9,15 @@ set(libkconfiggui_SRCS ecm_create_qm_loader(libkconfiggui_SRCS kconfig5_qt) add_library(KF5ConfigGui ${libkconfiggui_SRCS}) -generate_export_header(KF5ConfigGui BASE_NAME KConfigGui) add_library(KF5::ConfigGui ALIAS KF5ConfigGui) +ecm_generate_export_header(KF5ConfigGui + BASE_NAME KConfigGui + # GROUP_BASE_NAME KF <- enable once all of KF modules use ecm_generate_export_header + VERSION ${KF5_VERSION} + DEPRECATED_BASE_VERSION 0 + DEPRECATION_VERSIONS 5.11 5.39 + EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT} +) target_include_directories(KF5ConfigGui INTERFACE "$") diff --git a/src/gui/kconfiggui.cpp b/src/gui/kconfiggui.cpp index 6948b968..f65bba59 100644 --- a/src/gui/kconfiggui.cpp +++ b/src/gui/kconfiggui.cpp @@ -67,7 +67,7 @@ bool KConfigGui::hasSessionConfig() return s_sessionConfig != nullptr; } -#ifndef KDE_NO_DEPRECATED +#if KCONFIGGUI_BUILD_DEPRECATED_SINCE(5, 11) QString KConfigGui::sessionConfigName() { return sessionConfig()->name(); diff --git a/src/gui/kconfiggui.h b/src/gui/kconfiggui.h index 12644658..b9d9cadb 100644 --- a/src/gui/kconfiggui.h +++ b/src/gui/kconfiggui.h @@ -60,14 +60,15 @@ KCONFIGGUI_EXPORT void setSessionConfig(const QString &id, const QString &key); */ KCONFIGGUI_EXPORT bool hasSessionConfig(); +#if KCONFIGGUI_ENABLE_DEPRECATED_SINCE(5, 11) /** * Returns the name of the application session * * @return the application session name * @deprecated since 5.11, use sessionConfig()->name() */ -#ifndef KDE_NO_DEPRECATED -KCONFIGGUI_DEPRECATED_EXPORT QString sessionConfigName(); +KCONFIGGUI_DEPRECATED_VERSION(5, 11, "Use KConfigGui::sessionConfig()->name()") +KCONFIGGUI_EXPORT QString sessionConfigName(); #endif } diff --git a/src/gui/kconfigloader.cpp b/src/gui/kconfigloader.cpp index 63d3ff6e..760b1500 100644 --- a/src/gui/kconfigloader.cpp +++ b/src/gui/kconfigloader.cpp @@ -425,7 +425,11 @@ QStringList KConfigLoader::groupList() const return d->groups; } +#if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0) bool KConfigLoader::usrWriteConfig() +#else +bool KConfigLoader::usrSave() +#endif { if (d->saveDefaults) { const auto listItems = items(); diff --git a/src/gui/kconfigloader.h b/src/gui/kconfigloader.h index 3eb3879d..e46e4c6e 100644 --- a/src/gui/kconfigloader.h +++ b/src/gui/kconfigloader.h @@ -166,10 +166,14 @@ public: QStringList groupList() const; protected: +#if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0) /** * Hack used to force writing when no default exists in config file. */ bool usrWriteConfig() override; +#else + bool usrSave() override; +#endif private: ConfigLoaderPrivate *const d; diff --git a/src/gui/kstandardshortcut.cpp b/src/gui/kstandardshortcut.cpp index a8215138..4506be7d 100644 --- a/src/gui/kstandardshortcut.cpp +++ b/src/gui/kstandardshortcut.cpp @@ -154,7 +154,12 @@ static KStandardShortcutInfo g_infoStandardShortcut[] = { { Spelling, "Spelling", QT_TRANSLATE_NOOP3("KStandardShortcut", "Spelling", "@action"), 0, 0, QList(), false }, { ShowToolbar, "ShowToolbar", QT_TRANSLATE_NOOP3("KStandardShortcut", "Show Toolbar", "@action"), 0, 0, QList(), false }, { ShowStatusbar, "ShowStatusbar", QT_TRANSLATE_NOOP3("KStandardShortcut", "Show Statusbar", "@action"), 0, 0, QList(), false }, +#if KCONFIGGUI_BUILD_DEPRECATED_SINCE(5, 39) { SaveOptions, "SaveOptions", QT_TRANSLATE_NOOP3("KStandardShortcut", "Save Options", "@action"), 0, 0, QList(), false }, +#else + // dummy entry + { SaveOptions_DEPRECATED_DO_NOT_USE, nullptr, {nullptr, nullptr}, 0, 0, QList(), false }, +#endif { KeyBindings, "KeyBindings", QT_TRANSLATE_NOOP3("KStandardShortcut", "Key Bindings", "@action"), 0, 0, QList(), false }, { Preferences, "Preferences", QT_TRANSLATE_NOOP3("KStandardShortcut", "Configure Application", "@action"), CTRLSHIFT(Comma), 0, QList(), false }, { ConfigureToolbars, "ConfigureToolbars", QT_TRANSLATE_NOOP3("KStandardShortcut", "Configure Toolbars", "@action"), 0, 0, QList(), false }, diff --git a/src/gui/kstandardshortcut.h b/src/gui/kstandardshortcut.h index 15cdc1b9..6f673272 100644 --- a/src/gui/kstandardshortcut.h +++ b/src/gui/kstandardshortcut.h @@ -134,7 +134,11 @@ enum StandardShortcut { Spelling, ///< Pop up the spell checker. ShowToolbar, ///< Show/Hide the toolbar. ShowStatusbar, ///< Show/Hide the statusbar. +#if KCONFIGGUI_ENABLE_DEPRECATED_SINCE(5, 39) SaveOptions, ///< @deprecated since 5.39 +#else + SaveOptions_DEPRECATED_DO_NOT_USE, +#endif KeyBindings, ///< Display the configure key bindings dialog. Preferences, ///< Display the preferences/options dialog. ConfigureToolbars, ///< Display the toolbar configuration dialog. -- cgit v1.2.1