remotemgmt_plat/syncml_ds_customization_api/tsrc/exampledevinfextdataplugin/src/exampledevinfextdatacontainerplugin.cpp
author hgs
Thu, 19 Aug 2010 17:35:34 +0530
changeset 60 eb6690d0d439
permissions -rw-r--r--
201033
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
60
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Example Device Info Extension Data Container Plugin source file.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
// EXTERNAL INCLUDES
hgs
parents:
diff changeset
    19
#include <e32base.h>
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
// CLASS HEADER
hgs
parents:
diff changeset
    22
#include "exampledevinfextdatacontainerplugin.h"
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    25
// CExampleDevInfExtDataContainerPlugin::CExampleDevInfExtDataContainerPlugin()
hgs
parents:
diff changeset
    26
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    27
CExampleDevInfExtDataContainerPlugin::CExampleDevInfExtDataContainerPlugin()
hgs
parents:
diff changeset
    28
    {
hgs
parents:
diff changeset
    29
    }
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    32
// void CExampleDevInfExtDataContainerPlugin::ConstructL()
hgs
parents:
diff changeset
    33
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    34
void CExampleDevInfExtDataContainerPlugin::ConstructL()
hgs
parents:
diff changeset
    35
    {
hgs
parents:
diff changeset
    36
    }
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    39
// CExampleDevInfExtDataContainerPlugin* CExampleDevInfExtDataContainerPlugin::NewL()
hgs
parents:
diff changeset
    40
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    41
CExampleDevInfExtDataContainerPlugin* CExampleDevInfExtDataContainerPlugin::NewL()
hgs
parents:
diff changeset
    42
    {
hgs
parents:
diff changeset
    43
    CExampleDevInfExtDataContainerPlugin* self = 
hgs
parents:
diff changeset
    44
        new (ELeave) CExampleDevInfExtDataContainerPlugin();
hgs
parents:
diff changeset
    45
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    46
    self->ConstructL();
hgs
parents:
diff changeset
    47
    CleanupStack::Pop( self );
hgs
parents:
diff changeset
    48
    return self;
hgs
parents:
diff changeset
    49
    }
hgs
parents:
diff changeset
    50
    
hgs
parents:
diff changeset
    51
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    52
// CExampleDevInfExtDataContainerPlugin::~CExampleDevInfExtDataContainerPlugin()
hgs
parents:
diff changeset
    53
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    54
CExampleDevInfExtDataContainerPlugin::~CExampleDevInfExtDataContainerPlugin()
hgs
parents:
diff changeset
    55
    {
hgs
parents:
diff changeset
    56
    for( TInt i = 0; i < iExtensionArray.Count(); i++ )
hgs
parents:
diff changeset
    57
        {
hgs
parents:
diff changeset
    58
        iExtensionArray[ i ].iXValArray.Close();
hgs
parents:
diff changeset
    59
        }
hgs
parents:
diff changeset
    60
    iExtensionArray.Close();
hgs
parents:
diff changeset
    61
    }
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    64
// TInt CExampleDevInfExtDataContainerPlugin::GetExtensionCountL()
hgs
parents:
diff changeset
    65
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    66
TInt CExampleDevInfExtDataContainerPlugin::GetExtensionCountL()
hgs
parents:
diff changeset
    67
    {
hgs
parents:
diff changeset
    68
    return iExtensionArray.Count();
hgs
parents:
diff changeset
    69
    }
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    72
// const TDesC8& CExampleDevInfExtDataContainerPlugin::GetExtNameL()
hgs
parents:
diff changeset
    73
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    74
const TDesC8& CExampleDevInfExtDataContainerPlugin::GetExtNameL( TInt aExtIndex )
hgs
parents:
diff changeset
    75
    {
hgs
parents:
diff changeset
    76
    if( aExtIndex < 0 || aExtIndex >= iExtensionArray.Count() )
hgs
parents:
diff changeset
    77
        {
hgs
parents:
diff changeset
    78
        // Illegal index
hgs
parents:
diff changeset
    79
        User::Leave( KErrArgument );
hgs
parents:
diff changeset
    80
        }
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
    return iExtensionArray[ aExtIndex ].iXNam;
hgs
parents:
diff changeset
    83
    }
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    86
// TInt CExampleDevInfExtDataContainerPlugin::GetExtValueCountL()
hgs
parents:
diff changeset
    87
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    88
TInt CExampleDevInfExtDataContainerPlugin::GetExtValueCountL( TInt aExtIndex )
hgs
parents:
diff changeset
    89
    {
hgs
parents:
diff changeset
    90
    if( aExtIndex < 0 || aExtIndex >= iExtensionArray.Count() )
hgs
parents:
diff changeset
    91
        {
hgs
parents:
diff changeset
    92
        // Illegal index
hgs
parents:
diff changeset
    93
        User::Leave( KErrArgument );
hgs
parents:
diff changeset
    94
        }
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
    return iExtensionArray[ aExtIndex ].iXValArray.Count();
hgs
parents:
diff changeset
    97
    }
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   100
// const TDesC8& CExampleDevInfExtDataContainerPlugin::GetExtValueL()
hgs
parents:
diff changeset
   101
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   102
const TDesC8& CExampleDevInfExtDataContainerPlugin::GetExtValueL( TInt aExtIndex, 
hgs
parents:
diff changeset
   103
    TInt aValueIndex )
