diff options
| -rw-r--r-- | autotests/kconfigtest.cpp | 9 | ||||
| -rw-r--r-- | autotests/kentrymaptest.cpp | 4 | ||||
| -rw-r--r-- | src/core/kconfig.cpp | 6 | ||||
| -rw-r--r-- | src/core/kconfig_p.h | 3 | ||||
| -rw-r--r-- | src/core/kconfigdata.cpp | 3 | ||||
| -rw-r--r-- | src/core/kconfigdata.h | 2 | ||||
| -rw-r--r-- | src/core/kconfiggroup.cpp | 14 | ||||
| -rw-r--r-- | src/core/kconfiggroup.h | 5 | 
8 files changed, 37 insertions, 9 deletions
| diff --git a/autotests/kconfigtest.cpp b/autotests/kconfigtest.cpp index 32d3eef8..410b5b80 100644 --- a/autotests/kconfigtest.cpp +++ b/autotests/kconfigtest.cpp @@ -1926,6 +1926,15 @@ void KConfigTest::testNotify()      QCOMPARE(watcherSpy[0][0].value<KConfigGroup>().name(), QStringLiteral("TopLevelGroup"));      QCOMPARE(watcherSpy[0][1].value<QByteArrayList>(), QByteArrayList({"entryA"})); +    //revert to default an entry +    watcherSpy.clear(); +    myConfigGroup.revertToDefault("entryA", KConfig::Persistent | KConfig::Notify); +    config.sync(); +    watcherSpy.wait(); +    QCOMPARE(watcherSpy.count(), 1); +    QCOMPARE(watcherSpy[0][0].value<KConfigGroup>().name(), QStringLiteral("TopLevelGroup")); +    QCOMPARE(watcherSpy[0][1].value<QByteArrayList>(), QByteArrayList({"entryA"})); +      //deleting a group, should notify that every entry in that group has changed      watcherSpy.clear();      myConfigGroup.deleteGroup("aSubGroup", KConfig::Persistent | KConfig::Notify); diff --git a/autotests/kentrymaptest.cpp b/autotests/kentrymaptest.cpp index 5e39df54..090e497a 100644 --- a/autotests/kentrymaptest.cpp +++ b/autotests/kentrymaptest.cpp @@ -123,11 +123,11 @@ void KEntryMapTest::testDefault()      QCOMPARE(entry1->mValue, entry2->mValue);      // revert entry1 -    map.revertEntry(group1, key1); +    map.revertEntry(group1, key1, EntryOptions());      QCOMPARE(defaultEntry->mValue, entry1->mValue);      // revert entry2, no default --> should be marked as deleted -    map.revertEntry(group1, key2); +    map.revertEntry(group1, key2, EntryOptions());      QCOMPARE(entry2->mValue, QByteArray());      QVERIFY(entry2->bDirty);      QVERIFY(entry2->bReverted); diff --git a/src/core/kconfig.cpp b/src/core/kconfig.cpp index b78196d6..e1b11edd 100644 --- a/src/core/kconfig.cpp +++ b/src/core/kconfig.cpp @@ -1011,9 +1011,11 @@ void KConfigPrivate::putData(const QByteArray &group, const char *key,      }  } -void KConfigPrivate::revertEntry(const QByteArray &group, const char *key) +void KConfigPrivate::revertEntry(const QByteArray &group, const char *key, KConfigBase::WriteConfigFlags flags)  { -    bool dirtied = entryMap.revertEntry(group, key); +    KEntryMap::EntryOptions options = convertToOptions(flags); + +    bool dirtied = entryMap.revertEntry(group, key, options);      if (dirtied) {          bDirty = true;      } diff --git a/src/core/kconfig_p.h b/src/core/kconfig_p.h index 7433ab2f..ac4cd631 100644 --- a/src/core/kconfig_p.h +++ b/src/core/kconfig_p.h @@ -50,7 +50,8 @@ public:      void putData(const QByteArray &group, const char *key, const QByteArray &value,                   KConfigBase::WriteConfigFlags flags, bool expand = false); -    void revertEntry(const QByteArray &group, const char *key); +    void revertEntry(const QByteArray &group, const char *key, +                     KConfigBase::WriteConfigFlags flags);      QStringList groupList(const QByteArray &group) const;      // copies the entries from @p source to @p otherGroup changing all occurrences      // of @p source with @p destination diff --git a/src/core/kconfigdata.cpp b/src/core/kconfigdata.cpp index d80b7d07..e1f4ee73 100644 --- a/src/core/kconfigdata.cpp +++ b/src/core/kconfigdata.cpp @@ -309,7 +309,7 @@ void KEntryMap::setEntryOption(QMap< KEntryKey, KEntry >::Iterator it, KEntryMap      }  } -bool KEntryMap::revertEntry(const QByteArray &group, const QByteArray &key, KEntryMap::SearchFlags flags) +bool KEntryMap::revertEntry(const QByteArray &group, const QByteArray &key, KEntryMap::EntryOptions options, KEntryMap::SearchFlags flags)  {      Q_ASSERT((flags & KEntryMap::SearchDefaults) == 0);      Iterator entry = findEntry(group, key, flags); @@ -330,6 +330,7 @@ bool KEntryMap::revertEntry(const QByteArray &group, const QByteArray &key, KEnt          } else {              entry->mValue = QByteArray();          } +        entry->bNotify = entry->bNotify || (options & EntryNotify);          entry->bDirty = true;          entry->bReverted = true; // skip it when writing out to disk diff --git a/src/core/kconfigdata.h b/src/core/kconfigdata.h index 2a5c643d..2d095034 100644 --- a/src/core/kconfigdata.h +++ b/src/core/kconfigdata.h @@ -223,7 +223,7 @@ public:          setEntryOption(findEntry(group, key, flags), option, bf);      } -    bool revertEntry(const QByteArray &group, const QByteArray &key, SearchFlags flags = SearchFlags()); +    bool revertEntry(const QByteArray &group, const QByteArray &key, EntryOptions options, SearchFlags flags = SearchFlags());  };  Q_DECLARE_OPERATORS_FOR_FLAGS(KEntryMap::SearchFlags)  Q_DECLARE_OPERATORS_FOR_FLAGS(KEntryMap::EntryOptions) diff --git a/src/core/kconfiggroup.cpp b/src/core/kconfiggroup.cpp index cb40b60a..92c58f6e 100644 --- a/src/core/kconfiggroup.cpp +++ b/src/core/kconfiggroup.cpp @@ -1164,15 +1164,25 @@ void KConfigGroup::deleteEntry(const QString &key, WriteConfigFlags flags)  void KConfigGroup::revertToDefault(const char *key)  { +    revertToDefault(key, WriteConfigFlags()); +} + +void KConfigGroup::revertToDefault(const char *key, WriteConfigFlags flags) +{      Q_ASSERT_X(isValid(), "KConfigGroup::revertToDefault", "accessing an invalid group");      Q_ASSERT_X(!d->bConst, "KConfigGroup::revertToDefault", "writing to a read-only group"); -    config()->d_func()->revertEntry(d->fullName(), key); +    config()->d_func()->revertEntry(d->fullName(), key, flags);  }  void KConfigGroup::revertToDefault(const QString &key)  { -    revertToDefault(key.toUtf8().constData()); +    revertToDefault(key, WriteConfigFlags()); +} + +void KConfigGroup::revertToDefault(const QString &key, WriteConfigFlags flags) +{ +    revertToDefault(key.toUtf8().constData(), flags);  }  bool KConfigGroup::hasDefault(const char *key) const diff --git a/src/core/kconfiggroup.h b/src/core/kconfiggroup.h index 0cedeaa7..8b0174b1 100644 --- a/src/core/kconfiggroup.h +++ b/src/core/kconfiggroup.h @@ -578,9 +578,14 @@ public:       *       * @param key The key of the entry to revert.       */ +    // TODO KF6 merge with the other one      void revertToDefault(const QString &key); +    void revertToDefault(const QString &key, WriteConfigFlags pFlag); +      /** Overload for revertToDefault(const QString&) */ +    // TODO KF6 merge with the other one      void revertToDefault(const char *key); +    void revertToDefault(const char *key, WriteConfigFlags pFlag);      /**       * Whether a default is specified for an entry in either the | 
