websrv_pub/xml_fragment_api/tsrc/bc/senfragment/src/maindomfragment.cpp
author hgs
Thu, 08 Jul 2010 14:00:07 +0530
changeset 29 5743aa3a72c3
permissions -rw-r--r--
201025
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:        
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include "maindomfragment.h"
hgs
parents:
diff changeset
    26
#include "SenFragmentBase.h"
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
namespace
hgs
parents:
diff changeset
    29
    {
hgs
parents:
diff changeset
    30
	const TInt KStateParsingDelegate    = 100;
hgs
parents:
diff changeset
    31
    _LIT8(KMainFragmentXmlns,   "urn:main:fragment");
hgs
parents:
diff changeset
    32
    _LIT8(KMainFragmentName,    "MainFragment");
hgs
parents:
diff changeset
    33
    _LIT8(KMainFragmentQName,   "mn:MainFragment");	
hgs
parents:
diff changeset
    34
    _LIT8(KDelegateName,        "DelegateFragment");
hgs
parents:
diff changeset
    35
    }
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
CMainDomFragment* CMainDomFragment::NewL()
hgs
parents:
diff changeset
    38
    {
hgs
parents:
diff changeset
    39
    CMainDomFragment* pNew = NewLC();
hgs
parents:
diff changeset
    40
    CleanupStack::Pop(); // pNew;
hgs
parents:
diff changeset
    41
    return pNew;
hgs
parents:
diff changeset
    42
    }
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
CMainDomFragment* CMainDomFragment::NewLC()
hgs
parents:
diff changeset
    45
    {
hgs
parents:
diff changeset
    46
    CMainDomFragment* pNew = new (ELeave) CMainDomFragment;
hgs
parents:
diff changeset
    47
    CleanupStack::PushL(pNew);
hgs
parents:
diff changeset
    48
    pNew->BaseConstructL();
hgs
parents:
diff changeset
    49
    return pNew;
hgs
parents:
diff changeset
    50
    }
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
CMainDomFragment* CMainDomFragment::NewL(
hgs
parents:
diff changeset
    54
    const TDesC8& aNsUri,
hgs
parents:
diff changeset
    55
    const TDesC8& aLocalName,
hgs
parents:
diff changeset
    56
    const TDesC8& aQName
hgs
parents:
diff changeset
    57
    )
hgs
parents:
diff changeset
    58
    {
hgs
parents:
diff changeset
    59
    CMainDomFragment* pNew = NewLC( aNsUri, aLocalName, aQName );
hgs
parents:
diff changeset
    60
    CleanupStack::Pop(); // pNew;
hgs
parents:
diff changeset
    61
    return pNew;
hgs
parents:
diff changeset
    62
    }
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
CMainDomFragment* CMainDomFragment::NewLC(
hgs
parents:
diff changeset
    65
    const TDesC8& aNsUri,
hgs
parents:
diff changeset
    66
    const TDesC8& aLocalName,
hgs
parents:
diff changeset
    67
    const TDesC8& aQName
hgs
parents:
diff changeset
    68
    )
hgs
parents:
diff changeset
    69
    {
hgs
parents:
diff changeset
    70
    CMainDomFragment* pNew = new (ELeave) CMainDomFragment;
hgs
parents:
diff changeset
    71
    CleanupStack::PushL(pNew);
hgs
parents:
diff changeset
    72
    pNew->BaseConstructL(aNsUri, aLocalName, aQName);
hgs
parents:
diff changeset
    73
    return pNew;
hgs
parents:
diff changeset
    74
    }
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
CMainDomFragment::CMainDomFragment()
hgs
parents:
diff changeset
    78
: ipDelegateFragment(NULL)
hgs
parents:
diff changeset
    79
    {
hgs
parents:
diff changeset
    80
    }
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
void CMainDomFragment::BaseConstructL()
hgs
parents:
diff changeset
    83
    {
hgs
parents:
diff changeset
    84
    CSenDomFragmentBase::BaseConstructL(
hgs
parents:
diff changeset
    85
        KMainFragmentXmlns,
hgs
parents:
diff changeset
    86
        KMainFragmentName,
hgs
parents:
diff changeset
    87
        KMainFragmentQName
hgs
parents:
diff changeset
    88
        );
hgs
parents:
diff changeset
    89
    }
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
void CMainDomFragment::BaseConstructL(
hgs
parents:
diff changeset
    92
    const TDesC8& aNsUri,
hgs
parents:
diff changeset
    93
    const TDesC8& aLocalName,
hgs
parents:
diff changeset
    94
    const TDesC8& aQName
hgs
parents:
diff changeset
    95
    )
hgs
parents:
diff changeset
    96
    {
hgs
parents:
diff changeset
    97
    CSenDomFragmentBase::BaseConstructL(aNsUri, aLocalName, aQName);
hgs
parents:
diff changeset
    98
    }
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
CMainDomFragment::~CMainDomFragment()
hgs
parents:
diff changeset
   101
    {
hgs
parents:
diff changeset
   102
    delete ipDelegateFragment;
hgs
parents:
diff changeset
   103
    }
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
void CMainDomFragment::OnStartElementL(const RTagInfo& aElement,
hgs
parents:
diff changeset
   106
                                    const RAttributeArray& aAttributes,
hgs
parents:
diff changeset
   107
                                    TInt aErrorCode)
