aboutsummaryrefslogtreecommitdiff
path: root/src/core
AgeCommit message (Collapse)Author
2020-01-05Port QRegExp to QRegularExpressionAhmad Samir
Summary: Port QRegExp::exactMatch() by using QRegularExpression::anchoredPattern() to match the entire subject string. Remove filenameOnly(), it's been broken for a long time (QStringLiteral("[/\\]") is not a valid QRegExp pattern); besides it's not needed as QFileInfo::fileName() is used to get the filename. Test Plan: make && ctest Reviewers: #frameworks, dfaure, ervin, apol Reviewed By: dfaure, ervin Subscribers: kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D26177
2020-01-03Remove endl at the end of qdebugLaurent Montel
2019-12-19Port deprecated methodsLaurent Montel
2019-12-11kconfig EBN transport protocol cleanupJohn Hayes
Summary: Change and test transport protocol from http to https while correcting dead link Reviewers: apol Reviewed By: apol Subscribers: kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D25829
2019-12-10update @sinceDavid Edmundson
2019-12-10Expose getter to KConfigWatcher's configDavid Edmundson
Summary: It can help save users having to member variables for the config and the watcher. Reviewers: broulik Reviewed By: broulik Subscribers: broulik, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D25833
2019-12-10Fix writeFlags with KConfigCompilerSignallingItemDavid Edmundson
Summary: KConfigCompilerSignallingItem both inherits KConfigSkeletonItem and internally is powered by a separate KConfigSkeletonItem The generated code calls setWriteFlags on the outer KConfigCompilerSignallingItem instance, but the real writing is performed by the internal version. We need to set the flags in the right place. Ideally we would do this in an overload of KConfigSkeletonItem, but given we can't, I've shadowed the method. This isn't pretty, but given the docs say it should generally only be used from auto generated code, should be fine. Test Plan: Used in workspace KCM Reviewers: ervin Reviewed By: ervin Subscribers: kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D25791
2019-12-04Don't use nullptr as flag. Make it compile against qt5.15Laurent Montel
2019-11-12Add KPropertySkeletonItemKevin Ottens
Summary: This new item allows to use a QObject property as a source for a setting. This is especially convenient for using with KCMs present in systemsettings which tend to store information outside of KConfig (for interfacing deeper with the system). Reviewers: #frameworks, dfaure, davidedmundson, bport, crossi Subscribers: kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D25211
2019-11-12Prepare KConfigSkeletonItem to allow inheriting its private classKevin Ottens
Reviewers: #frameworks, dfaure, davidedmundson, bport, crossi Subscribers: vkrause, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D25210
2019-10-31These methods were adding in qt5.15Laurent Montel
2019-10-30Make it compile against qt5.15 without deprecated methodLaurent Montel
2019-10-20Enable KF_* group deprecation macrosFriedrich W. H. Kossebau
GIT_SILENT
2019-10-18Use ECMGenerateExportHeader to manage deprecated API betterFriedrich W. H. Kossebau
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
2019-10-16Expose isImmutable to introspection (e.g. QML)Kevin Ottens
Reviewers: #plasma, #frameworks, mart, dfaure Subscribers: kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D24697
2019-10-10Add convenience for defaults/dirty states to KCoreConfigSkeletonKevin Ottens
Summary: It allows to verify if all the items of the skeleton are in their default values or if they hold any value deviating from the latest loaded values from KConfig. We didn't really need this during the KCModule/QtWidgets time since we could write KConfigDialogManager just fine without it. But for use with QML and aiming at having similar magic in KQuickAddons::ConfigModule such convenience functions will be needed. Reviewers: #plasma, #frameworks, dfaure, mart Subscribers: apol, kossebau, davidedmundson, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D24494
2019-09-30Small performance enhacementsAlbert Astals Cid
Summary: suggested by clang-tidy Reviewers: davidedmundson Reviewed By: davidedmundson Subscribers: kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D24312
2019-09-17[KConfig] port away from deprecated methods in Qt 5.14David Faure
Summary: In kconf_update, the ctime usage used to be about metadata change time (buff.st_ctime, before it got ported to the misnamed created()). I ported it to birthTime, because I think date of birth is a more useful way to identify a file than date of permission change which doesn't really matter to us. But in practice, I can't help but wonder if mtime alone wouldn't be enough. For the QStringLiteral("%%1").arg(i) bit, I tested it in tst_qstring, the first % is left untouched. Test Plan: make && ctest Reviewers: mdawson, arichardson, vkrause Reviewed By: vkrause Subscribers: pino, arojas, mlaurent, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D23815
2019-09-16Use new INCLUDE_DIRS with ecm_add_qch, to have doxygen see more includesFriedrich W. H. Kossebau
GIT_SILENT
2019-08-28GIT_SILENT: use QLatin1StringLaurent Montel
2019-08-25String code optimization: use s.remove(0. x) instead of s = s.mid(x)Friedrich W. H. Kossebau
GIT_SILENT
2019-08-25String code optimization: use s.chop(x) instead of s.truncate(s.size()-x)Friedrich W. H. Kossebau
GIT_SILENT
2019-08-25Use more initializer listsFriedrich W. H. Kossebau
GIT_SILENT
2019-08-24String code optimization: use QLatin1String/QChar overload for string concatFriedrich W. H. Kossebau
GIT_SILENT
2019-08-24String code optimization: use QLatin1String overload for == & !=Friedrich W. H. Kossebau
GIT_SILENT
2019-08-24String code optimization: use QLatin1String overload for QString::replaceFriedrich W. H. Kossebau
GIT_SILENT
2019-08-22Fix memory leak in KConfigWatcherDaniel Vrátil
Reviewers: davidedmundson Reviewed By: davidedmundson Subscribers: davidedmundson, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D23340
2019-08-14Add a logging category for logs warningsMéven Car
Summary: Disable logs unless the logging category kf5.kconfig.core is enabled Test Plan: ctest Reviewers: #frameworks, apol, cgiboudeaux Reviewed By: cgiboudeaux Subscribers: cgiboudeaux, mikeroyal, apol, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D22061
2019-08-14SVN_SILENT made messages (.desktop file) - always resolve oursl10n daemon script
In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2019-08-07Security: remove support for $(...) in config keys with [$e] marker.David Faure
Summary: It is very unclear at this point what a valid use case for this feature would possibly be. The old documentation only mentions $(hostname) as an example, which can be done with $HOSTNAME instead. Note that $(...) is still supported in Exec lines of desktop files, this does not require [$e] anyway (and actually works better without it, otherwise the $ signs need to be doubled to obey kconfig $e escaping rules...). Test Plan: ctest passes; various testcases with $(...) in desktop files, directory files, and config files, no longer execute commands. Reviewers: mdawson, aacid, broulik, davidedmundson, kossebau, apol, sitter, security-team Reviewed By: mdawson, davidedmundson Subscribers: ZaWertun, rikmills, fvogt, ngraham, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D22979
2019-07-20Include definition for class used in headerDavid Edmundson
2019-05-10Replace qVariantFromValue with QVariant::fromValueNicolas Fella
Summary: qVariantFromValue is obsolete (https://doc.qt.io/qt-5/qvariant-obsolete.html#qVariantFromValue-1) and causes build failure in KActivities and KEmoticons with current Qt dev Test Plan: KActivities and KEmoticons build again with current Qt dev Reviewers: #frameworks, dfaure, apol Reviewed By: apol Subscribers: apol, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D21107
2019-04-24Add Notify capability to KConfigXTKai Uwe Broulik
Lets you specify Notifiers= in .kcfg for config entries that should be written with Notify flag, i.e. announce the change to KConfigWatcher Differential Revision: https://phabricator.kde.org/D20196
2019-04-01Add Notify capability to revertToDefaultKai Uwe Broulik
This enables KConfigWatcher to detect those changes, too. Differential Revision: https://phabricator.kde.org/D20039
2019-03-11Remove reference from const KConfigIniBackend::BufferFragment &Albert Astals Cid
Summary: According to clazy since KConfigIniBackend::BufferFragment is very small it's faster to just copy it Reviewers: apol Reviewed By: apol Subscribers: apol, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D19666
2019-03-03[Kconfig] Compile without foreachLaurent Montel
Summary: compile without foreach Test Plan: Unittest Ok as previously Reviewers: dfaure Reviewed By: dfaure Subscribers: kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D19326
2019-03-01improve documentation on global config cascadingHarald Sitter
Summary: the previous description of IncludeGlobals was a bit lackluster. the new description should make it more obvious what the various flag permutations achieve. BUG: 306923 Reviewers: kde-frameworks-devel, apol Reviewed By: apol Subscribers: kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D19388
2019-02-25KConfig: Assign documentation to correct enum valueThomas Fischer
Summary: In commit 8579ec54 (D13034), the Notify value got introduced in enum WriteConfigFlag in KConfigBase. When adding this new value, the value and its documentation (Doxygen format, /**<) got placed wrongly. After commit 8579ec54, the documentation for Notify "documents" the previously existing value Localized, whereas the documentation for Localized documents Notify. Simply exchanging the order of the documentation comments fixes this issue. Reviewers: broulik, dfaure, davidedmundson Reviewed By: davidedmundson Subscribers: kde-frameworks-devel Tags: documentation, frameworks Differential Revision: https://phabricator.kde.org/D19320
2019-02-20Write valid UTF8 characters without escaping.Jos van den Oever
Summary: commit 6a18528 introduced escaping of bytes >= 127 to ensure that KConfig files are valid UTF8. The simplistic approach with a cutoff results in many escaped bytes where it is not required. Especially non-western configuration files would have many escapes. This commit fixes that by only escaping bytes that are not valid UTF8. BUG: 403557 FIXED-IN: 5.56 Test Plan: ninja && ninja test Reviewers: dfaure, arichardson, apol, #frameworks, thiago Subscribers: rapiteanu, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D19107
2019-02-04KConfig: handle directory symlinks correctly.David Faure
Summary: When /home is a symlink, for instance (as is often the case on FreeBSD), group deletion would fail because KConfig was comparing non-canonical paths with canonical-paths: QDEBUG : KConfigTest::testDelete() Comparing "/home/adridg/.qttest/config/ kconfigtest_subdir/kconfigtest" and "/usr/home/adridg/.qttest/config/ kconfigtest_subdir/kconfigtest" Test Plan: mkdir /tmp/derp; ln -s /tmp/derp /tmp/drop HOME=/tmp/derp bin/kconfigtest testDelete # Success HOME=/tmp/drop bin/kconfigtest testDelete # Fail Reviewers: adridg, arichardson, apol Reviewed By: apol Subscribers: kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D14927
2019-01-10KEmailSettings: Delete copy constructor and assignment operatorAlbert Astals Cid
Summary: If someone was using them, it'd crash since it was raw-copying the d pointer so you would end up with a double delete. This is SIC, but IMHO it's fine, whoever gets a compiler failure has a bug to fix Reviewers: vkrause Reviewed By: vkrause Subscribers: kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D18135
2019-01-03Fix doxygen markup in KConfigWatcherDavid Edmundson
2018-12-30Fix a regression introduced in 6a1852Jos van den Oever
Summary: Bytes from 'Strings' of type GroupString and KeyString should not be escaped because they are valid UTF-8. Only instances of ValueString should be escaped. This fixes the failing test KConfigTest::testEncoding Test Plan: Ran `ninja test` and found no errors. Reviewers: dfaure, arichardson, apol, aacid, ngraham Reviewed By: apol Subscribers: kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D17856
2018-12-18Escape bytes that are larger than or equal to 127 in config filesJos van den Oever
Summary: UserBase tells me that KDE configuration files are encoded in UTF-8. https://userbase.kde.org/KDE_System_Administration/Configuration_Files In practice some *rc files have bytes outside that encoding. In my home directory I found two files that are not valid UTF-8. I searched with find ~/.config/ -name '*rc' -exec file {} + which gives these exceptions: akonadiconsolerc: Non-ISO extended-ASCII text, with very long lines kmail2rc: Non-ISO extended-ASCII text, with very long lines In kmail2rc, the offending fields are [AttachmentView]/State [CollectionFolderView]/HeaderState Both are QByteArray values saved from QHeaderView::saveState(). In the instance I found, the offending bytes were 0x81 and 0x84. akonadiconsolerc had way more of these values. All seem related to saving widget state and hence probably QByteArrays. The written QByteArray values look very strange. The bytes in the non-printable ASCII range are written as \xXX but the values above 127 are written literally. The encoding is done by KConfigIniBackend::stringToPrintable. It does not currently escape bytes that are larger than or equal to 127. Reviewers: dfaure, arichardson, apol Reviewed By: apol Subscribers: apol, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D17651
2018-11-04normalize signal/slotLaurent Montel
2018-10-15Fix logic error in NotifyFlag testingDavid Edmundson
Notify was changed to 0x08 | Persistent as it implied the other flag state. However this change was not updated in the test. Reviewed-by: Kai Uwe Broulik
2018-10-10Fix compilation without D-BusVolker Krause
Relevant on Android.
2018-10-10Add mechanism to notify other clients of config changes over DBusDavid Edmundson
Summary: Intention is not to create a registry like system, but to replace KDElibs4Support::KGlobalSettings and to replace other system settingss -> some app communication in a more generic way. writeEntry gains an additional flag Notify which if set, will notify clients of what has actually changed when we sync. Rationale to put this into KConfig was so that we could have everything batched and sychronised to the file sync and to get the fine detailed exposure of what has actually changed which we don't get with a file watcher. Default behaviour remains identical without any broadcast messages. As it is a new dependency it is purely optional and anything referencing DBus is not in the public API. Our deployment on platforms without DBus tend to be standalone applications anyway. Test Plan: Attached unit test Reviewers: broulik, dfaure Reviewed By: broulik, dfaure Subscribers: dfaure, broulik, zzag, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D13034
2018-10-10Expose getter method for KConfig::addConfigSourcesDavid Edmundson
Test Plan: Used in subsequent patch Subscribers: kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D13033
2018-10-10SVN_SILENT made messages (.desktop file) - always resolve oursl10n daemon script
In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop"