date/time configuration implementation in progress..
authorZoltan Papp <zoltan.papp@ixonos.com>
Tue, 26 May 2009 09:43:40 +0000 (12:43 +0300)
committerZoltan Papp <zoltan.papp@ixonos.com>
Tue, 26 May 2009 09:43:40 +0000 (12:43 +0300)
QtMeetings.pro
src/Domain/Configuration/Configuration.cpp
src/Domain/Configuration/Configuration.h
src/Domain/Configuration/DateTimeSettings.cpp [new file with mode: 0644]
src/Domain/Configuration/DateTimeSettings.h [new file with mode: 0644]

index c57d210..dde4c8a 100644 (file)
@@ -14,6 +14,8 @@ INCLUDEPATH += src/Domain/ \
     src/UserInterface/Utils/ \
     src/UserInterface/Views/
 HEADERS += src/IO/DeviceControl/OperationModeToggler.h \
+    src/Domain/Configuration/DateTimeSettings.h \
+    src/IO/DeviceControl/OperationModeToggler.h \
     src/UserInterface/Utils/ProgressBar.h \
     src/Domain/Room.h \
     src/Domain/Meeting.h \
@@ -46,6 +48,8 @@ HEADERS += src/IO/DeviceControl/OperationModeToggler.h \
     src/UserInterface/Views/SettingsView.h \
     src/UserInterface/WindowManager.h
 SOURCES += src/IO/DeviceControl/OperationModeToggler.cpp \
+    src/Domain/Configuration/DateTimeSettings.cpp \
+    src/IO/DeviceControl/OperationModeToggler.cpp \
     src/UserInterface/Utils/ProgressBar.cpp \
     src/Domain/Room.cpp \
     src/Domain/Meeting.cpp \
index 56a4472..40184fb 100644 (file)
@@ -17,7 +17,8 @@ QString Configuration::sConfigurationPath = "/etc/QtMeetings.conf";
 Configuration::Configuration() :
                iConnectionSettings( 0 ),
                iStartupSettings( 0 ),
-               iDisplaySettings( 0 )
+               iDisplaySettings( 0 ),
+               iDateTimeSettings( 0 )
 {
 }
 
@@ -26,6 +27,7 @@ Configuration::~Configuration()
        delete iConnectionSettings;
        delete iStartupSettings;
        delete iDisplaySettings;
+       delete iDateTimeSettings;
        while ( !iRooms.isEmpty() )
        {
                delete iRooms.takeFirst();
@@ -60,6 +62,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 +134,10 @@ void Configuration::save()
                {
                        saveDisplaySettings( node );
                }
+               else if (tagName == QString( "datetime" ) )
+               {
+                       saveDateTimeSettings( node );
+               }
        }
 
        //! Empty the file from previous content and write again with new one
@@ -281,6 +292,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->iDayOfWeek);
+                       e.replaceChild( t, e.firstChild() );
+               }
+               else if( tagName == QString( "StandardTimeChangeMoment" ) )
+               {
+                       QDomText t = node.ownerDocument().createTextNode( iDateTimeSettings->iStandardTimeChangeMoment.toString("dd.MM.yyyy hh:mm:ss"));
+                       e.replaceChild( t, e.firstChild() );
+               }
+               else if( tagName == QString( "DaylightSaveTimeChangeMoment" ) )
+               {
+                       QDomText t = node.ownerDocument().createTextNode( iDateTimeSettings->iDaylightSaveTimeChangeMoment.toString("dd.MM.yyyy hh:mm:ss"));
+                       e.replaceChild( t, e.firstChild() );
+               }
+       }
+}
+
 void Configuration::saveAdminPassword( const QDomNode &aXML )
 {
        QDomElement e = aXML.toElement();
@@ -340,6 +376,10 @@ Configuration* Configuration::readFromXML( const QString &aPath )
                {
                        conf->iDisplaySettings = Configuration::readDisplaySettings( node );
                }
+               else if ( tagName == QString( "datetime" ) )
+               {
+                       conf->iDateTimeSettings = Configuration::readDateTimeSettings(node);
+               }
        }
 
        return conf;
@@ -560,6 +600,34 @@ DisplaySettings * Configuration::readDisplaySettings( const QDomNode &aXML )
        return new DisplaySettings( dateformat, timeformat, daysInSchedule, dayStartsAt, dayEndsAt, screensaver );
 }
 
