void CTTGPSLoggerCheckBoxSettingItem::CompleteConstructionL()
    {
    CAknEnumeratedTextSettingItem::CompleteConstructionL();

	iSelectionItemList = new (ELeave) CSelectionItemList(32);
	TInt count = EnumeratedTextArray()->Count();
	TInt numValueArray = iValueArray.Count();

	for (TInt i1 = 0; i1 < count; i1++)
		{
		CSelectableItem* item = new (ELeave) CSelectableItem(*(EnumeratedTextArray()->At(i1)->Value()), EFalse);
		CleanupStack::PushL(item);
		
		item->ConstructL();
		if (i1 < numValueArray)
			{
			item->SetSelectionStatus(iValueArray[i1]);
			}
		
		CleanupStack::Pop(item);
		iSelectionItemList->AppendL(item);
		}
    }
// --------------------------------------------------------------------------
// CMSStoreServersSetting::CreateSelectionItemListL
// Creates selection item list
// --------------------------------------------------------------------------
//
void CMSStoreServersSetting::CreateSelectionItemListL()
{
    if ( iItemArray )
    {
        iItemArray->ResetAndDestroy();
        delete iItemArray;
        iItemArray = NULL;
    }

    iItemArray =
        new ( ELeave ) CSelectionItemList( KItemArrayGranularity );

    TBuf8<KMaxFileName> itemText;

    TInt serverCount(0);
    if ( iServers )
    {
        serverCount = iServers->Count();
    }

    // Cycle trough all servers
    for ( TInt idx = 0; idx < serverCount; idx++ )
    {
        // get server
        CCmMediaServerFull* server = (*iServers)[idx];
        // show only copy capable devices
        if ( server->StoreUsage() )
        {
            HBufC* devName =
                UpnpString::ToUnicodeL( server->MediaServerName() );
            CleanupStack::PushL( devName );
            CSelectableItem* item = new ( ELeave ) CSelectableItem(
                *devName, EFalse);

            CleanupStack::PushL( item );
            // item must be constructed
            item->ConstructL();

            // count of servers set to rule
            TInt ruleServerCount = iRule->MediaServerCount();

            // Cycle trough all servers
            for (TInt index = 0; index < ruleServerCount; index++ )
            {
                const TDesC8& ruleServerUDN = iRule->MediaServerL( index );

                if (ruleServerUDN == server->MediaServer()) // compare UDNs
                {
                    // found - break this loop
                    index = ruleServerCount;
                    // found - mark selected
                    item->SetSelectionStatus( ETrue );
                    iSelectedItemCount++;
                }
            }
            // append item to list
            iItemArray->AppendL(item);
            CleanupStack::Pop( item );
            CleanupStack::PopAndDestroy( devName );
        }
        else    // we don't need this kind of servers anymore so remove it
        {
            delete server;
            iServers->Remove( idx );
            idx--; // remove transfers next item to current index
            serverCount--; // servers on the list were reduced
        }
    }
}