IMPSengine/messageencoder/wbxml/src/ImpsWbXmlData.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:41:52 +0200
changeset 0 094583676ce7
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* Copyright (c) 2003 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:  Provides methods for CSP WBXML data handling
*
*
*/


// INCLUDE FILES
#include    "ImpsWbXmlData.h"
#include    "ImpsCommonEnums.h"
#include    "ImpsWbXmlCommon.h"
#include    "ImpsPresence.h"
#include    "ImpsFundamental.h"

// ==================== LOCAL FUNCTIONS ====================


// ================= MEMBER FUNCTIONS =======================

// C++ default constructor can NOT contain any code, that
// might leave.
//
CImpsWbXmlData::CImpsWbXmlData()
    {

    }

// default constructor can leave.
void CImpsWbXmlData::ConstructL()
    {

    }

// Two-phased constructor.
CImpsWbXmlData* CImpsWbXmlData::NewL()
    {
     
    CImpsWbXmlData* self = new (ELeave) CImpsWbXmlData;
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop();
    return self;
    
    }

    
// Destructor
CImpsWbXmlData::~CImpsWbXmlData()
    {
    
    }


// ---------------------------------------------------------
// CImpsWbXmlData::GetWbXmlElementValue
// method returns wbxml element value token corresponding to
// given string
// ---------------------------------------------------------
//
TUint32 CImpsWbXmlData::GetWbXmlElementValue(TInt aToken,TDesC*& aValue)
   {

    switch(aToken)
    {

    case    KImpsWbXmlOnlineStatus:                                             // OnlineStatus
    case    KImpsWbXmlRegistration:                                             // Registration
            if(!aValue->CompareF(KImpsTrue))         return(KImpsWbXmlTrue);         // True
            if(!aValue->CompareF(KImpsFalse))        return(KImpsWbXmlFalse);        // False
            break;

    case    KImpsWbXmlClientInfo:                                               // ClientInfo
            if(!aValue->CompareF(KImpsMobilePhone))  return(KImpsWbXmlMobilePhone);  // MobilePhone
            if(!aValue->CompareF(KImpsComputer))     return(KImpsWbXmlComputer);     // Computer
            if(!aValue->CompareF(KImpsPda))          return(KImpsWbXmlPda);          // Pda
            if(!aValue->CompareF(KImpsCli))          return(KImpsWbXmlCli);          // Cli
            if(!aValue->CompareF(KImpsOther))        return(KImpsWbXmlOther);        // Other
            break;

    case    KImpsWbXmlUserAvailability:                                         // UserAvailabilty
            if(!aValue->CompareF(KImpsAvailable))    return(KImpsWbXmlAvailable); 
            if(!aValue->CompareF(KImpsNotAvailable)) return(KImpsWbXmlNotAvailable); 
            if(!aValue->CompareF(KImpsDiscreet))     return(KImpsWbXmlDiscreet);
            break;

    case    KImpsWbXmlName:                                                     // Name
            if(!aValue->CompareF(KImpsName))             return(KImpsWbXmlNameValue);        // extension Name
            if(!aValue->CompareF(KImpsType))             return(KImpsWbXmlType);             // Type
            if(!aValue->CompareF(KImpsAccessType))       return(KImpsWbXmlAccessType);       // AccessType
            if(!aValue->CompareF(KImpsTopic))            return(KImpsWbXmlTopic);            // Topic
            if(!aValue->CompareF(KImpsPrivateMessaging)) return(KImpsWbXmlPrivateMessaging); // PrivateMessaging
            if(!aValue->CompareF(KImpsSearchable))       return(KImpsWbXmlSearchable);       // Searchable
            if(!aValue->CompareF(KImpsActiveUsers))      return(KImpsWbXmlActiveUsers);      // ActiveUsers
            if(!aValue->CompareF(KImpsMaxActiveUsers))   return(KImpsWbXmlMaxActiveUsers);   // MaxActiveUsers
            if(!aValue->CompareF(KImpsAutoJoin))         return(KImpsWbXmlAutoJoin);         // AutoJoin
            if(!aValue->CompareF(KImpsPrivilegeLevel))   return(KImpsWbXmlPrivilegeLevel);   // PriviledgeLevel
            if(!aValue->CompareF(KImpsAutoDelete))   	 return(KImpsWbXmlAutoDelete);       // AutoDelete
            if(!aValue->CompareF(KImpsValidity))   	 	 return(KImpsWbXmlValidityValue);    // Validity
            break;

    case    KImpsWbXmlAcceptedTransferEncoding:                                         // AcceptedTransferEncoding
    case    KImpsWbXmlContentEncoding:                                                  // ContentEncoding
            if(!aValue->CompareF(KImpsBASE64))           return(KImpsWbXmlBASE64);           // BASE64
            if(!aValue->CompareF(KImpsApplicationVndWapMmsMessage))	return KImpsWbXmlApplicationVndWapMmsMessage;
            if(!aValue->CompareF(KImpsApplicationXSms))	 return KImpsWbXmlApplicationXSms;
            break;

    case    KImpsWbXmlAcceptedContentType:                                              // AcceptedContentType
    case    KImpsWbXmlContentType:                                                      // ContentType
            if(!aValue->CompareF(KImpstextplain))        return(KImpsWbXmlTextPlain);        // text/plain
            break;

    case    KImpsWbXmlValue:                                                            // Value
            if(!aValue->CompareF(KImpsTrue))             return(KImpsWbXmlTrue);             // T
            if(!aValue->CompareF(KImpsFalse))            return(KImpsWbXmlFalse);            // F
            if(!aValue->CompareF(KImpsOpen16))           return(KImpsWbXmlOpen);             // Open
            if(!aValue->CompareF(KImpsRestricted))       return(KImpsWbXmlRestricted);       // Restricted
            if(!aValue->CompareF(KImpsPublic))           return(KImpsWbXmlPublic);           // Public
            if(!aValue->CompareF(KImpsPrivate))          return(KImpsWbXmlPrivate);          // Private
            if(!aValue->CompareF(KImpsAdmin))            return(KImpsWbXmlAdminValue);       // Admin
            if(!aValue->CompareF(KImpsMod))              return(KImpsWbXmlModValue);         // Mod
            break;

        default:
            break;

        }
        
    return(KImpsWbXmlDataNotFound);
    
    }

