#include <QtDebug>
#include <QStringList>
-DeviceManager::DeviceManager( StartupSettings *aSettings )
+DeviceManager::DeviceManager( StartupSettings *aSettings ) :
+ iAlarmSender( 0 ),
+ iHWKeyListener( 0 ),
+ iSettings( 0 ),
+ iDataStorage( 0 ),
+ iConfigurator( 0 ),
+ iModeToggler( 0 )
{
qDebug() << "DeviceManager::DeviceManager( StartupSettings * )";
void DeviceManager::initDeviceManager()
{
qDebug() << "DeviceManager::init()";
+
+ qRegisterMetaType<DeviceManager::ErrorCode>("DeviceManager::ErrorCode");
+
iDataStorage = new DeviceDataStorage();
connect( iDataStorage, SIGNAL( dataStorageInitFailed( DeviceManager::ErrorCode ) ),
this, SLOT( errorSender( DeviceManager::ErrorCode ) ) );
iMode = EmptyMode;
iHWKeyListener = new HWKeyListener();
- handleKeyPresses( true );
+ handleHWKeyPresses( true );
}
DeviceManager::OperationMode DeviceManager::currentOperationMode()
}
}
-void DeviceManager::changeMode( bool aChange )
+void DeviceManager::changeMode()
{
qDebug() << "void DeviceManager::changeMode()";
- if( !aChange ) {
- handleKeyPresses( true );
- return;
+ if( iModeToggler == 0 ) {
+ iModeToggler = new OperationModeToggler( iMode, iSettings, iAlarmSender, iConfigurator, iDataStorage );
+ connect( iModeToggler, SIGNAL( finished() ), this, SLOT( modeChanged() ) );
+ 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();
}
- iModeToggler = new OperationModeToggler( iMode, iSettings, iAlarmSender, iConfigurator, iDataStorage );
- connect( iModeToggler, SIGNAL( finished() ), this, SLOT( modeChanged() ) );
- 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();
}
bool DeviceManager::setCurrentOperationMode()
{
- qDebug() << "DeviceManager::currentOperationMode()";
+ qDebug() << "DeviceManager::setCurrentOperationMode()";
QStringList modeResult;
if ( !iDataStorage->readData( iDataStorage->dataSectionToString( DeviceDataStorage::DeviceMode ), modeResult ) )
{
return true;
}
-void DeviceManager::handleKeyPresses( bool aHandle )
-{
- qDebug() << "DeviceManager::handleKeyPresses( bool )";
- if ( !aHandle )
- disconnect( iHWKeyListener, SIGNAL( HWKeyFullScreenPressed() ), this, SLOT( HWKeyFullScreenPressed() ) );
- else
- connect( iHWKeyListener, SIGNAL( HWKeyFullScreenPressed() ), this, SLOT( HWKeyFullScreenPressed() ) );
-}
-
void DeviceManager::HWKeyFullScreenPressed()
{
qDebug() << "DeviceManager::HWKeyFullScreenPressed()";
-
+ handleHWKeyPresses( false );
// no more key presses before this one is handled
- handleKeyPresses( false );
-
+ //handleKeyPresses( false );
OperationMode nextMode;
- switch ( iMode )
- {
+ switch ( iMode ) {
case KioskMode:
nextMode = StandAloneMode;
break;
}
if ( nextMode != EmptyMode )
emit changeModeOrdered( nextMode );
- else
- handleKeyPresses( true );
}
void DeviceManager::errorSender( DeviceManager::ErrorCode aErrorCode, const QString &aAddInfo )
{
qDebug() << "DeviceManager::modeChanged()";
if( iModeToggler != 0 ) {
- if ( iModeToggler->success() ) //mode changing went well
+ if ( iModeToggler->success() ) {//mode changing went well
+ emit changingMode( "Restarting device" );
+ sleep( 2 );
iConfigurator->restartDevice();
+ }
else
emit changeModeFailed();
delete iModeToggler;
iModeToggler = 0;
}
-
- //in case device restarting fails we just continue
- handleKeyPresses( true );
-}
\ No newline at end of file
+ handleHWKeyPresses( true );
+}
+
+void DeviceManager::handleHWKeyPresses( bool aToggle )
+{
+ qDebug() << "DeviceManager::handleHWKeyPresses( bool )";
+ if( aToggle )
+ connect( iHWKeyListener, SIGNAL( HWKeyFullScreenPressed() ), this, SLOT( HWKeyFullScreenPressed() ) );
+ else
+ disconnect( iHWKeyListener, SIGNAL( HWKeyFullScreenPressed() ), this, SLOT( HWKeyFullScreenPressed() ) );
+}