+DateTimeSettings * Configuration::readDateTimeSettings( const QDomNode &aXML )
+{
+       QDateTime standardTimeChangeMoment;
+       QDateTime daylightSaveTimeChangeMoment;
+       QString dayOfWeek;
+       
+       for ( QDomNode node = aXML.firstChild(); !node.isNull(); node = node.nextSibling() )
+       {
+               QDomElement e = node.toElement();
+               QString tagName = e.tagName().toLower();
+
+               if ( tagName == QString( "dayofweek" ) )
+               {
+                       dayOfWeek = e.text();
+               }
+               else if( tagName == QString( "StandardTimeChangeMoment" ) )
+               {
+                       standardTimeChangeMoment.fromString(e.text(), "dd.MM.yyyy hh:mm:ss");
+               }
+               else if( tagName == QString( "DaylightSaveTimeChangeMoment" ) )
+               {
+                       daylightSaveTimeChangeMoment.fromString(e.text(), "dd.MM.yyyy hh:mm:ss");
+               }
+       }
+       
+       return new DateTimeSettings(standardTimeChangeMoment, daylightSaveTimeChangeMoment, dayOfWeek);
+}
+
 QByteArray Configuration::readAdminPassword( const QDomNode &aXML )
 {
        QDomElement e = aXML.toElement();
index c08002d..5cd7e6d 100644 (file)
@@ -11,6 +11,7 @@ class StartupSettings;
 class DisplaySettings;
 class Room;
 class QDomNode;
+class DateTimeSettings;
 
 //! Domain class. Store application wide configuration values.
 /*!
@@ -20,7 +21,7 @@ class QDomNode;
  */
 class Configuration : public QObject
 {
-       Q_OBJECT
+Q_OBJECT
 
 private:
        //! Constructor.
@@ -76,6 +77,12 @@ public:
         * \return Pointer to DisplaySettings instance.
         */
        DisplaySettings* displaySettings();
+       //! Gets date/time settings.
+       /*!
+        * Gets the date/time settings.
+        * \return Pointer to DateTimeSettings instance.
+        */
+       DateTimeSettings* dateTimeSettings();
        //! Gets the administrator's password.
        /*!
         * Gets the administrator's password
@@ -87,8 +94,8 @@ public:
         * Sets  room list.
         * \param aRooms List of rooms
         */
-       void setRooms( const QList<Room*> aRooms );
-       
+       void setRooms(const QList<Room*> aRooms);
+
 public slots:
 
        //! Saves setting values to file.
@@ -104,85 +111,100 @@ private:
         * \param aPath path and name of configuration file
         * \return Configuration object.
         */
-       static Configuration* readFromXML( const QString &aPath );
+       static Configuration* readFromXML(const QString &aPath);
        //! Static. Reads settings of connection from and XML node.
        /*!
         * Static. Reads settings of connection from an XML node.
         * \param aXml QDomNode containing connection parameters.
         * \return Pointer to ConnectionSettings object.
         */
-       static ConnectionSettings* readConnectionSettings( const QDomNode &aXML );
+       static ConnectionSettings* readConnectionSettings(const QDomNode &aXML);
        //! Static. Reads rooms from an XML node.
        /*!
         * Static. Reads rooms from an XML node.
         * \param aXml QDomNode containing meeting room parameters
         * \return List of meetingrooms.
         */
-       static QList<Room*> readRooms( const QDomNode &aXML );
+       static QList<Room*> readRooms(const QDomNode &aXML);
        //! Static. Reads language code from an XML node.
        /*!
         * Static. Reads rooms from an XML node.
         * \param aXml QDomNode containing language code
         * \return Language code.
         */
-       static QString readLanguageCode( const QDomNode &aXML );
+       static QString readLanguageCode(const QDomNode &aXML);
        //! Static. Reads settings of startup from an XML node.
        /*!
         * Static. Reads settings of startup from an XML node.
         * \param aXml QDomNode containing startup parameters
         * \return Pointer to the read StartupSettings object.
         */
-       static StartupSettings* readStartupSettings( const QDomNode &aXML );
+       static StartupSettings* readStartupSettings(const QDomNode &aXML);
        /*!
         * Static function to load and store display settings from xml node.
         * \param aXml QDomNode containing display parameters
         * \return Pointer to the read DisplaySettings object.
         */
-       static DisplaySettings* readDisplaySettings( const QDomNode &aXML );
+       static DisplaySettings* readDisplaySettings(const QDomNode &aXML);
+       //! Static. Reads the date/time settings from an XML node.
+       /*!
+        * Static. Reads the date/time settings from an XML node.
+        * \param aXml QDomNode containing the date/time settings
+        * \return The date/time settings.
+        */
+       static DateTimeSettings* readDateTimeSettings(const QDomNode &aXML);
+
        //! Static. Reads adminstrator's password from an XML node.
        /*!
         * Static. Reads adminstrator's password from an XML node.
         * \param aXml QDomNode containing admin password
         * \return Admin password.
         */
-       static QByteArray readAdminPassword( const QDomNode &aXML );
+       static QByteArray readAdminPassword(const QDomNode &aXML);
 
        //! Saves connection data to the document.
        /*!
         * Reads data from iConnectionSettings and saves it to the aXML document.
         * \param aXml QDomNode containing connection parameters.
         */
-       void saveConnectionSettings( const QDomNode &aXML );
+       void saveConnectionSettings(const QDomNode &aXML);
        //! Saves meeting rooms to the document.
        /*!
         * Reads data from iRooms list and saves it to the aXML document.
         * \param aXml QDomNode containing meeting room parameters
         */
-       void saveRooms( const QDomNode &aXML );
+       void saveRooms(const QDomNode &aXML);
        //! Saves the language code.
        /*!
         * Reads data from iLanguageCode and saves it to the aXML document.
         * \param aXml QDomNode containing language code
         */
-       void saveLanguageCode( const QDomNode &aXML );
+       void saveLanguageCode(const QDomNode &aXML);
        //! Saves startup setting data to the document.
        /*!
         * Reads data from iStartupSettings and saves it to the aXML document.
         * \param aXml QDomNode containing startup parameters
         */
-       void saveStartupSettings( const QDomNode &aXML );
+       void saveStartupSettings(const QDomNode &aXML);
        //! Saves display setting data to the document.
        /*!
         * Reads data from iDisplaySettings and saves it to the aXML document.
         * \param aXml QDomNode containing display parameters
         */
-       void saveDisplaySettings( const QDomNode &aXML );
+       void saveDisplaySettings(const QDomNode &aXML);
+       //! Saves date/time setting data to the document.
+       /*!
+        * Reads data from iDateTimeSettings and saves it to the aXML document.
+        * \param aXml QDomNode containing the date/time settings
+        */
+       void saveDateTimeSettings(const QDomNode &aXML);
+
        //! Saves admin password to the document.
        /*!
         * Reads data from iAdminPassword and saves it to the aXML document.
         * \param aXml QDomNode containing admin password
         */
-       void saveAdminPassword( const QDomNode &aXML );
+       void saveAdminPassword(const QDomNode &aXML);
 
        //! Hash password with md5 method.
        /*!
@@ -190,7 +212,7 @@ private:
         * \param aPassword password to be encoded
         * \return Encoded password.
         */
-       QString hashPassword( const QString aPassword );
+       QString hashPassword(const QString aPassword);
 
 private:
        //! Path and name of configuration file
@@ -205,6 +227,8 @@ private:
        StartupSettings *iStartupSettings;
        //! Stores display settings.
        DisplaySettings *iDisplaySettings;
+       //! Stores date/time settings.
+       DateTimeSettings *iDateTimeSettings;
        //! List of meeting rooms.
        QList<Room*> iRooms;
        //! Stores administrator password.
diff --git a/src/Domain/Configuration/DateTimeSettings.cpp b/src/Domain/Configuration/DateTimeSettings.cpp
new file mode 100644 (file)
index 0000000..21c3c6e
--- /dev/null
@@ -0,0 +1,86 @@
+#include "DateTimeSettings.h"
+
+DateTimeSettings::DateTimeSettings(const QDateTime &aStandardTimeChange, const QDateTime &aDaylightTimeChange, const QString aDayOfWeek)
+{
+       this->iDaylightSaveTimeChangeMoment = aDaylightTimeChange;
+       this->iStandardTimeChangeMoment = aStandardTimeChange;
+       this->iDayOfWeek = aDayOfWeek;
+}
+
+DateTimeSettings::DateTimeSettings(const DateTimeSettings &aOther)
+{
+       this->iDaylightSaveTimeChangeMoment = aOther.iDaylightSaveTimeChangeMoment;
+       this->iStandardTimeChangeMoment = aOther.iStandardTimeChangeMoment;
+       this->iDayOfWeek = aOther.iDayOfWeek;
+}
+
+DateTimeSettings::~DateTimeSettings()
+{
+
+}
+
+QDateTime DateTimeSettings::standardTimeChange()
+{
+       return (this->iStandardTimeChangeMoment);
+}
+
+QDateTime DateTimeSettings::daylightSaveTimeChange()
+{
+       return (this->iDaylightSaveTimeChangeMoment);
+}
+
+QString DateTimeSettings::standardTimeChange_Time()
+{
+       QTime time = this->iStandardTimeChangeMoment.time();
+       return (time.toString("hh:mm:ss"));
+}
+
+QString DateTimeSettings::standardTimeChange_Month()
+{
+       QDate date = this->iStandardTimeChangeMoment.date();
+       return (date.toString("MM"));
+}
+
+QString DateTimeSettings::standardTimeChange_Day()
+{
+       QDate date = this->iStandardTimeChangeMoment.date();
+       return (date.toString("dd"));
+}
+
+QString DateTimeSettings::daylightSaveTimeChange_Time()
+{
+       QTime time = this->iDaylightSaveTimeChangeMoment.time();
+       return (time.toString("hh:mm:ss"));
+}
+
+QString DateTimeSettings::daylightSaveTimeChange_Month()
+{
+       QDate date = this->iDaylightSaveTimeChangeMoment.date();
+       return (date.toString("MM"));
+}
+
+QString DateTimeSettings::daylightSaveTimeChange_Day()
+{
+       QDate date = this->iDaylightSaveTimeChangeMoment.date();
+       return (date.toString("dd"));
+}
+
+void DateTimeSettings::setDaylightSaveTimeChange(const QDateTime &aDaylightSaveTimeChange)
+{
+       this->iDaylightSaveTimeChangeMoment = aDaylightSaveTimeChange;
+}
+
+void DateTimeSettings::setStandardTimeChange(const QDateTime &aStandardTimeChange)
+{
+       this->iStandardTimeChangeMoment = aStandardTimeChange;
+}
+
+void DateTimeSettings::setDayOfWeek(const QString aDay)
+{
+       this->iDayOfWeek = aDay;
+}
+
+QString DateTimeSettings::dayOfWeek()
+{
+       return(this->iDayOfWeek);
+}
diff --git a/src/Domain/Configuration/DateTimeSettings.h b/src/Domain/Configuration/DateTimeSettings.h
new file mode 100644 (file)
index 0000000..7de5bf6
--- /dev/null
@@ -0,0 +1,94 @@
+#ifndef DATETIMESETTINGS_H_
+#define DATETIMESETTINGS_H_
+
+#include <QDateTime>
+#include <QString>
+
+class DateTimeSettings
+{
+public:
+
+       /*!
+        * Overloaded.
+        * \param aStandardTimeChange The date and time when the standard time is to be used. The year part and the milliseconds are omitted.
+        * \param aDaylightTimeChange The date and time when the daylight time is to be used. The year part and the milliseconds are omitted.
+        * \param aDayOfWeek The day of the week when the time is to be used.
+        */
+       DateTimeSettings(const QDateTime &aStandardTimeChange, const QDateTime &aDaylightTimeChange, const QString aDayOfWeek);
+
+       //! Copy constructor.
+       /*!
+        * Overloaded. Constructor to initialize a DateTimeSettings instance.
+        * \param aOther DateTimeSettings class to be copied.
+        */
+       DateTimeSettings(const DateTimeSettings &aOther);
+       //! Destructor
+       virtual ~DateTimeSettings();
+
+       /*!
+        * 
+        */
+       QDateTime standardTimeChange();
+
+       /*!
+        * 
+        */
+       QDateTime daylightSaveTimeChange();
+
+       /*!
+        * 
+        */
+       QString standardTimeChange_Time();
+
+       /*!
+        * 
+        */
+       QString standardTimeChange_Month();
+
+       /*!
+        * 
+        */
+       QString standardTimeChange_Day();
+
+       /*!
+        * 
+        */
+       QString daylightSaveTimeChange_Time();
+
+       /*!
+        * 
+        */
+       QString daylightSaveTimeChange_Month();
+
+       /*!
+        * 
+        */
+       QString daylightSaveTimeChange_Day();
+
+       /*!
+        * 
+        */
+       void setDaylightSaveTimeChange(const QDateTime &aDaylightSaveTimeChange);
+
+       /*!
+        * 
+        */
+       void setStandardTimeChange(const QDateTime &aStandardTimeChange);
+
+       /*!
+        * 
+        */
+       void setDayOfWeek(const QString aDay);
+
+       /*!
+        * 
+        */
+       QString dayOfWeek();
+                       
+private:
+       QDateTime iStandardTimeChangeMoment;
+       QDateTime iDaylightSaveTimeChangeMoment;
+       QString iDayOfWeek;     
+};
+
+#endif /*DATETIMESETTINGS_H_*/