// ---------------------------------------------------------
// CImpsWbXmlData::GetWbXmlElementValue
// method returns wbxml element value token corresponding to given
// imps engine value and possible max string length
// ---------------------------------------------------------
//
TUint32 CImpsWbXmlData::GetWbXmlElementValue(TInt aToken,TUint32 aValue, TInt& aMaxLength)
   {

    switch(aToken)
    {

    case    KImpsWbXmlSessionType:                              // SessionType
            if(aValue == EImpsInband) return(KImpsWbXmlInband);     // Inband
            if(aValue == EImpsOutband) return(KImpsWbXmlOutband);   // Outband
//            break;

    case    KImpsWbXmlUserID:                           // UserID
    case    KImpsWbXmlName:                             // Name
    case    KImpsWbXmlSessionID:                        // SessionID
    case    KImpsWbXmlGroupID:                          // GroupID
    case    KImpsWbXmlMessageID:                        // MessageID
    case    KImpsWbXmlTransactionID:                    // TransactionID
    case    KImpsWbXmlPassword:                         // Password
    case    KImpsWbXmlSessionCookie:                    // SessionCookie
    case    KImpsWbXmlSName:                            // SName
    case    KImpsWbXmlValue:                            // Value
            aMaxLength = KImpsWbXmlMaxLength50;             // max 50 characters
            break;

    case    KImpsWbXmlSearchString:                     // SearchString
    case    KImpsWbXmlMessageURI:                       // MessageURI
    case    KImpsWbXmlContactList:                      // ContactList
    case    KImpsWbXmlDefaultContactList:               // DefaultContactList
    case    KImpsWbXmlInviteID:                         // InviteID
            aMaxLength = KImpsWbXmlMaxLength100;            // max 100 characters
            break;

    case    KImpsWbXmlDescription:                      // Description
    case    KImpsWbXmlDigestBytes:                      // DigestBytes
    case    KImpsWbXmlNonce:                            // Nonce
            aMaxLength = KImpsWbXmlMaxLength200;            // max 200 characters
            break;

    case    KImpsWbXmlInviteNote:                       // InviteNote
    case    KImpsWbXmlResponseNote:                     // ResponseNote
            aMaxLength = KImpsWbXmlMaxLength400;            // max 400 characters
            break;

    case    KImpsWbXmlTransactionMode:  // TransactionMode
            if(aValue == EImpsRequest) return(KImpsWbXmlRequest);   // Request
            if(aValue == EImpsResponse) return(KImpsWbXmlResponse); // Response
//            break;

    case    KImpsWbXmlInitialDeliveryMethod:            // InitialDeliveryMethod
    case    KImpsWbXmlDeliveryMethod:                   // DeliveryMethod
            if(aValue == EImpsP) return(KImpsWbXmlDeliveryMethodP); // P
            if(aValue == EImpsN) return(KImpsWbXmlDeliveryMethodN); // N
//            break;

    case    KImpsWbXmlPoll:                             // Poll
    case    KImpsWbXmlQualifier:                        // Qualifier
    case    KImpsWbXmlJoinGroup:                        // JoinGroup
    case    KImpsWbXmlJoinedRequest:                    // JoinedRequest
    case    KImpsWbXmlInUse:                            // InUse
    case    KImpsWbXmlCapabilityRequest:                // CapabilityRequest
    case    KImpsWbXmlAllFunctionsRequest:              // AllFunctionsRequest
    case    KImpsWbXmlAnyContent:                       // AnyContent
    case    KImpsWbXmlAcceptance:                       // Acceptance
    case    KImpsWbXmlCompletionFlag:                   // CompletionFlag
    case    KImpsWbXmlDefaultList:                      // DefaultList
    case    KImpsWbXmlDeliveryReport:                   // DeliveryReport
    case    KImpsWbXmlSubscribeNotification:            // SubscribeNotification
    case KImpsWbxmlReceiveList: 
    case KImpsWbxmlAutoSubscribe:
            if(aValue == TRUE) return(KImpsWbXmlTrue);      // True
            if(aValue == FALSE) return(KImpsWbXmlFalse);    // False
//            break;

    case    KImpsWbXmlClientType:                                       // ClientType
            if(aValue == EImpsMOBILE_PHONE) return(KImpsWbXmlMobilePhone);  // True
            if(aValue == EImpsCOMPUTER)     return(KImpsWbXmlComputer);     // Computer
            if(aValue == EImpsPDA)          return(KImpsWbXmlPda);          // Pda
            if(aValue == EImpsCLI)          return(KImpsWbXmlCli);          // Cli
            if(aValue == EImpsOTHER)        return(KImpsWbXmlOther);        // Other
//            break;

    case    KImpsWbXmlInviteType:                                   // InviteType
            if(aValue == EImpsGR)           return(KImpsWbXmlGR);       // GR
            if(aValue == EImpsIM)           return(KImpsWbXmlIM);       // IM
            if(aValue == EImpsPR)           return(KImpsWbXmlPR);       // PR
            if(aValue == EImpsSC)           return(KImpsWbXmlSC);       // SC
//            break;

    case    KImpsWbXmlSupportedBearer:                              // SupportedBearer
            if(aValue == EImpsSMS)          return(KImpsWbXmlSMS);      // SMS
            if(aValue == EImpsWSP)          return(KImpsWbXmlWSP);      // WSP
            if(aValue == EImpsHTTP)         return(KImpsWbXmlHTTP);     // HTTP
            // if(aValue == EImpsHTTPS)     return(KImpsWbXmlHTTPS);    // HTTPS
//            break;

    case    KImpsWbXmlSupportedCIRMethod:                           // SupportedCIRMethod
            if(aValue == EImpsWAPSMS)       return(KImpsWbXmlWAPSMS);   // WAPSMS
            if(aValue == EImpsWAPUDP)       return(KImpsWbXmlWAPUDP);   // WAPUDP
            if(aValue == EImpsSUDP)         return(KImpsWbXmlSUDP);     // SUDP
            if(aValue == EImpsSTCP)         return(KImpsWbXmlSTCP);     // STCP
//            break;

    case    KImpsWbXmlCap:                                          // Cap
            if(aValue == EImpsCapSMS)       return(KImpsWbXmlSMS);      // SMS
            if(aValue == EImpsCapMMS)       return(KImpsWbXmlMMS);      // MMS
            if(aValue == EImpsCapIM)        return(KImpsWbXmlCapIM);    // IM
            if(aValue == EImpsCapEMAIL)     return(KImpsWbXmlEMAIL);    // EMAIL
            if(aValue == EImpsCapCALL)      return(KImpsWbXmlCALL);     // CALL
//            break;

    case    KImpsWbXmlStatus:                                       // Presence Status
            if(aValue == 1) return(KImpsWbXmlOpen);                     // Open
            if(aValue == 2) return(KImpsWbXmlClosed);                   // Closed
//            break;

    case    KImpsWbXmlSubscribeType:                                    // SubscribeType
            if(aValue == EImpsG)                    return(KImpsWbXmlG);    // G
            if(aValue == EImpsS)                    return(KImpsWbXmlS);    // S
            if(aValue == EImpsU)                    return(KImpsWbXmlU);    // U
//            break;

    case    KImpsWbXmlSearchElement:                                                    // SearchElement
            if(aValue == EImpsUserID)               return(KImpsWbXmlUSER_ID);              // USER_ID
            if(aValue == EImpsUserFirstName)        return(KImpsWbXmlUSER_FIRST_NAME);      // USER_FIRST_NAME
            if(aValue == EImpsUserLastName)         return(KImpsWbXmlUSER_LAST_NAME);       // USER_LAST_NAME
            if(aValue == EImpsUserEmailAddress)     return(KImpsWbXmlUSER_EMAIL_ADDRESS);   // USER_EMAIL_ADDRESS
            if(aValue == EImpsUserAlias)            return(KImpsWbXmlUSER_ALIAS);           // USER_ALIAS
            if(aValue == EImpsUserOnlineStatus)     return(KImpsWbXmlUSER_ONLINE_STATUS);   // USER_ONLINE_STATUS
            if(aValue == EImpsUserMobileNumber)     return(KImpsWbXmlUSER_MOBILE_NUMBER);   // USER_MOBILE_NUMBER
            if(aValue == EImpsGroupID)              return(KImpsWbXmlGROUP_ID);             // GROUP_ID
            if(aValue == EImpsGroupName)            return(KImpsWbXmlGROUP_NAME);           // GROUP_NAME
            if(aValue == EImpsGroupTopic)           return(KImpsWbXmlGROUP_TOPIC);          // GROUP_TOPIC
            if(aValue == EImpsGroupUserIDJoined)    return(KImpsWbXmlGROUP_USER_ID_JOINED); // GROUP_USER_ID_JOINED
            if(aValue == EImpsGroupUserIDOwner)     return(KImpsWbXmlGROUP_USER_ID_OWNER);  // GROUP_USER_ID_OWER
//            break;

    case    KImpsWbXmlURL:                                      // URL
            aMaxLength = KImpsWbXmlMaxLength200;                    // max 200 characters
            return(KImpsWbXmlHttp);                                 // http://
//            break;

    case    KImpsWbXmlAcceptedTransferEncoding:                 // AcceptedTransferEncoding
    case    KImpsWbXmlContentEncoding:                          // ContentEncoding
            aMaxLength = KImpsWbXmlMaxLength50;                     // default max length = 50
            if(aValue == EImpsNone) return(KImpsWbXmlNone);         // None
            if(aValue == EImpsBASE64) return(KImpsWbXmlBASE64);     // BASE64
//            break;

    case    KImpsWbXmlContentData:
        case KImpsWbXmlDirectContent:
        case KImpsWbXmlReferredContent:
            aMaxLength = KImpsWbXmlNoMaxLength;                     // no max length
            return(KImpsWbXmlDataNotFound);
//            break;

        default:
            aMaxLength = KImpsWbXmlNoMaxLength;                     // no max length
//            return(KImpsWbXmlDataNotFound);
            break;
        }

        return(KImpsWbXmlDataNotFound);
   }


