//======================================================================
// File: simplecfg.h
// Author: Matthias Toussaint
// Created: Mon Okt 30 22:01:05 CET 2000
//----------------------------------------------------------------------
// Permission to use, copy, modify, and distribute this software and its
// documentation for any purpose and without fee is hereby granted,
// provided that below copyright notice appear in all copies and that
// both that copyright notice and this permission notice appear in
// supporting documentation.
//
// This file is provided AS IS with no warranties of any kind. The
// author shall have no liability with respect to the infringement of
// copyrights, trade secrets or any patents by this file or any part
// thereof. In no event will the author be liable for any lost revenue
// or profits or other special, indirect and consequential damages.
//----------------------------------------------------------------------
// (c) 2000 Matthias Toussaint
//======================================================================
#ifndef SIMPLECFG_HH
#define SIMPLECFG_HH
#include <qstring.h>
#include <qmap.h>
#include <qcolor.h>
#include <qtextstream.h>
// I _REALLY_ like writing documentation. Here documentation
// efficiently hides the code ...
//
class SimpleCfg;
class SimpleCfgGroup
{
friend class SimpleCfg;
public:
virtual ~SimpleCfgGroup();
QString name() const { return groupName; }
void remove( const QString & key );
bool contains( const QString & key );
void setInt( const QString & key, int val );
int getInt( const QString & key, int def );
void setDouble( const QString & key, double val );
double getDouble( const QString & key, double def );
void setString( const QString & key, const QString & val );
QString getString( const QString & key, const QString & def );
void setRGB( const QString & key, QRgb val );
QRgb getRGB( const QString & key, QRgb def );
void setBool( const QString & key, bool val );
bool getBool( const QString & key, bool def );
inline QMap<QString,QString>::Iterator begin() { return map.begin(); }
inline QMap<QString,QString>::Iterator end() { return map.end(); }
protected:
SimpleCfgGroup( const QString & name );
void setName( const QString & name );
void read( QTextStream & );
void write( QTextStream & );
QMap<QString,QString> map;
QString groupName;
};
class SimpleCfg
{
public:
SimpleCfg( const QString & );
virtual ~SimpleCfg();
QString filename() const { return fname; }
void setFilename( const QString & fn ) { fname = fn; }
bool load();
bool save();
void clear();
void removeEmpty();
void remove( const QString & group, const QString & key );
void remove( const QString & group );
bool contains( const QString & group );
bool contains( const QString & group, const QString & key );
void add( const QString & group );
void setInt( const QString &group, const QString & key, int val );
int getInt( const QString &group, const QString & key, int def );
void setDouble( const QString &group, const QString & key, double val );
double getDouble( const QString &group, const QString & key, double def );
void setString( const QString &group, const QString & key, const QString & val );
QString getString( const QString &group, const QString & key, const QString & def );
void setRGB( const QString &group, const QString & key, QRgb val );
QRgb getRGB( const QString &group, const QString & key, QRgb def );
void setBool( const QString &group, const QString & key, bool val );
bool getBool( const QString &group, const QString & key, bool def );
inline QMap<QString,SimpleCfgGroup *>::Iterator begin() { return map.begin(); }
inline QMap<QString,SimpleCfgGroup *>::Iterator end() { return map.end(); }
protected:
QMap<QString,SimpleCfgGroup *> map;
QString fname;
QString curGroup;
};
#endif