hgs
parents:
diff changeset
   104
    {
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
    // Check for illegal indices
hgs
parents:
diff changeset
   107
    if( aExtIndex < 0 || aExtIndex >= iExtensionArray.Count() )
hgs
parents:
diff changeset
   108
        {
hgs
parents:
diff changeset
   109
        User::Leave( KErrArgument );
hgs
parents:
diff changeset
   110
        }
hgs
parents:
diff changeset
   111
    if( aValueIndex < 0 || 
hgs
parents:
diff changeset
   112
        aValueIndex >= iExtensionArray[ aExtIndex ].iXValArray.Count() )
hgs
parents:
diff changeset
   113
        {
hgs
parents:
diff changeset
   114
        User::Leave( KErrArgument );
hgs
parents:
diff changeset
   115
        }
hgs
parents:
diff changeset
   116
hgs
parents:
diff changeset
   117
    return iExtensionArray[ aExtIndex ].iXValArray[ aValueIndex ];
hgs
parents:
diff changeset
   118
    }
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   121
// void CExampleDevInfExtDataContainerPlugin::ClearExtensions()
hgs
parents:
diff changeset
   122
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   123
void CExampleDevInfExtDataContainerPlugin::ClearExtensions()
hgs
parents:
diff changeset
   124
    {
hgs
parents:
diff changeset
   125
    for( TInt i = 0; i < iExtensionArray.Count(); i++ )
hgs
parents:
diff changeset
   126
        {
hgs
parents:
diff changeset
   127
        iExtensionArray[ i ].iXValArray.Reset();
hgs
parents:
diff changeset
   128
        }
hgs
parents:
diff changeset
   129
    iExtensionArray.Reset();
hgs
parents:
diff changeset
   130
    }
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   133
// void CExampleDevInfExtDataContainerPlugin::InsertExtension()
hgs
parents:
diff changeset
   134
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   135
void CExampleDevInfExtDataContainerPlugin::InsertExtension(
hgs
parents:
diff changeset
   136
    const TDesC8& aXNam, const TDesC8& aXVal )
hgs
parents:
diff changeset
   137
    {
hgs
parents:
diff changeset
   138
    TInt index = FindExtensionIndex( aXNam );
hgs
parents:
diff changeset
   139
    if( index != KErrNotFound )
hgs
parents:
diff changeset
   140
        {
hgs
parents:
diff changeset
   141
        AddXValToItem( index, aXVal );
hgs
parents:
diff changeset
   142
        }
hgs
parents:
diff changeset
   143
    else
hgs
parents:
diff changeset
   144
        {
hgs
parents:
diff changeset
   145
        AddNewXValItem( aXNam, aXVal );
hgs
parents:
diff changeset
   146
        }
hgs
parents:
diff changeset
   147
    }
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   150
// void CExampleDevInfExtDataContainerPlugin::RemoveExtension()
hgs
parents:
diff changeset
   151
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   152
void CExampleDevInfExtDataContainerPlugin::RemoveExtension( const TDesC8& aXNam )
hgs
parents:
diff changeset
   153
    {
hgs
parents:
diff changeset
   154
    TInt index = FindExtensionIndex( aXNam );
hgs
parents:
diff changeset
   155
    if( index != KErrNotFound )
hgs
parents:
diff changeset
   156
        {
hgs
parents:
diff changeset
   157
        iExtensionArray.Remove( index );    
hgs
parents:
diff changeset
   158
        }
hgs
parents:
diff changeset
   159
    }
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   162
// void CExampleDevInfExtDataContainerPlugin::FindExtensionIndex()
hgs
parents:
diff changeset
   163
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   164
TInt CExampleDevInfExtDataContainerPlugin::FindExtensionIndex( 
hgs
parents:
diff changeset
   165
    const TDesC8& aXNam )
