LibConfig: Add removal/notifcation for keys

This commit is contained in:
faxe1008 2021-11-08 11:43:31 +01:00 committed by Andreas Kling
parent a4a89a63cb
commit b97f9f8e17
Notes: sideshowbarker 2024-07-19 01:59:31 +09:00
4 changed files with 24 additions and 0 deletions

View File

@ -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);
});
}
}

View File

@ -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);

View File

@ -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&)
{
}
}

View File

@ -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();