#ifndef SETTINGS_H
#define SETTINGS_H

#include <qsettings.h>
#include <qstring.h>
#include <qstringlist.h>

#include "xmlobj.h"

// Some helper functions and simplified settings class
// to read and parse settings e.g.  in undo/redo directories

class SimpleSettings
{
public:
    SimpleSettings ();
    ~SimpleSettings ();
    void clear();
    bool readSettings(const QString &);
    void writeSettings(const QString &);
    QString value (const QString &key, const QString &def=QString());
    int readNumValue (const QString &, const int &def=0);
    void setValue (const QString &,const QString &);
private:    
    QStringList keylist;
    QStringList valuelist;
};


// Overloaded QSettings class, used to save some settings in 
// a map instead of users home directory
class Settings:public QSettings,public XMLObj
{
public:
    Settings ();
    Settings (const QString & , const QString &);
    ~Settings ();
    void clear();
    void clearLocal (const QString &filepath, const QString &key);  //! Clear keys starting with key in filepath 
    QVariant localValue ( const QString &, const QString &, QVariant); 
    void setLocalValue (const QString &, const QString &, QVariant);
    QString getDataXML (const QString &);

protected:
    QStringList pathlist;
    QStringList keylist;
    QList <QVariant> valuelist;
};

#endif
