#ifndef FG_GUI_LAUNCHCONFIG_HXX #define FG_GUI_LAUNCHCONFIG_HXX #include #include namespace flightgear { class Options; } class LaunchConfig : public QObject { Q_OBJECT Q_PROPERTY(QString defaultDownloadDir READ defaultDownloadDir CONSTANT) Q_PROPERTY(bool enableDownloadDirUI READ enableDownloadDirUI CONSTANT) public: class Arg { public: explicit Arg(QString k, QString v = QString()) : arg(k), value(v) {} QString arg; QString value; }; LaunchConfig(QObject* parent = nullptr); void reset(); void applyToOptions() const; std::vector values() const; Q_INVOKABLE void setArg(QString name, QString value = QString()); Q_INVOKABLE void setArg(const std::string& name, const std::string& value = std::string()); Q_INVOKABLE void setProperty(QString path, QVariant value); Q_INVOKABLE void setEnableDisableOption(QString name, bool value); // ensure a property is /not/ set? // save and restore API? Q_INVOKABLE QVariant getValueForKey(QString group, QString key, QVariant defaultValue = QVariant()) const; Q_INVOKABLE void setValueForKey(QString group, QString key, QVariant var); QString defaultDownloadDir() const; bool enableDownloadDirUI() const; static void setEnableDownloadDirUI(bool enableDownloadDirUI); signals: void collect(); private: std::vector m_values; QString m_defaultDownloadDir; }; #endif