diff -r 000000000000 -r 4e1aa6a622a0 sysstatemgmt/systemstatereferenceplugins/custcmd/src/cmdvalidatertc.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/src/cmdvalidatertc.cpp Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,125 @@ +// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +//Custom command to validate RTC and publish the result using Publish and Subscribe mechanism + +/** + @file + @internalComponent + @released +*/ + +#include "cmdvalidatertc.h" +#include "ssmdebug.h" +#include "ssmuiproviderdll.h" +#include + +CCustomCmdValidateRTC* CCustomCmdValidateRTC::NewL() + { + CCustomCmdValidateRTC* self = new (ELeave) CCustomCmdValidateRTC(); + return self; + } + +CCustomCmdValidateRTC::CCustomCmdValidateRTC() + :CActive(EPriorityNormal) + { + CActiveScheduler::Add(this); + } + +CCustomCmdValidateRTC::~CCustomCmdValidateRTC() + { + //Cancel the request if there is any + ExecuteCancel(); + } + +TInt CCustomCmdValidateRTC::Initialize(CSsmCustomCommandEnv* /*aCmdEnv*/) + { + iPckgValidateRtc = EFalse; + + //Connect RSsmRtcAdaptation + return iSsmRtcAdaptation.Connect(); + } + +void CCustomCmdValidateRTC::Close() + { + //Cancel the request if there is any + ExecuteCancel(); + + //Close RSsmRtcAdaptation + iSsmRtcAdaptation.Close(); + } + +void CCustomCmdValidateRTC::Release() + { + delete this; + } + +void CCustomCmdValidateRTC::Execute(const TDesC8& /*aParams*/, TRequestStatus& aStatus) + { + //Set the user request to pending + aStatus = KRequestPending; + iExecuteRequest = &aStatus; + + //Request RTC adaptation to validate RTC + iSsmRtcAdaptation.ValidateRtc(iPckgValidateRtc, iStatus); + SetActive(); + } + +void CCustomCmdValidateRTC::RunL() + { + TInt result = iStatus.Int(); + if (KErrNone == result) + { + //Set the PS value for RTC validation + result = RProperty::Set(CSsmUiSpecific::ValidateRTCPropertyCategory(), + CSsmUiSpecific::ValidateRTCPropertyKey(), iPckgValidateRtc()); + if(KErrNone != result) + { + DEBUGPRINT2A("Setting PS key value for Validating RTC custom cmd failed with error: %d", result); + } + } + CompleteClientRequest(result); + } + +void CCustomCmdValidateRTC::DoCancel() + { + //Cancel the request if there is any + iSsmRtcAdaptation.Cancel(); + } + +TInt CCustomCmdValidateRTC::RunError(TInt aError) + { + DEBUGPRINT2A("CCustomCmdValidateRTC::RunError received error: %d", aError); + CompleteClientRequest(aError); + + // We've returned the error via the status so return KErrNone here. + return KErrNone; + } + +void CCustomCmdValidateRTC::ExecuteCancel() + { + Cancel(); + CompleteClientRequest(KErrCancel); + } + +void CCustomCmdValidateRTC::CompleteClientRequest(TInt aError) + { + if (iExecuteRequest) + { + //Complete the user request with the given completion code + User::RequestComplete(iExecuteRequest, aError); + + //Reset iExecuteRequest + iExecuteRequest = NULL; + } + }