summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFabien Proriol <fabien.proriol@kazoe.org>2025-05-22 17:10:35 +0200
committerFabien Proriol <fabien.proriol@kazoe.org>2025-05-26 10:48:46 +0200
commit2feba4447a482840e21fa2d3b33f1a5da12d09b7 (patch)
tree83a790b1ae5b5f32f5964350856a160dbed52e05 /src
parentc842548fef050ac5f8b56a5fcb4f579820247434 (diff)
qt: Add Qt Wrapper library and QML module
Diffstat (limited to 'src')
-rw-r--r--src/changewatcher.cpp1
-rw-r--r--src/kzsettings.cpp (renamed from src/settings.cpp)66
-rw-r--r--src/kzsettings.h (renamed from src/settings.h)32
3 files changed, 49 insertions, 50 deletions
diff --git a/src/changewatcher.cpp b/src/changewatcher.cpp
index 4762ebb..ef54019 100644
--- a/src/changewatcher.cpp
+++ b/src/changewatcher.cpp
@@ -1,5 +1,4 @@
#include "changewatcher.h"
-#include <iostream>
#include <filesystem>
#include <sys/inotify.h>
#include <sys/eventfd.h>
diff --git a/src/settings.cpp b/src/kzsettings.cpp
index addaa32..5580a80 100644
--- a/src/settings.cpp
+++ b/src/kzsettings.cpp
@@ -1,4 +1,4 @@
-#include "settings.h"
+#include "kzsettings.h"
#include <iostream>
#include <fstream>
#include <map>
@@ -23,29 +23,29 @@ static inline bool list_contains(std::vector<std::string> list, const std::strin
}
namespace KaZoe {
-class SettingsPrivate {
- friend class Settings;
- Settings *m_parent;
- std::map<SettingKey, SettingValue> m_data;
+class KzSettingsPrivate {
+ friend class KzSettings;
+ KzSettings *m_parent;
+ std::map<KzSettingKey, KzSettingValue> m_data;
ChangeWatcher m_watcher;
- std::map<SettingKey, std::string> m_owner;
+ std::map<KzSettingKey, std::string> m_owner;
std::string m_id;
std::mutex m_mutex_data;
std::mutex m_mutex_notifier;
bool m_bypass {false};
- std::vector<std::function<void(const std::string&, const std::string&, SettingValue)>> m_notifier;
+ std::vector<std::function<void(const std::string&, const std::string&, KzSettingValue)>> m_notifier;
public:
- SettingsPrivate(Settings *parent)
+ KzSettingsPrivate(KzSettings *parent)
: m_parent(parent) {
char result[PATH_MAX];
ssize_t count = readlink("/proc/self/exe", result, PATH_MAX);
std::string binary = std::string(result, (count > 0) ? count : 0);
std::filesystem::path bin = binary;
m_id = bin.filename();
- if(m_id == "settings")
+ if(m_id == "kzsettings")
{
- // Only "settings cli tools can bypass the owner protection"
+ // Only "kzsettings cli tools can bypass the owner protection"
m_bypass = true;
}
@@ -54,7 +54,7 @@ public:
m_watcher.setFileWrited([this](const std::string path){ refreshFile(path); });
}
- void parseFile(const std::string &filename, std::map<SettingKey, SettingValue> &data, bool watch = false)
+ void parseFile(const std::string &filename, std::map<KzSettingKey, KzSettingValue> &data, bool watch = false)
{
if(!std::filesystem::exists(filename))
{
@@ -92,21 +92,21 @@ public:
if(key.starts_with("@"))
{
- m_owner[SettingKey(category, key.substr(1))] = value;
+ m_owner[KzSettingKey(category, key.substr(1))] = value;
continue;
}
if(key.ends_with("/owner"))
{
std::cerr << "WARNING: Legacy usage for owner: " << key << " should be @" << key.substr(0, key.size() - 6) << std::endl;
- m_owner[SettingKey(category, key.substr(0, key.size() - 6))] = value;
+ m_owner[KzSettingKey(category, key.substr(0, key.size() - 6))] = value;
continue;
}
- data[SettingKey(category, key)] = makeValue(value);
+ data[KzSettingKey(category, key)] = makeValue(value);
}
}
- void parseDir(const std::string &dconf, std::map<SettingKey, SettingValue> &data, bool watch)
+ void parseDir(const std::string &dconf, std::map<KzSettingKey, KzSettingValue> &data, bool watch)
{
if(std::filesystem::exists(dconf) && std::filesystem::is_directory(dconf))
{
@@ -118,7 +118,7 @@ public:
}
}
- void parseConf(const std::string &fconf, std::map<SettingKey, SettingValue> &data, bool watch)
+ void parseConf(const std::string &fconf, std::map<KzSettingKey, KzSettingValue> &data, bool watch)
{
if(std::filesystem::exists(fconf))
{
@@ -132,7 +132,7 @@ public:
}
}
- void refreshData(const std::map<SettingKey, SettingValue> &cust_data)
+ void refreshData(const std::map<KzSettingKey, KzSettingValue> &cust_data)
{
std::lock_guard<std::mutex> lock(m_mutex_data);
std::lock_guard<std::mutex> lock_notifier(m_mutex_notifier);
@@ -152,21 +152,21 @@ public:
void refreshFile(const std::string &file)
{
- std::map<SettingKey, SettingValue> cust_data;
+ std::map<KzSettingKey, KzSettingValue> cust_data;
parseFile(file, cust_data);
refreshData(cust_data);
}
void refreshDirectory(const std::string &dirname)
{
- std::map<SettingKey, SettingValue> cust_data;
+ std::map<KzSettingKey, KzSettingValue> cust_data;
parseDir(dirname, cust_data, true);
refreshData(cust_data);
}
void refreshAll()
{
- std::map<SettingKey, SettingValue> cust_data;
+ std::map<KzSettingKey, KzSettingValue> cust_data;
parseConf("/etc/kazoe.conf", cust_data, false);
parseConf("/var/kazoe.conf", cust_data, true);
refreshData(cust_data);
@@ -174,14 +174,14 @@ public:
};
};
-Settings::Settings()
- : m_ptr(std::make_unique<SettingsPrivate>(this))
+KzSettings::KzSettings()
+ : m_ptr(std::make_unique<KzSettingsPrivate>(this))
{
m_ptr->parseConf("/etc/kazoe.conf", m_ptr->m_data, false);
m_ptr->parseConf("/var/kazoe.conf", m_ptr->m_data, true);
}
-SettingValue Settings::get(const std::string &key, const std::string &category, SettingValue def) const
+KzSettingValue KzSettings::get(const std::string &key, const std::string &category, KzSettingValue def) const
{
std::lock_guard<std::mutex> lock(m_ptr->m_mutex_data);
std::string gkey = key;
@@ -192,7 +192,7 @@ SettingValue Settings::get(const std::string &key, const std::string &category,
gkey = gkey.substr(gkey.find(']') + 1);
}
- SettingKey pkey(gcategory, gkey);
+ KzSettingKey pkey(gcategory, gkey);
if(m_ptr->m_data.count(pkey))
{
@@ -201,11 +201,11 @@ SettingValue Settings::get(const std::string &key, const std::string &category,
return def;
}
-bool Settings::set(const std::string &key, SettingValue value, const std::string &category)
+bool KzSettings::set(const std::string &key, KzSettingValue value, const std::string &category)
{
// Check if variable is writable
std::lock_guard<std::mutex> lock(m_ptr->m_mutex_data);
- SettingKey pkey(category, key);
+ KzSettingKey pkey(category, key);
std::string id;
if(!m_ptr->m_owner.count(pkey))
@@ -229,7 +229,7 @@ bool Settings::set(const std::string &key, SettingValue value, const std::string
}
// Permission is OK, get old custom variable
- std::map<SettingKey, SettingValue> cust_data;
+ std::map<KzSettingKey, KzSettingValue> cust_data;
m_ptr->parseFile("/var/kazoe.conf.d/"+id+".conf", cust_data);
cust_data[pkey] = value;
std::string last_category = "";
@@ -248,30 +248,30 @@ bool Settings::set(const std::string &key, SettingValue value, const std::string
return true;
}
-std::string Settings::id() const
+std::string KzSettings::id() const
{
return m_ptr->m_id;
}
-void Settings::setId(const std::string &newid)
+void KzSettings::setId(const std::string &newid)
{
m_ptr->m_id = newid;
}
-void Settings::setNotifier(const std::function<void (const std::string &, const std::string &, SettingValue)> &callback)
+void KzSettings::setNotifier(const std::function<void (const std::string &, const std::string &, KzSettingValue)> &callback)
{
std::lock_guard<std::mutex> lock(m_ptr->m_mutex_notifier);
m_ptr->m_notifier.push_back(callback);
m_ptr->m_watcher.setEnable(true);
}
-std::size_t Settings::size() const
+std::size_t KzSettings::size() const
{
std::lock_guard<std::mutex> lock(m_ptr->m_mutex_data);
return m_ptr->m_data.size();
}
-void Settings::forEach(const std::function<void (const SettingKey &, const SettingValue &)> &callback) const
+void KzSettings::forEach(const std::function<void (const KzSettingKey &, const KzSettingValue &)> &callback) const
{
std::lock_guard<std::mutex> lock(m_ptr->m_mutex_data);
for (const auto& [key, value] : m_ptr->m_data) {
@@ -279,7 +279,7 @@ void Settings::forEach(const std::function<void (const SettingKey &, const Setti
}
}
-Settings::~Settings()
+KzSettings::~KzSettings()
{
m_ptr->m_watcher.setEnable(false);
}
diff --git a/src/settings.h b/src/kzsettings.h
index 5dfe90b..9f8d35b 100644
--- a/src/settings.h
+++ b/src/kzsettings.h
@@ -1,5 +1,5 @@
-#ifndef KAZOESETTINGS_H
-#define KAZOESETTINGS_H
+#ifndef KZSETTINGS_H
+#define KZSETTINGS_H
#include <functional>
#include <memory>
@@ -8,15 +8,15 @@
#include <algorithm>
/** @brief Key type for settings, composed of category and name */
-using SettingKey = std::pair<std::string, std::string>;
+using KzSettingKey = std::pair<std::string, std::string>;
/** @brief Value type that can hold string, int, double or boolean */
-using SettingValue = std::variant<std::string, int, double, bool>;
+using KzSettingValue = std::variant<std::string, int, double, bool>;
namespace KaZoe {
-class SettingsPrivate;
+class KzSettingsPrivate;
/**
* @brief Main class for managing KaZoe settings
@@ -24,14 +24,14 @@ class SettingsPrivate;
* This class provides a thread-safe interface for storing and retrieving
* configuration settings with support for different value types.
*/
-class Settings
+class KzSettings
{
public:
/** @brief Constructs a new Settings instance */
- explicit Settings();
+ explicit KzSettings();
/** @brief Virtual destructor */
- virtual ~Settings();
+ virtual ~KzSettings();
/**
* @brief Retrieves a setting value
@@ -40,7 +40,7 @@ public:
* @param def Default value if setting not found (optional)
* @return The setting value or default if not found
*/
- SettingValue get(const std::string &key, const std::string &category = "", SettingValue def = SettingValue()) const;
+ KzSettingValue get(const std::string &key, const std::string &category = "", KzSettingValue def = KzSettingValue()) const;
/**
* @brief Sets a setting value
@@ -49,7 +49,7 @@ public:
* @param category The setting category (optional)
* @return true if successful, false otherwise
*/
- bool set(const std::string &key, SettingValue value, const std::string &category = "");
+ bool set(const std::string &key, KzSettingValue value, const std::string &category = "");
/**
* @brief Gets the current instance identifier
@@ -67,7 +67,7 @@ public:
* @brief Sets a callback for setting changes notification
* @param callback Function to call when settings change
*/
- void setNotifier(const std::function<void(const std::string&, const std::string&, SettingValue)>& callback);
+ void setNotifier(const std::function<void(const std::string&, const std::string&, KzSettingValue)>& callback);
/**
* @brief Gets the number of settings
@@ -79,10 +79,10 @@ public:
* @brief Iterates over all settings in a thread-safe manner
* @param callback Function called for each key-value pair
*/
- void forEach(const std::function<void(const SettingKey&, const SettingValue&)>& callback) const;
+ void forEach(const std::function<void(const KzSettingKey&, const KzSettingValue&)>& callback) const;
private:
- std::unique_ptr<SettingsPrivate> m_ptr; ///< Private implementation pointer
+ std::unique_ptr<KzSettingsPrivate> m_ptr; ///< Private implementation pointer
};
@@ -103,7 +103,7 @@ struct settingValueFunctor {
* @param value Input SettingValue to convert
* @return std::string containing the converted value
*/
-static inline std::string valueToStr(const SettingValue &value)
+static inline std::string valueToStr(const KzSettingValue &value)
{
return std::visit(settingValueFunctor(), value);
}
@@ -133,7 +133,7 @@ static inline bool is_numeric(const std::string& str) {
* - "false"/"off" -> boolean false
* - Other -> string
*/
-static inline SettingValue makeValue(const std::string &value)
+static inline KzSettingValue makeValue(const std::string &value)
{
if(value.starts_with('"') || value.starts_with('\''))
{
@@ -177,4 +177,4 @@ static inline SettingValue makeValue(const std::string &value)
};
-#endif // KAZOESETTINGS_H
+#endif // KZSETTINGS_H