00001
00002
00003
00004
00005
00006
00007 #include "InternetEmailContainer.h"
00008
00009 #include <eiklabel.h>
00010 #include <aknutils.h>
00011 #include <aknlists.h>
00012 #include <barsread.h>
00013 #include <avkon.hrh>
00014
00015 #include "Internetemail.hrh"
00016 #include "InternetEmailEngine.h"
00017 #include <Internetemail.rsg>
00018
00019
00020
00021
00022
00023
00024
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);
00037 iListBox->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray);
00038
00039 iListBox->SetListBoxObserver( this );
00040 iListBox->CreateScrollBarFrameL(ETrue);
00041 iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
00042 CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
00043
00044 iListBox->SetRect( aRect );
00045 iListBox->ActivateL();
00046
00047
00048 SetRect(aRect);
00049
00050
00051 ActivateL();
00052 }
00053
00054
00055
00056
00057
00058 CInternetEmailContainer::~CInternetEmailContainer()
00059 {
00060 delete iListBox;
00061 }
00062
00063
00064
00065
00066
00067
00068
00069 void CInternetEmailContainer::SizeChanged()
00070 {
00071 iListBox->SetRect( Rect() );
00072 }
00073
00074
00075
00076
00077
00078 TInt CInternetEmailContainer::CountComponentControls() const
00079 {
00080 return 1;
00081 }
00082
00083
00084
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
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
00124
00125
00126
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
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
00158
00159
00160
00161 void CInternetEmailContainer::HandleControlEventL(
00162 CCoeControl* ,TCoeEvent )
00163 {
00164
00165 }
00166
00167
00168
00169
00170
00171
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();
00183 }
00184 }
00185
00186
00187
00188
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
00202
00203
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
00232
00233
00234
00235 TInt CInternetEmailContainer::MdcaCount() const
00236 {
00237 return iParent->Model()->RemoteEmailCount();
00238 }
00239
00240
00241
00242
00243
00244
00245
00246 TPtrC CInternetEmailContainer::MdcaPoint(TInt aIndex) const
00247 {
00248 EntryToListbox(aIndex);
00249 return iText;
00250 }
00251
00252
00253
00254
00255
00256
00257
00258
00259 void CInternetEmailContainer::MailCountChange()
00260 {
00261 iListBox->HandleItemAdditionL();
00262
00263
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