PECengine/AttributeLibrary2/SrcWVAttributes/CPEngWVUserAvailabilityConstruct.cpp
changeset 0 094583676ce7
equal deleted inserted replaced
-1:000000000000 0:094583676ce7
       
     1 /*
       
     2 * Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  WV User Availability implementation.
       
    15 *
       
    16 */
       
    17 
       
    18 // INCLUDE FILES
       
    19 #include "CPEngWVAttributeConstructBase.h"
       
    20 #include "CPEngWVAttributeModelBase.h"
       
    21 #include "CPEngWVUserAvailabilityConstruct.h"
       
    22 
       
    23 #include "MPEngXMLSerializer.h"
       
    24 #include "MPEngXMLParser.h"
       
    25 
       
    26 #include <MPEngPresenceAttrModel2.h>
       
    27 #include <E32Base.h>
       
    28 #include <S32Strm.h>
       
    29 
       
    30 
       
    31 
       
    32 //  DATA TYPES
       
    33 /**
       
    34  * Availability CSP name construct.
       
    35  *
       
    36  * @since 3.0
       
    37  */
       
    38 const TWVCspAttributeNameEntry KUserAvailabilityCspNameTable[] =
       
    39     {
       
    40         {
       
    41         EWVCspV11,
       
    42         LIT_AS_DESC8_PTR( KUserAvailabilityXMLTag ),
       
    43         LIT_AS_DESC8_PTR( KPresenceSubListAttributesNS )
       
    44         },
       
    45         {
       
    46         EWVCspV12,
       
    47         LIT_AS_DESC8_PTR( KUserAvailabilityXMLTag ),
       
    48         LIT_AS_DESC8_PTR( KPresenceSubListAttributesNS_CSP12 )
       
    49         }
       
    50     };
       
    51 
       
    52 
       
    53 const TInt KUserAvailabilityCspNameTableCount = sizeof( KUserAvailabilityCspNameTable ) / sizeof( TWVCspAttributeNameEntry );
       
    54 
       
    55 
       
    56 
       
    57 
       
    58 // =============== CPEngWVUserAvailabilityConstruct MEMBER FUNCTIONS ===============
       
    59 
       
    60 // -----------------------------------------------------------------------------
       
    61 // CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityConstruct
       
    62 // C++ constructor can NOT contain any code, that
       
    63 // might leave.
       
    64 // -----------------------------------------------------------------------------
       
    65 //
       
    66 CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityConstruct( TPEngWVCspVersion aCurrentCspVer )
       
    67         : CPEngWVAttributeConstructBase( aCurrentCspVer,
       
    68                                          KUserAvailabilityCspNameTable,
       
    69                                          KUserAvailabilityCspNameTableCount )
       
    70     {
       
    71     }
       
    72 
       
    73 
       
    74 // Destructor
       
    75 CPEngWVUserAvailabilityConstruct::~CPEngWVUserAvailabilityConstruct()
       
    76     {
       
    77     }
       
    78 
       
    79 
       
    80 // -----------------------------------------------------------------------------
       
    81 // CPEngWVUserAvailabilityConstruct::NewAttributeInstanceLC()
       
    82 // -----------------------------------------------------------------------------
       
    83 //
       
    84 MPEngPresenceAttrModelTypeImp* CPEngWVUserAvailabilityConstruct::NewAttributeInstanceLC(
       
    85     TBool aUserOwnAttribute ) const
       
    86     {
       
    87     CPEngWVUserAvailabilityModel* model = new ( ELeave ) CPEngWVUserAvailabilityModel(
       
    88         aUserOwnAttribute );
       
    89     CleanupStack::PushL( model );
       
    90     model->ResetDataL();
       
    91     return model;
       
    92     }
       
    93 
       
    94 
       
    95 
       
    96 
       
    97 // ================= CPEngWVUserAvailabilityModel MEMBER FUNCTIONS =================
       
    98 
       
    99 // -----------------------------------------------------------------------------
       
   100 // CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel
       
   101 // C++ constructor can NOT contain any code, that
       
   102 // might leave.
       
   103 // -----------------------------------------------------------------------------
       
   104 //
       
   105 CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::CPEngWVUserAvailabilityModel(
       
   106     TBool aUserOwnAttribute )
       
   107         : CPEngWVAttributeModelBase( aUserOwnAttribute )
       
   108     {
       
   109     }
       
   110 
       
   111 
       
   112 // Destructor
       
   113 CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::~CPEngWVUserAvailabilityModel()
       
   114     {
       
   115     }
       
   116 
       
   117 
       
   118 // -----------------------------------------------------------------------------
       
   119 // CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::SetDataL()
       
   120 // -----------------------------------------------------------------------------
       
   121 //
       
   122 TBool CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::SetDataL( TInt* aIntData,
       
   123                                                                                 const TDesC8* /*a8Data*/,
       
   124                                                                                 const TDesC16* /*a16Data*/,
       
   125                                                                                 TInt aField,
       
   126                                                                                 TInt aGroup )
       
   127     {
       
   128     if ( aIntData &&
       
   129          ( aGroup == KPEngDefaultAttrValueGroup ) &&
       
   130          ( aField == EPEngUsrAvailability ) )
       
   131         {
       
   132         //check the data value
       
   133         switch ( *aIntData )
       
   134             {
       
   135             case EPEngUsrAvailabilityOffline:
       
   136             case EPEngUsrAvailabilityDiscreet:
       
   137             case EPEngUsrAvailabilityOnline:
       
   138                 {
       
   139                 iAvailability = static_cast<TPEngWVUserAvailabilityValues> ( *aIntData );
       
   140                 break;
       
   141                 }
       
   142 
       
   143             default:
       
   144                 {
       
   145                 __AssertAttrEnumValueOutOfBoundsL();
       
   146                 break;
       
   147                 }
       
   148             }
       
   149 
       
   150         return ETrue;
       
   151         }
       
   152 
       
   153     return EFalse;
       
   154     }
       
   155 
       
   156 
       
   157 // -----------------------------------------------------------------------------
       
   158 // CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::GetData()
       
   159 // -----------------------------------------------------------------------------
       
   160 //
       
   161 TBool CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::GetData( TInt* aIntData,
       
   162                                                                                TPtrC8* /*a8Data*/,
       
   163                                                                                TPtrC16* /*a16Data*/,
       
   164                                                                                TInt aField,
       
   165                                                                                TInt aGroup ) const
       
   166     {
       
   167     if ( aIntData &&
       
   168          ( aGroup == KPEngDefaultAttrValueGroup ) &&
       
   169          ( aField == EPEngUsrAvailability ) )
       
   170         {
       
   171         *aIntData = iAvailability;
       
   172         return ETrue;
       
   173         }
       
   174 
       
   175     return EFalse;
       
   176     }
       
   177 
       
   178 
       
   179 
       
   180 // -----------------------------------------------------------------------------
       
   181 // CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::EncodeDataToXmlL()
       
   182 // -----------------------------------------------------------------------------
       
   183 //
       
   184 void CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::EncodeDataToXmlL(
       
   185     MPEngXMLSerializer& aSerializer ) const
       
   186     {
       
   187     aSerializer.StartTagL( KPresenceValueXMLTag );
       
   188         {
       
   189         switch ( iAvailability )
       
   190             {
       
   191             case EPEngUsrAvailabilityDiscreet:
       
   192                 {
       
   193                 aSerializer.RawValueL( KAvailabilityValueDiscreet );
       
   194                 break;
       
   195                 }
       
   196             case EPEngUsrAvailabilityOnline:
       
   197                 {
       
   198                 aSerializer.RawValueL( KAvailabilityValueAvailable );
       
   199                 break;
       
   200                 }
       
   201             case EPEngUsrAvailabilityOffline:
       
   202             default:
       
   203                 {
       
   204                 aSerializer.RawValueL( KAvailabilityValueNotAvailable );
       
   205                 break;
       
   206                 }
       
   207             }
       
   208         }
       
   209     aSerializer.EndTagL( KPresenceValueXMLTag );
       
   210     }
       
   211 
       
   212 
       
   213 
       
   214 // -----------------------------------------------------------------------------
       
   215 // CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::DecodeDataFromXmlL()
       
   216 // -----------------------------------------------------------------------------
       
   217 //
       
   218 void CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::DecodeDataFromXmlL(
       
   219     MPEngXMLParser& aParser,
       
   220     const TDesC8& aValueBlock )
       
   221     {
       
   222     if ( aParser.DecodeL( aValueBlock, KPresenceValueXMLTag, EFalse ) )
       
   223         {
       
   224         if ( aParser.ResultL().CompareF( KAvailabilityValueAvailable ) == 0 )
       
   225             {
       
   226             iAvailability = EPEngUsrAvailabilityOnline;
       
   227             }
       
   228         else if ( aParser.ResultL().CompareF( KAvailabilityValueDiscreet ) == 0 )
       
   229             {
       
   230             iAvailability = EPEngUsrAvailabilityDiscreet;
       
   231             }
       
   232         else
       
   233             {
       
   234             iAvailability = EPEngUsrAvailabilityOffline;
       
   235             }
       
   236         }
       
   237     }
       
   238 
       
   239 
       
   240 
       
   241 // -----------------------------------------------------------------------------
       
   242 // CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::ResetDataL()
       
   243 // -----------------------------------------------------------------------------
       
   244 //
       
   245 void CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::ResetDataL()
       
   246     {
       
   247     iAvailability = EPEngUsrAvailabilityOffline;
       
   248     }
       
   249 
       
   250 
       
   251 // -----------------------------------------------------------------------------
       
   252 // CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::DataExternalizeSize()
       
   253 // -----------------------------------------------------------------------------
       
   254 //
       
   255 TInt CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::DataExternalizeSize() const
       
   256     {
       
   257     return 1; //iAvailability is stored to 8 bit
       
   258     }
       
   259 
       
   260 
       
   261 
       
   262 // -----------------------------------------------------------------------------
       
   263 // CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::ExternalizeDataL()
       
   264 // -----------------------------------------------------------------------------
       
   265 //
       
   266 void CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::ExternalizeDataL(
       
   267     RWriteStream& aStream ) const
       
   268     {
       
   269     aStream.WriteInt8L( iAvailability );
       
   270     }
       
   271 
       
   272 
       
   273 // -----------------------------------------------------------------------------
       
   274 // CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::InternalizeDataL()
       
   275 // -----------------------------------------------------------------------------
       
   276 //
       
   277 void CPEngWVUserAvailabilityConstruct::CPEngWVUserAvailabilityModel::InternalizeDataL(
       
   278     RReadStream& aStream )
       
   279     {
       
   280     iAvailability = static_cast<TPEngWVUserAvailabilityValues> ( aStream.ReadInt8L() );
       
   281     }
       
   282 
       
   283 
       
   284 
       
   285 //  End of File
       
   286 
       
   287