#ifndef OPTIONSTREEWRITER_H
#define OPTIONSTREEWRITER_H

#include "atomicxmlfile/atomicxmlfile.h"

#include <QVariant>

class OptionsTree;
class VariantTree;

class OptionsTreeWriter : public AtomicXmlFileWriter {
public:
    OptionsTreeWriter(const OptionsTree *);

    void setName(const QString &configName);
    void setNameSpace(const QString &configNS);
    void setVersion(const QString &configVersion);

    // reimplemented
    virtual bool write(QIODevice *device);

protected:
    void writeTree(const VariantTree *tree);
    void writeVariant(const QVariant &variant);
    void writeUnknown(const QString &unknown);
    void readUnknownTree(QXmlStreamReader *reader);

private:
    const OptionsTree *options_;
    QString            configName_;
    QString            configNS_;
    QString            configVersion_;
};

#endif // OPTIONSTREEWRITER_H
