emailuis/widget/emailwidgetsettings/src/emailwidgetsettingslistviewcontainer.cpp
changeset 1 12c456ceeff2
parent 0 8466d47a6819
child 8 e1b6206813b4
equal deleted inserted replaced
0:8466d47a6819 1:12c456ceeff2
    18 // INCLUDE FILES
    18 // INCLUDE FILES
    19 #include <eikclbd.h>
    19 #include <eikclbd.h>
    20 #include <eikmop.h>
    20 #include <eikmop.h>
    21 #include <bacline.h>
    21 #include <bacline.h>
    22 #include <StringLoader.h>
    22 #include <StringLoader.h>
       
    23 #include <akniconarray.h>
    23 #include <emailwidgetsettings.rsg>
    24 #include <emailwidgetsettings.rsg>
       
    25 #include <emailwidgetsettings.mbg>
    24 
    26 
    25 #include "emailtrace.h"
    27 #include "emailtrace.h"
    26 #include "emailwidgetsettingslistview.h"
    28 #include "emailwidgetsettingslistview.h"
    27 #include "cmailwidgetcenrepkeys.h"
    29 #include "cmailwidgetcenrepkeys.h"
       
    30 #include "CFSMailClient.h"
    28 
    31 
    29 using namespace AknLayout;
    32 using namespace AknLayout;
    30 
    33 
    31 const TInt KMaxMailboxCount = 18;
    34 const TInt KMaxMailboxCount = 18;
    32 _LIT( KDissociated,"0");
    35 _LIT( KDissociated,"0");
    33 const TInt KMaxDescLen = 256;
    36 const TInt KMaxDescLen = 256;
    34 const TUid KUidWizardApp = { 0x10281c96 };
    37 const TUid KUidWizardApp = { 0x10281c96 };
    35 const TUid KUidEmailWizardView = { 0x10281C9A };
    38 const TUid KUidEmailWizardView = { 0x10281C9A };
       
    39 _LIT( KMifPath, "z:\\resource\\apps\\emailwidgetsettings.mif");
    36 
    40 
    37 // ======== MEMBER FUNCTIONS ========
    41 // ======== MEMBER FUNCTIONS ========
    38 
    42 
    39 // ---------------------------------------------------------------------------
    43 // ---------------------------------------------------------------------------
    40 // 
    44 // 
    41 // ---------------------------------------------------------------------------
    45 // ---------------------------------------------------------------------------
    42 //
    46 //
    43 CEmailWidgetSettingsListViewContainer::CEmailWidgetSettingsListViewContainer()
    47 CEmailWidgetSettingsListViewContainer::CEmailWidgetSettingsListViewContainer()
    44     {
    48     {
       
    49     FUNC_LOG;        
    45     }
    50     }
    46 
    51 
    47 // ---------------------------------------------------------------------------
    52 // ---------------------------------------------------------------------------
    48 // 
    53 // 
    49 // ---------------------------------------------------------------------------
    54 // ---------------------------------------------------------------------------
    67 // 
    72 // 
    68 // ---------------------------------------------------------------------------
    73 // ---------------------------------------------------------------------------
    69 //
    74 //
    70 void CEmailWidgetSettingsListViewContainer::CreateListBoxL(MEikListBoxObserver* aObserver)
    75 void CEmailWidgetSettingsListViewContainer::CreateListBoxL(MEikListBoxObserver* aObserver)
    71     {
    76     {
       
    77     FUNC_LOG;        
    72     TInt count = iMailboxes->MailboxCount();
    78     TInt count = iMailboxes->MailboxCount();
    73 
    79 
    74     iListBox = new(ELeave) CAknSingleStyleListBox;
    80     iListBox = new(ELeave) CAknSingleGraphicStyleListBox;
    75     iListBox->SetContainerWindowL( *this);
    81     iListBox->SetContainerWindowL( *this);
    76     iListBox->ConstructL( this, EAknListBoxSelectionList );
    82     iListBox->ConstructL( this, EAknListBoxSelectionList );
    77     iAccountNames = new (ELeave) CDesCArrayFlat(count + 1);
    83     iAccountNames = new (ELeave) CDesCArrayFlat(count + 1);
       
    84     iDomains = new (ELeave) CDesCArrayFlat(count);
    78     if (count)
    85     if (count)
    79         {
    86         {
    80 		iAccountIds = new ( ELeave ) CArrayFixFlat<TFSMailMsgId>(count);
    87 		iAccountIds = new ( ELeave ) CArrayFixFlat<TFSMailMsgId>(count);
    81 		}
    88 		}
    82     for (TInt i = 0; i < count; i++)
    89     for (TInt i = 0; i < count; i++)
    83         {
    90         {
    84         TBuf<KMaxDescLen> name;        
    91         TBuf<KMaxDescLen> name;
       
    92         TBuf<KMaxDescLen> domain;        
    85         TFSMailMsgId id;
    93         TFSMailMsgId id;
    86         iMailboxes->GetMailboxNameL(i, name);
    94         iMailboxes->GetMailboxNameL(i, name);
       
    95         iMailboxes->GetDomainL(i, domain);
    87         iMailboxes->GetMailboxIdL(i, id);
    96         iMailboxes->GetMailboxIdL(i, id);
    88         iAccountNames->AppendL(name);
    97         iAccountNames->AppendL(name);
       
    98         iDomains->AppendL(domain);
    89         iAccountIds->AppendL(id);
    99         iAccountIds->AppendL(id);
    90         }
   100         }
    91     HBufC* createNewMailbox = StringLoader::LoadLC(R_EMAILWIDGETSETTINGS_CREATE_NEW_MAILBOX);
   101     HBufC* createNewMailbox = StringLoader::LoadLC(R_EMAILWIDGETSETTINGS_CREATE_NEW_MAILBOX);
    92     iAccountNames->AppendL(createNewMailbox->Des());
   102     iAccountNames->AppendL(createNewMailbox->Des());
    93     CleanupStack::PopAndDestroy(createNewMailbox);
   103     CleanupStack::PopAndDestroy(createNewMailbox);
    94     iListBox->Model()->SetItemTextArray(iAccountNames);
   104     iListBox->Model()->SetItemTextArray(iAccountNames);
    95     
   105     
    96     iListBox->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray);
   106     iListBox->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray);   
    97     iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue);
   107     iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue);
    98     iListBox->SetBorder(TGulBorder::ESingleBlack);
   108     iListBox->SetBorder(TGulBorder::ESingleBlack);
    99     iListBox->CreateScrollBarFrameL(ETrue);
   109     iListBox->CreateScrollBarFrameL(ETrue);
   100     iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
   110     iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
   101     iListBox->SetListBoxObserver(aObserver);
   111     iListBox->SetListBoxObserver(aObserver);
       
   112     
       
   113     SetupListIconsL();
       
   114     }
       
   115 
       
   116 // ---------------------------------------------------------------------------
       
   117 // 
       
   118 // ---------------------------------------------------------------------------
       
   119 //
       
   120 void CEmailWidgetSettingsListViewContainer::SetupListIconsL()
       
   121     {
       
   122     FUNC_LOG;        
       
   123     CFSMailClient* mailClient = CFSMailClient::NewL();
       
   124     CleanupClosePushL(*mailClient);
       
   125     MFSMailBrandManager& brandManager = mailClient->GetBrandManagerL();
       
   126     
       
   127     TInt count = iMailboxes->MailboxCount();
       
   128     CArrayPtr<CGulIcon>* icons = new(ELeave) CArrayPtrFlat<CGulIcon>( count + 1 );
       
   129     CleanupStack::PushL( icons );
       
   130    
       
   131     AppendIconL(icons, EMbmEmailwidgetsettingsQgn_prop_cmail_new_mailbox, 
       
   132                        EMbmEmailwidgetsettingsQgn_prop_cmail_new_mailbox_mask);
       
   133 
       
   134     for (TInt i = 0; i < count; i++)
       
   135         {
       
   136         CGulIcon* brandIcon;
       
   137         brandIcon = brandManager.GetGraphicL( EFSMailboxIcon, iDomains->MdcaPoint(i) );
       
   138         
       
   139         if (brandIcon)
       
   140             {
       
   141             icons->AppendL(brandIcon);
       
   142             }
       
   143         else
       
   144             {
       
   145             AppendIconL(icons, EMbmEmailwidgetsettingsQgn_indi_cmail_drop_email_account, 
       
   146                                EMbmEmailwidgetsettingsQgn_indi_cmail_drop_email_account_mask);
       
   147             }
       
   148         }
       
   149 
       
   150     // clear any previous icon array
       
   151     CAknIconArray* oldIconArray = static_cast<CAknIconArray*>(iListBox->ItemDrawer()->ColumnData()->IconArray());
       
   152     if (oldIconArray)
       
   153         delete oldIconArray;
       
   154     
       
   155     iListBox->ItemDrawer()->ColumnData()->SetIconArray(icons);
       
   156     CleanupStack::Pop(icons);
       
   157     CleanupStack::PopAndDestroy( mailClient );
       
   158     }
       
   159 
       
   160 // -----------------------------------------------------------------------------
       
   161 // CFeedsTopicContainer::AppendIconL
       
   162 //
       
   163 // Loads and appends an icon to the icon array.
       
   164 // -----------------------------------------------------------------------------
       
   165 //
       
   166 
       
   167 void CEmailWidgetSettingsListViewContainer::AppendIconL(
       
   168         CArrayPtr<CGulIcon>* aIcons,
       
   169         const TInt aFileBitmapId, 
       
   170         const TInt aFileMaskId)
       
   171     {
       
   172     FUNC_LOG;
       
   173     CGulIcon*    newIcon;
       
   174     CFbsBitmap*  newIconBmp;
       
   175     CFbsBitmap*  newIconMaskBmp;
       
   176     AknIconUtils::CreateIconLC( newIconBmp, newIconMaskBmp, KMifPath,
       
   177             aFileBitmapId,
       
   178             aFileMaskId );   
       
   179     newIcon = CGulIcon::NewL(newIconBmp, newIconMaskBmp);
       
   180     CleanupStack::Pop(newIconMaskBmp);
       
   181     CleanupStack::Pop(newIconBmp);
       
   182     CleanupStack::PushL(newIcon);
       
   183     aIcons->AppendL(newIcon);
       
   184     CleanupStack::Pop(newIcon);
   102     }
   185     }
   103 
   186 
   104 // ---------------------------------------------------------------------------
   187 // ---------------------------------------------------------------------------
   105 // CEmailWidgetSettingsListViewContainer::CreateCbaL
   188 // CEmailWidgetSettingsListViewContainer::CreateCbaL
   106 // ---------------------------------------------------------------------------
   189 // ---------------------------------------------------------------------------
   107 //
   190 //
   108 void CEmailWidgetSettingsListViewContainer::CreateCbaL( MEikCommandObserver* aObserver )
   191 void CEmailWidgetSettingsListViewContainer::CreateCbaL( MEikCommandObserver* aObserver )
   109     {
   192     {
       
   193     FUNC_LOG;        
   110     const TSize screenSize= iCoeEnv->ScreenDevice()->SizeInPixels();
   194     const TSize screenSize= iCoeEnv->ScreenDevice()->SizeInPixels();
   111           iPopoutCba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba,
   195           iPopoutCba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba,
   112             CEikButtonGroupContainer::EHorizontal, aObserver, R_AVKON_SOFTKEYS_SELECT_CANCEL);
   196             CEikButtonGroupContainer::EHorizontal, aObserver, R_AVKON_SOFTKEYS_SELECT_CANCEL);
   113     iPopoutCba->SetBoundingRect(TRect(screenSize));
   197     iPopoutCba->SetBoundingRect(TRect(screenSize));
   114     }
   198     }
   117 // CEmailWidgetSettingsListViewContainer::~CEmailWidgetSettingsListViewContainer
   201 // CEmailWidgetSettingsListViewContainer::~CEmailWidgetSettingsListViewContainer
   118 // ---------------------------------------------------------------------------
   202 // ---------------------------------------------------------------------------
   119 //
   203 //
   120 CEmailWidgetSettingsListViewContainer::~CEmailWidgetSettingsListViewContainer()
   204 CEmailWidgetSettingsListViewContainer::~CEmailWidgetSettingsListViewContainer()
   121     {
   205     {
       
   206     FUNC_LOG;        
   122     delete iMailboxes;    
   207     delete iMailboxes;    
   123     delete iPopoutCba;
   208     delete iPopoutCba;
   124     delete iListBox;
   209     delete iListBox;
   125     delete iAccountNames;
   210     delete iAccountNames;
       
   211     delete iDomains;
   126     delete iAccountIds;
   212     delete iAccountIds;
   127     }
   213     }
   128 
   214 
   129 // ---------------------------------------------------------------------------
   215 // ---------------------------------------------------------------------------
   130 // CEmailWidgetSettingsListViewContainer::SizeChanged
   216 // CEmailWidgetSettingsListViewContainer::SizeChanged
   131 // ---------------------------------------------------------------------------
   217 // ---------------------------------------------------------------------------
   132 //
   218 //
   133 void CEmailWidgetSettingsListViewContainer::SizeChanged()
   219 void CEmailWidgetSettingsListViewContainer::SizeChanged()
   134     {
   220     {
       
   221     FUNC_LOG;        
   135     TRect mainPaneRect;
   222     TRect mainPaneRect;
   136 		AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
   223 		AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
   137 		TRect listBoxRect(mainPaneRect.Size());
   224 		TRect listBoxRect(mainPaneRect.Size());
   138 		iListBox->SetRect(listBoxRect);
   225 		iListBox->SetRect(listBoxRect);
   139     }
   226     }
   142 // CEmailWidgetSettingsListViewContainer::CountComponentControls
   229 // CEmailWidgetSettingsListViewContainer::CountComponentControls
   143 // ---------------------------------------------------------------------------
   230 // ---------------------------------------------------------------------------
   144 //
   231 //
   145 TInt CEmailWidgetSettingsListViewContainer::CountComponentControls() const
   232 TInt CEmailWidgetSettingsListViewContainer::CountComponentControls() const
   146     {
   233     {
       
   234     FUNC_LOG;        
   147     return iListBox ? 1 : 0;
   235     return iListBox ? 1 : 0;
   148     }
   236     }
   149 
   237 
   150 // ---------------------------------------------------------------------------
   238 // ---------------------------------------------------------------------------
   151 // CEmailWidgetSettingsListViewContainer::ComponentControl
   239 // CEmailWidgetSettingsListViewContainer::ComponentControl
   152 // ---------------------------------------------------------------------------
   240 // ---------------------------------------------------------------------------
   153 //
   241 //
   154 CCoeControl* CEmailWidgetSettingsListViewContainer::ComponentControl(TInt /*aIndex*/) const
   242 CCoeControl* CEmailWidgetSettingsListViewContainer::ComponentControl(TInt /*aIndex*/) const
   155     {
   243     {
       
   244     FUNC_LOG;        
   156     return iListBox;
   245     return iListBox;
   157     }
   246     }
   158 
   247 
   159 // ---------------------------------------------------------------------------
   248 // ---------------------------------------------------------------------------
   160 // CEmailWidgetSettingsListViewContainer::OfferKeyEventL
   249 // CEmailWidgetSettingsListViewContainer::OfferKeyEventL
   161 // ---------------------------------------------------------------------------
   250 // ---------------------------------------------------------------------------
   162 //
   251 //
   163 TKeyResponse CEmailWidgetSettingsListViewContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
   252 TKeyResponse CEmailWidgetSettingsListViewContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
   164     {
   253     {
       
   254     FUNC_LOG;        
   165     return iListBox->OfferKeyEventL(aKeyEvent, aType);
   255     return iListBox->OfferKeyEventL(aKeyEvent, aType);
   166     }
   256     }
   167 
   257 
   168 // ---------------------------------------------------------------------------
   258 // ---------------------------------------------------------------------------
   169 // CEmailWidgetSettingsListViewContainer::MinimumSize
   259 // CEmailWidgetSettingsListViewContainer::MinimumSize
   170 // ---------------------------------------------------------------------------
   260 // ---------------------------------------------------------------------------
   171 //
   261 //
   172 TSize CEmailWidgetSettingsListViewContainer::MinimumSize()
   262 TSize CEmailWidgetSettingsListViewContainer::MinimumSize()
   173     {
   263     {
       
   264     FUNC_LOG;        
   174     return iEikonEnv->EikAppUi()->ClientRect().Size();
   265     return iEikonEnv->EikAppUi()->ClientRect().Size();
   175     }
   266     }
   176 
   267 
   177 // ---------------------------------------------------------------------------
   268 // ---------------------------------------------------------------------------
   178 // CEmailWidgetSettingsListViewContainer::CurrentIndex
   269 // CEmailWidgetSettingsListViewContainer::CurrentIndex
   179 // ---------------------------------------------------------------------------
   270 // ---------------------------------------------------------------------------
   180 //
   271 //
   181 TInt CEmailWidgetSettingsListViewContainer::CurrentIndex() const
   272 TInt CEmailWidgetSettingsListViewContainer::CurrentIndex() const
   182     {
   273     {
       
   274     FUNC_LOG;        
   183     return iListBox->CurrentItemIndex();
   275     return iListBox->CurrentItemIndex();
   184     }
   276     }
   185 
   277 
   186 // ---------------------------------------------------------------------------
   278 // ---------------------------------------------------------------------------
   187 // CEmailWidgetSettingsListViewContainer::MopSupplyObject
   279 // CEmailWidgetSettingsListViewContainer::MopSupplyObject
   188 // ---------------------------------------------------------------------------
   280 // ---------------------------------------------------------------------------
   189 //
   281 //
   190 TTypeUid::Ptr CEmailWidgetSettingsListViewContainer::MopSupplyObject(TTypeUid aId)
   282 TTypeUid::Ptr CEmailWidgetSettingsListViewContainer::MopSupplyObject(TTypeUid aId)
   191     {
   283     {
       
   284     FUNC_LOG;        
   192     return SupplyMopObject(aId, iPopoutCba);
   285     return SupplyMopObject(aId, iPopoutCba);
   193     }
   286     }
   194 
   287 
   195 // ---------------------------------------------------------------------------
   288 // ---------------------------------------------------------------------------
   196 // CEmailWidgetSettingsListViewContainer::SaveSelectedL
   289 // CEmailWidgetSettingsListViewContainer::SaveSelectedL
   197 // ---------------------------------------------------------------------------
   290 // ---------------------------------------------------------------------------
   198 //
   291 //
   199 void CEmailWidgetSettingsListViewContainer::SaveSelectedL()
   292 void CEmailWidgetSettingsListViewContainer::SaveSelectedL()
   200     {
   293     {
       
   294     FUNC_LOG;        
   201     if (CurrentIndex() == iAccountNames->Count() - 1)
   295     if (CurrentIndex() == iAccountNames->Count() - 1)
   202         {
   296         {
   203         LaunchEmailWizardL();
   297         LaunchEmailWizardL();
   204         return;
   298         return;
   205         }
   299         }
   278 //  Launches Email Settings Wizard
   372 //  Launches Email Settings Wizard
   279 // -----------------------------------------------------------------------------
   373 // -----------------------------------------------------------------------------
   280 //
   374 //
   281 void CEmailWidgetSettingsListViewContainer::LaunchEmailWizardL()
   375 void CEmailWidgetSettingsListViewContainer::LaunchEmailWizardL()
   282     {
   376     {
       
   377     FUNC_LOG;        
   283     if ( iEnv )
   378     if ( iEnv )
   284         {
   379         {
   285         CCoeAppUi* appui = iEnv-> EikAppUi( );
   380         CCoeAppUi* appui = iEnv-> EikAppUi( );
   286         if ( appui )
   381         if ( appui )
   287             {
   382             {