omadm/omadmextensions/adapters/devinfo/src/nsmldmdevinfoadapter.cpp
changeset 0 3ce708148e4d
child 54 9360ca28b668
equal deleted inserted replaced
-1:000000000000 0:3ce708148e4d
       
     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:    DM DevInfo Adapter
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 
       
    22 //INCLUDE FILES
       
    23 #include <implementationproxy.h> // For TImplementationProxy definition
       
    24 #include "nsmldmimpluids.h"
       
    25 #include <featmgr.h>
       
    26 
       
    27 #include "nsmldmdevinfoadapter.h"
       
    28 #include "nsmldebug.h"
       
    29 #include "nsmlphoneinfo.h"
       
    30 #include "nsmlunicodeconverter.h"
       
    31 #include "nsmlconstants.h"
       
    32 #include "nsmldmconst.h"
       
    33 #include "nsmldmdevdetailadapter.h"
       
    34 
       
    35 
       
    36 // -----------------------------------------------------------------------------
       
    37 // CNSmlDmDevInfoAdapter* CNSmlDmDevInfoAdapter::NewL( )
       
    38 // -----------------------------------------------------------------------------
       
    39 CNSmlDmDevInfoAdapter* CNSmlDmDevInfoAdapter::NewL(MSmlDmCallback* aDmCallback )
       
    40     {
       
    41     _DBG_FILE("CNSmlDmDevInfoAdapter::NewL(): begin");
       
    42     CNSmlDmDevInfoAdapter* self = NewLC( aDmCallback );
       
    43     CleanupStack::Pop();
       
    44     _DBG_FILE("CNSmlDmDevInfoAdapter::NewL(): end");
       
    45     return self;
       
    46     }
       
    47 
       
    48 // -----------------------------------------------------------------------------
       
    49 // CNSmlDmDevInfoAdapter* CNSmlDmDevInfoAdapter::NewLC( )
       
    50 // -----------------------------------------------------------------------------
       
    51 CNSmlDmDevInfoAdapter* CNSmlDmDevInfoAdapter::NewLC(MSmlDmCallback* aDmCallback )
       
    52     {
       
    53     _DBG_FILE("CNSmlDmDevInfoAdapter::NewLC(): begin");
       
    54     CNSmlDmDevInfoAdapter* self = new (ELeave) CNSmlDmDevInfoAdapter(aDmCallback);
       
    55     CleanupStack::PushL(self);
       
    56     self->iDmCallback = aDmCallback;
       
    57     FeatureManager::InitializeLibL();
       
    58     _DBG_FILE("CNSmlDmDevInfoAdapter::NewLC(): end");
       
    59     return self;
       
    60     }
       
    61 
       
    62 
       
    63 
       
    64 // -----------------------------------------------------------------------------
       
    65 // CNSmlDmDevInfoAdapter::~CNSmlDmDevInfoAdapter()
       
    66 // -----------------------------------------------------------------------------
       
    67 CNSmlDmDevInfoAdapter::~CNSmlDmDevInfoAdapter()
       
    68     {
       
    69     _DBG_FILE("CNSmlDmDevInfoAdapter::~CNSmlDmDevInfoAdapter(): begin");
       
    70     FeatureManager::UnInitializeLib();
       
    71     _DBG_FILE("CNSmlDmDevInfoAdapter::~CNSmlDmDevInfoAdapter(): end");
       
    72     }
       
    73     
       
    74 // -----------------------------------------------------------------------------
       
    75 // CNSmlDmDevInfoAdapter::CNSmlDmDevInfoAdapter()
       
    76 // -----------------------------------------------------------------------------
       
    77 
       
    78 CNSmlDmDevInfoAdapter::CNSmlDmDevInfoAdapter(TAny* aEcomArguments):CSmlDmAdapter(aEcomArguments)
       
    79     {
       
    80     _DBG_FILE("CNSmlDmDevInfoAdapter::CNSmlDmDevInfoAdapter(aEcomArguments): begin");
       
    81     _DBG_FILE("CNSmlDmDevInfoAdapter::CNSmlDmDevInfoAdapter(aEcomArguments): end"); 
       
    82     }
       
    83 
       
    84 // -----------------------------------------------------------------------------
       
    85 // CNSmlDmDevInfoAdapter::SetLeafPropertiesL()
       
    86 // -----------------------------------------------------------------------------
       
    87 void CNSmlDmDevInfoAdapter::SetLeafPropertiesL( MSmlDmDDFObject& aObject, 
       
    88                                                 const TSmlDmAccessTypes& aAccessTypes, 
       
    89                                                 const TDesC8& aDescription ) const
       
    90     {
       
    91     aObject.SetAccessTypesL( aAccessTypes );
       
    92     aObject.SetScopeL( MSmlDmDDFObject::EPermanent );
       
    93     aObject.SetDFFormatL( MSmlDmDDFObject::EChr );
       
    94     aObject.AddDFTypeMimeTypeL( KNSmlDMDevInfoTextPlain );
       
    95     aObject.SetDescriptionL( aDescription );
       
    96     }
       
    97 
       
    98 
       
    99 // -----------------------------------------------------------------------------
       
   100 //  CNSmlDmDevInfoAdapter::DDFVersionL()
       
   101 // -----------------------------------------------------------------------------
       
   102 void CNSmlDmDevInfoAdapter::DDFVersionL(CBufBase& aDDFVersion)
       
   103     {
       
   104     _DBG_FILE("CNSmlDmDevInfoAdapter::DDFVersionL(TDes& aDDFVersion): begin");
       
   105     aDDFVersion.InsertL(0,KNSmlDMDevInfoDDFVersion);
       
   106     _DBG_FILE("CNSmlDmDevInfoAdapter::DDFVersionL(TDes& aDDFVersion): end");
       
   107     }
       
   108 
       
   109 
       
   110 // -----------------------------------------------------------------------------
       
   111 //  CNSmlDmDevInfoAdapter::DDFStructureL()
       
   112 //
       
   113 // -----------------------------------------------------------------------------
       
   114 void CNSmlDmDevInfoAdapter::DDFStructureL( MSmlDmDDFObject& aDDF )
       
   115     {
       
   116     _DBG_FILE("CNSmlDmDevInfoAdapter::DDFStructureL(): begin");
       
   117     
       
   118     TSmlDmAccessTypes accessTypes;
       
   119     accessTypes.SetGet();
       
   120     // DevInfo
       
   121     MSmlDmDDFObject& devInfo = aDDF.AddChildObjectL( KNSmlDMDevInfoNodeName );
       
   122     devInfo.SetAccessTypesL( accessTypes ); 
       
   123     devInfo.SetScopeL( MSmlDmDDFObject::EPermanent );
       
   124     devInfo.SetDescriptionL( KNSmlDMDevInfoDescription );
       
   125     // Man  
       
   126     MSmlDmDDFObject& man = devInfo.AddChildObjectL(KNSmlDMDevInfoManNodeName);
       
   127     SetLeafPropertiesL( man, accessTypes, KNSmlDMDevInfoManDescription );
       
   128     // Mod  
       
   129     MSmlDmDDFObject& mod = devInfo.AddChildObjectL(KNSmlDMDevInfoModNodeName );
       
   130     SetLeafPropertiesL( mod, accessTypes, KNSmlDMDevInfoModDescription );
       
   131     // DevId    
       
   132     MSmlDmDDFObject& devid = devInfo.AddChildObjectL( KNSmlDMDevInfoDevIdNodeName);
       
   133     SetLeafPropertiesL( devid, accessTypes, KNSmlDMDevInfoDevIdDescription ); 
       
   134     // Lang 
       
   135     MSmlDmDDFObject& lang = devInfo.AddChildObjectL(KNSmlDMDevInfoLangNodeName );
       
   136     SetLeafPropertiesL( lang, accessTypes, KNSmlDMDevInfoLangDescription ); 
       
   137     // DmV  
       
   138     MSmlDmDDFObject& dmv = devInfo.AddChildObjectL(KNSmlDMDevInfoDmVNodeName);
       
   139     SetLeafPropertiesL( dmv, accessTypes, KNSmlDMDevInfoDmVDescription );
       
   140     // Ext
       
   141     MSmlDmDDFObject& ext = devInfo.AddChildObjectL(KNSmlDMDevInfoExtNodeName );
       
   142     ext.SetAccessTypesL( accessTypes );
       
   143     ext.SetScopeL( MSmlDmDDFObject::EPermanent );
       
   144     ext.SetDescriptionL( KNSmlDMDevInfoExtDescription );
       
   145     // ModDDF   
       
   146     MSmlDmDDFObject& modDDF = ext.AddChildObjectL( KNSmlDMDevInfoModDDFNodeName);
       
   147     SetLeafPropertiesL( modDDF, accessTypes, KNSmlDMDevInfoModDDFDescription );
       
   148     // ModDevDet    
       
   149     MSmlDmDDFObject& modDevDet = ext.AddChildObjectL(KNSmlDMDevInfoModDevDetNodeName );
       
   150     SetLeafPropertiesL( modDevDet, accessTypes, KNSmlDMDevInfoModDevDetDescription );
       
   151     _DBG_FILE("CNSmlDmDevInfoAdapter::DDFStructureL(): end");
       
   152     }
       
   153 
       
   154 // -----------------------------------------------------------------------------
       
   155 //  CNSmlDmDevInfoAdapter::UpdateLeafObjectL()
       
   156 // -----------------------------------------------------------------------------
       
   157 void CNSmlDmDevInfoAdapter::UpdateLeafObjectL( const TDesC8& /*aURI*/, 
       
   158                                                const TDesC8& /*aLUID*/, 
       
   159                                                const TDesC8& /*aObject*/, 
       
   160                                                const TDesC8& /*aType*/, 
       
   161                                                const TInt aStatusRef )
       
   162     {
       
   163     _DBG_FILE("CNSmlDmDevInfoAdapter::UpdateLeafObjectL(): begin");
       
   164     _DBG_FILE("CNSmlDmDevInfoAdapter::UpdateLeafObjectL(): end");
       
   165     iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
       
   166     }
       
   167 
       
   168 
       
   169 // -----------------------------------------------------------------------------
       
   170 // CNSmlDmDevInfoAdapter::DeleteObjectL()
       
   171 // -----------------------------------------------------------------------------
       
   172 void CNSmlDmDevInfoAdapter::DeleteObjectL( const TDesC8& /*aURI*/, 
       
   173                                            const TDesC8& /*aLUID*/, 
       
   174                                            const TInt aStatusRef )
       
   175     {
       
   176     _DBG_FILE("CNSmlDmDevInfoAdapter::DeleteLeafObjectL( ): begin");
       
   177     _DBG_FILE("CNSmlDmDevInfoAdapter::DeleteLeafObjectL( ): end");
       
   178     iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
       
   179     }
       
   180 
       
   181 
       
   182 // -----------------------------------------------------------------------------
       
   183 //  CNSmlDmDevInfoAdapter::FetchLeafObjectL( const TDesC8& aURI, const TDesC8& aLUID, 
       
   184 // const TDesC8& aType, const TInt aResultsRef, const TInt aStatusRef )
       
   185 // -----------------------------------------------------------------------------
       
   186 void CNSmlDmDevInfoAdapter::FetchLeafObjectL( const TDesC8& aURI, 
       
   187                                               const TDesC8& /*aLUID*/, 
       
   188                                               const TDesC8& aType, 
       
   189                                               const TInt aResultsRef, 
       
   190                                               const TInt aStatusRef )
       
   191     {
       
   192     _DBG_FILE("CNSmlDmDevInfoAdapter::FetchLeafObjectL(): begin");
       
   193     
       
   194     CBufBase *object = CBufFlat::NewL( 1 );
       
   195     CleanupStack::PushL( object );
       
   196     
       
   197     CSmlDmAdapter::TError retValue = FetchLeafObjectL( aURI, *object );
       
   198     
       
   199     iDmCallback->SetStatusL( aStatusRef, retValue );
       
   200     iDmCallback->SetResultsL( aResultsRef, *object, aType );
       
   201     CleanupStack::PopAndDestroy(); //object
       
   202     _DBG_FILE("CNSmlDmDevInfoAdapt+er::FetchLeafObjectL(): end");
       
   203     }
       
   204 
       
   205 
       
   206 // -----------------------------------------------------------------------------
       
   207 //  CNSmlDmDevInfoAdapter::ChildURIListL( const TDesC& aURI, 
       
   208 // const TDesC& aParentLUID, const CArrayFix<TSmlDmMappingInfo>& aPreviousURISegmentList, 
       
   209 // const TInt aResultsRef, const TInt aStatusRef )
       
   210 // -----------------------------------------------------------------------------
       
   211 void CNSmlDmDevInfoAdapter::ChildURIListL( const TDesC8& aURI, 
       
   212                                            const TDesC8& /*aParentLUID*/, 
       
   213                                            const CArrayFix<TSmlDmMappingInfo>& /*aPreviousURISegmentList*/, 
       
   214                                            const TInt aResultsRef, 
       
   215                                            const TInt aStatusRef )
       
   216     {
       
   217     _DBG_FILE("CNSmlDmDevInfoAdapter::ChildURIListL(): begin");
       
   218     CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
       
   219     CBufBase* currentURISegmentList = CBufFlat::NewL( 1 );
       
   220     CleanupStack::PushL( currentURISegmentList );
       
   221     TInt ret = aURI.LocateReverse(KNSmlDMDevInfoSeparator()[0]);
       
   222     if ( ret == KErrNotFound ) 
       
   223         {
       
   224         ret = -1;
       
   225         }
       
   226     TInt len = aURI.Length() - ( ret + 1 );
       
   227     TPtrC8 segment = aURI.Right( len );
       
   228 
       
   229     if ( segment == KNSmlDMDevInfoNodeName )
       
   230         {
       
   231         currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMDevInfoManNodeName() );
       
   232         currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMDevInfoSeparator() );
       
   233         currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMDevInfoModNodeName() );
       
   234         currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMDevInfoSeparator() );
       
   235         currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMDevInfoDevIdNodeName() );
       
   236         currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMDevInfoSeparator() );
       
   237         currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMDevInfoLangNodeName() );
       
   238         currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMDevInfoSeparator() );
       
   239         currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMDevInfoDmVNodeName() );
       
   240         currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMDevInfoSeparator() );
       
   241         currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMDevInfoExtNodeName() );
       
   242         }
       
   243     else
       
   244     if ( segment == KNSmlDMDevInfoExtNodeName )
       
   245         {
       
   246         currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMDevInfoModDDFNodeName() );
       
   247         currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMDevInfoSeparator() );
       
   248         currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDMDevInfoModDevDetNodeName() );
       
   249         }
       
   250     else
       
   251         {
       
   252         retValue = CSmlDmAdapter::EError;
       
   253         }
       
   254     iDmCallback->SetStatusL( aStatusRef, retValue );
       
   255     iDmCallback->SetResultsL( aResultsRef, *currentURISegmentList, KNullDesC8 );
       
   256     CleanupStack::PopAndDestroy(); //currentURISegmentList
       
   257     _DBG_FILE("CNSmlDmDevInfoAdapter::ChildURIListL(): end");
       
   258     }
       
   259 
       
   260 
       
   261 // -----------------------------------------------------------------------------
       
   262 // CNSmlDmDevInfoAdapter::AddNodeObjectL( const TDesC8& aURI, 
       
   263 // const TDesC8& aParentLUID, const TInt aStatusRef )
       
   264 // -----------------------------------------------------------------------------
       
   265 void CNSmlDmDevInfoAdapter::AddNodeObjectL( const TDesC8& /*aURI*/, 
       
   266                                             const TDesC8& /*aParentLUID*/, 
       
   267                                             const TInt aStatusRef )
       
   268     {
       
   269     _DBG_FILE("CNSmlDmDevInfoAdapter::AddNodeObjectL(): begin");
       
   270     iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
       
   271     _DBG_FILE("CNSmlDmDevInfoAdapter::AddNodeObjectL(): end");
       
   272     }
       
   273 
       
   274 // -----------------------------------------------------------------------------
       
   275 //  CNSmlDmDevInfoAdapter::UpdateLeafObjectL()
       
   276 // -----------------------------------------------------------------------------
       
   277 void CNSmlDmDevInfoAdapter::UpdateLeafObjectL( const TDesC8& /*aURI*/, 
       
   278                                                const TDesC8& /*aLUID*/, 
       
   279                                                RWriteStream*& /*aStream*/, 
       
   280                                                const TDesC8& /*aType*/, 
       
   281                                                const TInt aStatusRef )
       
   282     {
       
   283     _DBG_FILE("CNSmlDmDevInfoAdapter::UpdateLeafObjectL(): stream: begin");
       
   284     _DBG_FILE("CNSmlDmDevInfoAdapter::UpdateLeafObjectL(): stream: end");
       
   285     iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
       
   286     }
       
   287 
       
   288 
       
   289 // -----------------------------------------------------------------------------
       
   290 //  CNSmlDmDevInfoAdapter::FetchLeafObjectSizeL( const TDesC8& aURI, 
       
   291 //  const TDesC8& aLUID, const TDesC8& aType, TInt aResultsRef, TInt aStatusRef )
       
   292 // -----------------------------------------------------------------------------
       
   293 void CNSmlDmDevInfoAdapter::FetchLeafObjectSizeL( const TDesC8& aURI, 
       
   294                                                   const TDesC8& /*aLUID*/, 
       
   295                                                   const TDesC8& aType, 
       
   296                                                   const TInt aResultsRef, 
       
   297                                                   const TInt aStatusRef )
       
   298     {
       
   299 
       
   300     _DBG_FILE("CNSmlDmDevInfoAdapter::FetchLeafObjectSizeL(): begin");
       
   301     
       
   302     CBufBase *object = CBufFlat::NewL( 1 );
       
   303     CleanupStack::PushL( object );
       
   304     CSmlDmAdapter::TError retValue = FetchLeafObjectL( aURI, *object );
       
   305         
       
   306     TInt objSizeInBytes = object->Size();
       
   307     TBuf8<2> stringObjSizeInBytes;
       
   308     stringObjSizeInBytes.Num( objSizeInBytes );
       
   309     object->Reset();
       
   310     object->InsertL( 0, stringObjSizeInBytes );
       
   311     
       
   312     iDmCallback->SetStatusL( aStatusRef, retValue );
       
   313     iDmCallback->SetResultsL( aResultsRef, *object, aType );
       
   314     CleanupStack::PopAndDestroy(); //object
       
   315     _DBG_FILE("CNSmlDmDevInfoAdapter::FetchLeafObjectSizeL(): end");
       
   316     }
       
   317     
       
   318 
       
   319 // -----------------------------------------------------------------------------
       
   320 //  CNSmlDmDevInfoAdapter::ExecuteCommandL( const TDesC8& aURI, 
       
   321 //  const TDesC8& aParentLUID, TDesC8& aArgument, const TDesC8& aType, TInt aStatusRef )
       
   322 // -----------------------------------------------------------------------------
       
   323 void CNSmlDmDevInfoAdapter::ExecuteCommandL( const TDesC8& /*aURI*/, const TDesC8& /*aLUID*/, const TDesC8& /*aArgument*/, const TDesC8& /*aType*/, const TInt aStatusRef )
       
   324     {
       
   325     _DBG_FILE("CNSmlDmDevInfoAdapter::ExecuteCommandL(): begin");
       
   326     iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
       
   327     _DBG_FILE("CNSmlDmDevInfoAdapter::ExecuteCommandL(): end");
       
   328     }
       
   329 
       
   330 // -----------------------------------------------------------------------------
       
   331 //  CNSmlDmDevInfoAdapter::ExecuteCommandL( const TDesC8& aURI, 
       
   332 //  const TDesC8& aParentLUID, RWriteStream*& aStream, const TDesC8& aType, 
       
   333 //  TInt aStatusRef )
       
   334 // -----------------------------------------------------------------------------
       
   335 void CNSmlDmDevInfoAdapter::ExecuteCommandL( const TDesC8& /*aURI*/, 
       
   336                                              const TDesC8& /*aParentLUID*/, 
       
   337                                              RWriteStream*& /*aStream*/, 
       
   338                                              const TDesC8& /*aType*/, 
       
   339                                              const TInt aStatusRef )
       
   340     {
       
   341     _DBG_FILE("CNSmlDmDevInfoAdapter::ExecuteCommandL(): stream: begin");
       
   342     iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
       
   343     _DBG_FILE("CNSmlDmDevInfoAdapter::ExecuteCommandL(): stream: end");
       
   344     }
       
   345 
       
   346 // -----------------------------------------------------------------------------
       
   347 //  CNSmlDmDevInfoAdapter::CopyCommandL( const TDesC8& aTargetURI, const TDesC8& 
       
   348 //  aSourceURI, const TDesC8& aSourceLUID, const TDesC8& /*aType*/, TInt aStatusRef )
       
   349 // -----------------------------------------------------------------------------
       
   350 void CNSmlDmDevInfoAdapter::CopyCommandL( const TDesC8& /*aTargetURI*/, const TDesC8& 
       
   351                                           /*aTargetLUID*/, const TDesC8& /*aSourceURI*/, 
       
   352                                           const TDesC8& /*aSourceLUID*/, 
       
   353                                           const TDesC8& /*aType*/, TInt aStatusRef )
       
   354     {
       
   355     _DBG_FILE("CNSmlDmDevInfoAdapter::CopyCommandL(): begin");
       
   356     iDmCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EError );
       
   357     _DBG_FILE("CNSmlDmDevInfoAdapter::CopyCommandL(): end");
       
   358     }
       
   359 
       
   360 // --------------------------------------
       
   361 //  CNSmlDmDevInfoAdapter::StartAtomicL()
       
   362 // --------------------------------------
       
   363 void CNSmlDmDevInfoAdapter::StartAtomicL()
       
   364     {
       
   365     _DBG_FILE("CNSmlDmDevInfoAdapter::StartAtomicL(): begin");
       
   366     _DBG_FILE("CNSmlDmDevInfoAdapter::StartAtomicL(): end");
       
   367     }
       
   368     
       
   369 // ---------------------------------------
       
   370 //  CNSmlDmDevInfoAdapter::CommitAtomicL()
       
   371 // ---------------------------------------
       
   372 void CNSmlDmDevInfoAdapter::CommitAtomicL()
       
   373     {
       
   374     _DBG_FILE("CNSmlDmDevInfoAdapter::CommitAtomicL(): begin");
       
   375     _DBG_FILE("CNSmlDmDevInfoAdapter::CommitAtomicL(): end");
       
   376     }
       
   377 
       
   378 // -----------------------------------------
       
   379 //  CNSmlDmDevInfoAdapter::RollbackAtomicL()
       
   380 // -----------------------------------------
       
   381 void CNSmlDmDevInfoAdapter::RollbackAtomicL()
       
   382     {
       
   383     _DBG_FILE("CNSmlDmDevInfoAdapter::RollbackAtomicL(): begin");
       
   384     _DBG_FILE("CNSmlDmDevInfoAdapter::RollbackAtomicL(): end");
       
   385     }
       
   386 
       
   387 // -----------------------------------------------------------
       
   388 //  CNSmlDmDevInfoAdapter::StreamingSupport( TInt& aItemSize )
       
   389 // -----------------------------------------------------------  
       
   390 TBool CNSmlDmDevInfoAdapter::StreamingSupport( TInt& /*aItemSize*/ )
       
   391     {
       
   392     _DBG_FILE("CNSmlDmDevInfoAdapter::StreamingSupport(): begin");
       
   393     _DBG_FILE("CNSmlDmDevInfoAdapter::StreamingSupport(): end");
       
   394     return EFalse;
       
   395     }
       
   396 
       
   397 // ------------------------------------------
       
   398 //  CNSmlDmDevInfoAdapter::StreamCommittedL()
       
   399 // ------------------------------------------
       
   400 void CNSmlDmDevInfoAdapter::StreamCommittedL()
       
   401     {
       
   402     _DBG_FILE("CNSmlDmDevInfoAdapter::StreamCommittedL(): begin");
       
   403     _DBG_FILE("CNSmlDmDevInfoAdapter::StreamCommittedL(): end");
       
   404     }
       
   405 
       
   406 // --------------------------------------------------
       
   407 //  CNSmlDmDevInfoAdapter::CompleteOutstandingCmdsL()
       
   408 // --------------------------------------------------   
       
   409 void CNSmlDmDevInfoAdapter::CompleteOutstandingCmdsL()
       
   410     {
       
   411     _DBG_FILE("CNSmlDmDevInfoAdapter::CompleteOutstandingCmdsL(): begin");
       
   412     _DBG_FILE("CNSmlDmDevInfoAdapter::CompleteOutstandingCmdsL(): end");    
       
   413     }
       
   414 
       
   415 // -----------------------------------------------------------------------------
       
   416 // CNSmlDmDevDetailAdapter::FetchLeafObjectL()
       
   417 // -----------------------------------------------------------------------------
       
   418 CSmlDmAdapter::TError CNSmlDmDevInfoAdapter::FetchLeafObjectL( const TDesC8& aURI, 
       
   419                                                                CBufBase& aObject )
       
   420     {
       
   421     _DBG_FILE("CNSmlDmInfoAdapter::FetchLeafObjectL(): begin");
       
   422     CSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
       
   423     TInt ret = aURI.LocateReverse(KNSmlDMDevInfoSeparator()[0]);
       
   424     if ( ret == KErrNotFound ) 
       
   425         {
       
   426         retValue = CSmlDmAdapter::EError;
       
   427         }
       
   428     else
       
   429         {
       
   430         TInt len = aURI.Length() - (ret + 1);
       
   431         TPtrC8 segment = aURI.Right( len );
       
   432         if ( segment == KNSmlDMDevInfoManNodeName ||
       
   433              segment == KNSmlDMDevInfoModNodeName ||
       
   434              segment == KNSmlDMDevInfoDevIdNodeName )
       
   435             {
       
   436             CNSmlPhoneInfo* phoneInfo = CNSmlPhoneInfo::NewLC();
       
   437             HBufC* phonedata = HBufC::NewLC( 50 );
       
   438             TPtr phonedataPtr = phonedata->Des();  
       
   439             if ( segment == KNSmlDMDevInfoManNodeName )
       
   440                 {
       
   441                 phoneInfo->PhoneDataL( CNSmlPhoneInfo::EPhoneManufacturer, phonedataPtr );
       
   442                 }
       
   443             if ( segment == KNSmlDMDevInfoModNodeName )
       
   444                 {
       
   445                 phoneInfo->PhoneDataL( CNSmlPhoneInfo::EPhoneModelId, phonedataPtr );
       
   446                 }
       
   447             if ( segment == KNSmlDMDevInfoDevIdNodeName )
       
   448                 {
       
   449                 phoneInfo->PhoneDataL( CNSmlPhoneInfo::EPhoneSerialNumber, phonedataPtr );
       
   450                 }
       
   451             HBufC8* phonedataInUTF8 = NULL;
       
   452             NSmlUnicodeConverter::HBufC8InUTF8LC( *phonedata, phonedataInUTF8 );
       
   453             aObject.InsertL( 0, *phonedataInUTF8 );
       
   454             CleanupStack::PopAndDestroy( 3 ); //phonedataInUTF8, phonedata, phoneInfo
       
   455             }
       
   456         else
       
   457         if ( segment == KNSmlDMDevInfoLangNodeName )
       
   458             { 
       
   459             TLanguage language = User::Language();
       
   460             TBuf8<2> langCode;
       
   461             switch ( language )
       
   462                 {
       
   463                 case ELangEnglish: 
       
   464                 case ELangAmerican:
       
   465                 case ELangAustralian:
       
   466                 case ELangNewZealand:
       
   467                 case ELangCanadianEnglish:
       
   468                 case ELangInternationalEnglish:
       
   469                 case ELangSouthAfricanEnglish:
       
   470                     langCode = KNSmlDMEnglish;
       
   471                     break; 
       
   472                 case ELangFrench:
       
   473                 case ELangSwissFrench:
       
   474                 case ELangBelgianFrench:
       
   475                 case ELangInternationalFrench:
       
   476                 case ELangCanadianFrench:
       
   477                     langCode = KNSmlDMFrench;
       
   478                     break;
       
   479                 case ELangGerman:
       
   480                 case ELangSwissGerman:
       
   481                 case ELangAustrian:
       
   482                     langCode = KNSmlDMGerman;
       
   483                     break;
       
   484                 case ELangSpanish:
       
   485                 case ELangInternationalSpanish:
       
   486                 case ELangLatinAmericanSpanish:
       
   487                     langCode = KNSmlDMSpanish;
       
   488                     break;
       
   489                 case ELangItalian:
       
   490                 case ELangSwissItalian:
       
   491                     langCode = KNSmlDMItalian;
       
   492                     break;
       
   493                 case ELangSwedish:
       
   494                 case ELangFinlandSwedish:
       
   495                     langCode = KNSmlDMSwedish;
       
   496                     break;
       
   497                 case ELangDanish:
       
   498                     langCode = KNSmlDMDanish;
       
   499                     break;
       
   500                 case ELangNorwegian:
       
   501                 case ELangNorwegianNynorsk:
       
   502                     langCode = KNSmlDMNorwegian;
       
   503                     break;
       
   504                 case ELangFinnish:
       
   505                     langCode = KNSmlDMFinnish;
       
   506                     break;
       
   507                 case ELangPortuguese:
       
   508                 case ELangBrazilianPortuguese:
       
   509                     langCode = KNSmlDMPortuguese;
       
   510                     break;
       
   511                 case ELangTurkish:
       
   512                 case ELangCyprusTurkish:
       
   513                     langCode = KNSmlDMTurkish;
       
   514                     break;
       
   515                 case ELangIcelandic:
       
   516                     langCode = KNSmlDMIcelandic;
       
   517                     break;
       
   518                 case ELangRussian:
       
   519                     langCode = KNSmlDMRussian;
       
   520                     break;
       
   521                 case ELangHungarian:
       
   522                     langCode = KNSmlDMHungarian;
       
   523                     break;
       
   524                 case ELangDutch:
       
   525                 case ELangBelgianFlemish:
       
   526                     langCode = KNSmlDMDutch;
       
   527                     break;
       
   528                 case ELangCzech:
       
   529                     langCode = KNSmlDMCzech;
       
   530                     break;
       
   531                 case ELangSlovak:
       
   532                     langCode = KNSmlDMSlovak;
       
   533                     break;
       
   534                 case ELangPolish:
       
   535                     langCode = KNSmlDMPolish;
       
   536                     break;
       
   537                 case ELangSlovenian:
       
   538                     langCode = KNSmlDMSlovenian;
       
   539                     break;
       
   540                 case ELangTaiwanChinese:
       
   541                 case ELangHongKongChinese:
       
   542                 case ELangPrcChinese:
       
   543                     langCode = KNSmlDMChinese;
       
   544                     break;
       
   545                 case ELangJapanese:
       
   546                     langCode = KNSmlDMJapanese;
       
   547                     break;
       
   548                 case ELangThai:
       
   549                     langCode = KNSmlDMThai;
       
   550                     break;
       
   551                 case ELangAfrikaans:
       
   552                     langCode = KNSmlDMAfrikaans;
       
   553                     break;
       
   554                 case ELangAlbanian:
       
   555                     langCode = KNSmlDMAlbanian;
       
   556                     break;
       
   557                 case ELangAmharic:
       
   558                     langCode = KNSmlDMAmharic;
       
   559                     break;
       
   560                 case ELangArabic:
       
   561                     langCode = KNSmlDMArabic;
       
   562                     break;
       
   563                 case ELangArmenian:
       
   564                     langCode = KNSmlDMArmenian;
       
   565                     break;
       
   566                 case ELangTagalog:
       
   567                     langCode = KNSmlDMTagalog;
       
   568                     break;
       
   569                 case ELangBelarussian:
       
   570                     langCode = KNSmlDMBelarussian;
       
   571                     break;
       
   572                 case ELangBengali:
       
   573                     langCode = KNSmlDMBengali;
       
   574                     break;
       
   575                 case ELangBulgarian:
       
   576                     langCode = KNSmlDMBulgarian;
       
   577                     break;
       
   578                 case ELangBurmese:
       
   579                     langCode = KNSmlDMBurmese;
       
   580                     break;
       
   581                 case ELangCatalan:
       
   582                     langCode = KNSmlDMCatalan;
       
   583                     break;
       
   584                 case ELangCroatian:
       
   585                     langCode = KNSmlDMCroatian;
       
   586                     break;
       
   587                 case ELangEstonian:
       
   588                     langCode = KNSmlDMEstonian;
       
   589                     break;
       
   590                 case ELangFarsi:
       
   591                     langCode = KNSmlDMFarsi;
       
   592                     break;
       
   593                 case ELangScotsGaelic:
       
   594                     langCode = KNSmlDMScotsGaelic;
       
   595                     break;
       
   596                 case ELangGeorgian:
       
   597                     langCode = KNSmlDMGeorgian;
       
   598                     break;
       
   599                 case ELangGreek:
       
   600                 case ELangCyprusGreek:
       
   601                     langCode = KNSmlDMGreek;
       
   602                     break;
       
   603                 case ELangGujarati:
       
   604                     langCode = KNSmlDMGujarati;
       
   605                     break;
       
   606                 case ELangHebrew:
       
   607                     langCode = KNSmlDMHebrew;
       
   608                     break;
       
   609                 case ELangHindi:
       
   610                     langCode = KNSmlDMHindi;
       
   611                     break;
       
   612                 case ELangIndonesian:
       
   613                     langCode = KNSmlDMIndonesian;
       
   614                     break;
       
   615                 case ELangIrish:
       
   616                     langCode = KNSmlDMIrish;
       
   617                     break;
       
   618                 case ELangKannada:
       
   619                     langCode = KNSmlDMKannada;
       
   620                     break;
       
   621                 case ELangKazakh:
       
   622                     langCode = KNSmlDMKazakh;
       
   623                     break;
       
   624                 case ELangKorean:
       
   625                     langCode = KNSmlDMKorean;
       
   626                     break;
       
   627                 case ELangLao:
       
   628                     langCode = KNSmlDMLao;
       
   629                     break;
       
   630                 case ELangLatvian:
       
   631                     langCode = KNSmlDMLatvian;
       
   632                     break;
       
   633                 case ELangLithuanian:
       
   634                     langCode = KNSmlDMLithuanian;
       
   635                     break;
       
   636                 case ELangMacedonian:
       
   637                     langCode = KNSmlDMMacedonian;
       
   638                     break;
       
   639                 case ELangMalay:
       
   640                     langCode = KNSmlDMMalay;
       
   641                     break;
       
   642                 case ELangMalayalam:
       
   643                     langCode = KNSmlDMMalayalam;
       
   644                     break;
       
   645                 case ELangMarathi:
       
   646                     langCode = KNSmlDMMarathi;
       
   647                     break;
       
   648                 case ELangMoldavian:
       
   649                     langCode = KNSmlDMMoldavian;
       
   650                     break;
       
   651                 case ELangMongolian:
       
   652                     langCode = KNSmlDMMongolian;
       
   653                     break;
       
   654                 case ELangPunjabi:
       
   655                     langCode = KNSmlDMPunjabi;
       
   656                     break;
       
   657                 case ELangRomanian:
       
   658                     langCode = KNSmlDMRomanian;
       
   659                     break;
       
   660                 case ELangSerbian:
       
   661                     langCode = KNSmlDMSerbian;
       
   662                     break;
       
   663                 case ELangSinhalese:
       
   664                     langCode = KNSmlDMSinhalese;
       
   665                     break;
       
   666                 case ELangSomali:
       
   667                     langCode = KNSmlDMSomali;
       
   668                     break;
       
   669                 case ELangSwahili:
       
   670                     langCode = KNSmlDMSwahili;
       
   671                     break;
       
   672                 case ELangTamil:
       
   673                     langCode = KNSmlDMTamil;
       
   674                     break;
       
   675                 case ELangTelugu:
       
   676                     langCode = KNSmlDMTelugu;
       
   677                     break;
       
   678                 case ELangTibetan:
       
   679                     langCode = KNSmlDMTibetan;
       
   680                     break;
       
   681                 case ELangTigrinya:
       
   682                     langCode = KNSmlDMTigrinya;
       
   683                     break;
       
   684                 case ELangTurkmen:
       
   685                     langCode = KNSmlDMTurkmen;
       
   686                     break;
       
   687                 case ELangUkrainian:
       
   688                     langCode = KNSmlDMUkrainian;
       
   689                     break;
       
   690                 case ELangUrdu:
       
   691                     langCode = KNSmlDMUrdu;
       
   692                     break;
       
   693                 case ELangVietnamese:
       
   694                     langCode = KNSmlDMVietnamese;
       
   695                     break;
       
   696                 case ELangWelsh:
       
   697                     langCode = KNSmlDMWelsh;
       
   698                     break;
       
   699                 case ELangZulu:
       
   700                     langCode = KNSmlDMZulu;
       
   701                     break;
       
   702                 default:
       
   703                     langCode = KNSmlDMEnglish;
       
   704                 }
       
   705             aObject.InsertL( 0, langCode );
       
   706             }
       
   707         else
       
   708         if ( segment == KNSmlDMDevInfoDmVNodeName )
       
   709             {
       
   710             if(!FeatureManager::FeatureSupported( KFeatureIdSyncMlDm112  ))
       
   711                 aObject.InsertL( 0, KNSmlDMDmV12 );
       
   712             else
       
   713             aObject.InsertL( 0, KNSmlDMDmV );
       
   714             }
       
   715         else
       
   716         if ( segment == KNSmlDMDevInfoModDDFNodeName )
       
   717             {
       
   718 
       
   719             }
       
   720         else
       
   721         if ( segment == KNSmlDMDevInfoModDevDetNodeName )
       
   722             {
       
   723             TUid implUID;
       
   724             implUID.iUid = KNSmlDMDevDetailAdapterImplUid;
       
   725             
       
   726             TAny* nPtr = NULL;
       
   727             MSmlDmCallback& aDmNull = reinterpret_cast<MSmlDmCallback&>(nPtr);
       
   728             CNSmlDmDevDetailAdapter* devDetAdapter = 
       
   729                 reinterpret_cast<CNSmlDmDevDetailAdapter*>(CSmlDmAdapter::NewL( implUID, aDmNull ) );
       
   730             CleanupStack::PushL(devDetAdapter);
       
   731             TInt checkSumDevDet = devDetAdapter->DevDetailValueCrcL();
       
   732             TBuf8<16> stringCheckSumDevDet; 
       
   733             stringCheckSumDevDet.Num( checkSumDevDet );
       
   734             aObject.InsertL( 0, stringCheckSumDevDet );
       
   735             CleanupStack::PopAndDestroy(); // devDetAdapter
       
   736             }
       
   737         else
       
   738             {
       
   739             retValue = CSmlDmAdapter::EError;
       
   740             }
       
   741         }
       
   742     _DBG_FILE("CNSmlDmInfoAdapter::FetchLeafObjectL(): end");
       
   743     return retValue;
       
   744     }
       
   745 
       
   746 // -----------------------------------------------------------------------------
       
   747 //
       
   748 // -----------------------------------------------------------------------------
       
   749 #ifndef IMPLEMENTATION_PROXY_ENTRY
       
   750 #define IMPLEMENTATION_PROXY_ENTRY(aUid, aFuncPtr)  {{aUid},(aFuncPtr)}
       
   751 #endif
       
   752 
       
   753 const TImplementationProxy ImplementationTable[] = 
       
   754     {
       
   755         IMPLEMENTATION_PROXY_ENTRY(KNSmlDMDevInfoAdapterImplUid, CNSmlDmDevInfoAdapter::NewL)
       
   756     };
       
   757 
       
   758 // -----------------------------------------------------------------------------
       
   759 //
       
   760 // -----------------------------------------------------------------------------
       
   761 EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
       
   762     {
       
   763     _DBG_FILE("ImplementationGroupProxy() for CNSmlDmDevInfoAdapter: begin");
       
   764     aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
       
   765     _DBG_FILE("ImplementationGroupProxy() for CNSmlDmDevInfoAdapter: end");
       
   766     return ImplementationTable;
       
   767     }
       
   768 
       
   769 // End of file
       
   770