sl@0: /* sl@0: * Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of the License "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * sl@0: */ sl@0: sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: #include "keytool_controller.h" sl@0: #include "keytool_view.h" sl@0: #include "keytool_commands.h" sl@0: sl@0: #include sl@0: sl@0: _LIT(KKeyToolResources,"Z:\\Resource\\Apps\\keytool.RSC"); sl@0: sl@0: CKeyToolController::CKeyToolController(MKeyToolView& aView) : CController(aView) sl@0: { sl@0: } sl@0: sl@0: CKeyToolController::~CKeyToolController() sl@0: { sl@0: delete iEngine; sl@0: //iFsSession.Close(); sl@0: //iResourceFile.Close(); sl@0: } sl@0: sl@0: /*static*/ CKeyToolController* CKeyToolController::NewLC(MKeyToolView& aView) sl@0: { sl@0: CKeyToolController* self = new (ELeave) CKeyToolController(aView); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(); sl@0: return self; sl@0: } sl@0: sl@0: /*static*/ CKeyToolController* CKeyToolController::NewL(MKeyToolView& aView) sl@0: { sl@0: CKeyToolController* self = CKeyToolController::NewLC(aView); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: void CKeyToolController::ConstructL() sl@0: { sl@0: User::LeaveIfError(iFsSession.Connect()); // Connect session sl@0: sl@0: TFileName fileName(KKeyToolResources); sl@0: sl@0: // open file, leave if error sl@0: iResourceFile.OpenL(iFsSession, fileName); sl@0: sl@0: iResourceFile.ConfirmSignatureL(); sl@0: sl@0: iEngine = CKeyToolEngine::NewL(this); sl@0: } sl@0: sl@0: void CKeyToolController::HandleCommandL(TInt aCommand, CKeyToolParameters* aParam) sl@0: { sl@0: switch (aCommand) sl@0: { sl@0: case KUsageCommand: sl@0: { sl@0: //iView.DisplayUsage(); sl@0: iEngine->DisplayUsageL(aParam); sl@0: } sl@0: break; sl@0: case KListCommand: sl@0: { sl@0: iEngine->ListL(aParam); sl@0: CActiveScheduler::Start(); sl@0: } sl@0: break; sl@0: case KImportCommand: sl@0: { sl@0: // wildcard support sl@0: if (aParam->iDefault) sl@0: { sl@0: CDir* dirList; sl@0: RFs fs; sl@0: CleanupClosePushL(fs); sl@0: User::LeaveIfError(fs.Connect()); sl@0: User::LeaveIfError(fs.GetDir(*aParam->iDefault, KEntryAttNormal, ESortByName, dirList)); sl@0: CleanupStack::PushL(dirList); sl@0: if (dirList->Count() == 0) sl@0: { sl@0: DisplayLocalisedMsgL(R_KEYTOOL_ERR_OPENFAIL); sl@0: User::Leave(KErrNotFound); sl@0: } sl@0: else sl@0: { sl@0: TParse fp; sl@0: fs.Parse(*aParam->iDefault,fp); sl@0: TPtrC path = fp.DriveAndPath(); sl@0: sl@0: // It's done its job let's take it out of the pic! sl@0: //delete aParam->iDefault; sl@0: sl@0: for (TInt k = 0; k < dirList->Count(); k++) sl@0: { sl@0: HBufC* fullPath = HBufC::NewMaxL(path.Length() + KMaxFileName); sl@0: TPtr fullPathPtr(fullPath->Des()); sl@0: fullPathPtr.SetLength(0); sl@0: fullPathPtr.Append(path); sl@0: sl@0: const TEntry& entry = (*dirList)[k]; sl@0: fullPathPtr.Append(entry.iName); sl@0: delete aParam->iDefault; sl@0: aParam->iDefault = NULL; sl@0: sl@0: aParam->iDefault = fullPath; sl@0: if (dirList->Count() > 1) sl@0: { sl@0: delete aParam->iLabel; sl@0: aParam->iLabel = NULL; sl@0: aParam->iLabel = entry.iName.AllocL(); sl@0: } sl@0: sl@0: iEngine->ImportL(aParam); sl@0: CActiveScheduler::Start(); sl@0: } sl@0: } sl@0: CleanupStack::PopAndDestroy(dirList); sl@0: CleanupStack::PopAndDestroy(&fs); sl@0: } sl@0: else sl@0: { sl@0: DisplayLocalisedMsgL(R_KEYTOOL_ERR_KEYFILE); sl@0: User::Leave(KErrArgument); sl@0: } sl@0: } sl@0: break; sl@0: case KRemoveCommand: sl@0: { sl@0: iEngine->RemoveL(aParam); sl@0: CActiveScheduler::Start(); sl@0: } sl@0: break; sl@0: case KListStoresCommand: sl@0: { sl@0: iEngine->ListStoresL(aParam); sl@0: CActiveScheduler::Start(); sl@0: } sl@0: break; sl@0: case KSetUserCommand: sl@0: case KSetManagerCommand: sl@0: case KSetAllUsersCommand: sl@0: case KRemoveUserCommand: sl@0: { sl@0: iEngine->SetPolicyL(aParam); sl@0: CActiveScheduler::Start(); sl@0: iEngine->ListL(aParam); sl@0: CActiveScheduler::Start(); sl@0: } sl@0: break; sl@0: sl@0: #ifdef KEYTOOL sl@0: case KMigrateStore: sl@0: { sl@0: iEngine->MigrateStoreL(aParam); sl@0: CActiveScheduler::Start(); sl@0: break; sl@0: } sl@0: sl@0: #endif // KEYTOOL sl@0: sl@0: default: sl@0: { sl@0: DisplayLocalisedMsgL(R_KEYTOOL_ERR_COMMAND); sl@0: User::Leave(KErrNotSupported); sl@0: } sl@0: } sl@0: }