xcfw/src/gecodefaultobjectfactory.cpp
changeset 0 79c6a41cd166
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xcfw/src/gecodefaultobjectfactory.cpp	Thu Dec 17 08:54:17 2009 +0200
@@ -0,0 +1,233 @@
+/*
+* Copyright (c) 2002-2005 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 GECODefaultObjectFactory
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "gecodefaultobjectfactory.h"
+#include    "gecodefaultobject.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CGECOObjectFactory::CGECOObjectFactory
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CGECODefaultObjectFactory::CGECODefaultObjectFactory()
+    {
+    }
+
+    
+// Destructor
+EXPORT_C CGECODefaultObjectFactory::~CGECODefaultObjectFactory()
+    {
+    //Null context reference
+    iContext = NULL;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CGECOObjectFactory::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CGECODefaultObjectFactory* CGECODefaultObjectFactory::NewL()
+    {
+    CGECODefaultObjectFactory* self = new( ELeave ) CGECODefaultObjectFactory();
+    
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    return self;    
+    }
+
+
+// -----------------------------------------------------------------------------
+// CGECOObjectFactory::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CGECODefaultObjectFactory::ConstructL()
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// CGECOObjectFactory::GetContentObjectAndSetContextL
+// Function instantiates a new default content object, sets context and
+// returns the object.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CGECOObjectBase* 
+    CGECODefaultObjectFactory::GetContentObjectAndSetContextL(
+    const TDesC& aIdentifier )
+    {
+    CGECODefaultObject* myObject = CGECODefaultObject::NewL( aIdentifier );
+    iContext = myObject;
+    return myObject;
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CGECOObjectFactory::InitializeL
+// Base class implementation reads attributes to default object arrays.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CGECODefaultObjectFactory::InitializeObjectL(
+    MGECOAttributeProvider& aAttributeProvider )
+    {
+    if ( iContext )
+        {
+        //Cast context to GECODefaultObject
+        CGECODefaultObject* temp = 
+            reinterpret_cast<CGECODefaultObject*>( iContext );
+
+        TInt counter = aAttributeProvider.NumAttributes() - 1;
+        TPtrC name;
+        TPtrC value;
+        TBool islocalized = EFalse;
+        while ( counter >= 0 )
+            {
+            aAttributeProvider.AttributeDetailsL( counter,name,value );
+            temp->SetAttributeL( name, value, islocalized );
+            counter--;            
+            }
+
+        if ( aAttributeProvider.HasTextData() )
+            {
+            aAttributeProvider.TextDetailsL( value, islocalized );
+            temp->SetTextL( value, islocalized );
+            }
+
+        temp = NULL;
+        }
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CGECOObjectFactory::SetContext
+// Sets internal context pointer. Deriving class may return an error if 
+// it does not know the context by context's type identifier.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CGECODefaultObjectFactory::SetContext( 
+    CGECOObjectBase* aContext )
+    {
+    iContext = aContext;
+    return KErrNone;        
+    }
+
+
+// -----------------------------------------------------------------------------
+// CGECOObjectFactory::HasTextData
+// Returns ETrue if object has text data
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool CGECODefaultObjectFactory::HasTextData()
+    {
+    TBool ret = EFalse;
+    if ( iContext )
+        {
+        CGECODefaultObject* temp = 
+            ((CGECODefaultObject*)iContext);
+        ret = temp->HasTextData( );        
+        }
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CGECOObjectFactory::TextDetails
+// Returns text data details for this object
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CGECODefaultObjectFactory::TextDetailsL(
+    TPtrC& aText,
+    TBool& aIsLocalized )
+    {
+    if ( iContext )
+        {
+        CGECODefaultObject* temp = 
+            ((CGECODefaultObject*)iContext);
+            temp->TextDetailsL( aText, aIsLocalized );        
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CGECOObjectFactory::NumAttributes
+// Returns number of attributes for the current context
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CGECODefaultObjectFactory::NumAttributes()
+    {
+    TInt count = 0;
+
+    if ( iContext )
+        {
+        count = ((CGECODefaultObject*)iContext)->NumAttributes();
+        }
+
+    return count;
+    }
+
+// -----------------------------------------------------------------------------
+// CGECODefaultObjectFactory::AttributeDetailsL
+// Returns attribute details for the current context
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CGECODefaultObjectFactory::AttributeDetailsL(
+    const TInt aIndex, 
+    TPtrC& aAttrName, 
+    TPtrC& aAttrValue, 
+    TBool& aIsLocalized )
+    {
+    
+    if ( iContext )
+        {
+        CGECODefaultObject* temp = ((CGECODefaultObject*)iContext);
+        temp->AttributeDetailsL( aIndex, aAttrName, aAttrValue, aIsLocalized );
+        temp = NULL;
+        }
+
+
+    }
+
+// -----------------------------------------------------------------------------
+// CGECODefaultObjectFactory::AttributeDetailsL
+// Returns attribute details for the current context
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CGECODefaultObjectFactory::AttributeDetailsL(
+    const TInt aIndex, 
+    TPtrC& aAttrName, 
+    TPtrC& aAttrValue)
+    {
+    
+    if ( iContext )
+        {
+        CGECODefaultObject* temp = ((CGECODefaultObject*)iContext);
+        temp->AttributeDetailsL( aIndex, aAttrName, aAttrValue);
+        temp = NULL;
+        }
+
+
+    }
+
+//  End of File