diff -r 8466d47a6819 -r 12c456ceeff2 emailuis/widget/emailwidgetsettings/src/emailwidgetsettingslistviewcontainer.cpp --- a/emailuis/widget/emailwidgetsettings/src/emailwidgetsettingslistviewcontainer.cpp Thu Dec 17 08:39:21 2009 +0200 +++ b/emailuis/widget/emailwidgetsettings/src/emailwidgetsettingslistviewcontainer.cpp Thu Jan 07 12:38:38 2010 +0200 @@ -20,11 +20,14 @@ #include #include #include +#include #include +#include #include "emailtrace.h" #include "emailwidgetsettingslistview.h" #include "cmailwidgetcenrepkeys.h" +#include "CFSMailClient.h" using namespace AknLayout; @@ -33,6 +36,7 @@ const TInt KMaxDescLen = 256; const TUid KUidWizardApp = { 0x10281c96 }; const TUid KUidEmailWizardView = { 0x10281C9A }; +_LIT( KMifPath, "z:\\resource\\apps\\emailwidgetsettings.mif"); // ======== MEMBER FUNCTIONS ======== @@ -42,6 +46,7 @@ // CEmailWidgetSettingsListViewContainer::CEmailWidgetSettingsListViewContainer() { + FUNC_LOG; } // --------------------------------------------------------------------------- @@ -69,23 +74,28 @@ // void CEmailWidgetSettingsListViewContainer::CreateListBoxL(MEikListBoxObserver* aObserver) { + FUNC_LOG; TInt count = iMailboxes->MailboxCount(); - iListBox = new(ELeave) CAknSingleStyleListBox; + iListBox = new(ELeave) CAknSingleGraphicStyleListBox; iListBox->SetContainerWindowL( *this); iListBox->ConstructL( this, EAknListBoxSelectionList ); iAccountNames = new (ELeave) CDesCArrayFlat(count + 1); + iDomains = new (ELeave) CDesCArrayFlat(count); if (count) { iAccountIds = new ( ELeave ) CArrayFixFlat(count); } for (TInt i = 0; i < count; i++) { - TBuf name; + TBuf name; + TBuf domain; TFSMailMsgId id; iMailboxes->GetMailboxNameL(i, name); + iMailboxes->GetDomainL(i, domain); iMailboxes->GetMailboxIdL(i, id); iAccountNames->AppendL(name); + iDomains->AppendL(domain); iAccountIds->AppendL(id); } HBufC* createNewMailbox = StringLoader::LoadLC(R_EMAILWIDGETSETTINGS_CREATE_NEW_MAILBOX); @@ -93,12 +103,85 @@ CleanupStack::PopAndDestroy(createNewMailbox); iListBox->Model()->SetItemTextArray(iAccountNames); - iListBox->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray); + iListBox->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray); iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue); iListBox->SetBorder(TGulBorder::ESingleBlack); iListBox->CreateScrollBarFrameL(ETrue); iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto); iListBox->SetListBoxObserver(aObserver); + + SetupListIconsL(); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CEmailWidgetSettingsListViewContainer::SetupListIconsL() + { + FUNC_LOG; + CFSMailClient* mailClient = CFSMailClient::NewL(); + CleanupClosePushL(*mailClient); + MFSMailBrandManager& brandManager = mailClient->GetBrandManagerL(); + + TInt count = iMailboxes->MailboxCount(); + CArrayPtr* icons = new(ELeave) CArrayPtrFlat( count + 1 ); + CleanupStack::PushL( icons ); + + AppendIconL(icons, EMbmEmailwidgetsettingsQgn_prop_cmail_new_mailbox, + EMbmEmailwidgetsettingsQgn_prop_cmail_new_mailbox_mask); + + for (TInt i = 0; i < count; i++) + { + CGulIcon* brandIcon; + brandIcon = brandManager.GetGraphicL( EFSMailboxIcon, iDomains->MdcaPoint(i) ); + + if (brandIcon) + { + icons->AppendL(brandIcon); + } + else + { + AppendIconL(icons, EMbmEmailwidgetsettingsQgn_indi_cmail_drop_email_account, + EMbmEmailwidgetsettingsQgn_indi_cmail_drop_email_account_mask); + } + } + + // clear any previous icon array + CAknIconArray* oldIconArray = static_cast(iListBox->ItemDrawer()->ColumnData()->IconArray()); + if (oldIconArray) + delete oldIconArray; + + iListBox->ItemDrawer()->ColumnData()->SetIconArray(icons); + CleanupStack::Pop(icons); + CleanupStack::PopAndDestroy( mailClient ); + } + +// ----------------------------------------------------------------------------- +// CFeedsTopicContainer::AppendIconL +// +// Loads and appends an icon to the icon array. +// ----------------------------------------------------------------------------- +// + +void CEmailWidgetSettingsListViewContainer::AppendIconL( + CArrayPtr* aIcons, + const TInt aFileBitmapId, + const TInt aFileMaskId) + { + FUNC_LOG; + CGulIcon* newIcon; + CFbsBitmap* newIconBmp; + CFbsBitmap* newIconMaskBmp; + AknIconUtils::CreateIconLC( newIconBmp, newIconMaskBmp, KMifPath, + aFileBitmapId, + aFileMaskId ); + newIcon = CGulIcon::NewL(newIconBmp, newIconMaskBmp); + CleanupStack::Pop(newIconMaskBmp); + CleanupStack::Pop(newIconBmp); + CleanupStack::PushL(newIcon); + aIcons->AppendL(newIcon); + CleanupStack::Pop(newIcon); } // --------------------------------------------------------------------------- @@ -107,6 +190,7 @@ // void CEmailWidgetSettingsListViewContainer::CreateCbaL( MEikCommandObserver* aObserver ) { + FUNC_LOG; const TSize screenSize= iCoeEnv->ScreenDevice()->SizeInPixels(); iPopoutCba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal, aObserver, R_AVKON_SOFTKEYS_SELECT_CANCEL); @@ -119,10 +203,12 @@ // CEmailWidgetSettingsListViewContainer::~CEmailWidgetSettingsListViewContainer() { + FUNC_LOG; delete iMailboxes; delete iPopoutCba; delete iListBox; delete iAccountNames; + delete iDomains; delete iAccountIds; } @@ -132,6 +218,7 @@ // void CEmailWidgetSettingsListViewContainer::SizeChanged() { + FUNC_LOG; TRect mainPaneRect; AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect); TRect listBoxRect(mainPaneRect.Size()); @@ -144,6 +231,7 @@ // TInt CEmailWidgetSettingsListViewContainer::CountComponentControls() const { + FUNC_LOG; return iListBox ? 1 : 0; } @@ -153,6 +241,7 @@ // CCoeControl* CEmailWidgetSettingsListViewContainer::ComponentControl(TInt /*aIndex*/) const { + FUNC_LOG; return iListBox; } @@ -162,6 +251,7 @@ // TKeyResponse CEmailWidgetSettingsListViewContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) { + FUNC_LOG; return iListBox->OfferKeyEventL(aKeyEvent, aType); } @@ -171,6 +261,7 @@ // TSize CEmailWidgetSettingsListViewContainer::MinimumSize() { + FUNC_LOG; return iEikonEnv->EikAppUi()->ClientRect().Size(); } @@ -180,6 +271,7 @@ // TInt CEmailWidgetSettingsListViewContainer::CurrentIndex() const { + FUNC_LOG; return iListBox->CurrentItemIndex(); } @@ -189,6 +281,7 @@ // TTypeUid::Ptr CEmailWidgetSettingsListViewContainer::MopSupplyObject(TTypeUid aId) { + FUNC_LOG; return SupplyMopObject(aId, iPopoutCba); } @@ -198,6 +291,7 @@ // void CEmailWidgetSettingsListViewContainer::SaveSelectedL() { + FUNC_LOG; if (CurrentIndex() == iAccountNames->Count() - 1) { LaunchEmailWizardL(); @@ -280,6 +374,7 @@ // void CEmailWidgetSettingsListViewContainer::LaunchEmailWizardL() { + FUNC_LOG; if ( iEnv ) { CCoeAppUi* appui = iEnv-> EikAppUi( );