emailuis/widget/emailwidgetsettings/src/emailwidgetsettingslistviewcontainer.cpp
changeset 1 12c456ceeff2
parent 0 8466d47a6819
child 8 e1b6206813b4
--- 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 <eikmop.h>
 #include <bacline.h>
 #include <StringLoader.h>
+#include <akniconarray.h>
 #include <emailwidgetsettings.rsg>
+#include <emailwidgetsettings.mbg>
 
 #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<TFSMailMsgId>(count);
 		}
     for (TInt i = 0; i < count; i++)
         {
-        TBuf<KMaxDescLen> name;        
+        TBuf<KMaxDescLen> name;
+        TBuf<KMaxDescLen> 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<CGulIcon>* icons = new(ELeave) CArrayPtrFlat<CGulIcon>( 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<CAknIconArray*>(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<CGulIcon>* 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( );