Settings view fixed.
[qtmeetings] / src / Domain / Configuration / Configuration.cpp
index 56a4472..54648ca 100644 (file)
@@ -2,6 +2,7 @@
 #include "ConnectionSettings.h"
 #include "StartupSettings.h"
 #include "DisplaySettings.h"
+#include "DateTimeSettings.h"
 #include "Room.h"
 #include <QDomDocument>
 #include <QDomElement>
@@ -17,7 +18,8 @@ QString Configuration::sConfigurationPath = "/etc/QtMeetings.conf";
 Configuration::Configuration() :
                iConnectionSettings( 0 ),
                iStartupSettings( 0 ),
-               iDisplaySettings( 0 )
+               iDisplaySettings( 0 ),
+               iDateTimeSettings( 0 )
 {
 }
 
@@ -26,6 +28,7 @@ Configuration::~Configuration()
        delete iConnectionSettings;
        delete iStartupSettings;
        delete iDisplaySettings;
+       delete iDateTimeSettings;
        while ( !iRooms.isEmpty() )
        {
                delete iRooms.takeFirst();
@@ -60,6 +63,11 @@ DisplaySettings * Configuration::displaySettings()
        return iDisplaySettings;
 }
 
+DateTimeSettings * Configuration::dateTimeSettings()
+{
+       return iDateTimeSettings;
+}
+
 Room* Configuration::defaultRoom()
 {
        // default room is stored as the first element of the list
@@ -127,6 +135,10 @@ void Configuration::save()
                {
                        saveDisplaySettings( node );
                }
+               else if (tagName == QString( "daylight_saving_time" ) )
+               {
+                       saveDateTimeSettings( node );
+               }
        }
 
        //! Empty the file from previous content and write again with new one
@@ -147,17 +159,38 @@ void Configuration::saveConnectionSettings( const QDomNode &aXML )
                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" ) )
                {
@@ -186,6 +219,7 @@ void Configuration::saveRooms( const QDomNode &aXML )
                node = next;
        }
 
+       node = aXML;
        QList<Room*>::iterator i;
        for ( i = iRooms.begin(); i != iRooms.end(); ++i )
        {
@@ -281,6 +315,31 @@ void Configuration::saveDisplaySettings( const QDomNode &aXML )
        }
 }
 
+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();
@@ -340,6 +399,10 @@ Configuration* Configuration::readFromXML( const QString &aPath )
                {
                        conf->iDisplaySettings = Configuration::readDisplaySettings( node );
                }
+               else if ( tagName == QString( "daylight_saving_time" ) )
+               {
+                       conf->iDateTimeSettings = Configuration::readDateTimeSettings(node);
+               }
        }
 
        return conf;
@@ -560,6 +623,44 @@ DisplaySettings * Configuration::readDisplaySettings( const QDomNode &aXML )
        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();