--- /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 <e32property.h>
+
+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;
+ }
+ }