00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include <qstring.h>
00013 #include <qtextstream.h>
00014 #include <qdom.h>
00015
00016
00017 #include "settinggroup.h"
00018 #include "setting.h"
00019
00020
00021 SettingGroup::SettingGroup(QString name)
00022 {
00023 this->name = name;
00024 firstSetting = NULL;
00025 lastSetting = NULL;
00026 next = NULL;
00027 }
00028
00029 SettingGroup::~SettingGroup()
00030 {
00031 Setting* cur = firstSetting;
00032 while(cur != NULL)
00033 {
00034 Setting* t = cur->getNext();
00035 delete cur;
00036 cur = t;
00037 }
00038 }
00039
00040 QString SettingGroup::getName()
00041 {
00042 return name;
00043 }
00044
00045 QString SettingGroup::getValue(QString key)
00046 {
00047 Setting* cur = firstSetting;
00048 while(cur != NULL)
00049 {
00050 if(cur->getKey().compare(key) == 0)
00051 {
00052 return cur->getValue();
00053 }
00054 cur = cur->getNext();
00055 }
00056 return "-1";
00057 }
00058
00059 void SettingGroup::resetSetting(QString key)
00060 {
00061 Setting* cur = firstSetting;
00062 while(cur != NULL)
00063 {
00064 if(cur->getKey().compare(key) == 0)
00065 {
00066 cur->resetSetting();
00067 }
00068 cur = cur->getNext();
00069 }
00070 }
00071
00072 void SettingGroup::setValue(QString key, QString value)
00073 {
00074 Setting* cur = firstSetting;
00075 while(cur != NULL)
00076 {
00077 if(cur->getKey().compare(key) == 0)
00078 {
00079 cur->setValue(value);
00080 return;
00081 }
00082 cur = cur->getNext();
00083 }
00084
00085
00086 cur = new Setting(key, value);
00087 if(firstSetting == NULL)
00088 firstSetting = cur;
00089 else
00090 lastSetting->setNext(cur);
00091 lastSetting = cur;
00092 }
00093
00094 SettingGroup* SettingGroup::getNext()
00095 {
00096 return next;
00097 }
00098
00099 void SettingGroup::setNext(SettingGroup* next)
00100 {
00101 this->next = next;
00102 }
00103
00104 void SettingGroup::saveSettings(QTextStream& stream)
00105 {
00106 stream << " <group name=\"" << getName() << "\">\n";
00107
00108
00109 Setting* cur = firstSetting;
00110 while(cur != NULL)
00111 {
00112 stream << " <setting key=\"" << cur->getKey() << "\" value=\"" << cur->getValue() << "\"/>\n";
00113 cur = cur->getNext();
00114 }
00115
00116 stream << " </group>\n";
00117 }
00118
00119 void SettingGroup::loadSettings(QDomNode& root)
00120 {
00121
00122 QDomNode node = root.firstChild();
00123 QDomText val;
00124 while( !node.isNull() )
00125 {
00126 if( node.isElement() && node.nodeName() == "setting" )
00127 {
00128
00129 QDomNamedNodeMap attributes = node.attributes();
00130 if(attributes.namedItem("key").isNull() || attributes.namedItem("value").isNull())
00131 {
00132 node = node.nextSibling();
00133 continue;
00134 }
00135
00136
00137 QString k = attributes.namedItem("key").nodeValue();
00138 QString v = attributes.namedItem("value").nodeValue();
00139
00140
00141 setValue( attributes.namedItem("key").nodeValue(),
00142 attributes.namedItem("value").nodeValue() );
00143 }
00144
00145
00146 node = node.nextSibling();
00147 }
00148 }
00149