diff -r b3cee849fa46 -r fad26422216a creator/src/creator_imps.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/creator/src/creator_imps.cpp Wed Sep 01 12:30:35 2010 +0100 @@ -0,0 +1,260 @@ +/* +* Copyright (c) 2008 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: +* +*/ + + +#ifdef __PRESENCE + +#include "creator_imps.h" +#include "creator_traces.h" + +#include + +static const TInt KIMPSFieldLength = 128; + +_LIT(KCreatorIMPSPrefixName, "CR_"); + + +//---------------------------------------------------------------------------- + +CIMPSParameters::CIMPSParameters() + { + LOGSTRING("Creator: CIMPSParameters::CIMPSParameters"); + + iServerName = HBufC::New(KIMPSFieldLength); + iServerURL = HBufC::New(KIMPSFieldLength); + iServerUsername = HBufC::New(KIMPSFieldLength); + iServerPassword = HBufC::New(KIMPSFieldLength); + iServerAccessPointName = HBufC::New(KIMPSFieldLength); + // User needs to set connectionmethod manually to be able to use the IMPS setting + iServerAccessPointName->Des().Copy(_L("DEFAULT-IAP")); + } + +CIMPSParameters::~CIMPSParameters() + { + LOGSTRING("Creator: CIMPSParameters::~CIMPSParameters"); + + delete iServerAccessPointName; + delete iServerPassword; + delete iServerUsername; + delete iServerURL; + delete iServerName; + } + +void CIMPSParameters::SetRandomNameL(CCreatorEngine& aEngine) + { + if(iServerName == 0) + { + iServerName = HBufC::New(KIMPSFieldLength); + } + TBuf<160> company = aEngine.RandomString(CCreatorEngine::ECompany); + iServerName->Des() = KCreatorIMPSPrefixName; + iServerName->Des().Append( company ); + iServerName->Des().Append( _L(" #") ); + iServerName->Des().AppendNum( aEngine.RandomNumber(1000, 9999) ); + } + +void CIMPSParameters::SetRandomUrlL(CCreatorEngine& aEngine) + { + if(iServerURL == 0) + { + iServerURL = HBufC::New(KIMPSFieldLength); + } + TBuf<160> company = aEngine.RandomString(CCreatorEngine::ECompany); + iServerURL->Des() = _L("http://imps."); + iServerURL->Des().Append( company ); + iServerURL->Des().Append( _L(".com:18080/CSP/csp") ); + } + +void CIMPSParameters::SetRandomUsernameL(CCreatorEngine& aEngine) + { + iServerUsername->Des() = aEngine.RandomString(CCreatorEngine::EFirstName); + iServerUsername->Des().LowerCase(); + } + +void CIMPSParameters::SetRandomPasswordL(CCreatorEngine& aEngine) + { + iServerPassword->Des() = aEngine.RandomString(CCreatorEngine::ESurname); + iServerPassword->Des().LowerCase(); + } +void CIMPSParameters::SetDefaultAccessPointL() + { + iServerAccessPointName->Des().Copy(_L("DEFAULT-IAP")); + } +//---------------------------------------------------------------------------- + +CCreatorIMPS* CCreatorIMPS::NewL(CCreatorEngine* aEngine) + { + CCreatorIMPS* self = CCreatorIMPS::NewLC(aEngine); + CleanupStack::Pop(self); + return self; + } + +CCreatorIMPS* CCreatorIMPS::NewLC(CCreatorEngine* aEngine) + { + CCreatorIMPS* self = new (ELeave) CCreatorIMPS; + CleanupStack::PushL(self); + self->ConstructL(aEngine); + return self; + } + +CCreatorIMPS::CCreatorIMPS() + { + } + +void CCreatorIMPS::ConstructL(CCreatorEngine* aEngine) + { + LOGSTRING("Creator: CCreatorIMPS::ConstructL"); + + iEngine = aEngine; + + iIMPSSAPSettingsStore = CIMPSSAPSettingsStore::NewL(); + } + +CCreatorIMPS::~CCreatorIMPS() + { + LOGSTRING("Creator: CCreatorIMPS::~CCreatorIMPS"); + + if ( iEngine && iEntryIds.Count() ) + { + TRAP_IGNORE( iEngine->WriteEntryIdsToStoreL( iEntryIds, KUidDictionaryUidIMPS ) ); + } + iEntryIds.Reset(); + iEntryIds.Close(); + + delete iIMPSSAPSettingsStore; + + if (iParameters) + delete iParameters; + } + +//---------------------------------------------------------------------------- + +TBool CCreatorIMPS::AskDataFromUserL(TInt aCommand, TInt& aNumberOfEntries) + { + LOGSTRING("Creator: CCreatorIMPS::AskDataFromUserL"); + if ( aCommand == ECmdDeleteIMPSs ) + { + return iEngine->YesNoQueryDialogL( _L("Delete all IMPS server entries?") ); + } + else if ( aCommand == ECmdDeleteCreatorIMPSs ) + { + return iEngine->YesNoQueryDialogL( _L("Delete all IMPS server entries created with Creator?") ); + } + return iEngine->EntriesQueryDialogL(aNumberOfEntries, _L("How many entries to create?")); + } + + +//---------------------------------------------------------------------------- + +TInt CCreatorIMPS::CreateIMPSServerEntryL(CIMPSParameters *aParameters) + { + LOGSTRING("Creator: CCreatorIMPS::CreateIMPSServerEntryL"); + + // clear any existing parameter definations + delete iParameters; + iParameters = NULL; + + CIMPSParameters* parameters = aParameters; + + // random data needed if no predefined data available + if (!parameters) + { + iParameters = new(ELeave) CIMPSParameters; + parameters = iParameters; + parameters->SetRandomNameL(*iEngine); + parameters->SetRandomUrlL(*iEngine); + parameters->SetRandomUsernameL(*iEngine); + parameters->SetRandomPasswordL(*iEngine); + parameters->SetDefaultAccessPointL(); + } + + TInt err = KErrNone; + + // set data to save item + CIMPSSAPSettings* settings = CIMPSSAPSettings::NewLC(); + TUint32 iapId = iEngine->AccessPointNameToIdL(parameters->iServerAccessPointName->Des(), ETrue ); + err = settings->SetAccessPoint( iapId ); + if( err != KErrNone ) + { + LOGSTRING("Creator: CCreatorIMPS::CreateIMPSServerEntryL - Unable to resolve access point."); + err = KErrNone; + } + settings->SetSAPNameL( parameters->iServerName->Des() ); + settings->SetSAPAddressL( parameters->iServerURL->Des() ); + settings->SetSAPUserIdL( parameters->iServerUsername->Des() ); + settings->SetSAPUserPasswordL( parameters->iServerPassword->Des() ); + + // save the item + TRAP(err, iIMPSSAPSettingsStore->StoreNewSAPL( settings, EIMPSIMAccessGroup )); + + // id has been generated, store it for being able to delete + // only entries created with Creator + iEntryIds.Append( settings->Uid() ); + + TRAP(err, iIMPSSAPSettingsStore->StoreNewSAPL( settings, EIMPSPECAccessGroup )); + + // id has been generated, store it for being able to delete + // only entries created with Creator + iEntryIds.Append( settings->Uid() ); + + CleanupStack::PopAndDestroy(); //settings + return err; + } + + +//---------------------------------------------------------------------------- +void CCreatorIMPS::DeleteAllL() + { + LOGSTRING("Creator: CCreatorIMPS::DeleteAllL"); + CIMPSSAPSettingsList* imps = CIMPSSAPSettingsList::NewLC(); + iIMPSSAPSettingsStore->PopulateSAPSettingsListL( *imps, EIMPSAccessFilterAll ); + for ( TInt i = 0; i < imps->Count(); i++ ) + { + iIMPSSAPSettingsStore->DeleteSAPL( imps->UidForIndex( i ) ); + } + CleanupStack::PopAndDestroy( imps ); + + // reset must be done here, because iEntryIds is stored in destructor + iEntryIds.Reset(); + + // all entries deleted, remove the IMPS related registry + iEngine->RemoveStoreL( KUidDictionaryUidIMPS ); + } + +//---------------------------------------------------------------------------- +void CCreatorIMPS::DeleteAllCreatedByCreatorL() + { + LOGSTRING("Creator: CCreatorIMPS::DeleteAllCreatedByCreatorL"); + iEntryIds.Reset(); + + // fetch ids of entries created by Creator + iEngine->ReadEntryIdsFromStoreL( iEntryIds, KUidDictionaryUidIMPS ); + + // delete entries + for ( TInt i = 0; i < iEntryIds.Count(); i++ ) + { + TRAP_IGNORE( iIMPSSAPSettingsStore->DeleteSAPL( iEntryIds[i] ) ); + } + // reset must be done here, because iEntryIds is stored in destructor + iEntryIds.Reset(); + + // all entries deleted, remove the IMPS related registry + iEngine->RemoveStoreL( KUidDictionaryUidIMPS ); + } + +#endif //__PRESENCE +