// ---------------------------------------------------------
// CImpsWbXmlData::GetImpsEngineValue
// method returns Imps engine value corresponding to given
// wbxml element value token if exists
// ---------------------------------------------------------
//
TInt CImpsWbXmlData::GetImpsEngineValue(TInt aToken,TInt aValue)
   {


    switch(aToken)
    {

    case    KImpsWbXmlSessionType:                              // SessionType
            if(aValue == KImpsWbXmlInband)  return(EImpsInband);    // Inband
            if(aValue == KImpsWbXmlOutband) return(EImpsOutband);   // Outband
            break;

    case    KImpsWbXmlTransactionMode:  // TransactionMode
            if(aValue == KImpsWbXmlRequest)  return(EImpsRequest);  // Request
            if(aValue == KImpsWbXmlResponse) return(EImpsResponse); // Response
            break;

    case    KImpsWbXmlInitialDeliveryMethod:                        // InitialDeliveryMethod
    case    KImpsWbXmlDeliveryMethod:                               // DeliveryMethod
            if(aValue == KImpsWbXmlDeliveryMethodP)  return(EImpsP);    // P
            if(aValue == KImpsWbXmlDeliveryMethodN)  return(EImpsN);    // N
            break;

    case    KImpsWbXmlPoll:                                 // Poll
    case    KImpsWbXmlQualifier:                            // Qualifier
    case    KImpsWbXmlCapabilityRequest:                    // CapabilityRequest
    case    KImpsWbXmlAllFunctionsRequest:                  // AllFunctionsRequest
    case    KImpsWbXmlJoinGroup:                            // JoinGroup
    case    KImpsWbXmlJoinedRequest:                        // JoinedRequest
    case    KImpsWbXmlInUse:                                // InUse
    case    KImpsWbXmlAnyContent:                           // AnyContent
    case    KImpsWbXmlAcceptance:                           // Acceptance
    case    KImpsWbXmlCompletionFlag:                       // CompletionFlag
    case    KImpsWbXmlDefaultList:                          // DefaultList
    case    KImpsWbXmlDeliveryReport:                       // DeliveryReport
    case    KImpsWbXmlSubscribeNotification:                // SubscribeNotification
            if(aValue == KImpsWbXmlTrue)  return(ETrue);        // True
            if(aValue == KImpsWbXmlFalse) return(EFalse);       // False
            break;

    case    KImpsWbXmlClientType:           // ClientType
            if(aValue == KImpsWbXmlMobilePhone) return(EImpsMOBILE_PHONE);  // MobilePhone
            if(aValue == KImpsWbXmlComputer)    return(EImpsCOMPUTER);      // Computer
            if(aValue == KImpsWbXmlPda)         return(EImpsPDA);           // Pda
            if(aValue == KImpsWbXmlCli)         return(EImpsCLI);           // Cli
            if(aValue == KImpsWbXmlOther)       return(EImpsOTHER);         // Other
            break;

    case    KImpsWbXmlInviteType:           // InviteType
            if(aValue == KImpsWbXmlGR )         return(EImpsGR);        // GR
            if(aValue == KImpsWbXmlIM )         return(EImpsIM);        // IM
            if(aValue == KImpsWbXmlPR )         return(EImpsPR);        // PR
            if(aValue == KImpsWbXmlSC )         return(EImpsSC);        // SC
            break;

    case    KImpsWbXmlSupportedBearer:      // SupportedBearer
            if(aValue == KImpsWbXmlSMS )        return(EImpsSMS);       // SMS
            if(aValue == KImpsWbXmlWSP )        return(EImpsWSP);       // WSP
            if(aValue == KImpsWbXmlHTTP )       return(EImpsHTTP);      // HTTP
            // if(aValue == KImpsWbXmlHTTPS )       return(EImpsHTTPS);     // HTTPS
            break;

    case    KImpsWbXmlSupportedCIRMethod:   // SupportedCIRMethod
            if(aValue == KImpsWbXmlWAPSMS)      return(EImpsWAPSMS);    // WAPSMS
            if(aValue == KImpsWbXmlWAPUDP)      return(EImpsWAPUDP);    // WAPUDP
            if(aValue == KImpsWbXmlSUDP)        return(EImpsSUDP);      // SUDP
            if(aValue == KImpsWbXmlSTCP)        return(EImpsSTCP);      // STCP
            break;

    case    KImpsWbXmlSubscribeType:        // SubscribeType
            if(aValue == KImpsWbXmlG)           return(EImpsG);         // G
            if(aValue == KImpsWbXmlS)           return(EImpsS);         // S
            if(aValue == KImpsWbXmlU)           return(EImpsU);         // U
            break;

    case    KImpsWbXmlSearchElement:        // SearchElement
            if(aValue == KImpsWbXmlUSER_ID )                return(EImpsUserID);                // USER_ID
            if(aValue == KImpsWbXmlUSER_FIRST_NAME )        return(EImpsUserFirstName);         // USER_FIRST_NAME
            if(aValue == KImpsWbXmlUSER_LAST_NAME )         return(EImpsUserLastName);          // USER_LAST_NAME
            if(aValue == KImpsWbXmlUSER_EMAIL_ADDRESS )     return(EImpsUserEmailAddress);      // USER_EMAIL_ADDRESS
            if(aValue == KImpsWbXmlUSER_ALIAS )             return(EImpsUserAlias);             // USER_ALIAS
            if(aValue == KImpsWbXmlUSER_ONLINE_STATUS )     return(EImpsUserOnlineStatus);      // USER_ONLINE_STATUS
            if(aValue == KImpsWbXmlUSER_MOBILE_NUMBER )     return(EImpsUserMobileNumber);      // USER_MOBILE_NUMBER
            if(aValue == KImpsWbXmlGROUP_ID )               return(EImpsGroupID);               // GROUP_ID
            if(aValue == KImpsWbXmlGROUP_NAME )             return(EImpsGroupName);             // GROUP_NAME
            if(aValue == KImpsWbXmlGROUP_TOPIC )            return(EImpsGroupTopic);            // GROUP_TOPIC
            if(aValue == KImpsWbXmlGROUP_USER_ID_JOINED )   return(EImpsGroupUserIDJoined);     // GROUP_USER_ID_JOINED
            if(aValue == KImpsWbXmlGROUP_USER_ID_OWNER )    return(EImpsGroupUserIDOwner);      // GROUP_USER_ID_OWER
            break;

    case    KImpsWbXmlAcceptedTransferEncoding:                 // AcceptedTransferEncoding
    case    KImpsWbXmlContentEncoding:                          // ContentEncoding
            if(aValue ==KImpsWbXmlNone )    return(EImpsNone);      // None
            if(aValue ==KImpsWbXmlBASE64 )  return(EImpsBASE64);    // BASE64 
            break;

    case    KImpsWbXmlCap:                  // Cap
            if(aValue == KImpsWbXmlSMS)     return(EImpsCapSMS);    // SMS
            if(aValue == KImpsWbXmlMMS)     return(EImpsCapMMS);    // MMS
            if(aValue == KImpsWbXmlCapIM)   return(EImpsCapIM);     // IM / (CommC/Cap)
            if(aValue == KImpsWbXmlIM)
            {
                TInt value = EImpsCapIM;
                if((aToken & KImpsMaskCodePage) == KImpsCodePagePresence)
                {
                    value = EImpsCapIM;
                }
                return(value);
            }
            if(aValue == KImpsWbXmlEMAIL)   return(EImpsCapEMAIL);  // EMAIL
            if(aValue == KImpsWbXmlCALL)    return(EImpsCapCALL);   // CALL
            break;

    case    KImpsWbXmlStatus:                                   // Presence Status
            if(aValue == KImpsWbXmlOpen)    return(1);              // Open
            if(aValue == KImpsWbXmlClosed)  return(2);              // Closed
            break;

        default:
            break;
        }

        return(KErrNotFound);   
   }


