diff -r 675a964f4eb5 -r 35751d3474b7 cryptoservices/filebasedcertificateandkeystores/test/keytool/keytool_controller.cpp --- a/cryptoservices/filebasedcertificateandkeystores/test/keytool/keytool_controller.cpp Tue Jul 21 01:04:32 2009 +0100 +++ b/cryptoservices/filebasedcertificateandkeystores/test/keytool/keytool_controller.cpp Thu Sep 10 14:01:51 2009 +0300 @@ -1,175 +1,186 @@ -/* -* Copyright (c) 2004-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: -* -*/ - - -#include -#include -#include - -#include "keytool_controller.h" -#include "keytool_view.h" -#include "keytool_commands.h" - -#include - -_LIT(KKeyToolResources,"Z:\\Resource\\Apps\\keytool.RSC"); - -CKeyToolController::CKeyToolController(MKeyToolView& aView) : CController(aView) - { - } - -CKeyToolController::~CKeyToolController() - { - delete iEngine; - //iFsSession.Close(); - //iResourceFile.Close(); - } - -/*static*/ CKeyToolController* CKeyToolController::NewLC(MKeyToolView& aView) - { - CKeyToolController* self = new (ELeave) CKeyToolController(aView); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -/*static*/ CKeyToolController* CKeyToolController::NewL(MKeyToolView& aView) - { - CKeyToolController* self = CKeyToolController::NewLC(aView); - CleanupStack::Pop(self); - return self; - } - -void CKeyToolController::ConstructL() - { - User::LeaveIfError(iFsSession.Connect()); // Connect session - - TFileName fileName(KKeyToolResources); - - // open file, leave if error - iResourceFile.OpenL(iFsSession, fileName); - - iResourceFile.ConfirmSignatureL(); - - iEngine = CKeyToolEngine::NewL(this); - } - -void CKeyToolController::HandleCommandL(TInt aCommand, CKeyToolParameters* aParam) - { - switch (aCommand) - { - case KUsageCommand: - { - //iView.DisplayUsage(); - iEngine->DisplayUsageL(aParam); - } - break; - case KListCommand: - { - iEngine->ListL(aParam); - CActiveScheduler::Start(); - } - break; - case KImportCommand: - { - // wildcard support - if (aParam->iDefault) - { - CDir* dirList; - RFs fs; - CleanupClosePushL(fs); - User::LeaveIfError(fs.Connect()); - User::LeaveIfError(fs.GetDir(*aParam->iDefault, KEntryAttNormal, ESortByName, dirList)); - CleanupStack::PushL(dirList); - if (dirList->Count() == 0) - { - DisplayLocalisedMsgL(R_KEYTOOL_ERR_OPENFAIL); - User::Leave(KErrNotFound); - } - else - { - TParse fp; - fs.Parse(*aParam->iDefault,fp); - TPtrC path = fp.DriveAndPath(); - - // It's done its job let's take it out of the pic! - //delete aParam->iDefault; - - for (TInt k = 0; k < dirList->Count(); k++) - { - HBufC* fullPath = HBufC::NewMaxL(path.Length() + KMaxFileName); - TPtr fullPathPtr(fullPath->Des()); - fullPathPtr.SetLength(0); - fullPathPtr.Append(path); - - const TEntry& entry = (*dirList)[k]; - fullPathPtr.Append(entry.iName); - delete aParam->iDefault; - aParam->iDefault = NULL; - - aParam->iDefault = fullPath; - if (dirList->Count() > 1) - { - delete aParam->iLabel; - aParam->iLabel = NULL; - aParam->iLabel = entry.iName.AllocL(); - } - - iEngine->ImportL(aParam); - CActiveScheduler::Start(); - } - } - CleanupStack::PopAndDestroy(dirList); - CleanupStack::PopAndDestroy(&fs); - } - else - { - DisplayLocalisedMsgL(R_KEYTOOL_ERR_KEYFILE); - User::Leave(KErrArgument); - } - } - break; - case KRemoveCommand: - { - iEngine->RemoveL(aParam); - CActiveScheduler::Start(); - } - break; - case KListStoresCommand: - { - iEngine->ListStoresL(aParam); - CActiveScheduler::Start(); - } - break; - case KSetUserCommand: - case KSetManagerCommand: - case KSetAllUsersCommand: - case KRemoveUserCommand: - { - iEngine->SetPolicyL(aParam); - CActiveScheduler::Start(); - iEngine->ListL(aParam); - CActiveScheduler::Start(); - } - break; - default: - { - DisplayLocalisedMsgL(R_KEYTOOL_ERR_COMMAND); - User::Leave(KErrNotSupported); - } - } - } +/* +* Copyright (c) 2004-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: +* +*/ + + +#include +#include +#include + +#include "keytool_controller.h" +#include "keytool_view.h" +#include "keytool_commands.h" + +#include + +_LIT(KKeyToolResources,"Z:\\Resource\\Apps\\keytool.RSC"); + +CKeyToolController::CKeyToolController(MKeyToolView& aView) : CController(aView) + { + } + +CKeyToolController::~CKeyToolController() + { + delete iEngine; + //iFsSession.Close(); + //iResourceFile.Close(); + } + +/*static*/ CKeyToolController* CKeyToolController::NewLC(MKeyToolView& aView) + { + CKeyToolController* self = new (ELeave) CKeyToolController(aView); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +/*static*/ CKeyToolController* CKeyToolController::NewL(MKeyToolView& aView) + { + CKeyToolController* self = CKeyToolController::NewLC(aView); + CleanupStack::Pop(self); + return self; + } + +void CKeyToolController::ConstructL() + { + User::LeaveIfError(iFsSession.Connect()); // Connect session + + TFileName fileName(KKeyToolResources); + + // open file, leave if error + iResourceFile.OpenL(iFsSession, fileName); + + iResourceFile.ConfirmSignatureL(); + + iEngine = CKeyToolEngine::NewL(this); + } + +void CKeyToolController::HandleCommandL(TInt aCommand, CKeyToolParameters* aParam) + { + switch (aCommand) + { + case KUsageCommand: + { + //iView.DisplayUsage(); + iEngine->DisplayUsageL(aParam); + } + break; + case KListCommand: + { + iEngine->ListL(aParam); + CActiveScheduler::Start(); + } + break; + case KImportCommand: + { + // wildcard support + if (aParam->iDefault) + { + CDir* dirList; + RFs fs; + CleanupClosePushL(fs); + User::LeaveIfError(fs.Connect()); + User::LeaveIfError(fs.GetDir(*aParam->iDefault, KEntryAttNormal, ESortByName, dirList)); + CleanupStack::PushL(dirList); + if (dirList->Count() == 0) + { + DisplayLocalisedMsgL(R_KEYTOOL_ERR_OPENFAIL); + User::Leave(KErrNotFound); + } + else + { + TParse fp; + fs.Parse(*aParam->iDefault,fp); + TPtrC path = fp.DriveAndPath(); + + // It's done its job let's take it out of the pic! + //delete aParam->iDefault; + + for (TInt k = 0; k < dirList->Count(); k++) + { + HBufC* fullPath = HBufC::NewMaxL(path.Length() + KMaxFileName); + TPtr fullPathPtr(fullPath->Des()); + fullPathPtr.SetLength(0); + fullPathPtr.Append(path); + + const TEntry& entry = (*dirList)[k]; + fullPathPtr.Append(entry.iName); + delete aParam->iDefault; + aParam->iDefault = NULL; + + aParam->iDefault = fullPath; + if (dirList->Count() > 1) + { + delete aParam->iLabel; + aParam->iLabel = NULL; + aParam->iLabel = entry.iName.AllocL(); + } + + iEngine->ImportL(aParam); + CActiveScheduler::Start(); + } + } + CleanupStack::PopAndDestroy(dirList); + CleanupStack::PopAndDestroy(&fs); + } + else + { + DisplayLocalisedMsgL(R_KEYTOOL_ERR_KEYFILE); + User::Leave(KErrArgument); + } + } + break; + case KRemoveCommand: + { + iEngine->RemoveL(aParam); + CActiveScheduler::Start(); + } + break; + case KListStoresCommand: + { + iEngine->ListStoresL(aParam); + CActiveScheduler::Start(); + } + break; + case KSetUserCommand: + case KSetManagerCommand: + case KSetAllUsersCommand: + case KRemoveUserCommand: + { + iEngine->SetPolicyL(aParam); + CActiveScheduler::Start(); + iEngine->ListL(aParam); + CActiveScheduler::Start(); + } + break; + +#ifdef KEYTOOL + case KMigrateStore: + { + iEngine->MigrateStoreL(aParam); + CActiveScheduler::Start(); + break; + } + +#endif // KEYTOOL + + default: + { + DisplayLocalisedMsgL(R_KEYTOOL_ERR_COMMAND); + User::Leave(KErrNotSupported); + } + } + }