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//==============================================
45QString 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//==============================================
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//==============================================
72void 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//==============================================
98//==============================================
100{
101 this->next = next;
102}
103//==============================================
104void 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//==============================================
119void 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//==============================================
SettingGroup contains settings which are releated.
QString getValue(QString key)
Returns a setting value.
void resetSetting(QString key)
resets a setting to its default value
QString name
groups identifying name
~SettingGroup()
Destructor.
Setting * lastSetting
pointer to last setting in group
void setNext(SettingGroup *next)
sets the next group setting
SettingGroup * next
pointer to next settingroup
void setValue(QString key, QString value)
Sets a setting value, create new setting if setting not found.
QString getName()
Returns group's name.
SettingGroup * getNext()
returns the next groupsetting
void saveSettings(Q3TextStream &stream)
writes out this group to file
SettingGroup(QString name)
Creates configuration variables using default avlues.
void loadSettings(QDomNode &node)
Setting * firstSetting
pointer to first setting in group
Setting class, allows the setting and retrieval of setting values.
Definition setting.h:24
QString getKey()
Definition setting.cpp:26
Setting * getNext()
gets a pointer to the next setting in the list
Definition setting.cpp:41
void setValue(QString value)
Definition setting.cpp:36
void resetSetting()
resets value to default
Definition setting.cpp:51
void setNext(Setting *next)
sets a pointer to the next setting in the list
Definition setting.cpp:46
QString getValue()
Definition setting.cpp:31