sysstatemgmt/systemstatereferenceplugins/custcmd/src/cmdvalidatertc.cpp
changeset 0 4e1aa6a622a0
--- /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; 
+        }
+    }