hgs
parents:
diff changeset
   166
    {
hgs
parents:
diff changeset
   167
    TInt index = KErrNotFound;
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
    for( TInt i = 0; i < iExtensionArray.Count(); i++ )
hgs
parents:
diff changeset
   170
        {
hgs
parents:
diff changeset
   171
        TExampleDevInfExtExtensionItem item = iExtensionArray[ i ];
hgs
parents:
diff changeset
   172
        if( aXNam.Compare( item.iXNam ) == 0 )
hgs
parents:
diff changeset
   173
            {
hgs
parents:
diff changeset
   174
            index = i;
hgs
parents:
diff changeset
   175
            break;
hgs
parents:
diff changeset
   176
            }
hgs
parents:
diff changeset
   177
        }
hgs
parents:
diff changeset
   178
    return index;
hgs
parents:
diff changeset
   179
    }
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   182
// void CExampleDevInfExtDataContainerPlugin::AddXValToItem()
hgs
parents:
diff changeset
   183
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   184
void CExampleDevInfExtDataContainerPlugin::AddXValToItem(
hgs
parents:
diff changeset
   185
        const TInt aIndex, const TDesC8& aXVal )
hgs
parents:
diff changeset
   186
    {
hgs
parents:
diff changeset
   187
    ASSERT( aIndex >= 0 );
hgs
parents:
diff changeset
   188
    ASSERT( aIndex < iExtensionArray.Count() );
hgs
parents:
diff changeset
   189
hgs
parents:
diff changeset
   190
    if( aXVal.Length() == 0 )
hgs
parents:
diff changeset
   191
        {
hgs
parents:
diff changeset
   192
        // No XVal set, do not insert anything to XVal array
hgs
parents:
diff changeset
   193
        return;
hgs
parents:
diff changeset
   194
        }
hgs
parents:
diff changeset
   195
    else if( aXVal.Length() <= KExtensionElementMaxLength )
hgs
parents:
diff changeset
   196
        {
hgs
parents:
diff changeset
   197
        iExtensionArray[ aIndex ].iXValArray.Append( aXVal );
hgs
parents:
diff changeset
   198
        }
hgs
parents:
diff changeset
   199
    else
hgs
parents:
diff changeset
   200
        {
hgs
parents:
diff changeset
   201
        iExtensionArray[ aIndex ].iXValArray.Append( 
hgs
parents:
diff changeset
   202
            aXVal.Left( KExtensionElementMaxLength ) );
hgs
parents:
diff changeset
   203
        }
hgs
parents:
diff changeset
   204
    }
hgs
parents:
diff changeset
   205
hgs
parents:
diff changeset
   206
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   207
// void CExampleDevInfExtDataContainerPlugin::AddNewXValItem()
hgs
parents:
diff changeset
   208
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   209
void CExampleDevInfExtDataContainerPlugin::AddNewXValItem( 
hgs
parents:
diff changeset
   210
    const TDesC8& aXNam, const TDesC8& aXVal )
hgs
parents:
diff changeset
   211
    {    
hgs
parents:
diff changeset
   212
    TExampleDevInfExtExtensionItem item;
hgs
parents:
diff changeset
   213
hgs
parents:
diff changeset
   214
    // Insert XNam
hgs
parents:
diff changeset
   215
    if( aXNam.Length() <= KExtensionElementMaxLength )
hgs
parents:
diff changeset
   216
        {
hgs
parents:
diff changeset
   217
        item.iXNam = aXNam;
hgs
parents:
diff changeset
   218
        }
hgs
parents:
diff changeset
   219
    else
hgs
parents:
diff changeset
   220
        {
hgs
parents:
diff changeset
   221
        item.iXNam = aXNam.Left( KExtensionElementMaxLength );
hgs
parents:
diff changeset
   222
        }
hgs
parents:
diff changeset
   223
hgs
parents:
diff changeset
   224
    // Insert XVal
hgs
parents:
diff changeset
   225
    if( aXVal.Length() > 0 )
hgs
parents:
diff changeset
   226
        {
hgs
parents:
diff changeset
   227
        if( aXVal.Length() <= KExtensionElementMaxLength )
hgs
parents:
diff changeset
   228
            {
hgs
parents:
diff changeset
   229
            item.iXValArray.Append( aXVal );
hgs
parents:
diff changeset
   230
            }
hgs
parents:
diff changeset
   231
        else
hgs
parents:
diff changeset
   232
            {
hgs
parents:
diff changeset
   233
            item.iXValArray.Append( aXVal.Left( KExtensionElementMaxLength ) );
hgs
parents:
diff changeset
   234
            }
hgs
parents:
diff changeset
   235
        }
hgs
parents:
diff changeset
   236
hgs
parents:
diff changeset
   237
    // Add to extension array as a new entry
hgs
parents:
diff changeset
   238
    iExtensionArray.Append( item );
hgs
parents:
diff changeset
   239
    }
hgs
parents:
diff changeset
   240
hgs
parents:
diff changeset
   241
// End of file