#include "ConnectionSettings.h"
#include "StartupSettings.h"
#include "DisplaySettings.h"
+#include "DateTimeSettings.h"
#include "Room.h"
#include <QDomDocument>
#include <QDomElement>
Configuration::Configuration() :
iConnectionSettings( 0 ),
iStartupSettings( 0 ),
- iDisplaySettings( 0 )
+ iDisplaySettings( 0 ),
+ iDateTimeSettings( 0 )
{
}
delete iConnectionSettings;
delete iStartupSettings;
delete iDisplaySettings;
+ delete iDateTimeSettings;
while ( !iRooms.isEmpty() )
{
delete iRooms.takeFirst();
return iDisplaySettings;
}
+DateTimeSettings * Configuration::dateTimeSettings()
+{
+ return iDateTimeSettings;
+}
+
Room* Configuration::defaultRoom()
{
// default room is stored as the first element of the list
{
saveDisplaySettings( node );
}
+ else if (tagName == QString( "daylight_saving_time" ) )
+ {
+ saveDateTimeSettings( node );
+ }
}
//! Empty the file from previous content and write again with new one
{
QDomElement e = node.toElement();
QString tagName = e.tagName().toLower();
-
if ( tagName == QString( "serverurl" ) )
{
QDomText t = node.ownerDocument().createTextNode( iConnectionSettings->serverUrl().toString() );
- e.replaceChild( t, e.firstChild() );
+ if ( e.hasChildNodes() )
+ {
+ e.replaceChild( t, e.firstChild() );
+ }
+ else
+ {
+ e.appendChild( e.firstChild() );
+ }
}
else if ( tagName == QString( "username" ) )
{
QDomText t = node.ownerDocument().createTextNode( iConnectionSettings->username() );
- e.replaceChild( t, e.firstChild() );
+ if ( e.hasChildNodes() )
+ {
+ e.replaceChild( t, e.firstChild() );
+ }
+ else
+ {
+ e.appendChild( e.firstChild() );
+ }
}
else if ( tagName == QString( "password" ) )
{
QDomText t = node.ownerDocument().createTextNode( iConnectionSettings->password() );
- e.replaceChild( t, e.firstChild() );
+ if ( e.hasChildNodes() )
+ {
+ e.replaceChild( t, e.firstChild() );
+ }
+ else
+ {
+ e.appendChild( e.firstChild() );
+ }
}
else if ( tagName == QString( "refreshinterval" ) )
{
int count = root.childNodes().count();
QDomNode node = root.firstChild();
QDomNode next;
- for (int i=0; i<count; i++)
+ for (int i = 0; i < count; i++)
{
qDebug() << "remove " << node.toElement().text();
next = node.nextSibling();
node = next;
}
+ node = aXML;
QList<Room*>::iterator i;
for ( i = iRooms.begin(); i != iRooms.end(); ++i )
{
}
}
+void Configuration::saveDateTimeSettings( const QDomNode &aXML )
+{
+ for ( QDomNode node = aXML.firstChild(); !node.isNull(); node = node.nextSibling() )
+ {
+ QDomElement e = node.toElement();
+ QString tagName = e.tagName().toLower();
+
+ if ( tagName == QString( "dayofweek" ) )
+ {
+ QDomText t = node.ownerDocument().createTextNode( iDateTimeSettings->switchDay() );
+ e.replaceChild( t, e.firstChild() );
+ }
+ else if( tagName == QString( "StandardTimeChangeMoment" ) )
+ {
+ QDomText t = node.ownerDocument().createTextNode( iDateTimeSettings->STDDateTime().toString("ddMMyyyyhhmmss"));
+ e.replaceChild( t, e.firstChild() );
+ }
+ else if( tagName == QString( "DaylightSaveTimeChangeMoment" ) )
+ {
+ QDomText t = node.ownerDocument().createTextNode( iDateTimeSettings->DSTDateTime().toString("ddMMyyyyhhmmss"));
+ e.replaceChild( t, e.firstChild() );
+ }
+ }
+}
+
void Configuration::saveAdminPassword( const QDomNode &aXML )
{
QDomElement e = aXML.toElement();
{
conf->iDisplaySettings = Configuration::readDisplaySettings( node );
}
+ else if ( tagName == QString( "daylight_saving_time" ) )
+ {
+ conf->iDateTimeSettings = Configuration::readDateTimeSettings(node);
+ }
}
return conf;
return new DisplaySettings( dateformat, timeformat, daysInSchedule, dayStartsAt, dayEndsAt, screensaver );
}
+DateTimeSettings * Configuration::readDateTimeSettings( const QDomNode &aXML )
+{
+ // Set defaults..
+ QDateTime standardTimeChangeMoment = QDateTime::fromString("05.10.2009 04:00:00", "dd'.'MM'.'yyyy' 'hh:mm:ss");
+ QDateTime daylightSaveTimeChangeMoment = QDateTime::fromString("01.04.2010 03:00:00", "dd'.'MM'.'yyyy' 'hh:mm:ss");
+ DateTimeSettings::weekDay dayOfWeek = DateTimeSettings::Sunday;
+
+ for ( QDomNode node = aXML.firstChild(); !node.isNull(); node = node.nextSibling() )
+ {
+ QDomElement e = node.toElement();
+ QString tagName = e.tagName().toLower();
+
+ if ( tagName == QString( "dayofweek" ) )
+ {
+ qDebug() << "Configuration::readDateTimeSettings: " +e.text();
+
+ bool success = false;
+ unsigned int weekDayTmp = e.text().toUInt( &success );
+ if( success && weekDayTmp < 7 )
+ {
+ dayOfWeek = (DateTimeSettings::weekDay)weekDayTmp;
+ }
+ }
+ else if( tagName == QString( "standardtimechangemoment" ) )
+ {
+ standardTimeChangeMoment = QDateTime::fromString(e.text(), "dd'.'MM'.'yyyy' 'hh:mm:ss");
+ qDebug() << "Configuration::readDateTimeSettings: " +standardTimeChangeMoment.toString("dd.MM.yyyy hh:mm:ss");
+ }
+ else if( tagName == QString( "daylightsavetimechangemoment" ) )
+ {
+ daylightSaveTimeChangeMoment = QDateTime::fromString(e.text(), "dd'.'MM'.'yyyy' 'hh:mm:ss");
+ qDebug() << "Configuration::readDateTimeSettings: " +daylightSaveTimeChangeMoment.toString("dd.MM.yyyy hh:mm:ss");
+ }
+ }
+
+ return new DateTimeSettings(standardTimeChangeMoment, daylightSaveTimeChangeMoment, dayOfWeek);
+}
+
QByteArray Configuration::readAdminPassword( const QDomNode &aXML )
{
QDomElement e = aXML.toElement();