// ---------------------------------------------------------
// CImpsWbXmlData::GetWbXmlStringValue
// method returns possible string corresponding to given token
// ---------------------------------------------------------
//
TPtrC8 CImpsWbXmlData::GetWbXmlStringValue(TInt aToken,TInt aValue)
   {
        
    TPtrC8 p(KNullDesC8);
    switch(aToken)
    {

    case    KImpsWbXmlDigestSchema:                                    // DigestSchema
            if(aValue == EImpsPWD)          return TPtrC8(KImpsPWD);       // PWD
            if(aValue == EImpsSHA)          return TPtrC8(KImpsSHA);       // SHA
            if(aValue == EImpsMD4)          return TPtrC8(KImpsMD4);       // MD4
            if(aValue == EImpsMD5)          return TPtrC8(KImpsMD5);       // MD4
            if(aValue == EImpsMD6)          return TPtrC8(KImpsMD6);       // MD4
            break;

    case    KImpsWbXmlSupportedBearer:                                 // SupportedBearer
            if(aValue == EImpsHTTPS)        return TPtrC8(KImpsHTTPS);     // HTTPS
            break;

        default:
            return(p);   
        }
        return(p);
   }

// ---------------------------------------------------------
// CImpsWbXmlData::GetImpsEngineDesc8Value
// method returns possible prefix string corresponding to given token
// ---------------------------------------------------------
//
TPtrC8 CImpsWbXmlData::GetImpsEngineDesc8Value(TInt aToken,TInt aValue)
   {
        
    TPtrC8 p(KNullDesC8);
    switch(aToken)
    {

    case    KImpsWbXmlURL:          // URL
            if(aValue == KImpsWbXmlHttp)    return TPtrC8(KImpsHttp8);     // http
            if(aValue == KImpsWbXmlHttps)   return TPtrC8(KImpsHttps8);    // Https
            break;
        
    default:    
        return(p);   
        
    }

    return(p);
   
    }

