<username>maemo</username>
<password>P@ssw0rd</password>-->
<serverurl>jklexch01.ixonos.com</serverurl>
- <username></username>
- <password></password>
+ <username>puontsi</username>
+ <password>Kirjaimia13On</password>
<!-- interval is interpreted in seconds -->
<refreshinterval>60</refreshinterval>
</connection>
<name>Hercules</name>
<address>meetingroom.hercules@ixonos.com</address>
</room>
- </rooms>
+ </rooms>
+
+ <datetime>
+ <dayofweek>sunday</dayofweek>
+ <StandardTimeChangeMoment>05102009040000</StandardTimeChangeMoment>
+ <DaylightSaveTimeChangeMoment>01042010030000</DaylightSaveTimeChangeMoment>
+ </datetime>
+
<!-- language code must be in ISO 3166-1 alpha-2 standard -->
<language code="EN" />
src/Domain/Configuration/ConnectionSettings.h \
src/Domain/Configuration/StartupSettings.h \
src/Domain/Configuration/DisplaySettings.h \
+ src/Domain/Configuration/DateTimeSettings.h \
src/Domain/Configuration/Configuration.h \
src/IO/Communication/MessagingUtils.h \
src/IO/Communication/Communication.h \
src/Domain/Configuration/ConnectionSettings.cpp \
src/Domain/Configuration/StartupSettings.cpp \
src/Domain/Configuration/DisplaySettings.cpp \
+ src/Domain/Configuration/DateTimeSettings.cpp \
src/Domain/Configuration/Configuration.cpp \
src/IO/Communication/MessagingUtils.cpp \
src/IO/Communication/Communication.cpp \
{
qDebug() << "Engine::ErrorHandler, aCode: " << aCode;
// inform UI about the problem
- if( aCode >= 100 && aCode <= 150 )
+ if( aCode >= 100 && aCode <= 150 ) { //communication errors
+ //we don't want these to close operation changing
qDebug() << "CommunicationManager signaled an error:" << aCode;
- iWindowManager->closeProgressBar();
+ iWindowManager->closeProgressBar();
+ }
iWindowManager->error( ErrorMapper::codeToString( aCode, aAddInfo ) );
}
{
case PasswordDialog::Correct :
{
- iWindowManager->showProgressBar( "Changing current operation mode.", true );
- connect( iWindowManager, SIGNAL( progressBarCancelled() ), this, SLOT( progressBarCancelled() ) );
+ iAutoRefresh->stop(); //we stop the metting updating
+ iWindowManager->showProgressBar( "Changing current operation mode." );
connect( iDevice, SIGNAL( changingMode( const QString & ) ),
iWindowManager, SLOT( updateProgressBar( const QString & ) ) );
- connect( iDevice, SIGNAL( changingModeFailed() ), this, SLOT( progressBarCancelled() ) );
+ connect( iDevice, SIGNAL( changeModeFailed() ), this, SLOT( changeModeFailed() ) );
iDevice->changeMode( true );
break;
}
}
}
-void Engine::progressBarCancelled()
+void Engine::changeModeFailed()
{
- qDebug() << "Engine::progressBarCancelled()";
- //TODO: cancel the on-going event
+ qDebug() << "Engine::changeModeFailed()";
iWindowManager->closeProgressBar();
- iDevice->changeMode( false );
+ iAutoRefresh->start(); //we start the metting updating
}
void Engine::fetchMeetingDetailsCancelled()
* \param aPasswordStatus The status of the password.
*/
void passwordEntered( PasswordDialog::PasswordStatus aPasswordStatus );
- //! Slot for receiving the cancel event of the progress bar.
+ //! Slot for receiving the failure event of operation mode changing.
/*!
- * Slot. Receives the cancel event of the progress bar.
+ * Slot. Receives the failure event of operation mode changing.
*/
- void progressBarCancelled();
+ void changeModeFailed();
//! Slot for receiving the cancel event of the progress bar.
/*!
* Receives the cancel event of the progress bar when meeting details requested.
#include "ConnectionSettings.h"
#include "StartupSettings.h"
#include "DisplaySettings.h"
+#include "DateTimeSettings.h"
#include "Room.h"
#include <QDomDocument>
#include <QDomElement>
if ( tagName == QString( "dayofweek" ) )
{
- QDomText t = node.ownerDocument().createTextNode( iDateTimeSettings->iDayOfWeek);
+ QDomText t = node.ownerDocument().createTextNode( iDateTimeSettings->dayOfWeek());
e.replaceChild( t, e.firstChild() );
}
else if( tagName == QString( "StandardTimeChangeMoment" ) )
{
- QDomText t = node.ownerDocument().createTextNode( iDateTimeSettings->iStandardTimeChangeMoment.toString("dd.MM.yyyy hh:mm:ss"));
+ QDomText t = node.ownerDocument().createTextNode( iDateTimeSettings->standardTimeChange().toString("ddMMyyyyhhmmss"));
e.replaceChild( t, e.firstChild() );
}
else if( tagName == QString( "DaylightSaveTimeChangeMoment" ) )
{
- QDomText t = node.ownerDocument().createTextNode( iDateTimeSettings->iDaylightSaveTimeChangeMoment.toString("dd.MM.yyyy hh:mm:ss"));
+ QDomText t = node.ownerDocument().createTextNode( iDateTimeSettings->daylightSaveTimeChange().toString("ddMMyyyyhhmmss"));
e.replaceChild( t, e.firstChild() );
}
}
QDateTime daylightSaveTimeChangeMoment;
QString dayOfWeek;
+ // Defaults
+ //standardTimeChangeMoment.fromString("05102009040000", "ddMMyyyyhhmmss");
+ //daylightSaveTimeChangeMoment.fromString("01042010030000", "ddMMyyyyhhmmss");
+ //dayOfWeek.append("sunday");
+
for ( QDomNode node = aXML.firstChild(); !node.isNull(); node = node.nextSibling() )
{
QDomElement e = node.toElement();
if ( tagName == QString( "dayofweek" ) )
{
dayOfWeek = e.text();
+ qDebug() << "Configuration::readDateTimeSettings: " +e.text();
}
- else if( tagName == QString( "StandardTimeChangeMoment" ) )
+ else if( tagName == QString( "standardtimechangemoment" ) )
{
- standardTimeChangeMoment.fromString(e.text(), "dd.MM.yyyy hh:mm:ss");
+ standardTimeChangeMoment = QDateTime::fromString(e.text(), "ddMMyyyyhhmmss");
+ qDebug() << "Configuration::readDateTimeSettings: " +standardTimeChangeMoment.toString("ddMMyyyyhhmmss");
}
- else if( tagName == QString( "DaylightSaveTimeChangeMoment" ) )
+ else if( tagName == QString( "daylightsavetimechangemoment" ) )
{
- daylightSaveTimeChangeMoment.fromString(e.text(), "dd.MM.yyyy hh:mm:ss");
+ daylightSaveTimeChangeMoment = QDateTime::fromString(e.text(), "ddMMyyyyhhmmss");
+ qDebug() << "Configuration::readDateTimeSettings: " +daylightSaveTimeChangeMoment.toString("ddMMyyyyhhmmss");
}
}
#include "DateTimeSettings.h"
+#include <QtDebug>
DateTimeSettings::DateTimeSettings(const QDateTime &aStandardTimeChange, const QDateTime &aDaylightTimeChange, const QString aDayOfWeek)
{
QString DateTimeSettings::standardTimeChange_Time()
{
QTime time = this->iStandardTimeChangeMoment.time();
+
+ qDebug() << "DateTimeSettings::standardTimeChange_Time: "
+ +time.toString("hh:mm:ss");
+
return (time.toString("hh:mm:ss"));
}
QString DateTimeSettings::standardTimeChange_Month()
{
QDate date = this->iStandardTimeChangeMoment.date();
- return (date.toString("MM"));
+
+ qDebug() << "DateTimeSettings::standardTimeChange_Month: "
+ +date.toString("MM");
+
+ return (date.toString("M"));
}
QString DateTimeSettings::standardTimeChange_Day()
{
QDate date = this->iStandardTimeChangeMoment.date();
- return (date.toString("dd"));
+
+ qDebug() << "DateTimeSettings::standardTimeChange_Day: "
+ +date.toString("dd");
+
+ return (date.toString("d"));
}
QString DateTimeSettings::daylightSaveTimeChange_Time()
{
QTime time = this->iDaylightSaveTimeChangeMoment.time();
+
+ qDebug() << "DateTimeSettings::daylightSaveTimeChange_Time: "
+ +time.toString("hh:mm:ss");
+
return (time.toString("hh:mm:ss"));
}
QString DateTimeSettings::daylightSaveTimeChange_Month()
{
QDate date = this->iDaylightSaveTimeChangeMoment.date();
- return (date.toString("MM"));
+
+ qDebug() << "DateTimeSettings::daylightSaveTimeChange_Month: "
+ +date.toString("MM");
+
+ return (date.toString("M"));
}
QString DateTimeSettings::daylightSaveTimeChange_Day()
{
QDate date = this->iDaylightSaveTimeChangeMoment.date();
- return (date.toString("dd"));
+
+ qDebug() << "DateTimeSettings::daylightSaveTimeChange_Day: "
+ +date.toString("dd");
+
+ return (date.toString("d"));
}
void DateTimeSettings::setDaylightSaveTimeChange(const QDateTime &aDaylightSaveTimeChange)
{
this->iDaylightSaveTimeChangeMoment = aDaylightSaveTimeChange;
+ qDebug() << "DateTimeSettings::setDaylightSaveTimeChange: "
+ +this->iDaylightSaveTimeChangeMoment.toString("ddMMyyyyhhmmss");
}
void DateTimeSettings::setStandardTimeChange(const QDateTime &aStandardTimeChange)
{
this->iStandardTimeChangeMoment = aStandardTimeChange;
+ qDebug() << "DateTimeSettings::setStandardTimeChange: "
+ +this->iStandardTimeChangeMoment.toString("ddMMyyyyhhmmss");
}
void DateTimeSettings::setDayOfWeek(const QString aDay)
{
this->iDayOfWeek = aDay;
+ qDebug() << "DateTimeSettings::setDayOfWeek: "
+ +this->iDayOfWeek;
}
QString DateTimeSettings::dayOfWeek()
{
+
+ qDebug() << "DateTimeSettings::dayOfWeek: " +this->iDayOfWeek;
+
return(this->iDayOfWeek);
}
#include <QUrl>
+#include <time.h>
#include "MessagingUtils.h"
#include "Meeting.h"
#include "Configuration.h"
+#include "DateTimeSettings.h"
/*
* BaseMessage class functions
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 );
#define ACTION_URL "http://schemas.microsoft.com/exchange/services/2006/messages/"
//Set MessagingUtils Debug on/off
-//#define MU_DEBUG
-#undef MU_DEBUG
+#define MU_DEBUG
+//#undef MU_DEBUG
class Meeting;
class Room;
}
iModeToggler = new OperationModeToggler( iMode, iSettings, iAlarmSender, iConfigurator, iDataStorage );
connect( iModeToggler, SIGNAL( finished() ), this, SLOT( modeChanged() ) );
- connect( iModeToggler, SIGNAL( error( DeviceManager::ErrorCode ) ), this, SLOT( errorSender( DeviceManager::ErrorCode ) ) );
+ connect( iModeToggler, SIGNAL( error( DeviceManager::ErrorCode, const QString & ) ),
+ this, SLOT( errorSender( DeviceManager::ErrorCode, const QString & ) ) );
connect( iModeToggler, SIGNAL( changingMode( const QString & ) ), this, SIGNAL( changingMode( const QString & ) ) );
connect( iModeToggler, SIGNAL( toggleErrorSending( bool ) ), this, SLOT( toggleErrorSending( bool ) ) );
iModeToggler->start();
void DeviceManager::toggleErrorSending( bool aToggle )
{
+ qDebug() << "DeviceManager::toggleErrorSending( bool )";
iSendErrorMessages = aToggle;
}
void DeviceManager::modeChanged()
{
+ qDebug() << "DeviceManager::modeChanged()";
if( iModeToggler != 0 ) {
if ( iModeToggler->success() ) //mode changing went well
iConfigurator->restartDevice();
else
- emit changingModeFailed();
+ emit changeModeFailed();
delete iModeToggler;
iModeToggler = 0;
}
#include <QObject>
#include <QStringList>
+#include <QMetaType>
class AlarmSender;
class HWKeyListener;
/*!
* Enumeration of errors
*/
+
enum ErrorCode
{
FileCreationFailed, /*!< File couldn't be created. */
/*!
* Signal. Emitted if the operation mode change fails.
*/
- void changingModeFailed();
+ void changeModeFailed();
private slots:
//! Slot. Handles "full screen"-hardware key presses.
};
+Q_DECLARE_METATYPE( DeviceManager::ErrorCode )
+
#endif /*DEVICEMANAGER_H_*/
iSuccess( true )
{
qDebug() << "OperationModeToggler::OperationModeToggler( ... )";
+
+ qRegisterMetaType<DeviceManager::ErrorCode>("DeviceManager::ErrorCode");
+
+ connect( iAlarmSender, SIGNAL( alarmSendingFailed( DeviceManager::ErrorCode, const QString& ) ),
+ this, SIGNAL( error( DeviceManager::ErrorCode, const QString& ) ) );
+ connect( iConfigurator, SIGNAL( configuringError( DeviceManager::ErrorCode ) ),
+ this, SLOT( createError( DeviceManager::ErrorCode ) ) );
+ connect( iDataStorage, SIGNAL( dataStorageInitFailed( DeviceManager::ErrorCode ) ),
+ this, SLOT( createError( DeviceManager::ErrorCode ) ) );
}
OperationModeToggler::~OperationModeToggler()
{
case DeviceManager::EmptyMode:
// error occured. Mode cannot be changed
- emit error( DeviceManager::ModeNotFetched );
+ createError( DeviceManager::ModeNotFetched );
iSuccess = false;
return;
case DeviceManager::StandAloneMode:
emit changingMode( "Storing information about the new operation mode." );
sleep( 2 );
if( !storeOperationMode( DeviceManager::KioskMode, iDataStorage ) ) {
- emit error( DeviceManager::ModeNotStored );
+ createError( DeviceManager::ModeNotStored );
iSuccess = false;
}
}
emit changingMode( "Storing information about the new operation mode." );
sleep( 2 );
if( !storeOperationMode( DeviceManager::StandAloneModeInProgress, iDataStorage ) ) {
- emit error( DeviceManager::ModeNotStored );
+ createError( DeviceManager::ModeNotStored );
iSuccess = false;
}
}
bool OperationModeToggler::success()
{
+ qDebug() << "OperationModeToggler::success()";
return iSuccess;
}
return false;
return true;
}
+
+void OperationModeToggler::createError( DeviceManager::ErrorCode aCode )
+{
+ qDebug() << "OperationModeToggler::createError( DeviceManager::ErrorCode )";
+ QString empty = "";
+ emit error( aCode, empty );
+}
+
static bool storeOperationMode( DeviceManager::OperationMode aMode, DeviceDataStorage *aDataStorage );
signals:
- //! Signal. Emitted if an error occurs during operation mode fetching or reading.
+ //! Signal. Emitted if an error happens.
/*!
- * Signal. Emitted if an error occurs during operation mode fetching or reading. Note that other
- * possible errors are sent by the other instances e.g. alarm sender sents it's own errors.
- * \param aCode The error code.
+ * Signal. Emitted if an error happens.
+ * \param aCode An error code defined by DeviceManager.
+ * \param aAddInfo Possible additional information.
*/
- void error( DeviceManager::ErrorCode aCode );
+ void error( DeviceManager::ErrorCode aCode, const QString &aAddInfo );
//! Signal. Emitted if an error occurs during operation mode changing.
/*!
* Signal. Emitted if an error occurs during operation mode changing. If an error occurs, the operation
* \param aMessage Explains the sub-change
*/
void changingMode( const QString &aMessage );
+
+private slots:
+ //! Slot. Emits an error signal.
+ /*!
+ * Slot. Emits an error signal.
+ * \param aCode The error code.
+ */
+ void createError( DeviceManager::ErrorCode aCode );
private:
DeviceManager::OperationMode iMode;
iProgressBar = new ProgressBar( aText, aCancellable );
iProgressBar->setFixedSize( 600, 125 );
iProgressBar->show();
- connect( iProgressBar, SIGNAL( cancel() ), this, SIGNAL( progressBarCancelled() ) );
+ if( aCancellable )
+ connect( iProgressBar, SIGNAL( cancel() ), this, SIGNAL( progressBarCancelled() ) );
}
//TODO connect connect( iWeeklyView, SIGNAL( observedEventDetected() ), this, SIGNAL( observedEventDetected() ) );