#ifndef QTMVVM_SETTINGSSETUP_H #define QTMVVM_SETTINGSSETUP_H #include #include #include #include #include #include #include "QtMvvmCore/qtmvvmcore_global.h" namespace QtMvvm { //! A sub namespace for the different elements in a settings setup namespace SettingsElements { struct Entry { QString key; QByteArray type; QString title; QString tooltip; QVariant defaultValue; QStringList searchKeys; QVariantMap properties; QString frontends; QString selectors; }; struct Group { QString title; QString tooltip; QList entries; QString frontends; QString selectors; }; struct Section { QString title; QUrl icon; QString tooltip; QList groups; QString frontends; QString selectors; }; struct Category { QString title; QUrl icon; QString tooltip; QList
sections; QString frontends; QString selectors; }; struct Setup { bool allowSearch = true; bool allowRestore = true; QList categories; }; } class SettingsLoaderException : public QException {}; class ISettingsSetupLoader { public: virtual inline ~ISettingsSetupLoader() = default; virtual void changeDefaultIcon(const QUrl &defaultIcon) = 0; virtual SettingsElements::Setup loadSetup(const QString &filePath, const QString &frontend, const QFileSelector *selector) const = 0; }; } Q_DECLARE_METATYPE(QtMvvm::SettingsElements::Entry) Q_DECLARE_METATYPE(QtMvvm::SettingsElements::Group) Q_DECLARE_METATYPE(QtMvvm::SettingsElements::Section) Q_DECLARE_METATYPE(QtMvvm::SettingsElements::Category) Q_DECLARE_METATYPE(QtMvvm::SettingsElements::Setup) #define QtMvvm_ISettingsSetupLoaderIid "de.skycoder42.qtmvvm.settings.core.ISettingsSetupLoader" Q_DECLARE_INTERFACE(QtMvvm::ISettingsSetupLoader, QtMvvm_ISettingsSetupLoaderIid) Q_DECLARE_METATYPE(QtMvvm::ISettingsSetupLoader*) #endif // QTMVVM_SETTINGSSETUP_H