profilesservices/ProfileEngine/WrapperSrc/CProEngProfileNameImpl.cpp
changeset 0 8c5d936e5675
child 8 f62c3a3d66b8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/profilesservices/ProfileEngine/WrapperSrc/CProEngProfileNameImpl.cpp	Thu Dec 17 08:52:52 2009 +0200
@@ -0,0 +1,117 @@
+/*
+* Copyright (c) 2002-2004 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:  Implementation of CProEngProfileNameImpl.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CProEngProfileNameImpl.h"
+#include    <MProfileName.h>
+#include    <MProEngProfileNameArray.h>
+#include    "MProfileSetName.h"
+#include    "CProEngEngineImpl.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CProEngProfileNameImpl::CProEngProfileNameImpl
+// -----------------------------------------------------------------------------
+//
+CProEngProfileNameImpl::CProEngProfileNameImpl(
+        const MProfileName& aProfileName,
+        MProfileSetName& aProfileSetName,
+        CProEngEngineImpl& aEngine,
+        TBool aModifiable )
+    : iProfileName( aProfileName ), iProfileSetName( aProfileSetName ),
+      iEngine( aEngine), iModifiable( aModifiable )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CProEngProfileNameImpl::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CProEngProfileNameImpl* CProEngProfileNameImpl::NewL(
+        const MProfileName& aProfileName,
+        MProfileSetName& aProfileSetName,
+        CProEngEngineImpl& aEngine,
+        TBool aModifiable )
+    {
+    return new ( ELeave ) CProEngProfileNameImpl(
+            aProfileName, aProfileSetName, aEngine, aModifiable );
+    }
+
+// Destructor
+CProEngProfileNameImpl::~CProEngProfileNameImpl()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CProEngProfileNameImpl::Id
+// -----------------------------------------------------------------------------
+//
+TInt CProEngProfileNameImpl::Id() const
+    {
+    return iProfileName.Id();
+    }
+
+// -----------------------------------------------------------------------------
+// CProEngProfileNameImpl::Name
+// -----------------------------------------------------------------------------
+//
+const TDesC& CProEngProfileNameImpl::Name() const
+    {
+    return iProfileName.Name();
+    }
+
+// -----------------------------------------------------------------------------
+// CProEngProfileNameImpl::SetNameL
+// -----------------------------------------------------------------------------
+//
+TInt CProEngProfileNameImpl::SetNameL( const TDesC& aName )
+    {
+    if( !iModifiable )
+        {
+        return KErrAccessDenied;
+        }
+
+    if( AlreadyExistsL( aName ) )
+        {
+        return KErrAlreadyExists;
+        }
+
+    iProfileSetName.SetNameL( aName );
+
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CProEngProfileNameImpl::AlreadyExistsL
+// -----------------------------------------------------------------------------
+//
+TBool CProEngProfileNameImpl::AlreadyExistsL( const TDesC& aName )
+    {
+    MProEngProfileNameArray* existingNames( iEngine.ProfileNameArrayLC() );
+    TInt result( existingNames->FindByName( aName ) );
+    TInt resId( existingNames->ProfileId( result ) );
+    CleanupStack::PopAndDestroy(); // existingNames
+
+    return ( ( result != KErrNotFound ) && ( resId != Id() ) );
+    }
+
+//  End of File
+