diff -r 000000000000 -r 5a93021fdf25 apengine/apsettingshandlerui/src/ApSelectorListBoxModel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/apengine/apsettingshandlerui/src/ApSelectorListBoxModel.cpp Thu Dec 17 08:55:21 2009 +0200 @@ -0,0 +1,352 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "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: Implementation of CApSelectorListboxModel. +* +*/ + + +// INCLUDE FILES + +#include "ApSelectorListBoxModel.h" +#include "ApListItem.h" +#include + +#include + +#include "ApSettingsHandlerLogger.h" + +// CONSTANTS +const TInt KGPRS_ICON_ID = 0; +// No icon for CDMA (yet?) -> use GPRS icon. +const TInt KCDMA_ICON_ID = KGPRS_ICON_ID; +const TInt KCSD_ICON_ID = 1; +const TInt KHSCSD_ICON_ID = 2; +// const TInt KSMS_ICON_ID = 3; // DEPRECATED +const TInt KWLAN_ICON_ID = 4; +// fith icon element is the KEASY_WLAN_ICON_ID but it is not shown +// in our UI, but is used by other modules using our +// resources!!! const TInt KEASY_WLAN_ICON_ID = 5; + +const TInt KPROTECTED_ICON_ID = 6; +// get real icons !!! now using GPRS... +#ifdef __TEST_LAN_BEARER + const TInt KLAN_ICON_ID = KGPRS_ICON_ID; +#endif // __TEST_LAN_BEARER + + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------- +// CApSelectorListboxModel::CApSelectorListboxModel +// --------------------------------------------------------- +// +CApSelectorListboxModel::CApSelectorListboxModel( TGraphicType aGraphicType ) +:CApListItemList(), +iOffset( 0 ), +iFeatureInitialised(EFalse), +iProtectionSupported(EFalse) + { + APSETUILOGGER_ENTERFN( EListbox,"SelListboxModel::CApSelectorListboxModel<->") + iGraphicType = aGraphicType; + } + +// --------------------------------------------------------- +// CApSelectorListboxModel::~CApSelectorListboxModel +// --------------------------------------------------------- +// +CApSelectorListboxModel::~CApSelectorListboxModel() + { + APSETUILOGGER_ENTERFN( EListbox,"SelListboxModel::~CApSelectorListboxModel<->") + ResetAndDestroy(); // deletes all elements... + } + +// --------------------------------------------------------- +// CApSelectorListboxModel::MdcaCount +// --------------------------------------------------------- +// +TInt CApSelectorListboxModel::MdcaCount() const + { + APSETUILOGGER_ENTERFN( EListbox,"SelListboxModel::MdcaCount<->") + + return Count(); + } + +// --------------------------------------------------------- +// CApSelectorListboxModel::MdcaPoint +// --------------------------------------------------------- +// +TPtrC CApSelectorListboxModel::MdcaPoint( TInt aIndex ) const + { + APSETUILOGGER_ENTERFN( EListbox,"SelListboxModel::MdcaPoint") + + // We need to cast away the const-ness from the buffer. + // It was definitely made for formatting! + FormatListboxText( aIndex, + ( MUTABLE_CAST( TBuf&, iBuf ) ) ); + + APSETUILOGGER_LEAVEFN( EListbox,"SelListboxModel::MdcaPoint") + return iBuf; + } + + +// --------------------------------------------------------- +// CApSelectorListboxModel::Item4Uid +// --------------------------------------------------------- +// +TInt CApSelectorListboxModel::Item4Uid( TUint32 aUid, TInt& aErr ) const + { + APSETUILOGGER_ENTERFN( EListbox,"SelListboxModel::Item4Uid") + + aErr = KErrNone; + TInt retval( KErrNotFound ); + for ( TInt i=0; iUid() == aUid ) + { + retval = i; + break; + } + } + if ( retval == KErrNotFound ) + { + aErr = KErrNotFound; + } + + APSETUILOGGER_LEAVEFN( EListbox,"SelListboxModel::Item4Uid") + return retval; + } + + + +// --------------------------------------------------------- +// CApSelectorListboxModel::SetOwnIconOffset +// --------------------------------------------------------- +// +void CApSelectorListboxModel::SetOwnIconOffset( TInt aOffset ) + { + APSETUILOGGER_ENTERFN( EListbox,"SelListboxModel::SetOwnIconOffset<->") + + iOffset = aOffset; + } + + +// --------------------------------------------------------- +// CApSelectorListboxModel::FormatListboxText +// --------------------------------------------------------- +// +void CApSelectorListboxModel::FormatListboxText( TInt aIndex, + TDes& aBuf ) const + { + APSETUILOGGER_ENTERFN( EListbox,"SelListboxModel::FormatListboxText") + + if ( !iFeatureInitialised ) + { + TRAPD(err, FeatureManager::InitializeLibL()); + if (err == KErrNone) + { + CApSelectorListboxModel* tmp = CONST_CAST(CApSelectorListboxModel*, this); + tmp->iProtectionSupported = FeatureManager::FeatureSupported( + KFeatureIdSettingsProtection ); + FeatureManager::UnInitializeLib(); + tmp->iFeatureInitialised = ETrue; + } + } + switch ( iGraphicType ) + { + case EGraphicBearer: + { + TInt iIconId; + switch ( At( aIndex )->BearerType() ) + { + case EApBearerTypeCDMA: + { + iIconId = KCDMA_ICON_ID; + break; + } + case EApBearerTypeGPRS: + { + iIconId = KGPRS_ICON_ID; + break; + } + case EApBearerTypeCSD: + { + iIconId = KCSD_ICON_ID; + break; + } + case EApBearerTypeHSCSD: + { + iIconId = KHSCSD_ICON_ID; + break; + } + case EApBearerTypeWLAN: + { + iIconId = KWLAN_ICON_ID; + break; + } +#ifdef __TEST_LAN_BEARER + case EApBearerTypeLAN: + { + iIconId = KLAN_ICON_ID; + break; + } +#endif // __TEST_LAN_BEARER + case EApBearerTypeLANModem: + { // LANMODEM get real icon ID + iIconId = KWLAN_ICON_ID; + break; + } + default: + { + // in release, shall not leave here, + // it is checked when filled... + __ASSERT_DEBUG( EFalse, Panic( EInvalidBearerType ) ); + iIconId = KGPRS_ICON_ID; + break; + } + } + if ( iProtectionSupported ) + { + if ( At( aIndex )->IsReadOnly() ) + { + TInt iProtectedIconId = KPROTECTED_ICON_ID; + aBuf.Format( + KListItemFormatGraphicProtected, + iOffset+iIconId, + Min( At( aIndex )->Name().Length(), + KMaxListItemNameLength ), + &At( aIndex )->Name(), + iOffset+iProtectedIconId + ); + } + else + { // protection supported, but not protected + aBuf.Format( + KListItemFormatGraphicBearer, + iOffset+iIconId, + Min( At( aIndex )->Name().Length(), + KMaxListItemNameLength ), + &At( aIndex )->Name() + ); + } + } + else + { // protection not supported + aBuf.Format( + KListItemFormatGraphicBearer, + iOffset+iIconId, + Min( At( aIndex )->Name().Length(), + KMaxListItemNameLength ), + &At( aIndex )->Name() + ); + } + break; + } + case EGraphicNone: + { + aBuf.Format( + KListItemFormatGraphicNone, + Min( At( aIndex )->Name().Length(), + KMaxListItemNameLength ), + &At( aIndex )->Name() + ); + break; + } + case EGraphicOnOff: + { + if ( iProtectionSupported ) + { + TInt ProtectedIconId( 0 ); + if ( At( aIndex )->IsReadOnly() ) + { + ProtectedIconId = KPROTECTED_ICON_ID; + aBuf.Format( + KListItemFormatGraphicOnOffWithLock, + 1, + Min( At( aIndex )->Name().Length(), + KMaxListItemNameLength ), + &At( aIndex )->Name(), + iOffset + ProtectedIconId + ); + } + else + { + aBuf.Format( + KListItemFormatGraphicOnOff, + 1, + Min( At( aIndex )->Name().Length(), + KMaxListItemNameLength ), + &At( aIndex )->Name() + ); // magic Number, does not works with anything else + } + } + else + { + aBuf.Format( + KListItemFormatGraphicOnOff, + 1, + Min( At( aIndex )->Name().Length(), + KMaxListItemNameLength ), + &At( aIndex )->Name() + ); + } + break; + } + case EGraphicProtection: + { + if ( iProtectionSupported ) + { + TInt ProtectedIconId( 0 ); + if ( At( aIndex )->IsReadOnly() ) + { + ProtectedIconId = 0; + aBuf.Format( + KListItemFormatGraphicWithLock, + Min( At( aIndex )->Name().Length(), + KMaxListItemNameLength ), + &At( aIndex )->Name(), + iOffset + ProtectedIconId + ); + } + else + { + aBuf.Format( + KListItemFormatGraphicNone, + Min( At( aIndex )->Name().Length(), + KMaxListItemNameLength ), + &At( aIndex )->Name() + ); + } + } + else + { + aBuf.Format( + KListItemFormatGraphicNone, + Min( At( aIndex )->Name().Length(), + KMaxListItemNameLength ), + &At( aIndex )->Name() + ); + } + break; + } + default: + { + __ASSERT_DEBUG( EFalse, Panic( EInvalidBitmapType ) ); + break; + } + } + + APSETUILOGGER_LEAVEFN( EListbox,"SelListboxModel::FormatListboxText") + } + +// End of File