appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialogselectoptions_symbian.cpp
author hgs
Fri, 20 Aug 2010 11:39:56 +0300
changeset 64 48c14c385b0e
permissions -rw-r--r--
201033_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
64
48c14c385b0e 201033_01
hgs
parents:
diff changeset
     1
/*
48c14c385b0e 201033_01
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
48c14c385b0e 201033_01
hgs
parents:
diff changeset
     3
* All rights reserved.
48c14c385b0e 201033_01
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
48c14c385b0e 201033_01
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
48c14c385b0e 201033_01
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
48c14c385b0e 201033_01
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
48c14c385b0e 201033_01
hgs
parents:
diff changeset
     8
*
48c14c385b0e 201033_01
hgs
parents:
diff changeset
     9
* Initial Contributors:
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    11
*
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    12
* Contributors:
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    13
*
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    14
* Description: Symbian specific functions in optional components selection dialog
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    15
*
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    16
*/
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    17
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    18
#include <QList>
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    19
#include <QVariant>
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    20
#include <s32mem.h>                     // RDesWriteStream
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    21
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    22
const TInt KBufferGranularity = 4;
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    23
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    24
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    25
// ----------------------------------------------------------------------------
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    26
// ConvertOptionalComponentIndexesL()
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    27
// ----------------------------------------------------------------------------
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    28
//
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    29
QByteArray ConvertOptionalComponentIndexesL( const QList<QVariant> &aIndexes )
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    30
{
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    31
    // Get aIndexes into symbianArray
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    32
    RArray<TInt> symbianArray;
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    33
    CleanupClosePushL( symbianArray );
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    34
    QListIterator<QVariant> iter( aIndexes );
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    35
    while( iter.hasNext() ) {
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    36
        QVariant item = iter.next();
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    37
        int i;
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    38
        bool ok;
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    39
        i = item.toInt( &ok );
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    40
        if( ok ) {
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    41
            symbianArray.AppendL( i );
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    42
        }
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    43
    }
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    44
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    45
    // Write symbianArray to a package buffer
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    46
    CBufFlat* buffer = CBufFlat::NewL( KBufferGranularity );
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    47
    CleanupStack::PushL( buffer );
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    48
    RBufWriteStream writeStream( *buffer );
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    49
    CleanupClosePushL( writeStream );
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    50
    TPckg< const RArray<TInt> > indexesPckg( symbianArray );
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    51
    writeStream.WriteL( indexesPckg );
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    52
    writeStream.CommitL();
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    53
    CleanupStack::PopAndDestroy( &writeStream );
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    54
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    55
    // Create byte array (copies data) from the package buffer
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    56
    const TInt KFromTheBeginning = 0;
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    57
    TPtr8 ptr = buffer->Ptr(KFromTheBeginning);
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    58
    QByteArray byteArray( reinterpret_cast<const char*>( ptr.Ptr() ), ptr.Length() );
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    59
    CleanupStack::PopAndDestroy( buffer );
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    60
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    61
    CleanupStack::PopAndDestroy( &symbianArray );
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    62
    return byteArray;
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    63
}
48c14c385b0e 201033_01
hgs
parents:
diff changeset
    64