diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,12 +20,14 @@ include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) include(KDECMakeSettings) -include(GenerateExportHeader) +include(ECMGenerateExportHeader) include(ECMSetupVersion) include(ECMGenerateHeaders) include(ECMAddQch) include(ECMQtDeclareLoggingCategory) +set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].") + option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)") diff --git a/autotests/kconfigdialog_unittest.cpp b/autotests/kconfigdialog_unittest.cpp --- a/autotests/kconfigdialog_unittest.cpp +++ b/autotests/kconfigdialog_unittest.cpp @@ -230,16 +230,20 @@ // make sure there is nothing registered for the property KConfigDialogManager::propertyMap()->remove("TextEditUserPropertyWidget"); +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 32) KConfigDialogManager::changedMap()->insert("TextEditUserPropertyWidget", SIGNAL(textChanged(QString))); +#endif TextEditUserPropertyWidget *edit = new TextEditUserPropertyWidget; testKConfigCompilerSignals(edit, QStringLiteral("settings3")); } void testKConfigCompilerSignalsWithoutUserPropertyByMap() { +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 32) KConfigDialogManager::changedMap()->insert("TextEditNoUserPropertyWidget", SIGNAL(textChanged(QString))); +#endif KConfigDialogManager::propertyMap()->insert("TextEditNoUserPropertyWidget", QByteArray("text")); TextEditNoUserPropertyWidget *edit = new TextEditNoUserPropertyWidget; @@ -252,7 +256,9 @@ // make sure there is nothing registered for the property KConfigDialogManager::propertyMap()->remove("TextEditNoUserPropertyWidget"); +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 32) KConfigDialogManager::changedMap()->insert("TextEditNoUserPropertyWidget", SIGNAL(textChanged(QString))); +#endif TextEditNoUserPropertyWidget *edit = new TextEditNoUserPropertyWidget; edit->setProperty("kcfg_property", QByteArray("text")); @@ -263,7 +269,9 @@ void testKConfigCompilerSignalsWithUserPropertyAutoSignal() { // make sure there is nothing registered +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 32) KConfigDialogManager::changedMap()->remove("TextEditUserPropertyWidget"); +#endif KConfigDialogManager::propertyMap()->remove("TextEditUserPropertyWidget"); TextEditUserPropertyWidget *edit = new TextEditUserPropertyWidget; @@ -273,8 +281,10 @@ void testKConfigCompilerSignalsWithoutUserPropertyByMapAutoSignal() { +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 32) // make sure there is nothing registered for the signal KConfigDialogManager::changedMap()->remove("TextEditNoUserPropertyWidget"); +#endif KConfigDialogManager::propertyMap()->insert("TextEditNoUserPropertyWidget", QByteArray("text")); @@ -285,8 +295,10 @@ void testKConfigCompilerSignalsWithoutUserPropertyByPropertyAutoSignal() { +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 32) // make sure there is no signal registered KConfigDialogManager::changedMap()->remove("TextEditNoUserPropertyWidget"); +#endif // next to USER on "other" property, this one should also be ignored KConfigDialogManager::propertyMap()->insert("TextEditNoUserPropertyWidget", QByteArray("other")); @@ -299,7 +311,9 @@ void testKConfigCompilerSignalsWithoutUserPropertyByPropertyBySignal() { // next to USER being on "other" property, this one should also be ignored +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 32) KConfigDialogManager::changedMap()->insert("TextEditNoUserPropertyNoNotifyWidget", SIGNAL(otherChanged(QString))); +#endif KConfigDialogManager::propertyMap()->insert("TextEditNoUserPropertyNoNotifyWidget", QByteArray("other")); TextEditNoUserPropertyNoNotifyWidget *edit = new TextEditNoUserPropertyNoNotifyWidget; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -21,8 +21,15 @@ qt5_add_resources(kconfigwidgets_SRCS kconfigwidgets.qrc) add_library(KF5ConfigWidgets ${kconfigwidgets_SRCS}) -generate_export_header(KF5ConfigWidgets BASE_NAME KConfigWidgets) add_library(KF5::ConfigWidgets ALIAS KF5ConfigWidgets) +ecm_generate_export_header(KF5ConfigWidgets + BASE_NAME KConfigWidgets + # GROUP_BASE_NAME KF <- enable once all of KF modules use ecm_generate_export_header + VERSION ${KF5_VERSION} + DEPRECATED_BASE_VERSION 0 + DEPRECATION_VERSIONS 4.0 5.0 5.23 5.32 5.38 5.39 5.64 + EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT} +) target_include_directories(KF5ConfigWidgets INTERFACE "$") diff --git a/src/kcmodule.h b/src/kcmodule.h --- a/src/kcmodule.h +++ b/src/kcmodule.h @@ -248,17 +248,23 @@ KAuth::Action authAction() const; #endif +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 0) /** * Returns the value set by setExportText(); * @deprecated since 5.0, obsolete feature */ - KCONFIGWIDGETS_DEPRECATED QString exportText() const; + KCONFIGWIDGETS_DEPRECATED_VERSION(5, 0, "Obsolete feature") + QString exportText() const; +#endif +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 0) /** * Sets the export QString value, used for exporting data. * @deprecated since 5.0, obsolete feature */ - KCONFIGWIDGETS_DEPRECATED void setExportText(const QString &); + KCONFIGWIDGETS_DEPRECATED_VERSION(5, 0, "Obsolete feature") + void setExportText(const QString &); +#endif public Q_SLOTS: /** @@ -375,14 +381,18 @@ protected Q_SLOTS: +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 64) /** * Calling this slot is equivalent to emitting changed(true). - * @deprecated see markAsChanged + * @deprecated Since 5.64, use markAsChanged */ - KCONFIGWIDGETS_DEPRECATED void changed(); + KCONFIGWIDGETS_DEPRECATED_VERSION(5, 64, "Use KCModule::markAsChanged()") + void changed(); +#endif /** * Calling this slot is equivalent to emitting changed(true). + * @since 5.64 */ void markAsChanged(); diff --git a/src/kcmodule.cpp b/src/kcmodule.cpp --- a/src/kcmodule.cpp +++ b/src/kcmodule.cpp @@ -53,7 +53,9 @@ QString _rootOnlyMessage; QList managers; QString _quickHelp; +#if KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 0) QString m_ExportText; +#endif bool _useRootOnlyMessage : 1; bool _firstshow : 1; @@ -267,10 +269,12 @@ return d->_useRootOnlyMessage; } +#if KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 64) void KCModule::changed() { markAsChanged(); } +#endif void KCModule::markAsChanged() { @@ -282,15 +286,19 @@ return *d->_about; } +#if KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 0) QString KCModule::exportText() const { return d->m_ExportText; } +#endif +#if KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 0) void KCModule::setExportText(const QString &text) { d->m_ExportText = text; } +#endif void KCModule::setQuickHelp(const QString &help) { diff --git a/src/kconfigdialogmanager.h b/src/kconfigdialogmanager.h --- a/src/kconfigdialogmanager.h +++ b/src/kconfigdialogmanager.h @@ -266,15 +266,18 @@ */ static QHash *propertyMap(); +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 32) /** * Retrieve the map between widgets class names and signals that are listened * to detect changes in the configuration values. - * @deprecated For code having KDE Frameworks 5.32 as minimal required version, - * rely on the change signal noted with NOTIFY in the definition of the - * used property instead of setting it in this map. Or set the + * @deprecated Since 5.32, rely on the property change signal noted + * by @c NOTIFY of the used property in the class definition + * instead of setting it in this map. Or set the * "kcfg_propertyNotify" property on the widget instance. */ + KCONFIGWIDGETS_DEPRECATED_VERSION(5, 32, "See API docs") static QHash *changedMap(); +#endif public Q_SLOTS: /** diff --git a/src/kconfigdialogmanager.cpp b/src/kconfigdialogmanager.cpp --- a/src/kconfigdialogmanager.cpp +++ b/src/kconfigdialogmanager.cpp @@ -142,11 +142,13 @@ return s_propertyMap(); } +#if KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 32) QHash *KConfigDialogManager::changedMap() { initMaps(); return s_changedMap(); } +#endif void KConfigDialogManager::init(bool trackChanges) { diff --git a/src/kpastetextaction.h b/src/kpastetextaction.h --- a/src/kpastetextaction.h +++ b/src/kpastetextaction.h @@ -32,6 +32,8 @@ #include class KPasteTextActionPrivate; + +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 39) /** * @class KPasteTextAction kpastetextaction.h KPasteTextAction * @@ -43,16 +45,16 @@ * item: the current clipboard content. * @deprecated since 5.39 */ -#ifndef KDE_NO_DEPRECATED -class KCONFIGWIDGETS_DEPRECATED_EXPORT KPasteTextAction: public QAction +class KCONFIGWIDGETS_EXPORT KPasteTextAction: public QAction { Q_OBJECT public: /** * Constructs an action with the specified parent. * * @param parent The parent of this action. */ + KCONFIGWIDGETS_DEPRECATED_VERSION(5, 39, "No longer use this class") explicit KPasteTextAction(QObject *parent); /** @@ -67,6 +69,7 @@ * @param text The text that will be displayed. * @param parent The parent of this action. */ + KCONFIGWIDGETS_DEPRECATED_VERSION(5, 39, "No longer use this class") KPasteTextAction(const QString &text, QObject *parent); /** @@ -80,6 +83,7 @@ * @param text The text that will be displayed. * @param parent The parent of this action. */ + KCONFIGWIDGETS_DEPRECATED_VERSION(5, 39, "No longer use this class") KPasteTextAction(const QIcon &icon, const QString &text, QObject *parent); virtual ~KPasteTextAction(); diff --git a/src/kpastetextaction.cpp b/src/kpastetextaction.cpp --- a/src/kpastetextaction.cpp +++ b/src/kpastetextaction.cpp @@ -34,7 +34,8 @@ #include #include -#ifndef KDE_NO_DEPRECATED +#if KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 39) + class KPasteTextActionPrivate { public: @@ -138,6 +139,7 @@ // qCDebug(KCONFIG_WIDGETS_LOG) << "Clipboard: " << qApp->clipboard()->text(QClipboard::Clipboard); } } -#endif // KDE_NO_DEPRECATED #include "moc_kpastetextaction.cpp" + +#endif // KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE diff --git a/src/kstandardaction.h b/src/kstandardaction.h --- a/src/kstandardaction.h +++ b/src/kstandardaction.h @@ -185,12 +185,20 @@ ShowMenubar, ///< Show/Hide the menubar. ShowToolbar, ///< Show/Hide the toolbar. ShowStatusbar, ///< Show/Hide the statusbar. +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 38) SaveOptions, ///< @deprecated since 5.38 +#elif KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 38) + 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. // Help Menu +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 38) Help, ///< @deprecated since 5.38. Use HelpContents instead. +#elif KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 38) + Help_DEPRECATED_DO_NOT_USE, +#endif HelpContents, ///< Display the handbook of the application. WhatsThis, ///< Trigger the What's This cursor. ReportBug, ///< Open up the Report Bug dialog. @@ -201,7 +209,11 @@ ConfigureNotifications, ///< Display the notifications configuration dialog. FullScreen, ///< Switch to/from full screen mode. Clear, ///< Clear the content of the focus widget. +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 39) PasteText, ///< @deprecated since 5.39. Use Paste instead. +#elif KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 39) + PasteText_DEPRECATED_DO_NOT_USE, +#endif SwitchApplicationLanguage, ///< Display the Switch Application Language dialog. DeleteFile, ///< Permanently deletes files or folders. @since 5.25 RenameFile, ///< Renames files or folders. @since 5.25 @@ -262,9 +274,10 @@ */ KCONFIGWIDGETS_EXPORT const char *name(StandardAction id); -/// @deprecated use name() -#ifndef KDE_NO_DEPRECATED -inline KCONFIGWIDGETS_DEPRECATED const char *stdName(StandardAction act_enum) +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(4, 0) +/// @deprecated Since 4.0, use name(StandardAction) +KCONFIGWIDGETS_DEPRECATED_VERSION(4, 0, "Use KStandardAction::name(StandardAction)") +inline const char *stdName(StandardAction act_enum) { return name(act_enum); } @@ -554,26 +567,28 @@ */ KSTANDARDACTION_WITH_NEW_STYLE_CONNECT(paste, Paste) +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 39) /** * @deprecated since 5.39. Use paste() instead. */ -#ifndef KDE_NO_DEPRECATED -KCONFIGWIDGETS_DEPRECATED_EXPORT QAction *pasteText(const QObject *recvr, const char *slot, QObject *parent); +KCONFIGWIDGETS_DEPRECATED_VERSION(5, 39, "Use KStandardAction::paste(const QObject *, const char *, QObject *)") +KCONFIGWIDGETS_EXPORT QAction *pasteText(const QObject *recvr, const char *slot, QObject *parent); #endif +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 39) /** * @since 5.23 * @deprecated since 5.39. Use paste() instead. */ -#ifndef KDE_NO_DEPRECATED #ifdef DOXYGEN_SHOULD_SKIP_THIS inline QAction *pasteText(const QObject *recvr, Func slot, QObject *parent); #else template -KCONFIGWIDGETS_DEPRECATED_EXPORT inline typename std::enable_if::value, QAction>::type *pasteText(const Receiver *recvr, Func slot, QObject *parent) +KCONFIGWIDGETS_DEPRECATED_VERSION(5, 39, "Use KStandardAction::paste(const QObject *, Func, QObject *)") +inline typename std::enable_if::value, QAction>::type *pasteText(const Receiver *recvr, Func slot, QObject *parent) { return create(PasteText, recvr, slot, parent); } #endif // DOXYGEN_SHOULD_SKIP_THIS -#endif // KDE_NO_DEPRECATED +#endif // KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE /** * Clear the content of the focus widget @@ -982,28 +997,30 @@ return ret; } +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 38) /** * Display the save options dialog. * @deprecated since 5.38 */ -#ifndef KDE_NO_DEPRECATED -KCONFIGWIDGETS_DEPRECATED_EXPORT QAction *saveOptions(const QObject *recvr, const char *slot, QObject *parent); +KCONFIGWIDGETS_DEPRECATED_VERSION(5, 38, "No usage known, candidate for removal on next ABI break") +KCONFIGWIDGETS_EXPORT QAction *saveOptions(const QObject *recvr, const char *slot, QObject *parent); #endif +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 38) /** * Display the save options dialog. * @since 5.23 * @deprecated since 5.38 */ -#ifndef KDE_NO_DEPRECATED #ifdef DOXYGEN_SHOULD_SKIP_THIS inline QAction *saveOptions(const QObject *recvr, Func slot, QObject *parent); #else template -KCONFIGWIDGETS_DEPRECATED_EXPORT inline typename std::enable_if::value, QAction>::type *saveOptions(const Receiver *recvr, Func slot, QObject *parent) +KCONFIGWIDGETS_DEPRECATED_VERSION(5, 38, "No usage known, candidate for removal on next ABI break") +KCONFIGWIDGETS_EXPORT inline typename std::enable_if::value, QAction>::type *saveOptions(const Receiver *recvr, Func slot, QObject *parent) { return create(SaveOptions, recvr, slot, parent); } #endif // DOXYGEN_SHOULD_SKIP_THIS -#endif // KDE_NO_DEPRECATED +#endif // KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE /** * Display the configure key bindings dialog. @@ -1053,26 +1070,28 @@ */ KSTANDARDACTION_WITH_NEW_STYLE_CONNECT(configureNotifications, ConfigureNotifications) +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 23) /** * @deprecated since 5.38 Use helpContents() instead. */ -#ifndef KDE_NO_DEPRECATED -KCONFIGWIDGETS_DEPRECATED_EXPORT QAction *help(const QObject *recvr, const char *slot, QObject *parent); +KCONFIGWIDGETS_DEPRECATED_VERSION(5, 23, "Use KStandardAction::helpContents(const QObject *, const char *, QObject *)") +KCONFIGWIDGETS_EXPORT QAction *help(const QObject *recvr, const char *slot, QObject *parent); #endif +#if KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE(5, 38) /** * @since 5.23 * @deprecated since 5.38 Use helpContents() instead. */ -#ifndef KDE_NO_DEPRECATED #ifdef DOXYGEN_SHOULD_SKIP_THIS inline QAction *help(const QObject *recvr, Func slot, QObject *parent); #else template -KCONFIGWIDGETS_DEPRECATED_EXPORT inline typename std::enable_if::value, QAction>::type *help(const Receiver *recvr, Func slot, QObject *parent) +KCONFIGWIDGETS_DEPRECATED_VERSION(5, 38, "Use KStandardAction::helpContents(const QObject *, Func, QObject *)") +KCONFIGWIDGETS_EXPORT inline typename std::enable_if::value, QAction>::type *help(const Receiver *recvr, Func slot, QObject *parent) { return create(Help, recvr, slot, parent); } #endif // DOXYGEN_SHOULD_SKIP_THIS -#endif // KDE_NO_DEPRECATED +#endif // KCONFIGWIDGETS_ENABLE_DEPRECATED_SINCE /** * Display the handbook of the application. diff --git a/src/kstandardaction.cpp b/src/kstandardaction.cpp --- a/src/kstandardaction.cpp +++ b/src/kstandardaction.cpp @@ -166,9 +166,11 @@ case Home: sLabel = i18nc("home page", "&Home"); break; +#if KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 23) case Help: sLabel = i18nc("show help", "&Help"); break; +#endif case Preferences: case AboutApp: case HelpContents: { @@ -239,7 +241,7 @@ pAction = new KToggleFullScreenAction(parent); pAction->setCheckable(true); break; -#if !defined(KDE_NO_DEPRECATED) && defined(QT_DBUS_LIB) +#if KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 39) && defined(QT_DBUS_LIB) case PasteText: pAction = new KPasteTextAction(parent); break; @@ -410,7 +412,7 @@ return KStandardAction::create(Paste, recvr, slot, parent); } -#ifndef KDE_NO_DEPRECATED +#if KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 39) QAction *pasteText(const QObject *recvr, const char *slot, QObject *parent) { return KStandardAction::create(PasteText, recvr, slot, parent); @@ -646,7 +648,7 @@ return ret; } -#ifndef KDE_NO_DEPRECATED +#if KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 38) QAction *saveOptions(const QObject *recvr, const char *slot, QObject *parent) { return KStandardAction::create(SaveOptions, recvr, slot, parent); @@ -673,7 +675,7 @@ return KStandardAction::create(ConfigureNotifications, recvr, slot, parent); } -#ifndef KDE_NO_DEPRECATED +#if KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 38) QAction *help(const QObject *recvr, const char *slot, QObject *parent) { return KStandardAction::create(Help, recvr, slot, parent); diff --git a/src/kstandardaction_p.h b/src/kstandardaction_p.h --- a/src/kstandardaction_p.h +++ b/src/kstandardaction_p.h @@ -55,7 +55,9 @@ { Cut, KStandardShortcut::Cut, "edit_cut", I18N_NOOP("Cu&t"), I18N_NOOP("Cut selection to clipboard"), "edit-cut" }, { Copy, KStandardShortcut::Copy, "edit_copy", I18N_NOOP("&Copy"), I18N_NOOP("Copy selection to clipboard"), "edit-copy" }, { Paste, KStandardShortcut::Paste, "edit_paste", I18N_NOOP("&Paste"), I18N_NOOP("Paste clipboard content"), "edit-paste" }, +#if KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 39) { PasteText, KStandardShortcut::Paste, "edit_paste", I18N_NOOP("&Paste"), I18N_NOOP("Paste clipboard content"), "edit-paste" }, +#endif { Clear, KStandardShortcut::Clear, "edit_clear", I18N_NOOP("C&lear"), nullptr, "edit-clear" }, { SelectAll, KStandardShortcut::SelectAll, "edit_select_all", I18N_NOOP("Select &All"), nullptr, "edit-select-all" }, { Deselect, KStandardShortcut::Deselect, "edit_deselect", I18N_NOOP("Dese&lect"), nullptr, "edit-select-none" }, @@ -97,15 +99,19 @@ { ShowToolbar, KStandardShortcut::ShowToolbar, "options_show_toolbar", I18N_NOOP("Show &Toolbar"), I18N_NOOP("Show or hide toolbar"), nullptr }, { ShowStatusbar, KStandardShortcut::ShowStatusbar, "options_show_statusbar", I18N_NOOP("Show St&atusbar"), I18N_NOOP("Show or hide statusbar"), nullptr }, { FullScreen, KStandardShortcut::FullScreen, "fullscreen", I18N_NOOP("F&ull Screen Mode"), nullptr, "view-fullscreen" }, +#if KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 38) { SaveOptions, KStandardShortcut::SaveOptions, "options_save_options", I18N_NOOP("&Save Settings"), nullptr, nullptr }, +#endif { KeyBindings, KStandardShortcut::KeyBindings, "options_configure_keybinding", I18N_NOOP("Configure S&hortcuts..."), nullptr, "configure-shortcuts" }, { Preferences, KStandardShortcut::Preferences, "options_configure", I18N_NOOP("&Configure %1..."), nullptr, "configure" }, { ConfigureToolbars, KStandardShortcut::ConfigureToolbars, "options_configure_toolbars", I18N_NOOP("Configure Tool&bars..."), nullptr, "configure-toolbars" }, { ConfigureNotifications, KStandardShortcut::ConfigureNotifications, "options_configure_notifications", I18N_NOOP("Configure &Notifications..."), nullptr, "preferences-desktop-notification" }, // the idea here is that Contents is used in menus, and Help in dialogs, so both share the same // shortcut +#if KCONFIGWIDGETS_BUILD_DEPRECATED_SINCE(5, 38) { Help, KStandardShortcut::Help, "help", nullptr, nullptr, "help-contents" }, +#endif { HelpContents, KStandardShortcut::Help, "help_contents", I18N_NOOP("%1 &Handbook"), nullptr, "help-contents" }, { WhatsThis, KStandardShortcut::WhatsThis, "help_whats_this", I18N_NOOP("What's &This?"), nullptr, "help-contextual" }, { TipofDay, KStandardShortcut::TipofDay, "help_show_tip", I18N_NOOP("Tip of the &Day"), nullptr, "help-hint" },