From 9b8ef694412c688c9f1e0a6f41b49ac7492ec35a Mon Sep 17 00:00:00 2001 From: "Eon S. Jeon" Date: Thu, 14 Nov 2019 13:58:10 -0700 Subject: kwriteconfig: add delete option Summary: Add a simple delete option to kwriteconfig. A possible usecase of this option is to delete unused shortcut bindings. Reviewers: #frameworks, davidre, dfaure, meven, cfeck, davidedmundson Reviewed By: davidedmundson Subscribers: davidedmundson, ngraham, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D25307 --- src/kreadconfig/kwriteconfig.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/kreadconfig/kwriteconfig.cpp b/src/kreadconfig/kwriteconfig.cpp index bb2c892f..0d9fdfef 100644 --- a/src/kreadconfig/kwriteconfig.cpp +++ b/src/kreadconfig/kwriteconfig.cpp @@ -36,6 +36,7 @@ int main(int argc, char **argv) parser.addOption(QCommandLineOption(QStringLiteral("group"), QCoreApplication::translate("main", "Group to look in. Use repeatedly for nested groups."), QStringLiteral("group"), QStringLiteral("KDE"))); parser.addOption(QCommandLineOption(QStringLiteral("key"), QCoreApplication::translate("main", "Key to look for"), QStringLiteral("key"))); parser.addOption(QCommandLineOption(QStringLiteral("type"), QCoreApplication::translate("main", "Type of variable. Use \"bool\" for a boolean, otherwise it is treated as a string"), QStringLiteral("type"))); + parser.addOption(QCommandLineOption(QStringLiteral("delete"), QCoreApplication::translate("main", "Delete the designated key if enabled"))); parser.addPositionalArgument(QStringLiteral("value"), QCoreApplication::translate("main", "The value to write. Mandatory, on a shell use '' for empty" )); parser.process(app); @@ -44,12 +45,16 @@ int main(int argc, char **argv) QString key=parser.value(QStringLiteral("key")); QString file=parser.value(QStringLiteral("file")); QString type=parser.value(QStringLiteral("type")).toLower(); + bool del=parser.isSet(QStringLiteral("delete")); - - if (parser.positionalArguments().isEmpty()) { + QString value; + if (del) { + value = QStringLiteral(""); + } else if (parser.positionalArguments().isEmpty()) { parser.showHelp(1); + } else { + value = parser.positionalArguments().at(0); } - QString value = parser.positionalArguments().at(0); KConfig *konfig; if (file.isEmpty()) @@ -62,7 +67,9 @@ int main(int argc, char **argv) cfgGroup = cfgGroup.group(grp); if ( konfig->accessMode() != KConfig::ReadWrite || cfgGroup.isEntryImmutable( key ) ) return 2; - if(type==QStringLiteral("bool")) { + if (del) { + cfgGroup.deleteEntry( key ); + } else if (type==QStringLiteral("bool")) { // For symmetry with kreadconfig we accept a wider range of values as true than Qt bool boolvalue=(value==QStringLiteral("true") || value==QStringLiteral("on") || value==QStringLiteral("yes") || value==QStringLiteral("1")); cfgGroup.writeEntry( key, boolvalue ); -- cgit v1.2.1