Prechádzať zdrojové kódy

LibConfig: Add removal/notifcation for keys

faxe1008 3 rokov pred
rodič
commit
b97f9f8e17

+ 12 - 0
Userland/Libraries/LibConfig/Client.cpp

@@ -60,6 +60,11 @@ void Client::write_bool(StringView domain, StringView group, StringView key, boo
     async_write_bool_value(domain, group, key, value);
 }
 
+void Client::remove_key(StringView domain, StringView group, StringView key)
+{
+    async_remove_key(domain, group, key);
+}
+
 void Client::notify_changed_string_value(String const& domain, String const& group, String const& key, String const& value)
 {
     Listener::for_each([&](auto& listener) {
@@ -81,4 +86,11 @@ void Client::notify_changed_bool_value(String const& domain, String const& group
     });
 }
 
+void Client::notify_removed_key(const String& domain, const String& group, const String& key)
+{
+    Listener::for_each([&](auto& listener) {
+        listener.config_key_was_removed(domain, group, key);
+    });
+}
+
 }

+ 7 - 0
Userland/Libraries/LibConfig/Client.h

@@ -31,6 +31,7 @@ public:
     void write_string(StringView domain, StringView group, StringView key, StringView value);
     void write_i32(StringView domain, StringView group, StringView key, i32 value);
     void write_bool(StringView domain, StringView group, StringView key, bool value);
+    void remove_key(StringView domain, StringView group, StringView key);
 
     static Client& the();
 
@@ -43,6 +44,7 @@ private:
     void notify_changed_string_value(String const& domain, String const& group, String const& key, String const& value) override;
     void notify_changed_i32_value(String const& domain, String const& group, String const& key, i32 value) override;
     void notify_changed_bool_value(String const& domain, String const& group, String const& key, bool value) override;
+    void notify_removed_key(String const& domain, String const& group, String const& key) override;
 };
 
 inline String read_string(StringView domain, StringView group, StringView key, StringView fallback = {})
@@ -75,6 +77,11 @@ inline void write_bool(StringView domain, StringView group, StringView key, bool
     Client::the().write_bool(domain, group, key, value);
 }
 
+inline void remove_key(StringView domain, StringView group, StringView key)
+{
+    Client::the().remove_key(domain, group, key);
+}
+
 inline void pledge_domains(Vector<String> const& domains)
 {
     Client::the().pledge_domains(domains);

+ 4 - 0
Userland/Libraries/LibConfig/Listener.cpp

@@ -41,4 +41,8 @@ void Listener::config_bool_did_change(String const&, String const&, String const
 {
 }
 
+void Listener::config_key_was_removed(String const&, String const&, String const&)
+{
+}
+
 }

+ 1 - 0
Userland/Libraries/LibConfig/Listener.h

@@ -19,6 +19,7 @@ public:
     virtual void config_string_did_change(String const& domain, String const& group, String const& key, String const& value);
     virtual void config_i32_did_change(String const& domain, String const& group, String const& key, i32 value);
     virtual void config_bool_did_change(String const& domain, String const& group, String const& key, bool value);
+    virtual void config_key_was_removed(String const& domain, String const& group, String const& key);
 
 protected:
     Listener();