omads/omadsextensions/adapters/bookmark/src/omadsfolderobject.cpp
changeset 19 2691f6aa1921
parent 4 e6e896426eac
child 20 e1de7d03f843
--- a/omads/omadsextensions/adapters/bookmark/src/omadsfolderobject.cpp	Tue Feb 02 00:02:49 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,490 +0,0 @@
-/*
-* Copyright (c) 2005-2007 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:  OMA DS Folder object XML parser
-*
-*/
-
-#include <SenXmlUtils.h>
-#include <SenXmlReader.h>
-#include <favouriteslimits.h>   // Localized names for folders
-#include <bookmarkdsa.rsg>
-#include <stringresourcereader.h>
-#include <bautils.h>
-#include <utf.h>
-#include <feedsserverfolderitem.h>
-
-#include "bookmarkdataproviderdefs.h"
-#include "omadsfolderobject.h"
-#include "logger.h"
-
-_LIT( KOMADSResourceName, "\\resource\\bookmarkdsa.rsc" );
-
-_LIT8(KOMADSFolderElement, "Folder");
-_LIT8(KOMADSNameElement, "name");
-_LIT8(KOMADSCreatedElement, "created");
-_LIT8(KOMADSModifiedElement, "modified");
-
-_LIT(KFolderBeginTag, "<Folder>");
-_LIT(KFolderEndTag, "</Folder>");
-_LIT(KNameBeginTag, "<name>");
-_LIT(KNameEndTag, "</name>");
-_LIT(KCreatedBeginTag, "<created>");
-_LIT(KCreatedEndTag, "</created>");
-_LIT(KModifiedBeginTag, "<modified>");
-_LIT(KModifiedEndTag, "</modified>");
-const TInt KDateFormatLength = 15;
-_LIT(KDateFormat, "%04d%02d%02dT%02d%02d%02d");
-
-
-COMADSFolderObject* COMADSFolderObject::NewLC()
-    {
-    COMADSFolderObject* pSelf = new (ELeave) COMADSFolderObject;
-    CleanupStack::PushL(pSelf);
-    pSelf->ConstructL();
-    return pSelf;
-    }
-
-COMADSFolderObject* COMADSFolderObject::NewL()
-    {
-    COMADSFolderObject* pSelf = COMADSFolderObject::NewLC();
-    CleanupStack::Pop( pSelf );    
-    return pSelf;
-    }
-
-COMADSFolderObject::~COMADSFolderObject()
-    {
-    delete iXmlReader;
-    }
-
-void COMADSFolderObject::ConstructL()
-    {
-    iXmlReader = CSenXmlReader::NewL();
-    iXmlReader->SetContentHandler(*this);
-    }
-
-TInt COMADSFolderObject::ImportFolderXml( RFs& aFs, const TDesC& aFilename )
-    {
-    LOGGER_ENTERFN( "COMADSFolderObject::ImportFolderXml" );    
-        
-    TInt error;
-    
-    Reset();
-    TRAP( error, iXmlReader->ParseL( aFs, aFilename ) )
-    if( error != KErrNone )
-        {
-        LOGGER_LEAVEFN( "COMADSFolderObject::ImportFolderXml" );
-        return error;
-        }
-    
-    LOGGER_LEAVEFN( "COMADSFolderObject::ImportFolderXml" );
-    return iError;
-    }
-    
-TInt COMADSFolderObject::ImportFolderXml( const TDesC8& aData )
-    {
-    LOGGER_ENTERFN( "COMADSFolderObject::ImportFolderXml" ); 
-    
-    TInt error;
-    
-    Reset();
-    
-    TRAP(error, iXmlReader->ParseL(aData) );
-    if(error != KErrNone )
-        {
-        LOGGER_LEAVEFN( "COMADSFolderObject::ImportFolderXml" );
-        return error;
-        }
-    LOGGER_LEAVEFN( "COMADSFolderObject::ImportFolderXml" );
-    return iError;
-    }
-    
-void COMADSFolderObject::ExportFolderXmlL( CBufBase& aBuffer )
-    {
-    iDesc = NULL;
-    iBuffer = &aBuffer;
-    iWriteBufPosition = 0;
-    iWriteBufSize = aBuffer.Size();     
-
-    ExportL();
-    }
-    
-void COMADSFolderObject::ExportFolderXmlL( TDes8& aBuffer )
-    {
-    iDesc = &aBuffer;
-    iBuffer = NULL;
-    
-    ExportL();
-    }
-    
-void COMADSFolderObject::ExportL()
-    {
-    // Folder
-    WriteL( KFolderBeginTag );
-    
-    // Name
-    WriteL( KNameBeginTag );
-    WriteEncodedXmlL( iName );
-    WriteL( KNameEndTag );
-    
-    // Created Date
-    TBuf<KDateFormatLength> tempdate;
-    tempdate.Format( KDateFormat, iCreatedDate.Year(), iCreatedDate.Month() + 1,
-        iCreatedDate.Day(), iCreatedDate.Hour(), iCreatedDate.Minute(), iCreatedDate.Second() );
-    
-    WriteL( KCreatedBeginTag );
-    WriteL( tempdate );
-    WriteL( KCreatedEndTag );
-    
-    // Modified Date
-    tempdate.Format( KDateFormat, iModifiedDate.Year(), iModifiedDate.Month() + 1,
-        iModifiedDate.Day(), iModifiedDate.Hour(), iModifiedDate.Minute(), iModifiedDate.Second() );
-    
-    WriteL( KModifiedBeginTag );
-    WriteL( tempdate );
-    WriteL( KModifiedEndTag );
-    
-    // Folder end
-    WriteL(KFolderEndTag);
-    }
-    
-void COMADSFolderObject::WriteL( const TDesC &aData )
-    {   
-    CnvUtfConverter converter;
-    User::LeaveIfError( converter.ConvertFromUnicodeToUtf8( iTemp, aData ) );
-                    
-    if ( iBuffer )
-        {
-        TInt newPosition = iWriteBufPosition + iTemp.Length();
-
-        if ( newPosition > iWriteBufSize )
-            {
-            TInt expand = newPosition - iWriteBufSize;
-            iBuffer->ExpandL( iWriteBufSize, expand );
-            iWriteBufSize += expand;
-            }
-
-        iBuffer->Write( iWriteBufPosition, iTemp );
-        iWriteBufPosition = newPosition;
-        }
-    else if( iDesc )
-        {
-        iDesc->Append( iTemp );       
-        }   
-    }
-    
-void COMADSFolderObject::WriteEncodedXmlL( const TDesC &aData )
-    {   
-    CnvUtfConverter converter;
-    User::LeaveIfError( converter.ConvertFromUnicodeToUtf8( iTemp, aData ) );
-    
-    HBufC8* xmlData = SenXmlUtils::EncodeHttpCharactersLC( iTemp ); 
-                    
-    if ( iBuffer )
-        {
-        TInt newPosition = iWriteBufPosition + xmlData->Length();
-
-        if ( newPosition > iWriteBufSize )
-            {
-            TInt expand = newPosition - iWriteBufSize;
-            iBuffer->ExpandL( iWriteBufSize, expand );
-            iWriteBufSize += expand;
-            }
-
-        iBuffer->Write( iWriteBufPosition, *xmlData );
-        iWriteBufPosition = newPosition;
-        }
-    else if( iDesc )
-        {
-        iDesc->Append( *xmlData );
-        }   
-        
-    CleanupStack::PopAndDestroy( xmlData );   
-    }           
-    
-TInt COMADSFolderObject::StartDocument()
-    {
-    return KErrNone;
-    }
-
-TInt COMADSFolderObject::EndDocument()
-    {
-    return KErrNone;
-    }
-
-TInt COMADSFolderObject::StartElement(const TDesC8& /*aURI*/, 
-                  const TDesC8& /*aLocalName*/, 
-                  const TDesC8& aName, 
-                  const RAttributeArray& /*apAttrs*/)
-    {
-    LOGGER_ENTERFN( "COMADSFolderObject::StartElement" );
-    iCurrentElement.Copy( aName );
-    LOGGER_LEAVEFN( "COMADSFolderObject::StartElement" );
-    return KErrNone;
-    }
-                                    
-TInt COMADSFolderObject::EndElement( const TDesC8& /*aURI*/, 
-    const TDesC8& /*aLocalName*/, const TDesC8& /*aName*/ )
-    {
-    LOGGER_ENTERFN( "COMADSFolderObject::EndElement" );        
-    iCurrentElement.SetLength(0);
-    LOGGER_LEAVEFN( "COMADSFolderObject::EndElement" );
-    return KErrNone;
-    }
-
-TInt COMADSFolderObject::Characters( const TDesC8& aBuf, TInt aStart, TInt aLength )
-    {
-    LOGGER_ENTERFN( "COMADSFolderObject::Characters" );
-    
-    TInt error;
-    
-    if( iCurrentElement.Compare( KOMADSFolderElement ) == 0 )
-        {
-        LOGGER_LEAVEFN( "COMADSFolderObject::Characters" );
-        return KErrNone;
-        }
-    
-    else if ( iCurrentElement.Compare( KOMADSNameElement ) == 0 )
-        {                
-        CnvUtfConverter converter;
-        TBuf<KMaxFolderNameLength> buf;
-        error = converter.ConvertToUnicodeFromUtf8( buf, aBuf.Mid( aStart, aLength ) );
-        TInt length = buf.Length() + iName.Length();
-        
-        if ( error > 0 )
-            {
-            LOGGER_WRITE_1("Too long name, number of uncorverted bytes: %d", error);
-            }
-        else if ( error != KErrNone )
-            {
-            LOGGER_WRITE_1("ConvertToUnicodeFromUtf8 failed with %d", error);
-            iError = error;
-            }
-        else if ( length > iName.MaxLength() )
-            {
-            LOGGER_WRITE_1("Too long name total: %d", length);
-            }
-        else
-            {
-            iName.Append( buf );
-            }       
-        }
-    else if ( iCurrentElement.Compare( KOMADSCreatedElement ) == 0 )
-        {
-        error = ParseDateString( aBuf.Mid( aStart, aLength ), iCreatedDate );
-        if( error != KErrNone )
-            {
-            iError = error;
-            }
-        }
-    else if ( iCurrentElement.Compare( KOMADSModifiedElement ) == 0 )
-        {
-        error = ParseDateString( aBuf.Mid( aStart, aLength ), iModifiedDate );
-        if ( error != KErrNone )
-            {
-            iError = error;
-            }
-        }
-    LOGGER_LEAVEFN( "COMADSFolderObject::Characters" );
-    return KErrNone;
-    }
-
-TInt COMADSFolderObject::ParseDateString(const TDesC8& aString, TDateTime& aDateTime)
-    {
-    // Ensure we don't read beyond the buffer limits
-    if ( aString.Length() < KDateFormatLength )
-        {
-        return KErrArgument;
-        }
-    // Extract the fields from the string
-    TLex8 yearDesc( aString.Mid( 0, 4 ) );
-    TLex8 monthDesc( aString.Mid( 4, 2 ) );
-    TLex8 dayDesc( aString.Mid( 6, 2 ) );
-    // Skip one character here, it's supposed to be 'T'
-    TLex8 hourDesc( aString.Mid( 9, 2 ) );
-    TLex8 minuteDesc( aString.Mid( 11, 2 ) );
-    TLex8 secondDesc( aString.Mid( 13, 2 ) );
-    
-
-    TInt year, month, day, hour, minute, second;
-    TInt error;
-    
-    // Fetch the values to temporary variables
-    if ( ( error = yearDesc.Val(year) ) != KErrNone )
-        return error;
-    if ( ( error = monthDesc.Val(month) ) != KErrNone )
-        return error;
-    if ( ( error = dayDesc.Val(day) ) != KErrNone )
-        return error;
-    if ( ( error = hourDesc.Val(hour) ) != KErrNone )
-        return error;
-    if ( ( error = minuteDesc.Val(minute) ) != KErrNone )
-        return error;
-    if ( ( error = secondDesc.Val(second) ) != KErrNone )
-        return error;
-
-    // Assign values to datetime object
-    if ( ( error = aDateTime.SetYear(year) ) != KErrNone )
-        return error;
-    if ( ( error = aDateTime.SetMonth((TMonth)(month-1) )) != KErrNone )
-        return error;
-    if ( ( error = aDateTime.SetDay(day) ) != KErrNone )
-        return error;
-    if ( ( error = aDateTime.SetHour(hour) ) != KErrNone )
-        return error;
-    if ( ( error = aDateTime.SetMinute(minute) ) != KErrNone )
-        return error;
-    if ( ( error = aDateTime.SetSecond(second) ) != KErrNone )
-        return error;
-        
-    return KErrNone;
-    }
-
-void COMADSFolderObject::Reset()
-    {
-    iError = KErrNone;
-    iName.SetLength( 0 );
-    iCreatedDate.Set( 2005, EJanuary, 1, 0, 0, 0, 0 );
-    iModifiedDate.Set( 2005, EJanuary, 1, 0, 0, 0, 0 );
-    }
-    
-TInt COMADSFolderObject::Error( TInt aErrorCode )
-    {
-    iError = aErrorCode;
-    return KErrNone;
-    }
-	
-void COMADSFolderObject::ExportDbItemL(CFavouritesItem& aItem)
-    {
-    aItem.SetNameL(iName);
-    aItem.SetType(CFavouritesItem::EFolder);
-    }		
-
-void COMADSFolderObject::ImportDbItem(const CFavouritesItem& aItem)
-    {
-    LOGGER_ENTERFN( "COMADSFolderObject::ImportDbItem" );
-    Reset();
-    
-    TInt resId(KErrNotFound);
-    switch( aItem.ContextId() ) // Check if the item is a seamless link folder
-        {
-        case KFavouritesApplicationContextId:
-           	{
-           	LOGGER_WRITE("DOWNLOAD_APPLICATIONS");
-            resId = R_BOOKMARKDSA_FOLDER_DOWNLOAD_APPLICATIONS;
-            LOGGER_WRITE_1( "resId: %d", resId );
-            break;
-            }
-        case KFavouritesImageContextId:
-            {
-            LOGGER_WRITE("DOWNLOAD_IMAGES");
-            resId = R_BOOKMARKDSA_FOLDER_DOWNLOAD_IMAGES;
-            break;
-            }
-        case KFavouritesAudioContextId:
-            {
-            LOGGER_WRITE("DOWNLOAD_TONES");
-            resId = R_BOOKMARKDSA_FOLDER_DOWNLOAD_TONES;
-            break;
-            }
-        case KFavouritesVideoContextId:
-            {
-            LOGGER_WRITE("DOWNLOAD_VIDEOS");
-            resId = R_BOOKMARKDSA_FOLDER_DOWNLOAD_VIDEOS;
-            break;
-            }
-        case KFavouritesSkinContextId:
-            {
-            LOGGER_WRITE("DOWNLOAD_SKINS");
-            resId = R_BOOKMARKDSA_FOLDER_DOWNLOAD_SKINS;
-            break;
-            }
-        case KFavouritesMusicContextId:
-            {
-            LOGGER_WRITE("DOWNLOAD_MUSIC");
-            resId = R_BOOKMARKDSA_FOLDER_DOWNLOAD_MUSIC;
-            break;
-            }
-        default:
-            {
-            break; // not a seamless link folder.
-            }
-        }
-     
-    if( resId != KErrNotFound )
-        {
-        LOGGER_WRITE( "before ReadFolderNameL" );
-        TRAPD( error, ReadFolderNameL( iName, resId ) );
-        LOGGER_WRITE( "after ReadFolderNameL" );
-        if ( error )
-            {
-            LOGGER_WRITE_1( "Error reading folder name: %d", error );
-            }
-        }
-    else
-        {
-        LOGGER_WRITE( "before iName = aItem.Name();" );
-        iName = aItem.Name();
-        }
-    LOGGER_WRITE( "printing foldername.." );
-    LOGGER_WRITE_1( "Foldername: %S", &iName);
-    LOGGER_LEAVEFN( "COMADSFolderObject::ImportDbItem" );
-    }
-
-
-void COMADSFolderObject::ImportDbItem( const CFolderItem& aItem )
-    {
-    LOGGER_ENTERFN( "COMADSFolderObject::ImportDbItem" );
-    Reset();
-    if ( aItem.Id() == 0 )
-        {
-        _LIT8( KRSSRootFolderName, "Web Feeds" );
-        iName.Copy( KRSSRootFolderName );
-        }
-    else
-        {
-        iName = aItem.Name();
-        }
-    
-    LOGGER_LEAVEFN( "COMADSFolderObject::ImportDbItem" );
-    }
-
-
-void COMADSFolderObject::ReadFolderNameL( TDes& aName, const TInt aResID )
-    {
-    LOGGER_ENTERFN( "COMADSFolderObject::ReadFolderNameL" );
-    
-    TFileName resName( KOMADSResourceName );
-    
-    // Resource can be on ROM or on C-drive, if installed from SIS.
-    TFileName dllName;
-    Dll::FileName( dllName );
-    
-    LOGGER_WRITE_1("DllFileName: %S", &dllName );
-    
-    TParse parse;
-    parse.Set( resName, &dllName, 0 );
-    resName = parse.FullName();
-    
-    LOGGER_WRITE_1( "resName: %S", &resName );
-    
-    CStringResourceReader* reader = CStringResourceReader::NewLC( resName );
-    LOGGER_WRITE_1( "readed resfile: %S", &resName );
-    
-    aName.Copy( reader->ReadResourceString( aResID ) );
-    LOGGER_WRITE("Resource Readed ok");
-    CleanupStack::PopAndDestroy( reader );
-
-    LOGGER_LEAVEFN( "COMADSFolderObject::ReadFolderNameL" );
-    }
-