// ---------------------------------------------------------
// CImpsWbXmlData::GetImpsEngineDescValue
// method returns possible string corresponding to given token
// ---------------------------------------------------------
//
TPtrC CImpsWbXmlData::GetImpsEngineDescValue(TInt aToken,TInt aValue)
   {
    
    TPtrC p(KNullDesC);
    
    switch(aToken)
    {
        
    case    KImpsWbXmlOnlineStatus:                                        // OnlineStatus
    case    KImpsWbXmlRegistration:                                        // Registration
            if(aValue == KImpsWbXmlTrue)        return TPtrC(KImpsTrue);       // True
            if(aValue == KImpsWbXmlFalse)       return TPtrC(KImpsFalse);      // False
            break;

    case    KImpsWbXmlClientInfo:                                           // ClientInfo
            if(aValue == KImpsWbXmlMobilePhone) return TPtrC(KImpsMobilePhone); // MobilePhone
            if(aValue == KImpsWbXmlComputer)    return TPtrC(KImpsComputer);    // Computer
            if(aValue == KImpsWbXmlPda)         return TPtrC(KImpsPda);         // Pda
            if(aValue == KImpsWbXmlCli)         return TPtrC(KImpsCli);         // Cli
            if(aValue == KImpsWbXmlOther)       return TPtrC(KImpsOther);       // Other
            break;

    case    KImpsWbXmlUserAvailability:                                     // UserAvailabilty
            if(aValue == KImpsWbXmlAvailable)   return TPtrC(KImpsAvailable);          // 
            if(aValue == KImpsWbXmlNotAvailable) return TPtrC(KImpsNotAvailable);     // 
            if(aValue == KImpsWbXmlDiscreet)    return TPtrC(KImpsDiscreet);          // 
            break;

    case    KImpsWbXmlURL:                                                  // URL
            if(aValue == KImpsWbXmlHttp)        return TPtrC(KImpsHttp);        // Http
            if(aValue == KImpsWbXmlHttps)       return TPtrC(KImpsHttps);       // Https
            break;

    case    KImpsWbXmlName:                                                 // Name
            if(aValue == KImpsWbXmlNameValue)      return TPtrC(KImpsName);        // extension Name
            if(aValue == KImpsWbXmlType)           return TPtrC(KImpsType);        // Type
            if(aValue == KImpsWbXmlAccessType)     return TPtrC(KImpsAccessType);  // Type
            if(aValue == KImpsWbXmlTopic)          return TPtrC(KImpsTopic);       // Topic
            if(aValue == KImpsWbXmlPrivateMessaging)    return TPtrC(KImpsPrivateMessaging);    // PrivateMessaging
            if(aValue == KImpsWbXmlSearchable)     return TPtrC(KImpsSearchable);   // Searchable
            if(aValue == KImpsWbXmlActiveUsers)    return TPtrC(KImpsActiveUsers);  // ActiveUsers
            if(aValue == KImpsWbXmlMaxActiveUsers) return TPtrC(KImpsMaxActiveUsers);  // MaxActiveUsers
            if(aValue == KImpsWbXmlAutoJoin)       return TPtrC(KImpsAutoJoin);        // AutoJoin
            if(aValue == KImpsWbXmlPrivilegeLevel) return TPtrC(KImpsPrivilegeLevel);    // PriviledgeLevel
            if(aValue == KImpsWbXmlDisplayName)    return TPtrC(KImpsDisplayName);      // DisplayName
            if(aValue == KImpsWbXmlDefault)        return TPtrC(KImpsDefault);          // Default
            if(aValue == KImpsWbXmlAutoDelete)     return TPtrC(KImpsAutoDelete);       // AutoDelete
            if(aValue == KImpsWbXmlValidityValue)       return TPtrC(KImpsValidity);         // Validity
             
            break;

    case    KImpsWbXmlValue:                                                // Value
            if(aValue == KImpsWbXmlTrue)        return TPtrC(KImpsTrue);        // T
            if(aValue == KImpsWbXmlFalse)       return TPtrC(KImpsFalse);       // F
            if(aValue == KImpsWbXmlOpen)        return TPtrC(KImpsOpen16);      // Open
            if(aValue == KImpsWbXmlRestricted)  return TPtrC(KImpsRestricted);  // Restricted
            if(aValue == KImpsWbXmlPublic)      return TPtrC(KImpsPublic);      // Public
            if(aValue == KImpsWbXmlPrivate)     return TPtrC(KImpsPrivate);     // Private
            if(aValue == KImpsWbXmlAdminValue)  return TPtrC(KImpsAdmin);       // Admin
            if(aValue == KImpsWbXmlModValue)    return TPtrC(KImpsMod);         // Mod
            break;

    case    KImpsWbXmlContentType:                                          // ContentType
    case    KImpsWbXmlAcceptedContentType:                                  // AcceptedContentType
            if(aValue == KImpsWbXmlTextPlain)   return TPtrC(KImpstextplain);   // text/plain
            if (aValue == KImpsWbXmlApplicationVndWapMmsMessage)	return TPtrC(KImpsApplicationVndWapMmsMessage);
            if (aValue == KImpsWbXmlApplicationXSms)	return TPtrC(KImpsApplicationXSms);
            break;
    
    default:
            if ( aValue == KImpsWbXmlIM ) 
                {
                return TPtrC(KImpsIM);
                }
            return(p);   

    }
    
    return(p);
   
    }

