#pragma once #include "common.hpp" #include "objectnode.hpp" #include "settingsfile.hpp" namespace ZShell::settings { class RootNode : public ObjectNode { Q_OBJECT Q_PROPERTY( QList diagnostics READ diagnostics NOTIFY diagnosticsChanged) public: explicit RootNode( const QString& path, RootNode* fallback, QObject* parent = nullptr); [[nodiscard]] QList diagnostics() const; void load(); signals: void diagnosticsChanged(); void treeLoaded(RootNode* self); void treeLoadFailed(RootNode* self, const QString& error); void treeSaveFailed(RootNode* self, const QString& error); private: SettingsFile* const m_file; QList m_diagnostics; void reloadFromFile(); void saveToFile(); }; } // namespace ZShell::settings