diff -r 000000000000 -r 72b543305e3a email/emailnotificationhandler/StringDictionaries/src/OMAPushEMNStringDict00.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/emailnotificationhandler/StringDictionaries/src/OMAPushEMNStringDict00.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,255 @@ +/* +* 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: COMAPushEMNStringDict00 +* +* +*/ + + +#include +#include + +#include + +#include + +#include "OMAPushEMNStringDict00.h" + +// These headers are automatically generated from \StringDictionaries\src\*.st +// files. +#include "omapushemntagtable.h" +#include "omapushemnattributetable.h" +#include "omapushemnattributevaluetable.h" + +using namespace Xml; + +//----------------------------------------------------------------------------- +// COMAPushEMNStringDict00::NewL +//----------------------------------------------------------------------------- +MStringDictionary* COMAPushEMNStringDict00::NewL( TAny* aStringPool ) + { + COMAPushEMNStringDict00* self = + new(ELeave) COMAPushEMNStringDict00( + reinterpret_cast( aStringPool ) ); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return ( static_cast( self ) ); + } + +//----------------------------------------------------------------------------- +// COMAPushEMNStringDict00::COMAPushEMNStringDict00 +//----------------------------------------------------------------------------- +COMAPushEMNStringDict00::COMAPushEMNStringDict00( + RStringPool* aStringPool ) : iStringPool(*aStringPool), iCodePage(0) + { + // do nothing; + } + +//----------------------------------------------------------------------------- +// COMAPushEMNStringDict00::ConstructL +//----------------------------------------------------------------------------- +void COMAPushEMNStringDict00::ConstructL() + { + // we don't own this stringpool + iStringPool.OpenL(OMAPushEMNStringDict00TagTable::Table); + iStringPool.OpenL(OMAPushEMNStringDict00AttributeTable::Table); + iStringPool.OpenL(OMAPushEMNStringDict00AttributeValueTable::Table); + + iCodepage00Table = CDictionaryCodePage::NewL( + &OMAPushEMNStringDict00TagTable::Table, + &OMAPushEMNStringDict00AttributeTable::Table, + &OMAPushEMNStringDict00AttributeValueTable::Table, + 0); // codepage + + // Construct the correlation mapping + iCodepage00Table->ConstructIndexMappingL( + iTagCodePage00, CDictionaryCodePage::EStringTypeElement ); + iCodepage00Table->ConstructIndexMappingL( + iAttributeCodePage00, CDictionaryCodePage::EStringTypeAttribute ); + iCodepage00Table->ConstructIndexMappingL( + iAttributeValueCodePage00, CDictionaryCodePage::EStringTypeAttributeValue ); + } + +//----------------------------------------------------------------------------- +// COMAPushEMNStringDict00::Release +//----------------------------------------------------------------------------- +void COMAPushEMNStringDict00::Release() + { + delete( this ); + } + +//----------------------------------------------------------------------------- +// COMAPushEMNStringDict00::~COMAPushEMNStringDict00 +//----------------------------------------------------------------------------- +COMAPushEMNStringDict00::~COMAPushEMNStringDict00() + { + if ( iCodepage00Table ) + { + delete iCodepage00Table; + } + } + +//----------------------------------------------------------------------------- +// COMAPushEMNStringDict00::ElementL +//----------------------------------------------------------------------------- +void COMAPushEMNStringDict00::ElementL( + TInt aToken, RString& aElement) const + { + TInt index = iCodepage00Table->StringPoolIndexFromToken( + aToken, CDictionaryCodePage::EStringTypeElement ); + + if ( index == KErrXmlStringPoolTableNotFound ) + { + User::Leave( KErrXmlUnsupportedElement ); + } + + // when we have multiple codepages per string dictionary we'd do something + // like iCodepageTable[n]->StringTable() + aElement = iStringPool.String( + index, + *( iCodepage00Table->StringTable( + CDictionaryCodePage::EStringTypeElement ) ) ); + } + +//----------------------------------------------------------------------------- +// COMAPushEMNStringDict00::AttributeL +//----------------------------------------------------------------------------- +void COMAPushEMNStringDict00::AttributeL( + TInt aToken, RString& aAttribute ) const + { + TInt index = iCodepage00Table->StringPoolIndexFromToken( + aToken, CDictionaryCodePage::EStringTypeAttribute ); + + if ( index == KErrXmlStringPoolTableNotFound ) + { + User::Leave( KErrXmlUnsupportedAttribute ); + } + + // when we have multiple codepages per string dictionary we'd do something + // like iCodepageTable[n]->StringTable() + aAttribute = iStringPool.String( + index, + *( iCodepage00Table->StringTable( + CDictionaryCodePage::EStringTypeAttribute ) ) ); + }; + +//----------------------------------------------------------------------------- +// COMAPushEMNStringDict00::AttributeValuePairL +//----------------------------------------------------------------------------- +void COMAPushEMNStringDict00::AttributeValuePairL( + TInt aToken, RString& aAttribute, RString& aValue ) const + { + AttributeL( aToken, aAttribute ); + AttributeValueL( aToken, aValue ); + }; + +//----------------------------------------------------------------------------- +// COMAPushEMNStringDict00::AttributeValueL +//----------------------------------------------------------------------------- +void COMAPushEMNStringDict00::AttributeValueL( + TInt aToken, RString& aValue ) const + { + TInt index = iCodepage00Table->StringPoolIndexFromToken( + aToken, CDictionaryCodePage::EStringTypeAttributeValue ); + + if ( index == KErrXmlStringPoolTableNotFound ) + { + User::Leave( KErrXmlUnsupportedAttributeValue ); + } + + // when we have multiple codepages per string dictionary we'd do something + // like iCodepageTable[n]->StringTable() + aValue = iStringPool.String( + index, + *( iCodepage00Table->StringTable( + CDictionaryCodePage::EStringTypeAttributeValue ) ) ); + }; + +//----------------------------------------------------------------------------- +// COMAPushEMNStringDict00::CompareThisDictionary +//----------------------------------------------------------------------------- +TBool COMAPushEMNStringDict00::CompareThisDictionary( + const RString& aDictionaryDescription ) const + { + // If this string dictionary has many codepages then all these comparisons should go here. + // Remember, the string dictionary loads up all the RStringTables into its RStringPool + // on construction. So if the comparison fails we do not have it. + return ( + ( aDictionaryDescription == iStringPool.String( + OMAPushEMNStringDict00TagTable::EUri, + OMAPushEMNStringDict00TagTable::Table ) ) || + ( aDictionaryDescription == iStringPool.String( + OMAPushEMNStringDict00TagTable::EPublicId, + OMAPushEMNStringDict00TagTable::Table ) ) || + ( aDictionaryDescription == iStringPool.String( + OMAPushEMNStringDict00TagTable::EFormalPublicId, + OMAPushEMNStringDict00TagTable::Table ) ) ); + } + +//----------------------------------------------------------------------------- +// COMAPushEMNStringDict00::SwitchCodePage +//----------------------------------------------------------------------------- +TInt COMAPushEMNStringDict00::SwitchCodePage( TInt aCodePage ) + { + // We only have one codepage sp can't switch + if ( aCodePage != iCodePage ) + { + return KErrXmlMissingStringDictionary; + } + return iCodePage; + } + +//----------------------------------------------------------------------------- +// COMAPushEMNStringDict00::PublicIdentifier +//----------------------------------------------------------------------------- +void COMAPushEMNStringDict00::PublicIdentifier( RString& aPubId ) + { + aPubId = iStringPool.String( + OMAPushEMNStringDict00TagTable::EFormalPublicId, + *( iCodepage00Table->StringTable( + CDictionaryCodePage::EStringTypeElement ) ) ); + } + +//----------------------------------------------------------------------------- +// COMAPushEMNStringDict00::NamespaceUri +//----------------------------------------------------------------------------- +void COMAPushEMNStringDict00::NamespaceUri( RString& aUri ) + { + aUri = iStringPool.String( + OMAPushEMNStringDict00TagTable::EUri, + *( iCodepage00Table->StringTable( + CDictionaryCodePage::EStringTypeElement ) ) ); + } + +//----------------------------------------------------------------------------- +// ECOM PLUGIN LOADING STUFF +//----------------------------------------------------------------------------- +const TImplementationProxy ImplementationTable[] = { + IMPLEMENTATION_PROXY_ENTRY( 0x1027508B, COMAPushEMNStringDict00::NewL ) +}; + +//----------------------------------------------------------------------------- +// ImplementationGroupProxy +//----------------------------------------------------------------------------- +EXPORT_C const TImplementationProxy* ImplementationGroupProxy( + TInt& aTableCount ) + { + aTableCount = sizeof( ImplementationTable ) / + sizeof( TImplementationProxy ); + + return ImplementationTable; + } +