// ---------------------------------------------------------
// CImpsWbXmlData::GetImpsEngineValue
// method returns imps engine value corresponding to
// given string
// ---------------------------------------------------------
//
TUint32 CImpsWbXmlData::GetImpsEngineValue(TInt aToken,TPtrC8 aValue)
   {

    
    switch(aToken)
    {

    case    KImpsWbXmlStatus:                                  // Status
            if(!aValue.CompareF(TPtrC8(KImpsOpen)))    return(1);   // True
            if(!aValue.CompareF(TPtrC8(KImpsClosed)))  return(2);   // False
            break;

    case    KImpsWbXmlDigestSchema:                                 // DigestSchema
            if(!aValue.CompareF(TPtrC8(KImpsPWD)))     return(EImpsPWD); // PWD
            if(!aValue.CompareF(TPtrC8(KImpsSHA)))     return(EImpsSHA); // SHA
            if(!aValue.CompareF(TPtrC8(KImpsMD4)))     return(EImpsMD4); // MD4
            if(!aValue.CompareF(TPtrC8(KImpsMD5)))     return(EImpsMD5); // MD5
            if(!aValue.CompareF(TPtrC8(KImpsMD6)))     return(EImpsMD6); // MD6
            break;

    case    KImpsWbXmlSupportedBearer:                                 // SupportedBearer
            if(!aValue.CompareF(TPtrC8(KImpsHTTPS)))   return(EImpsHTTPS);  // HTTPS
            break;
        
    case    KImpsWbXmlContentEncoding:
    case	KImpsWbXmlAcceptedTransferEncoding:
        if(!aValue.CompareF(TPtrC8(KImpsBASE64_8)))   return(EImpsBASE64); // BASE64
        if(!aValue.CompareF(TPtrC8(KImpsNone_8)))   return(EImpsNone);  // None
        break;
            
    default:
            break;
    
    }

    return(KImpsWbXmlDataNotFound);

    }


