00001
00002 #ifndef CONFIGFILE_H
00003 #define CONFIGFILE_H
00004
00005 #include <qstring.h>
00006 #include <qstringlist.h>
00007 #include <qmap.h>
00008
00009 class QTextCodec;
00010
00011 typedef QMap<QString, QString> GroupMap;
00012
00013 class ConfigGroup
00014 {
00015 friend class ConfigFile;
00016 public:
00017 ConfigGroup(const QString& groupname);
00018 ConfigGroup();
00019 void setName(const QString& name);
00020 const QString& name() const { return groupname; }
00021 const QString& readEntry(const QString& key, const QString& vdefault = QString::null);
00022 void writeEntry(const QString& key, const QString& value);
00023 bool isEmpty() const { return map.isEmpty(); }
00024 GroupMap& getMap() { return map; };
00025
00026 private:
00027 QString groupname;
00028 GroupMap map;
00029 };
00030
00031 typedef QMap<QString, ConfigGroup*> ConfigMap;
00032
00033 class ConfigFile
00034 {
00035 public:
00036 ConfigFile();
00037 ConfigFile(const QString& filename);
00038 ~ConfigFile();
00039 void clear();
00040 void setName(const QString& filename);
00041 const QString& name() const { return fname; }
00042 bool write();
00043 bool read();
00044 void setGroup(const QString& group);
00045 bool changeGroup(const QString& group);
00046 const QString& group() const;
00047 int numGroups() const { return map.count(); }
00048 QStringList groupList();
00049 void writeEntry(const QString& key, const QString& value);
00050 void writeEntry(const QString& key, int value);
00051 void writeEntry(const QString& key, double value);
00052 const QString& readEntry(const QString& key, const QString& default_value);
00053 int readEntry(const QString& key, int default_value);
00054 double readEntry(const QString& key, double default_value);
00055 void setCodec(const char* name);
00056 ConfigMap& getMap() { return map; };
00057 static const char* version();
00058
00059 private:
00060 QString fname;
00061 ConfigMap map;
00062 ConfigGroup* currentgroup;
00063 QTextCodec* codec;
00064 };
00065
00066 #endif