diff -r cd501b96611d -r ece3df019add authenticationservices/authenticationserver/test/reftestplugin/pinplugin/pinplugindialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/authenticationservices/authenticationserver/test/reftestplugin/pinplugin/pinplugindialog.cpp Tue Nov 24 09:06:03 2009 +0200 @@ -0,0 +1,192 @@ +/* +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* CPinPluginDialog implementation +* +*/ + + +/** + @file +*/ + +#include "pinplugindialog.h" +#include + +CPinPluginDialog::~CPinPluginDialog() + { + Deque(); + iNotifier.Close(); + } + +CPinPluginDialog* CPinPluginDialog::NewL() + { + CPinPluginDialog* self = CPinPluginDialog::NewLC(); + CleanupStack::Pop(self); + return self; + } + +CPinPluginDialog* CPinPluginDialog::NewLC() + { + CPinPluginDialog* self = new (ELeave) CPinPluginDialog(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CPinPluginDialog::CPinPluginDialog(): CActive(EPriorityStandard) + { + CActiveScheduler::Add(this); + } + +void CPinPluginDialog::ConstructL() + { + User::LeaveIfError(iNotifier.Connect()); + } + +void CPinPluginDialog::PinIdentify(const TInt aMinLength, const TInt aMaxLength, const TBool aRetry, + TPinValue& aPinValue, TPinPluginDialogResult& aResult, TRequestStatus& aStatus) + { + iClientPinValue = &aPinValue; + iClientPinDialogResult = &aResult; + iState = KPinPluginIdentify; + DoInitialize(EPinPluginIdentify, aStatus); + TPinIdentifyInput pinInput; + pinInput.iOperation = EPinPluginIdentify; + pinInput.iRetry = aRetry; + pinInput.iMinLength = aMinLength; + pinInput.iMaxLength = aMaxLength; + TPinIdentifyInputBuf pinInputBuf(pinInput); + iPinIdentifyInputBuf.Copy(pinInputBuf); + RequestDialog(iPinIdentifyInputBuf, iPinDialogOutputBuf); + } + + + +void CPinPluginDialog::PinTraining(const TPinPluginTrainingMessage aType, const RPointerArray& aPinNumbers, + const TInt aMinLength, const TInt aMaxLength, TInt& aIndex, TInt& aCurrentLength, + TPinPluginDialogResult& aResult, TRequestStatus& aStatus) + { + iClientPinIndex = &aIndex; + iClientPinDialogResult = &aResult; + iClientNewPinLength = &aCurrentLength; + iState = KPinPluginTraining; + DoInitialize(EPinPluginTraining, aStatus); + TPinTrainingInput pinInput; + pinInput.iOperation = EPinPluginTraining; + pinInput.iMessage = aType; + pinInput.iMinLength = aMinLength; + pinInput.iMaxLength = aMaxLength; + pinInput.iCurrentPinLength = aCurrentLength; + pinInput.iPinValue1 = *(aPinNumbers[0]); + pinInput.iPinValue2 = *(aPinNumbers[1]); + pinInput.iPinValue3 = *(aPinNumbers[2]); + pinInput.iPinValue4 = *(aPinNumbers[3]); + TPinTrainingInputBuf pinInputBuf(pinInput); + iPinTrainingInputBuf.Copy(pinInputBuf); + RequestDialog(iPinTrainingInputBuf, iPinDialogOutputBuf); + } + + +void CPinPluginDialog::PinInfo(const TPinPluginInfoMessage aMessage, TRequestStatus& aStatus) + { + iState = KPinPluginInfo; + DoInitialize(EPinPluginInfo, aStatus); + TPinInfoInput pinInput; + pinInput.iOperation = EPinPluginInfo; + pinInput.iMessage = aMessage; + TPinInfoInputBuf pinInputBuf(pinInput); + iPinInfoInputBuf.Copy(pinInputBuf); + RequestDialog(iPinInfoInputBuf, iPinDialogOutputBuf); + } + +void CPinPluginDialog::DoInitialize(const TPinPluginDialogOperation aOperation, TRequestStatus& aStatus) + { + iCurrentOperation = aOperation; + + aStatus = KRequestPending; + iClientStatus = &aStatus; + } + + +void CPinPluginDialog::RequestDialog(const TDesC8& aData, TDes8& aResponse) + { + iNotifier.StartNotifierAndGetResponse(iStatus, KUidPinPluginDialogNotifier, + aData, aResponse); + SetActive(); + } + +void CPinPluginDialog::DoCancel() + { + iNotifier.CancelNotifier(KUidPinPluginDialogNotifier); + if (iClientStatus) + { + User::RequestComplete(iClientStatus, KErrCancel); + } + } + +void CPinPluginDialog::RunL() + { + switch (iState) + { + case KPinPluginInfo: + { + //ignore the output as Info Dialog won't wait for user inputs + } + break; + case KPinPluginTraining: + { + TPinDialogOutput& pinDialogOutput = iPinDialogOutputBuf(); + *iClientPinIndex = pinDialogOutput.iIndex; + *iClientNewPinLength = pinDialogOutput.iNewPinLength; + *iClientPinDialogResult = pinDialogOutput.iResult; + if(iStatus.Int() != KErrNone) + { + User::RequestComplete(iClientStatus, KErrAuthServRegistrationFailed); + return; + } + } + break; + case KPinPluginIdentify: + { + TPinDialogOutput& pinDialogOutput = iPinDialogOutputBuf(); + *iClientPinValue = pinDialogOutput.iPinValue; + *iClientPinDialogResult = pinDialogOutput.iResult; + } + break; + default: + { + User::Leave(KErrNotSupported); + } + break; + } + User::RequestComplete(iClientStatus, iStatus.Int()); + } + +TInt CPinPluginDialog::RunError(TInt aError) + { + if (iClientStatus) + { + User::RequestComplete(iClientStatus, aError); + } + return KErrNone; + } + + + + + + + +