videofeeds/vcnsscheduleview/src/CVcxNsScheduleSettingsDlConditionItem.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 18 Jan 2010 20:21:12 +0200
changeset 0 96612d01cf9f
permissions -rw-r--r--
Revision: 201001 Kit: 201003

/*
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:    Video on Demand setting item class for download condition*
*/




// INCLUDES
#include <StringLoader.h>
#include <vcxnsscheduleview.rsg>

#include "vcxnsservicesettings.h"
#include "CVcxNsScheduleSettingsDlConditionItem.h"

// CONSTANTS
const TInt KEnumTextArraySize = 4;

// -----------------------------------------------------------------------------
// Constructor
// -----------------------------------------------------------------------------
//
CVcxNsScheduleSettingsDlConditionItem::CVcxNsScheduleSettingsDlConditionItem(
        TInt aResourceId, 
        TInt& aValue,
        TBool aWlanSupported )
    : CAknEnumeratedTextPopupSettingItem( aResourceId, aValue ), 
      iWlanSupported(aWlanSupported)
    {
    
    }

// -----------------------------------------------------------------------------
// Destructor
// -----------------------------------------------------------------------------
//
CVcxNsScheduleSettingsDlConditionItem::~CVcxNsScheduleSettingsDlConditionItem()
    {

    }

// -----------------------------------------------------------------------------
// CVcxNsScheduleSettingsDlConditionItem::CompleteConstructionL
// -----------------------------------------------------------------------------
//    
void CVcxNsScheduleSettingsDlConditionItem::CompleteConstructionL()
    {
    CAknEnumeratedTextPopupSettingItem::CompleteConstructionL();    
    
    // Note: More elegant way of creating the setting item would be
    // reading enumerated text items from resource file and dynamically
    // remove the WLAN-item if necessary.
    // 
    // Current implementation creates just empty array from resource file
    // and text items are dynamically added to text array.
   
    CArrayPtrFlat<CAknEnumeratedText>* enumTextArray =
        new (ELeave) CArrayPtrFlat<CAknEnumeratedText>( KEnumTextArraySize );
    CleanupStack::PushL( enumTextArray );
        
    CArrayPtr<HBufC>* popupTextArray = 
        new (ELeave) CArrayPtrFlat<HBufC>( KEnumTextArraySize );
    CleanupStack::PushL( popupTextArray );
    
    HBufC* manualConditionString = 
        StringLoader::LoadLC( R_VCXNS_SCHEDULE_MANUAL_DOWNLOAD );
    HBufC* autohomeConditionString = 
        StringLoader::LoadLC( R_VCXNS_SCHEDULE_AUTO_HOME_CELL );
    HBufC* autoalwaysConditionString = 
        StringLoader::LoadLC( R_VCXNS_SCHEDULE_AUTO_ALWAYS );
    HBufC* wlanConditionString = NULL;
    if ( iWlanSupported )
        {    
        wlanConditionString = StringLoader::LoadLC( R_VCXNS_SCHEDULE_AUTO_WLAN );
        }
                  
    CAknEnumeratedText* enumeratedText1 = new (ELeave) CAknEnumeratedText(
            EManual,
            manualConditionString);
    CleanupStack::PushL( enumeratedText1 );
    enumTextArray->AppendL( enumeratedText1 );
    CleanupStack::Pop( enumeratedText1 );
    
    if ( iWlanSupported ) 
        {  
        CAknEnumeratedText* enumeratedText2 = new (ELeave) CAknEnumeratedText(
                EWLAN,
                wlanConditionString);
        CleanupStack::PushL( enumeratedText2 );
        enumTextArray->AppendL( enumeratedText2 );
        CleanupStack::Pop( enumeratedText2 );
        }

    CAknEnumeratedText* enumeratedText3 = new (ELeave) CAknEnumeratedText(
            EHomeCellular,
            autohomeConditionString);
    CleanupStack::PushL( enumeratedText3 );
    enumTextArray->AppendL( enumeratedText3 );
    CleanupStack::Pop( enumeratedText3 );

    CAknEnumeratedText* enumeratedText4 = new (ELeave) CAknEnumeratedText(
            EAlways,
            autoalwaysConditionString);
    CleanupStack::PushL( enumeratedText4 );
    enumTextArray->AppendL( enumeratedText4 );
    CleanupStack::Pop( enumeratedText4 );
        
    SetEnumeratedTextArrays( enumTextArray, popupTextArray );
    HandleTextArrayUpdateL(); 
  
    if ( iWlanSupported )
        {
        CleanupStack::Pop( wlanConditionString );
        }
    CleanupStack::Pop( autoalwaysConditionString );
    CleanupStack::Pop( autohomeConditionString );
    CleanupStack::Pop( manualConditionString );
    CleanupStack::Pop( popupTextArray );
    CleanupStack::Pop( enumTextArray );
    }

// End of file