00001
00002
00003
00004
00005
00006
00007 #include "InternetEmailAppUi.h"
00008 #include "InternetEmailContainer.h"
00009 #include "InternetEmailDocument.h"
00010 #include "InternetEmailEngine.h"
00011
00012 #include <eikmenup.h>
00013 #include <stringloader.h>
00014
00015 #include <InternetEmail.rsg>
00016 #include "internetemail.hrh"
00017
00018 #include <avkon.hrh>
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 void CInternetEmailAppUi::ConstructL()
00029 {
00030
00031 BaseConstructL(CAknAppUi::EAknEnableSkin);
00032
00033 iModel = CInternetEmailEngine::NewL(*this);
00034 iAppContainer = new (ELeave) CInternetEmailContainer;
00035 iAppContainer->SetMopParent(this);
00036 iAppContainer->ConstructL( ClientRect(), this );
00037 AddToStackL( iAppContainer );
00038 }
00039
00040
00041
00042
00043
00044 CInternetEmailAppUi::~CInternetEmailAppUi()
00045 {
00046 delete iModel;
00047 delete iWaitDialog;
00048
00049 if (iAppContainer)
00050 {
00051 RemoveFromStack( iAppContainer );
00052 delete iAppContainer;
00053 }
00054 }
00055
00056
00057
00058
00059
00060 CInternetEmailDocument* CInternetEmailAppUi::Document()
00061 {
00062 return static_cast<CInternetEmailDocument*>(iDocument);
00063 }
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078 void CInternetEmailAppUi::DynInitMenuPaneL(
00079 TInt aResourceId,CEikMenuPane* aMenuPane)
00080 {
00081 if (aResourceId == R_INTERNETEMAIL_MENU)
00082 {
00083 if (iModel->IsProtocolSet())
00084 {
00085 if( iModel->IsEngineReady() )
00086 {
00087 aMenuPane->SetItemDimmed(EInternetEmailCmdProtocol, ETrue);
00088 aMenuPane->SetItemDimmed(EInternetEmailCmdFetch, EFalse);
00089 }
00090 else
00091 {
00092 aMenuPane->SetItemDimmed(EInternetEmailCmdProtocol, EFalse);
00093 aMenuPane->SetItemDimmed(EInternetEmailCmdFetch, EFalse);
00094 }
00095
00096 }
00097 else
00098 {
00099 aMenuPane->SetItemDimmed(EInternetEmailCmdProtocol, EFalse);
00100 aMenuPane->SetItemDimmed(EInternetEmailCmdFetch, ETrue);
00101 }
00102 }
00103 }
00104
00105
00106
00107
00108
00109
00110 TKeyResponse CInternetEmailAppUi::HandleKeyEventL(
00111 const TKeyEvent& ,TEventCode )
00112 {
00113 return EKeyWasNotConsumed;
00114 }
00115
00116
00117
00118
00119
00120
00121
00122 void CInternetEmailAppUi::HandleCommandL(TInt aCommand)
00123 {
00124 switch ( aCommand )
00125 {
00126 case EAknSoftkeyExit:
00127 case EEikCmdExit:
00128 {
00129 Exit();
00130 }
00131 break;
00132
00133 case EInternetEmailCmdFetch:
00134 {
00135
00136 iModel->RemoteFetchL();
00137
00138
00139 iWaitDialog = new (ELeave) CAknWaitDialog(
00140 reinterpret_cast<CEikDialog**> (&iWaitDialog));
00141 iWaitDialog->SetCallback(this);
00142 iWaitDialog->ExecuteLD( R_WAIT_NOTE );
00143 }
00144 break;
00145
00146 case EInternetEmailCmdSetPop:
00147 {
00148 if( !iModel->CheckIfExistsL( EProtocolPop3 ) )
00149 {
00150 ShowNoteL(R_NO_POP3_DEFINED);
00151 }
00152 else
00153 {
00154 iModel->SetProtocolL( EProtocolPop3 );
00155 }
00156 }
00157 break;
00158
00159 case EInternetEmailCmdSetImap:
00160 {
00161 if( !iModel->CheckIfExistsL( EProtocolImap4 ) )
00162 {
00163 ShowNoteL(R_NO_IMAP4_DEFINED);
00164 }
00165 else
00166 {
00167 iModel->SetProtocolL( EProtocolImap4 );
00168 }
00169 }
00170 break;
00171
00172 default:
00173 break;
00174 }
00175 }
00176
00177
00178
00179
00180
00181 CInternetEmailEngine* CInternetEmailAppUi::Model()
00182 {
00183 return iModel;
00184 }
00185
00186
00187
00188
00189
00190
00191
00192
00193 void CInternetEmailAppUi::ShowNoteL( const TInt &aResId ) const
00194 {
00195 HBufC* textResource = StringLoader::LoadLC( aResId );
00196 CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
00197 informationNote->ExecuteLD(textResource->Des());
00198 CleanupStack::PopAndDestroy(textResource);
00199 }
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209 void CInternetEmailAppUi::HandleEngineChangedEventL(TInternetEmailEngineEvent aEvent)
00210 {
00211 switch(aEvent)
00212 {
00213 case ERemoteCountChanged:
00214 {
00215 if( iWaitDialog )
00216 {
00217 iWaitDialog->ProcessFinishedL();
00218 delete iWaitDialog;
00219 iWaitDialog = NULL;
00220 }
00221 iAppContainer->MailCountChange();
00222 iAppContainer->DrawDeferred();
00223 }
00224 break;
00225 }
00226 }
00227
00228
00229
00230
00231
00232
00233
00234
00235 void CInternetEmailAppUi::DialogDismissedL(TInt )
00236 {
00237 iModel->CancelOperation();
00238 }
00239
00240