From 3192a06cfe2efb8ffa91b2668926b7d09dc38d5f Mon Sep 17 00:00:00 2001 From: Zoltan Papp Date: Tue, 26 May 2009 12:43:40 +0300 Subject: [PATCH 1/1] date/time configuration implementation in progress.. --- QtMeetings.pro | 4 ++ src/Domain/Configuration/Configuration.cpp | 70 +++++++++++++++++- src/Domain/Configuration/Configuration.h | 58 ++++++++++----- src/Domain/Configuration/DateTimeSettings.cpp | 86 ++++++++++++++++++++++ src/Domain/Configuration/DateTimeSettings.h | 94 +++++++++++++++++++++++++ 5 files changed, 294 insertions(+), 18 deletions(-) create mode 100644 src/Domain/Configuration/DateTimeSettings.cpp create mode 100644 src/Domain/Configuration/DateTimeSettings.h diff --git a/QtMeetings.pro b/QtMeetings.pro index c57d210..dde4c8a 100644 --- a/QtMeetings.pro +++ b/QtMeetings.pro @@ -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 \ diff --git a/src/Domain/Configuration/Configuration.cpp b/src/Domain/Configuration/Configuration.cpp index 56a4472..40184fb 100644 --- a/src/Domain/Configuration/Configuration.cpp +++ b/src/Domain/Configuration/Configuration.cpp @@ -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(); diff --git a/src/Domain/Configuration/Configuration.h b/src/Domain/Configuration/Configuration.h index c08002d..5cd7e6d 100644 --- a/src/Domain/Configuration/Configuration.h +++ b/src/Domain/Configuration/Configuration.h @@ -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 aRooms ); - + void setRooms(const QList 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 readRooms( const QDomNode &aXML ); + static QList 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 iRooms; //! Stores administrator password. diff --git a/src/Domain/Configuration/DateTimeSettings.cpp b/src/Domain/Configuration/DateTimeSettings.cpp new file mode 100644 index 0000000..21c3c6e --- /dev/null +++ b/src/Domain/Configuration/DateTimeSettings.cpp @@ -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 index 0000000..7de5bf6 --- /dev/null +++ b/src/Domain/Configuration/DateTimeSettings.h @@ -0,0 +1,94 @@ +#ifndef DATETIMESETTINGS_H_ +#define DATETIMESETTINGS_H_ + +#include +#include + +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_*/ -- 1.7.9.5