Work done for the date/time..
[qtmeetings] / src / IO / Communication / MessagingUtils.cpp
index 0f6e63e..4387685 100644 (file)
@@ -1,8 +1,10 @@
 #include <QUrl>
+#include <time.h>
 
 #include "MessagingUtils.h"
 #include "Meeting.h"
 #include "Configuration.h"
+#include "DateTimeSettings.h"
 
 /*
  * BaseMessage class functions
@@ -868,18 +870,37 @@ int ReqMsgGetUserAvailability::setTimeZone()
                return MsgErrSomeError;
        }
        int err = MsgErrNoError;
-       //TODO: timezone and daylight times to application configuration
-       setNodeValue( QString( "Bias" ), QString::number( -120 ), QDomNode::ElementNode, QString( "TimeZone" ) );
+
+       time_t rawtime;
+       tm *localTime;
+
+       time(&rawtime);
+       localTime = localtime(&rawtime);
+       
+       int offsetMinutes = localTime->tm_gmtoff / 60;
+       if (localTime->tm_isdst)
+               offsetMinutes -= 60;    // If DST is in use then reduce an hour from offset, because
+                                                               // DST will be added to the offset later and it already includes
+                                                               // DST. TODO: This is silly and must be changed if possible.
+                                                               // If you can get UTC offset without DST, use it here.
+       
+#ifdef MU_DEBUG
+       qDebug( "ReqMsgGetUserAvailability::setTimeZone - offset in minutes=%d", offsetMinutes );
+#endif
+       
+       DateTimeSettings *dateTimeSettings = Configuration::instance()->dateTimeSettings();
+               
+       setNodeValue( QString( "Bias" ), QString::number( -offsetMinutes ), QDomNode::ElementNode, QString( "TimeZone" ) );
        setNodeValue( QString( "Bias" ), QString::number( 0 ), QDomNode::ElementNode, QString( "StandardTime" ) );
-       setNodeValue( QString( "Time" ), QString( "03:00:00" ), QDomNode::ElementNode, QString( "StandardTime" ) );
-       setNodeValue( QString( "DayOrder" ), QString::number( 5 ), QDomNode::ElementNode, QString( "StandardTime" ) );
-       setNodeValue( QString( "Month" ), QString::number( 10 ), QDomNode::ElementNode, QString( "StandardTime" ) );
-       setNodeValue( QString( "DayOfWeek" ), QString( "Sunday" ), QDomNode::ElementNode, QString( "StandardTime" ) );
+       setNodeValue( QString( "Time" ), dateTimeSettings->standardTimeChange_Time(), QDomNode::ElementNode, QString( "StandardTime" ) );
+       setNodeValue( QString( "DayOrder" ), dateTimeSettings->standardTimeChange_Day(), QDomNode::ElementNode, QString( "StandardTime" ) );
+       setNodeValue( QString( "Month" ), dateTimeSettings->standardTimeChange_Month(), QDomNode::ElementNode, QString( "StandardTime" ) );
+       setNodeValue( QString( "DayOfWeek" ), dateTimeSettings->dayOfWeek(), QDomNode::ElementNode, QString( "StandardTime" ) );
        setNodeValue( QString( "Bias" ), QString::number( -60 ), QDomNode::ElementNode, QString( "DaylightTime" ) );
-       setNodeValue( QString( "Time" ), QString( "03:00:00" ), QDomNode::ElementNode, QString( "DaylightTime" ) );
-       setNodeValue( QString( "DayOrder" ), QString::number( 1 ), QDomNode::ElementNode, QString( "DaylightTime" ) );
-       setNodeValue( QString( "Month" ), QString::number( 4 ), QDomNode::ElementNode, QString( "DaylightTime" ) );
-       setNodeValue( QString( "DayOfWeek" ), QString( "Sunday" ), QDomNode::ElementNode, QString( "DaylightTime" ) );
+       setNodeValue( QString( "Time" ), dateTimeSettings->daylightSaveTimeChange_Time(), QDomNode::ElementNode, QString( "DaylightTime" ) );
+       setNodeValue( QString( "DayOrder" ), dateTimeSettings->daylightSaveTimeChange_Day(), QDomNode::ElementNode, QString( "DaylightTime" ) );
+       setNodeValue( QString( "Month" ), dateTimeSettings->daylightSaveTimeChange_Month(), QDomNode::ElementNode, QString( "DaylightTime" ) );
+       setNodeValue( QString( "DayOfWeek" ), dateTimeSettings->dayOfWeek(), QDomNode::ElementNode, QString( "DaylightTime" ) );
 
 #ifdef MU_DEBUG
        qDebug( "ReqMsgGetUserAvailability::setTimeZone end : err=%d", err );