hgs
parents:
diff changeset
   108
    {
hgs
parents:
diff changeset
   109
    switch (iState)
hgs
parents:
diff changeset
   110
        {
hgs
parents:
diff changeset
   111
        case KSenStateSave:
hgs
parents:
diff changeset
   112
            {
hgs
parents:
diff changeset
   113
            const TPtrC8 saxLocalName   = aElement.LocalName().DesC();
hgs
parents:
diff changeset
   114
            
hgs
parents:
diff changeset
   115
            if (saxLocalName == KDelegateName)
hgs
parents:
diff changeset
   116
                {
hgs
parents:
diff changeset
   117
                const TPtrC8 saxNsUri       = aElement.Uri().DesC();
hgs
parents:
diff changeset
   118
                const TPtrC8 saxPrefix      = aElement.Prefix().DesC();
hgs
parents:
diff changeset
   119
                
hgs
parents:
diff changeset
   120
                TXmlEngElement element = AsElementL();
hgs
parents:
diff changeset
   121
                RSenDocument& document = AsDocumentL();
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
				ipDelegateFragment = CDelegateDomFragment::NewL(
hgs
parents:
diff changeset
   124
					                         saxNsUri, saxLocalName,
hgs
parents:
diff changeset
   125
					                         saxPrefix, aAttributes,
hgs
parents:
diff changeset
   126
					                         element, document
hgs
parents:
diff changeset
   127
					                         );
hgs
parents:
diff changeset
   128
                
hgs
parents:
diff changeset
   129
                iState = KStateParsingDelegate;
hgs
parents:
diff changeset
   130
                
hgs
parents:
diff changeset
   131
                OnDelegateParsingL(*ipDelegateFragment);
hgs
parents:
diff changeset
   132
                }
hgs
parents:
diff changeset
   133
            else
hgs
parents:
diff changeset
   134
                {
hgs
parents:
diff changeset
   135
                CSenDomFragmentBase::OnStartElementL(aElement, aAttributes,
hgs
parents:
diff changeset
   136
                                                  aErrorCode);
hgs
parents:
diff changeset
   137
                }
hgs
parents:
diff changeset
   138
            break;
hgs
parents:
diff changeset
   139
            }
hgs
parents:
diff changeset
   140
        default:
hgs
parents:
diff changeset
   141
            {
hgs
parents:
diff changeset
   142
            CSenDomFragmentBase::OnStartElementL(aElement, aAttributes,
hgs
parents:
diff changeset
   143
                                            aErrorCode);
hgs
parents:
diff changeset
   144
            break;
hgs
parents:
diff changeset
   145
            }
hgs
parents:
diff changeset
   146
        }
hgs
parents:
diff changeset
   147
    }
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
void CMainDomFragment::OnEndElementL(const RTagInfo& aElement,
hgs
parents:
diff changeset
   150
        						          TInt aErrorCode)
hgs
parents:
diff changeset
   151
hgs
parents:
diff changeset
   152
    {
hgs
parents:
diff changeset
   153
    switch(iState)
hgs
parents:
diff changeset
   154
        {
hgs
parents:
diff changeset
   155
        case KStateParsingDelegate:
hgs
parents:
diff changeset
   156
            {
hgs
parents:
diff changeset
   157
            iState = KSenStateSave;
hgs
parents:
diff changeset
   158
            break;
hgs
parents:
diff changeset
   159
            }
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
        default:
hgs
parents:
diff changeset
   162
            {
hgs
parents:
diff changeset
   163
            CSenDomFragmentBase::OnEndElementL(aElement, aErrorCode);
hgs
parents:
diff changeset
   164
            break;
hgs
parents:
diff changeset
   165
            }
hgs
parents:
diff changeset
   166
        }
hgs
parents:
diff changeset
   167
    }
hgs
parents:
diff changeset
   168
    
hgs
parents:
diff changeset
   169
void CMainDomFragment::OnResumeParsingFromL(const RTagInfo& aElement,
hgs
parents:
diff changeset
   170
                                                TInt aErrorCode)
hgs
parents:
diff changeset
   171
    {
hgs
parents:
diff changeset
   172
    SetContentHandler(*this);
hgs
parents:
diff changeset
   173
hgs
parents:
diff changeset
   174
    switch (iState)
hgs
parents:
diff changeset
   175
        {
hgs
parents:
diff changeset
   176
        // no other states may be resumed(!)
hgs
parents:
diff changeset
   177
        case KStateParsingDelegate:
hgs
parents:
diff changeset
   178
            {
hgs
parents:
diff changeset
   179
            OnEndElementL(aElement, aErrorCode);
hgs
parents:
diff changeset
   180
            }
hgs
parents:
diff changeset
   181
            break;
hgs
parents:
diff changeset
   182
        }    
hgs
parents:
diff changeset
   183
    }
hgs
parents:
diff changeset
   184
    
hgs
parents:
diff changeset
   185
CDelegateDomFragment& CMainDomFragment::DelegateFragment()
hgs
parents:
diff changeset
   186
    {
hgs
parents:
diff changeset
   187
    return *ipDelegateFragment;
hgs
parents:
diff changeset
   188
    }
hgs
parents:
diff changeset
   189
hgs
parents:
diff changeset
   190
// END OF FILE
hgs
parents:
diff changeset
   191