// ---------------------------------------------------------
// CImpsWbXmlData::GetWbXmlAttributeTokenValue
// method returns attribute token value (integer)
// ---------------------------------------------------------
//
TUint CImpsWbXmlData::GetWbXmlAttributeTokenValue(TInt aToken, TImpsCspVersion aCspVersion)
   {
    
    switch(aToken)
    {
        case    KImpsWbXmlWV_CSP_Message:       // WV-CSP-Message
            return aCspVersion == EImpsCspVersion11 ? KImpsWbXmlCsp11Xmlns : KImpsWbXmlCsp12Xmlns;

        case    KImpsWbXmlPresenceSubList:      // PresenceSubList
            return aCspVersion == EImpsCspVersion11 ? KImpsWbXmlPa11Xmlns : KImpsWbXmlPa12Xmlns;

        case    KImpsWbXmlTransactionContent:   // TransactionContent
            return aCspVersion == EImpsCspVersion11 ? KImpsWbXmlTrc11Xmlns : KImpsWbXmlTrc12Xmlns;
            
//    case KImpsWbXmlExtBlock: 
            
        default:
            break;
        
    }
    
    return(0);   
   
    }

// ---------------------------------------------------------
// CImpsWbXmlData::GetWbXmlAttributeStringValue
// method returns attribute token value (string)
// ---------------------------------------------------------
//
TPtrC8 CImpsWbXmlData::GetWbXmlAttributeStringValue(TInt aToken, TImpsCspVersion aCspVersion)
   {
    
    TPtrC8 p(KNullDesC8);
    
    switch(aToken)
    {
        case    KImpsWbXmlWV_CSP_Message:       // WV-CSP-Message
        case    KImpsWbXmlPresenceSubList:      // PresenceSubList
        case    KImpsWbXmlTransactionContent:   // TransactionContent
            return aCspVersion == EImpsCspVersion11 ? TPtrC8(KImpsMessageVersion11): TPtrC8(KImpsMessageVersion12);

            default:
            break;
        
    }
    
    return(p);   
   
    }

/*
const TDesC8& CImpsWbXmlData::GetAttributeStringByToken(TInt aToken)
    {
    switch (aToken) 
        {
        case KImpsWbXmlTrc12Xmlns:
            return KImpsTRC12Xmlns();
            break;
        case KImpsWbXmlPa12Xmlns:
            return KImpsPA12Xmlns();
            break;

        case KImpsWbXmlCsp12Xmlns:
            return KImpsCSP12Xmlns();
        default:;
        }
    }
*/
//  End of File