AlbumShaper  1.0a3
settinggroup.cpp
Go to the documentation of this file.
1 //==============================================
2 // copyright : (C) 2003-2005 by Will Stokes
3 //==============================================
4 // This program is free software; you can redistribute it
5 // and/or modify it under the terms of the GNU General
6 // Public License as published by the Free Software
7 // Foundation; either version 2 of the License, or
8 // (at your option) any later version.
9 //==============================================
10 
11 //Systemwide includes
12 #include <qstring.h>
13 #include <q3textstream.h>
14 #include <qdom.h>
15 
16 //Projectwide includes
17 #include "settinggroup.h"
18 #include "setting.h"
19 
20 //==============================================
22 {
23  this->name = name;
24  firstSetting = NULL;
25  lastSetting = NULL;
26  next = NULL;
27 }
28 //==============================================
30 {
31  Setting* cur = firstSetting;
32  while(cur != NULL)
33  {
34  Setting* t = cur->getNext();
35  delete cur;
36  cur = t;
37  }
38 }
39 //==============================================
41 {
42  return name;
43 }
44 //==============================================
45 QString SettingGroup::getValue(QString key)
46 {
47  Setting* cur = firstSetting;
48  while(cur != NULL)
49  {
50  if(cur->getKey().compare(key) == 0)
51  {
52  return cur->getValue();
53  }
54  cur = cur->getNext();
55  }
56  return "-1";
57 }
58 //==============================================
59 void SettingGroup::resetSetting(QString key)
60 {
61  Setting* cur = firstSetting;
62  while(cur != NULL)
63  {
64  if(cur->getKey().compare(key) == 0)
65  {
66  cur->resetSetting();
67  }
68  cur = cur->getNext();
69  }
70 }
71 //==============================================
72 void SettingGroup::setValue(QString key, QString value)
73 {
74  Setting* cur = firstSetting;
75  while(cur != NULL)
76  {
77  if(cur->getKey().compare(key) == 0)
78  {
79  cur->setValue(value);
80  return;
81  }
82  cur = cur->getNext();
83  }
84 
85  //setting not found, create new one and append to list
86  cur = new Setting(key, value);
87  if(firstSetting == NULL)
88  firstSetting = cur;
89  else
90  lastSetting->setNext(cur);
91  lastSetting = cur;
92 }
93 //==============================================
95 {
96  return next;
97 }
98 //==============================================
100 {
101  this->next = next;
102 }
103 //==============================================
104 void SettingGroup::saveSettings(Q3TextStream& stream)
105 {
106  stream << " <group name=\"" << getName() << "\">\n";
107 
108  //iterate over every setting
109  Setting* cur = firstSetting;
110  while(cur != NULL)
111  {
112  stream << " <setting key=\"" << cur->getKey() << "\" value=\"" << cur->getValue() << "\"/>\n";
113  cur = cur->getNext();
114  }
115 
116  stream << " </group>\n";
117 }
118 //==============================================
119 void SettingGroup::loadSettings(QDomNode& root)
120 {
121  //iterate over all children (Settings)
122  QDomNode node = root.firstChild();
123  QDomText val;
124  while( !node.isNull() )
125  {
126  if( node.isElement() && node.nodeName() == "setting" )
127  {
128  //find key and value, if either is missing move on to next setting
129  QDomNamedNodeMap attributes = node.attributes();
130  if(attributes.namedItem("key").isNull() || attributes.namedItem("value").isNull())
131  {
132  node = node.nextSibling();
133  continue;
134  }
135 
136 
137  QString k = attributes.namedItem("key").nodeValue();
138  QString v = attributes.namedItem("value").nodeValue();
139 
140  //key and value found -> add new setting
141  setValue( attributes.namedItem("key").nodeValue(),
142  attributes.namedItem("value").nodeValue() );
143  }
144 
145  //move on to next setting
146  node = node.nextSibling();
147  }
148 }
149 //==============================================
Setting * getNext()
gets a pointer to the next setting in the list
Definition: setting.cpp:41
Setting class, allows the setting and retrieval of setting values.
Definition: setting.h:23
QString getValue()
Definition: setting.cpp:31
SettingGroup(QString name)
Creates configuration variables using default avlues.
QString name
groups identifying name
Definition: settinggroup.h:63
Setting * lastSetting
pointer to last setting in group
Definition: settinggroup.h:69
QString getValue(QString key)
Returns a setting value.
void setNext(Setting *next)
sets a pointer to the next setting in the list
Definition: setting.cpp:46
QString getName()
Returns group&#39;s name.
QString getKey()
Definition: setting.cpp:26
void loadSettings(QDomNode &node)
void setNext(SettingGroup *next)
sets the next group setting
~SettingGroup()
Destructor.
SettingGroup * getNext()
returns the next groupsetting
void setValue(QString value)
Definition: setting.cpp:36
Setting * firstSetting
pointer to first setting in group
Definition: settinggroup.h:66
void resetSetting(QString key)
resets a setting to its default value
void saveSettings(Q3TextStream &stream)
writes out this group to file
void setValue(QString key, QString value)
Sets a setting value, create new setting if setting not found.
void resetSetting()
resets value to default
Definition: setting.cpp:51
SettingGroup contains settings which are releated.
Definition: settinggroup.h:27
SettingGroup * next
pointer to next settingroup
Definition: settinggroup.h:72