localconnectivityservice/obexsendservices/obexservicesendutils/src/BTSURefObjectResolver.cpp
branchRCL_3
changeset 40 52a167391590
parent 0 c3e98f10fcf4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/localconnectivityservice/obexsendservices/obexservicesendutils/src/BTSURefObjectResolver.cpp	Wed Sep 01 12:20:40 2010 +0100
@@ -0,0 +1,249 @@
+/*
+* Copyright (c) 2002 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:  Reference object resolver
+*
+*/
+
+
+// INCLUDE FILES
+#include "BTServiceUtils.h"
+#include "BTSURefObjectResolver.h"
+#include "BTSUDebug.h"
+#include <utf.h>
+
+// CONSTANTS
+_LIT8( KBTSUElementImage,    "img" );
+_LIT8( KBTSUElementLink,     "link" );
+_LIT8( KBTSUElementObject,   "object" );
+
+_LIT8( KBTSUAttributeSrc,    "src" );
+_LIT8( KBTSUAttributeData,   "data" );
+_LIT8( KBTSUAttributeHref,   "href" );
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CBTSURefObjectResolver::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CBTSURefObjectResolver* CBTSURefObjectResolver::NewL(CDesCArrayFlat* aCapabilityList)
+    {
+    CBTSURefObjectResolver* self = new( ELeave ) CBTSURefObjectResolver( aCapabilityList );
+    CleanupStack::PushL( self );
+    self->ConstructL( );
+    CleanupStack::Pop(self);
+    return self;
+    }
+    
+// -----------------------------------------------------------------------------
+// CBTSURefObjectResolver::CBTSURefObjectResolver
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CBTSURefObjectResolver::CBTSURefObjectResolver( 
+    CDesCArrayFlat* aObjectList ) : iObjectList( aObjectList )
+    {
+    }
+  
+ // -----------------------------------------------------------------------------
+// CBTSURefObjectResolver::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CBTSURefObjectResolver::ConstructL ()
+    {
+    }   
+
+ 
+// -----------------------------------------------------------------------------
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CBTSURefObjectResolver::~CBTSURefObjectResolver()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CBTSURefObjectResolver::OnStartDocumentL
+// -----------------------------------------------------------------------------
+//
+void CBTSURefObjectResolver::OnStartDocumentL(const Xml::RDocumentParameters& /*aDocParam*/, TInt aErrorCode)
+    {
+    FLOG(_L("[BTSU]\t CBTSURefObjectResolver::OnStartDocumentL()"));
+    if(aErrorCode!=KErrNone)
+        {
+        FLOG(_L("[BTSU]\t Error OnStartDocument"));            
+        }
+   
+    }
+
+// -----------------------------------------------------------------------------
+// CBTSURefObjectResolver::OnEndDocumentL
+// -----------------------------------------------------------------------------
+//
+void CBTSURefObjectResolver::OnEndDocumentL(TInt aErrorCode)
+    {
+    FLOG(_L("[BTSU]\t CBTSURefObjectResolver::EndDocument()"));
+    if(aErrorCode!=KErrNone)
+        {
+        FLOG(_L("[BTSU]\t Error EndDocument"));            
+        }    
+    }
+
+// -----------------------------------------------------------------------------
+// CBTSURefObjectResolver::StartElement
+// If a certain element has a certain attribute, append the attribute's
+// value into the object list.
+// -----------------------------------------------------------------------------
+//
+void CBTSURefObjectResolver::OnStartElementL(const Xml::RTagInfo& aElement, const Xml::RAttributeArray& aAttributes, 
+								 TInt aErrorCode)    
+    {
+    
+    if(aErrorCode!=KErrNone)
+        {
+        FLOG(_L("[BTSU]\t Error OnStartElementL"));            
+        }     
+        
+    RString aLocalName = aElement.LocalName();   
+
+    TBuf<KBTSUMaxStringLength> conversionBuf;
+    // Images
+    //
+    if ( aLocalName.DesC() == KBTSUElementImage /*|| aName == KBTSUElementImage()*/ )
+    
+        {                                                         
+        // Check the attributes
+        for ( TInt iCounter = 0 ; iCounter < aAttributes.Count() ; iCounter++ )
+            {
+            if ( aAttributes[iCounter].Attribute().LocalName().DesC() == KBTSUAttributeSrc )
+                {                              
+                User::LeaveIfError( CnvUtfConverter::ConvertToUnicodeFromUtf8( conversionBuf, aAttributes[iCounter].Value().DesC() )); 
+                if(conversionBuf.Length())               
+                    iObjectList->AppendL(conversionBuf );
+                }
+            }                                
+           
+        }
+    else if ( aLocalName.DesC() == KBTSUElementObject() /*|| aName == KBTSUElementObject() */)
+        {
+        for ( TInt iCounter = 0 ; iCounter < aAttributes.Count() ; iCounter++ )
+            {
+            if ( aAttributes[iCounter].Attribute().LocalName().DesC() == KBTSUAttributeData )
+                {                              
+                User::LeaveIfError( CnvUtfConverter::ConvertToUnicodeFromUtf8( conversionBuf, aAttributes[iCounter].Value().DesC() ));   
+                if(conversionBuf.Length())                         
+                    iObjectList->AppendL(conversionBuf );
+                }
+            }                    
+        }
+
+    // Other objects
+    //
+    else if ( aLocalName.DesC() == KBTSUElementLink() /*|| aName == KBTSUElementLink() */)
+        {
+        for ( TInt iCounter = 0 ; iCounter < aAttributes.Count() ; iCounter++ )
+            {
+            if ( aAttributes[iCounter].Attribute().LocalName().DesC() == KBTSUAttributeHref )
+                {                              
+                User::LeaveIfError( CnvUtfConverter::ConvertToUnicodeFromUtf8( conversionBuf, aAttributes[iCounter].Value().DesC() ));                
+                if(conversionBuf.Length())            
+                    iObjectList->AppendL(conversionBuf );
+                
+                }
+            }                      
+        }
+
+    }
+    
+// -----------------------------------------------------------------------------
+// CBTSURefObjectResolver::OnEndElementL
+// -----------------------------------------------------------------------------
+//    
+void CBTSURefObjectResolver::OnEndElementL(const Xml::RTagInfo& /*aElement*/, TInt /*aErrorCode*/)
+    {       
+    }
+
+// -----------------------------------------------------------------------------
+// CBTSURefObjectResolver::OnContentL
+// -----------------------------------------------------------------------------
+//
+void CBTSURefObjectResolver::OnContentL(const TDesC8& /*aBytes*/, TInt /*aErrorCode*/)
+    {   
+    }
+
+// -----------------------------------------------------------------------------
+// CBTSURefObjectResolver::OnStartPrefixMappingL
+// -----------------------------------------------------------------------------
+//
+void CBTSURefObjectResolver::OnStartPrefixMappingL(const RString& /*aPrefix*/, const RString& /*aUri*/, 
+								   TInt /*aErrorCode*/)
+    {    
+    }
+
+// -----------------------------------------------------------------------------
+// CBTSURefObjectResolver::OnEndPrefixMappingL
+// -----------------------------------------------------------------------------
+//
+void CBTSURefObjectResolver::OnEndPrefixMappingL(const RString& /*aPrefix*/, TInt /*aErrorCode*/)
+    {        
+    }
+
+// -----------------------------------------------------------------------------
+// CBTSURefObjectResolver::OnIgnorableWhiteSpaceL
+// -----------------------------------------------------------------------------
+//
+void CBTSURefObjectResolver::OnIgnorableWhiteSpaceL(const TDesC8& /*aBytes*/, TInt /*aErrorCode*/)
+    {    
+    }
+
+// -----------------------------------------------------------------------------
+// CBTSURefObjectResolver::OnSkippedEntityL
+// -----------------------------------------------------------------------------
+//
+void CBTSURefObjectResolver::OnSkippedEntityL(const RString& /*aName*/, TInt /*aErrorCode*/)
+    {    
+    }
+
+// -----------------------------------------------------------------------------
+// CBTSURefObjectResolver::OnProcessingInstructionL
+// -----------------------------------------------------------------------------
+//
+void CBTSURefObjectResolver::OnProcessingInstructionL(const TDesC8& /*aTarget*/, const TDesC8& /*aData*/, 
+										  TInt /*aErrorCode*/)
+    {    
+    }
+
+// -----------------------------------------------------------------------------
+// CBTSURefObjectResolver::OnError
+// -----------------------------------------------------------------------------
+//
+void CBTSURefObjectResolver::OnError(TInt /*aErrorCode*/)
+    {    
+    }
+
+// -----------------------------------------------------------------------------
+// CBTSURefObjectResolver::GetExtendedInterface
+// -----------------------------------------------------------------------------
+//
+TAny* CBTSURefObjectResolver::GetExtendedInterface(const TInt32 /*aUid*/)
+    {
+ 
+    return NULL;   
+    }
+
+//  End of File