// -----------------------------------------------------------------------------
// CTestSDKLists::TestLBSPCheckAndSetDataValidityL
// -----------------------------------------------------------------------------
//
TInt CTestSDKLists::TestLBSPCheckAndSetDataValidityL( CStifItemParser& /*aItem*/ )
    {
    // Print to UI
    _LIT( KTestModule, "AknListBoxLayoutDecoratorTestModule" );
    _LIT( KTestLBSPCheckAndSetDataValidityL, "In TestLBSPCheckAndSetDataValidityL" );
    TestModuleIf().Printf( 0, KTestModule, KTestLBSPCheckAndSetDataValidityL );
    // Print to log file
    iLog->Log( KTestLBSPCheckAndSetDataValidityL );

    _LIT( KItemText, "Item1" );
    TBuf<KLength> temp( KItemText );

    CSelectableItem* item = new( ELeave ) CSelectableItem( temp, EFalse );
    CleanupStack::PushL( item );            
    item->ConstructL();

    CSelectionItemList* itemList = new( ELeave ) CSelectionItemList( 1 );
    CleanupStack::PushL( itemList );            
    itemList->AppendL( item );

    CAknListBoxSettingPageExt* settingPage = 
        new ( ELeave ) CAknListBoxSettingPageExt( R_TESTLIST_SETTING_PAGE, itemList );
    CleanupStack::PushL( settingPage );
    settingPage->ConstructL();

    settingPage->CAknListBoxSettingPage::CheckAndSetDataValidity();

    CleanupStack::PopAndDestroy( settingPage );
    CleanupStack::PopAndDestroy( itemList );
    CleanupStack::PopAndDestroy( item );

    return KErrNone;
    }
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::EditItemL( TBool aCalledFromMenu )
// --------------------------------------------------------------------------
//
void CMSStoreServersSetting::EditItemL( TBool /*aCalledFromMenu*/ )
{
    LOG(_L("[MediaServant]\t CMSStoreServersSetting::EditItemL"));

    // Create setting page
    CAknSettingPage* dlg = CMSMultiselectionSettingPage::NewL(
                               R_MS_STORE_SETTINGS_LOCATION_SETTING_PAGE,
                               *iItemArray, EFalse );
    // launch setting page
    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
    {
        DeleteAllServersFromRuleL();

        for ( TInt index = 0; index < iItemArray->Count(); index++ )
        {
            CSelectableItem* item = iItemArray->At( index );
            TBool selected = item->SelectionStatus();

            CCmMediaServerFull* server = (*iServers)[index];
            // get server UDN
            TPtrC8 serverUDN = server->MediaServer();

            // add server
            if ( item->SelectionStatus() )
            {
                // set server for rule
                iRule->AddMediaServerL( serverUDN );
            }
        }

        SetSettingItemTextL();
        LoadL();
        // show value on screen
        UpdateListBoxTextL();
    }
}
// -----------------------------------------------------------------------------
// CTestSDKLists::TestLBSPHandleListBoxEventL
// -----------------------------------------------------------------------------
//
TInt CTestSDKLists::TestLBSPHandleListBoxEventL( CStifItemParser& /*aItem*/ )
    {
    // Print to UI
    _LIT( KTestModule, "AknListBoxLayoutDecoratorTestModule" );
    _LIT( KTestLBSPHandleListBoxEventL, "In TestLBSPHandleListBoxEventL" );
    TestModuleIf().Printf( 0, KTestModule, KTestLBSPHandleListBoxEventL );
    // Print to log file
    iLog->Log( KTestLBSPHandleListBoxEventL );

    _LIT( KItemText, "Item1" );
    TBuf<KLength> temp( KItemText );

    CSelectableItem* item = new( ELeave ) CSelectableItem( temp, EFalse );
    CleanupStack::PushL( item );            
    item->ConstructL();

    CSelectionItemList* itemList = new( ELeave ) CSelectionItemList( 1 );
    CleanupStack::PushL( itemList );            
    itemList->AppendL( item );

    CAknListBoxSettingPageExt* settingPage = 
        new ( ELeave ) CAknListBoxSettingPageExt( R_TESTLIST_SETTING_PAGE, itemList );
    CleanupStack::PushL( settingPage );
    settingPage->ConstructL();

    TInt err = KErrNone;
    TRAP( err, settingPage->CAknListBoxSettingPage::HandleListBoxEventL(
                    settingPage->ListBoxControl(), 
                    MEikListBoxObserver::EEventItemClicked ) );

    CleanupStack::PopAndDestroy( settingPage );
    CleanupStack::PopAndDestroy( itemList );
    CleanupStack::PopAndDestroy( item );

    return err;
    }
// --------------------------------------------------------------------------
// 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
        }
    }
}