00001 /* 00002 * Copyright © 2008 Nokia Corporation. 00003 */ 00004 00005 00006 // INCLUDE FILES 00007 #include "InternetEmailContainer.h" 00008 00009 #include <eiklabel.h> // for example label control 00010 #include <aknutils.h> // for Fonts. 00011 #include <aknlists.h> // for listbox 00012 #include <barsread.h> // for resource reader 00013 #include <avkon.hrh> 00014 00015 #include "Internetemail.hrh" 00016 #include "InternetEmailEngine.h" 00017 #include <Internetemail.rsg> 00018 00019 00020 // ================= MEMBER FUNCTIONS ======================= 00021 00022 // ------------------------------------------------------- 00023 // CInternetEmailContainer::ConstructL(const TRect& aRect) 00024 // EPOC two phased constructor 00025 // ------------------------------------------------------- 00026 // 00027 void CInternetEmailContainer::ConstructL(const TRect& aRect, CInternetEmailAppUi* aParent ) 00028 { 00029 iParent=aParent; 00030 CreateWindowL(); 00031 00032 iListBox = new (ELeave) CAknDoubleStyleListBox; 00033 iListBox->SetContainerWindowL(*this); 00034 iListBox->ConstructL(this, EAknListBoxSelectionList); 00035 00036 iListBox->Model()->SetItemTextArray(this); //we make ourself to be the array 00037 iListBox->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray); //thus lb doesnt control our deletion 00038 00039 iListBox->SetListBoxObserver( this ); 00040 iListBox->CreateScrollBarFrameL(ETrue); //we set automatic scrollbar 00041 iListBox->ScrollBarFrame()->SetScrollBarVisibilityL( 00042 CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto ); 00043 00044 iListBox->SetRect( aRect ); 00045 iListBox->ActivateL(); 00046 00047 // set window size 00048 SetRect(aRect); 00049 00050 // activate window 00051 ActivateL(); 00052 } 00053 00054 // --------------------------------------------------- 00055 // CInternetEmailContainer::~CInternetEmailContainer() 00056 // --------------------------------------------------- 00057 // 00058 CInternetEmailContainer::~CInternetEmailContainer() 00059 { 00060 delete iListBox; 00061 } 00062 00063 00064 // -------------------------------------------------- 00065 // CInternetEmailContainer::SizeChanged() 00066 // Called by framework when the view size is changed 00067 // -------------------------------------------------- 00068 // 00069 void CInternetEmailContainer::SizeChanged() 00070 { 00071 iListBox->SetRect( Rect() ); 00072 } 00073 00074 // ------------------------------------------------------- 00075 // CInternetEmailContainer::CountComponentControls() const 00076 // ------------------------------------------------------- 00077 // 00078 TInt CInternetEmailContainer::CountComponentControls() const 00079 { 00080 return 1; 00081 } 00082 00083 // ------------------------------------------------------------ 00084 // CInternetEmailContainer::ComponentControl(TInt aIndex) const 00085 // ------------------------------------------------------------ 00086 // 00087 CCoeControl* CInternetEmailContainer::ComponentControl(TInt aIndex) const 00088 { 00089 switch ( aIndex ) 00090 { 00091 case 0: 00092 return iListBox; 00093 default: 00094 return NULL; 00095 } 00096 } 00097 00098 void CInternetEmailContainer::HandleResourceChange(TInt aType) 00099 { 00100 CCoeControl::HandleResourceChange(aType); 00101 if ( aType==KEikDynamicLayoutVariantSwitch ) 00102 { 00103 TRect rect; 00104 AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, rect); 00105 SetRect(rect); 00106 } 00107 } 00108 00109 // ------------------------------------------------------- 00110 // CInternetEmailContainer::Draw(const TRect& aRect) const 00111 // ------------------------------------------------------- 00112 // 00113 void CInternetEmailContainer::Draw(const TRect& aRect) const 00114 { 00115 CWindowGc& gc = SystemGc(); 00116 gc.SetPenStyle(CGraphicsContext::ENullPen); 00117 gc.SetBrushColor(KRgbGray); 00118 gc.SetBrushStyle(CGraphicsContext::ESolidBrush); 00119 gc.DrawRect(aRect); 00120 } 00121 00122 // ------------------------------------------------------ 00123 // TKeyResponse CInternetEmailContainer::OfferKeyEventL( 00124 // const TKeyEvent& aKeyEvent, TEventCode aType) 00125 // This function is used to pick subset of keyevents for 00126 // our custom handler. 00127 // ------------------------------------------------------ 00128 // 00129 TKeyResponse CInternetEmailContainer::OfferKeyEventL( 00130 const TKeyEvent& aKeyEvent, TEventCode aType) 00131 { 00132 if ( aType != EEventKey ) 00133 { 00134 return EKeyWasNotConsumed; 00135 } 00136 00137 switch ( aKeyEvent.iCode ) 00138 { 00139 // Up & Down & enter arrow key's event transfer to list box 00140 case EKeyOK: 00141 case EKeyUpArrow: 00142 case EKeyDownArrow: 00143 if ( iListBox ) 00144 { 00145 return iListBox->OfferKeyEventL( aKeyEvent, aType ); 00146 } 00147 break; 00148 00149 default: 00150 break; 00151 } 00152 00153 return EKeyWasNotConsumed; 00154 } 00155 00156 // ----------------------------------------------- 00157 // CInternetEmailContainer::HandleControlEventL( 00158 // CCoeControl* aControl,TCoeEvent aEventType) 00159 // ----------------------------------------------- 00160 // 00161 void CInternetEmailContainer::HandleControlEventL( 00162 CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/) 00163 { 00164 // TODO: Add your control event handler code here 00165 } 00166 00167 00168 // ------------------------------------------------ 00169 // CInternetEmailContainer::HandleListBoxEventL( 00170 // CEikListBox* aListBox,TListBoxEvent aEventType) 00171 // Custom event handler. 00172 // ------------------------------------------------ 00173 // 00174 void CInternetEmailContainer::HandleListBoxEventL( 00175 CEikListBox* aListBox,TListBoxEvent aEventType) 00176 { 00177 if(aListBox==iListBox && 00178 ( aEventType==MEikListBoxObserver::EEventEnterKeyPressed || 00179 aEventType == MEikListBoxObserver::EEventItemClicked || 00180 aEventType == MEikListBoxObserver::EEventItemDoubleClicked)) 00181 { 00182 OpenEmailL(); // opens selected entry using generic framework 00183 } 00184 } 00185 00186 // ---------------------------------------------------- 00187 // void CInternetEmailContainer::OpenEmailL() 00188 // function to call engine interface method 00189 // ---------------------------------------------------- 00190 // 00191 void CInternetEmailContainer::OpenEmailL() 00192 { 00193 TInt currentItem=iListBox->CurrentItemIndex(); 00194 if(currentItem>=0 && currentItem<iParent->Model()->RemoteEmailCount()) 00195 { 00196 iParent->Model()->RemoteOpenEmailL(currentItem); 00197 } 00198 } 00199 00200 // --------------------------------------------------------------- 00201 // void CInternetEmailContainer::EntryToListbox(TInt aIndex) const 00202 // Gets header message entry header information from model 00203 // if model is suddenly cancelled traps and draws blanco. 00204 // --------------------------------------------------------------- 00205 // 00206 void CInternetEmailContainer::EntryToListbox(TInt aIndex) const 00207 { 00208 TPtrC from; 00209 TPtrC subject; 00210 00211 TRAPD(error,from.Set(iParent->Model()->RemoteEmailSenderL(aIndex))); 00212 if(error == KErrNone) 00213 { 00214 TRAP(error,subject.Set(iParent->Model()->RemoteEmailTextL(aIndex))); 00215 if(error == KErrNone) 00216 { 00217 iText.Format(_L("\t%S\t%S"),&subject,&from); 00218 } 00219 else 00220 { 00221 iText.Zero(); 00222 } 00223 } 00224 else 00225 { 00226 iText.Zero(); 00227 } 00228 } 00229 00230 // ------------------------------------------------------------ 00231 // TInt CInternetEmailContainer::MdcaCount() const 00232 // From MDesCArray. Handles counting of array items from model 00233 // ------------------------------------------------------------ 00234 // 00235 TInt CInternetEmailContainer::MdcaCount() const 00236 { 00237 return iParent->Model()->RemoteEmailCount(); 00238 } 00239 00240 // ----------------------------------------------------------- 00241 // TPtrC CInternetEmailContainer::MdcaPoint(TInt aIndex) const 00242 // From MDesCArray. Handles the insertion of needed text from 00243 // model to pointed member of array. 00244 // ----------------------------------------------------------- 00245 // 00246 TPtrC CInternetEmailContainer::MdcaPoint(TInt aIndex) const 00247 { 00248 EntryToListbox(aIndex); 00249 return iText; 00250 } 00251 00252 // ------------------------------------------------- 00253 // void CInternetEmailContainer::MailCountChange() 00254 // Public funtion called from engine observer 00255 // callback handlers when model changes are 00256 // occurring. 00257 // ------------------------------------------------- 00258 // 00259 void CInternetEmailContainer::MailCountChange() 00260 { 00261 iListBox->HandleItemAdditionL(); 00262 00263 //a trick to set default selection when model changes from N to 1 00264 TInt currentItem = iListBox->CurrentItemIndex(); 00265 if(currentItem>=0 && currentItem<iParent->Model()->RemoteEmailCount()) 00266 { 00267 if( iListBox->ScrollBarFrame() ) 00268 { 00269 iListBox->ScrollBarFrame()->MoveVertThumbTo( currentItem ); 00270 } 00271 } 00272 } 00273 00274 00275 // End of File
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights
reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License
v1.0.