author | Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> |
Wed, 15 Sep 2010 11:52:37 +0300 | |
branch | RCL_3 |
changeset 73 | c8382f7b54ef |
parent 70 | 968773a0b6ef |
child 80 | 726fba06891a |
permissions | -rw-r--r-- |
64 | 1 |
/* |
2 |
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). |
|
3 |
* All rights reserved. |
|
4 |
* This component and the accompanying materials are made available |
|
5 |
* under the terms of "Eclipse Public License v1.0" |
|
6 |
* which accompanies this distribution, and is available |
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 |
* |
|
9 |
* Initial Contributors: |
|
10 |
* Nokia Corporation - initial contribution. |
|
11 |
* |
|
12 |
* Contributors: |
|
13 |
* |
|
14 |
* Description: General utilities for FS Email UI |
|
15 |
* |
|
16 |
*/ |
|
17 |
||
18 |
||
19 |
#ifndef __FREESTYLEMAILUI_UTILITIES_H_ |
|
20 |
#define __FREESTYLEMAILUI_UTILITIES_H_ |
|
21 |
||
22 |
#include <e32base.h> // CTimer |
|
23 |
#include <e32cmn.h> |
|
24 |
#include <hlplch.h> |
|
25 |
#include <msvstd.h> |
|
26 |
||
27 |
#include <AknQueryDialog.h> |
|
28 |
||
29 |
//<cmail> |
|
30 |
#include "mesmricalviewercallback.h" |
|
31 |
#include "fsccontactactionmenudefines.h" |
|
32 |
//</cmail> |
|
33 |
#include <DocumentHandler.h> |
|
34 |
//<cmail> |
|
35 |
#include "AknServerApp.h" |
|
36 |
//</cmail> |
|
37 |
||
38 |
#include "FreestyleEmailExportedUtilities.h" |
|
39 |
#include "FreestyleEmailUiConstants.h" |
|
40 |
#include "FreestyleEmailUiTextureManager.h" |
|
41 |
#include "FreestyleEmailUiContactHandler.h" |
|
42 |
||
43 |
||
44 |
class CGulIcon; |
|
45 |
class CFSMailBox; |
|
46 |
class CFSMailMessage; |
|
47 |
class CFSMailClient; |
|
48 |
class CMsvSession; |
|
49 |
class TPbkContactItemField; |
|
50 |
class CPbkContactItem; |
|
51 |
class CFscContactActionMenu; |
|
52 |
class CFscContactActionService; |
|
53 |
class CAlfTexture; |
|
54 |
class CFreestyleEmailUiTextureManager; |
|
55 |
class CFSMailMessagePart; |
|
56 |
class CFSMailAddress; |
|
57 |
class CFSMailFolder; |
|
58 |
class MAknServerAppExitObserver; |
|
59 |
class CFSEmailUiGenericTimer; |
|
60 |
class CAknGlobalNote; |
|
61 |
class CAknWaitDialog; |
|
62 |
// <cmail> |
|
63 |
class CESMRIcalViewer; |
|
64 |
// </cmail> |
|
65 |
||
66 |
const TInt KActionMenuItemNormalPriority = 10; |
|
67 |
const TInt KGenericTimerDefaultInterval = 1000; |
|
68 |
||
69 |
typedef RArray<TActionMenuCustomItemId> RFsEActionMenuIdList; |
|
70 |
||
71 |
||
72 |
enum TFollowUpNewState |
|
73 |
{ |
|
74 |
EFollowUp = 0, // don't change, as these are the in the order they are in popup selection list |
|
75 |
EFollowUpComplete = 1, // don't change |
|
76 |
EFollowUpClear = 2, // don't change |
|
77 |
EFollowUpNoChanges = 3 |
|
78 |
}; |
|
79 |
||
80 |
enum TMessageSizeClass |
|
81 |
{ |
|
82 |
ETiny = KKilo, |
|
83 |
ESmall = 10*KKilo, |
|
84 |
EMedium = 100*KKilo, |
|
85 |
ELarge = 500*KKilo, |
|
86 |
EVeryLarge = KMega, |
|
87 |
EHuge = 5*KMega, |
|
88 |
EColossal = KMaxTInt |
|
89 |
}; |
|
90 |
||
91 |
class TFsEmailUiUtility |
|
92 |
{ |
|
93 |
public: |
|
94 |
// Clean up any static variables of the class |
|
95 |
static void DeleteStaticData(); |
|
96 |
||
97 |
static void LaunchHelpL( const TDesC& aContext ); |
|
98 |
static CFSMailBox* GetMceDefaultMailboxL( CFSMailClient& aClient, CMsvSession& aMsvSession ); |
|
99 |
||
100 |
static CFSMailBox* GetMailboxForMtmIdL( CFSMailClient& aClient, CMsvSession& aMsvSession, TMsvId aMtmId ); |
|
101 |
||
102 |
static TBool IsRemoteLookupSupported( CFSMailBox& aMailBox ); |
|
103 |
||
104 |
static void CopyToClipboardL( const TDesC& aBuf ); |
|
105 |
||
106 |
static TInt ShowConfirmationQueryL( TInt aResourceStringId, const TDesC& aResourceParameter = KNullDesC ); |
|
107 |
static TInt ShowConfirmationQueryL( const TDesC& aPromptText ); |
|
108 |
||
109 |
static void ShowErrorNoteL( TInt aResourceStringId, TBool aWaitingDialog = EFalse ); |
|
110 |
static void ShowInfoNoteL( TInt aResourceStringId, TBool aWaitingDialog = EFalse ); |
|
111 |
||
112 |
static void ShowGlobalErrorNoteL( TInt aResourceStringId ); |
|
113 |
static void ShowGlobalInfoNoteL( TInt aResourceStringId ); |
|
114 |
static void ShowDiscreetInfoNoteL( TInt aResourceStringId ); |
|
115 |
static void ShowDiscreetInfoNoteL( const TDesC& aNoteText ); |
|
116 |
||
117 |
/** |
|
118 |
* Creates and shows a local wait note. Caller must pass a member variable pointer |
|
119 |
* which will hold the created wait note instance. This must NOT be an automatic variable. |
|
120 |
*/ |
|
121 |
static void ShowWaitNoteL( CAknWaitDialog*& aDialog, TInt aTextResourceId, |
|
122 |
TBool aAllowCancel, TBool aVisibilityDelayOff = EFalse ); |
|
123 |
||
124 |
/** |
|
125 |
* Launches a global wait note with no CBA buttons and text from given resource. |
|
126 |
* A cleanup item is pushed to CleanupStack and the wait note is dismissed |
|
127 |
* when the PopAndDestroy() is called for it. |
|
128 |
* |
|
129 |
* @param aTextResourceId Resource ID of the text string to be shown in the note |
|
130 |
* @return ID of the opened wait note |
|
131 |
*/ |
|
132 |
static TInt ShowGlobalWaitNoteLC( TInt aTextResourceId ); |
|
133 |
static void CloseGlobalWaitNote( TAny* aNoteIdPointer ); |
|
134 |
||
135 |
/** |
|
136 |
* Shows file selection dialog. |
|
137 |
* |
|
138 |
* @param aFileName Contains the selected file name on return if user |
|
139 |
* selected a file. |
|
140 |
* @return ETrue if user selected file, EFalse otherwise. |
|
141 |
*/ |
|
142 |
static TBool ShowSelectFileDialogL( TDes& aFileName ); |
|
143 |
||
144 |
static TBool ShowSaveFolderDialogL( TDes& aFileName ); |
|
145 |
||
146 |
/** |
|
147 |
* Displays overwrite query if needed |
|
148 |
* |
|
149 |
* @param aFilePath Path to where the file is to be saved |
|
150 |
* @param aAttachmentPart Message part of the attachment to be saved |
|
151 |
* @return ETrue if OK to save the file to a given path, EFalse if not |
|
152 |
*/ |
|
153 |
static TBool OkToSaveFileL( const TDesC& aFilePath, CFSMailMessagePart& aAttachmentPart ); |
|
154 |
||
155 |
static void ShowFilesSavedToFolderNoteL( TInt aCount ); |
|
156 |
||
157 |
static void ShowCreateMessageQueryL( const TDesC& aAddressData, TBool aSendingToEmail = EFalse ); |
|
158 |
||
159 |
static TInt CountRecepients( CFSMailMessage* aMsgPtr ); |
|
160 |
||
161 |
static TInt CountRecipientsSmart( CFreestyleEmailUiAppUi& aAppUi, CFSMailMessage* aMsgPtr ); |
|
162 |
||
163 |
static TBool IsMessageBodyLargeL( CFSMailMessage* aMessage ); |
|
164 |
||
165 |
/** |
|
166 |
* Opens the given file for viewing using document handler. |
|
167 |
* |
|
168 |
* @param aFileToOpen File to be opened for viewing. The file handle is |
|
169 |
* closed after viewing. |
|
170 |
*/ |
|
171 |
static void OpenFileL( RFile& aFileToOpen, TBool aAllowSave ); |
|
172 |
||
173 |
/** |
|
174 |
* Opens the given file for viewing using document handler. |
|
175 |
* |
|
176 |
* @param aFileTope File to be opened for viewing. The file handle is |
|
177 |
* closed after the viewing. |
|
178 |
* @param TDataType MIME type of the file. |
|
179 |
*/ |
|
180 |
static void OpenFileL( RFile& aFileToOpen, TDataType& aDataType, TBool aAllowSave ); |
|
181 |
||
182 |
/** |
|
183 |
* Opens the given attachment for viewing. |
|
184 |
* |
|
185 |
* @param aAttachmentPart The message part data that identifies the |
|
186 |
* attachment to be opened. |
|
187 |
*/ |
|
188 |
static void OpenAttachmentL( const TPartData& aAttachmentPart ); |
|
189 |
||
190 |
/** |
|
191 |
* Opens the given file for viewing using document handler. |
|
192 |
* |
|
193 |
* @param aFileTope File to be opened for viewing. The file handle is |
|
194 |
* closed after the viewing. |
|
195 |
* @param TDataType MIME type of the file. |
|
196 |
* @param aAllowSave Flag to control availability of Save option in file viewer app. |
|
197 |
* When ETrue, the viewer app may show Save in options menu and/or when |
|
198 |
* closing the viewer. |
|
199 |
*/ |
|
200 |
static void OpenAttachmentL( CFSMailMessagePart& aAttachmentPart, TBool aAllowSave = ETrue ); |
|
201 |
||
202 |
/** |
|
203 |
* SetMessageFollowupFlagL |
|
204 |
* |
|
205 |
* @param aShowFlagCompleted Whether to show the completed flag. |
|
206 |
* When false we are in the editor view. |
|
207 |
*/ |
|
208 |
static TFollowUpNewState SetMessageFollowupFlagL( CFSMailMessage& aMsg, TBool aShowFlagCompleted = ETrue ); |
|
209 |
static void SetMessageFollowupStateL( CFSMailMessage& aMsg, TFollowUpNewState aNewFollowUpState ); |
|
210 |
static TBool RunFollowUpListDialogL( TFollowUpNewState& aSelectedOption, TBool aShowFlagCompleted = ETrue ); |
|
211 |
||
212 |
static TFileType GetFileType( const TDesC& aFileName, const TDesC& aMimeType ); |
|
213 |
||
214 |
static CAlfTexture& GetAttachmentIcon( TFileType aAttachmentType, CFreestyleEmailUiTextureManager& aTextureManager ); |
|
215 |
static TFSEmailUiTextures GetAttachmentIconTextureId( TFileType aAttachmentType ); |
|
216 |
||
217 |
static CAlfTexture& GetMsgIcon( CFSMailMessage* aMsgPtr, CFreestyleEmailUiTextureManager& aTextureManager ); |
|
218 |
static TFSEmailUiTextures GetMsgIconTextureId( CFSMailMessage* aMsgPtr ); |
|
219 |
||
220 |
static void MoveMessageToDraftsL( CFSMailBox& aMailBox, CFSMailMessage& aMsg ); |
|
221 |
||
222 |
static TBool IsMessagePartFullyFetched( const CFSMailMessagePart& aPart ); |
|
223 |
||
224 |
static TBool IsMessageStructureKnown( const CFSMailMessagePart& aPart ); |
|
225 |
||
226 |
static void CreatePlainTextPartL( CFSMailMessage& aMsg, CFSMailMessagePart*& aPart ); |
|
227 |
||
228 |
static TBool IsCompleteOrCancelEvent( TFSProgress aEvent ); |
|
229 |
||
230 |
static TBool HasUnfetchedAttachmentsL( CFSMailMessage& aMsg ); |
|
231 |
||
232 |
static TBool IsFollowUpSupported( const CFSMailBox& aMailBox ); |
|
233 |
||
234 |
// Set new email message icon on/off |
|
235 |
static void ToggleEmailIconL( TBool aIconOn ); |
|
236 |
static void ToggleEmailIconL( TBool aIconOn, const TFSMailMsgId& aMailBox ); |
|
237 |
||
238 |
static HBufC* DateTextFromMsgLC( const CFSMailMessage* aMessage, TBool aAddYearNumer = ETrue ); |
|
239 |
static HBufC* TimeTextFromMsgLC( const CFSMailMessage* aMessage ); |
|
240 |
static HBufC* WeekDayTextFromMsgLC( const CFSMailMessage* aMessage, TBool aUseToday, TBool aUseYesterday, |
|
241 |
TBool& aWasToday, TBool& aWasYesterday ); |
|
242 |
static HBufC* CreateSizeDescLC( TInt aSizeInBytes, |
|
243 |
TBool aShowSizeInBytes = EFalse ); |
|
244 |
static HBufC* ListMsgTimeTextFromMsgLC( const CFSMailMessage* aMessage, TBool aDividersInUse ); |
|
245 |
static TInt CompareMailAddressesL( CFSMailAddress* aAddr1, CFSMailAddress* aAddr2 ); |
|
246 |
static HBufC* CreateCompareNameForAddressLC( const CFSMailAddress& aAddress ); |
|
247 |
static TInt CompareMailSubjectsL( const CFSMailMessage* aMessage1, const CFSMailMessage* aMessage2 ); |
|
248 |
static HBufC* CreateSubjectWithoutLocalisedPrefixLC( const CFSMailMessage* aMessage, TBool aSuppressNotAvailableText = EFalse ); |
|
249 |
static HBufC* CreateSubjectTextLC( const CFSMailMessage* aMessage ); |
|
250 |
static HBufC* CreateBodyTextLC( const CFSMailMessage* aMessage ); |
|
251 |
static void FilterListItemTextL( TDes& aText ); |
|
252 |
static TMessageSizeClass MessageSizeClass( const CFSMailMessage& aMessage ); |
|
253 |
||
254 |
static HBufC* ConvertHtmlToTxtL( const TDesC& aHtml ); |
|
255 |
||
256 |
static void DisplayMsgsMovedNoteL( TInt aMsgCount, |
|
257 |
const TFSMailMsgId aDestinationFolderId, |
|
258 |
TBool aIsWaitingNote ); |
|
259 |
||
260 |
static TBool IsOfflineModeL(); |
|
261 |
||
262 |
/** |
|
263 |
* Shows mailbox creation query: |
|
264 |
* "No e-mail mailboxes defined. Create a mailbox?" |
|
265 |
* |
|
266 |
* @return ETrue if user answered "Yes", EFalse if user answered "No" |
|
267 |
*/ |
|
268 |
static TBool DisplayCreateMailboxQueryL(); |
|
269 |
||
270 |
// static CAlfTexture& GetAttachmentIconL( TFileType aAttachmentType, CFreestyleEmailUiTextureManager& aTextureManager ); |
|
271 |
// static TFSEmailUiTextures GetAttachmentIconTextureIdL( TFileType aAttachmentType ); |
|
272 |
||
273 |
// Brings Freestyle Email UI application to foreground if it's not already |
|
274 |
static void BringFsEmailToForeground(); |
|
275 |
||
276 |
// Formats display name |
|
277 |
static void StripDisplayName( HBufC& aDisplayName ); |
|
278 |
||
279 |
// Creates a displayname of firstname and lastname components |
|
70
968773a0b6ef
Revision: 201033
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
64
diff
changeset
|
280 |
static HBufC* CreateDisplayNameLC( const TDesC& aFirstname, const TDesC& aLastname, TBool aSwitchOrder = EFalse ); |
64 | 281 |
|
282 |
// Creates a displayname of firstname, lastname, emailfield components |
|
70
968773a0b6ef
Revision: 201033
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
64
diff
changeset
|
283 |
static HBufC* CreateDisplayNameLC( const TDesC& aFirstname, const TDesC& aLastname, const TDesC& aEmailField, TBool aSwitchOrder = EFalse ); |
64 | 284 |
|
285 |
/** |
|
286 |
* Determines if the descriptor is a Chinese word |
|
287 |
*/ |
|
288 |
static TBool IsChineseWord( const TDesC& aWord ); |
|
289 |
||
73
c8382f7b54ef
Revision: 201035
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
70
diff
changeset
|
290 |
/** |
c8382f7b54ef
Revision: 201035
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
70
diff
changeset
|
291 |
* Determines if the descriptor is a Korean word |
c8382f7b54ef
Revision: 201035
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
70
diff
changeset
|
292 |
*/ |
c8382f7b54ef
Revision: 201035
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
70
diff
changeset
|
293 |
static TBool IsKoreanWord( const TDesC& aWord ); |
c8382f7b54ef
Revision: 201035
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
70
diff
changeset
|
294 |
|
64 | 295 |
// Get the icon file name including the drive letter and full path |
296 |
static void GetFullIconFileNameL( TDes& aFileName ); |
|
297 |
||
298 |
// Check if given file names have the same file extension (omitting the character case) |
|
299 |
static TBool DoFileExtensionsMatchL( const TDesC& aFileName1, const TDesC& aFileName2 ); |
|
300 |
||
301 |
/** |
|
302 |
* Makes a copy of given file to the temp directory of FsEmailUI. |
|
303 |
* Caller is reponsible of closing the returned file handle. |
|
304 |
*/ |
|
305 |
static RFile CopyFileToTempDirL( const RFile& aSourceFile, const TDesC& aTargetFileName ); |
|
306 |
||
307 |
// Deletes all files from our temporary directory |
|
308 |
static void EraseTempDir(); |
|
309 |
||
310 |
// Checks if FSMailServer is running. If not, then launches it. |
|
311 |
static void EnsureFsMailServerIsRunning( RWsSession& aWsSession ); |
|
312 |
||
313 |
// |
|
314 |
static void SetDownloadSave( TBool aValue ); |
|
315 |
// |
|
316 |
static void SetSaveSelect( TBool aValue ); |
|
317 |
private: |
|
318 |
static TFSEmailUiTextures GetReadMsgIcon( CFSMailMessage* aMsgPtr ); |
|
319 |
static TFSEmailUiTextures GetUnreadMsgIcon( CFSMailMessage* aMsgPtr ); |
|
320 |
// <cmail> |
|
321 |
static TBool IsMrCancellationMsgL( CFSMailMessage* aMsgPtr ); |
|
322 |
// </cmail> |
|
323 |
||
324 |
/** |
|
325 |
* Get EmailUI temp directory path. Creates the directory if it does not exist. |
|
326 |
* Caller must supply large enough descriptor. Maximum path length in Symbian is 256 characters. |
|
327 |
*/ |
|
328 |
static void GetTempPathL( RFs& aFs, TDes& aPath ); |
|
329 |
||
330 |
/** |
|
331 |
* Show "save to folder" or "select file" dialog. |
|
332 |
* @param aType Dialog type as defined in enumeration TCommonDialogType |
|
333 |
* @param aFileName Output argument for the selected file/folder name |
|
334 |
* @return ETrue if file/folder selected (i.e. dialog not cancelled) |
|
335 |
*/ |
|
336 |
static TBool ShowFileDialogL( TInt aType, TDes& aFileName ); |
|
337 |
||
338 |
// Checks if FSMailServer is running. If not, then launches it. |
|
339 |
static void EnsureFsMailServerIsRunningL( RWsSession& aWsSession ); |
|
340 |
||
341 |
private: // static data |
|
342 |
static CAknGlobalNote* iGlobalWaitNote; |
|
343 |
static CAknWaitDialog* iOpeningWaitNote; |
|
344 |
static TBool iSaveSelect; |
|
345 |
static TBool iDownloadSave; |
|
346 |
||
347 |
// <cmail> |
|
348 |
// A separate MR viewer instance for checking the MR method type. |
|
349 |
// The instance owned by AppUi can't be used for this because that instance |
|
350 |
// may be in use at time we need to check the method. |
|
351 |
static CESMRIcalViewer* iMrViewer; |
|
352 |
||
353 |
class CMrViewerEmptyCallback : public CBase, public MESMRIcalViewerCallback |
|
354 |
{ |
|
355 |
virtual void ProcessAsyncCommandL( TESMRIcalViewerOperationType, const CFSMailMessage&, MESMRIcalViewerObserver* ) {} |
|
356 |
virtual void ProcessSyncCommandL( TESMRIcalViewerOperationType, const CFSMailMessage& ) {} |
|
357 |
virtual TBool CanProcessCommand( TESMRIcalViewerOperationType ) const { return EFalse; } |
|
358 |
}; |
|
359 |
static CMrViewerEmptyCallback* iMrViewerCallback; |
|
360 |
// </cmail> |
|
361 |
}; |
|
362 |
||
363 |
/** |
|
364 |
* Action menu handler |
|
365 |
* |
|
366 |
* Is constructed in CFreestyleEmailUiAppUi when application is launched. |
|
367 |
* After that the static functions can be used to operate with action menu. |
|
368 |
* |
|
369 |
*/ |
|
370 |
class CFSEmailUiActionMenu : public CBase |
|
371 |
{ |
|
372 |
friend class CFreestyleEmailUiAppUi; |
|
373 |
public: |
|
374 |
/** |
|
375 |
* Get pointer to the action menu, can be used if built-in methods are |
|
376 |
* not enough. Ownership is not transferred. |
|
377 |
* |
|
378 |
* @return Action menu pointer |
|
379 |
*/ |
|
380 |
static CFscContactActionMenu* GetActionMenu(); |
|
381 |
||
382 |
/** |
|
383 |
* Remove all items from action menu |
|
384 |
*/ |
|
385 |
static void RemoveAllL(); |
|
386 |
||
387 |
/** |
|
388 |
* Add one email specific custom item by id |
|
389 |
* |
|
390 |
* @param aItemId Item id of the item to be added |
|
391 |
*/ |
|
392 |
static void AddCustomItemL( TActionMenuCustomItemId aItemId ); |
|
393 |
||
394 |
/** |
|
395 |
* Add several email specific custom items by list of ids |
|
396 |
* |
|
397 |
* @param aItemList List of item ids to be added |
|
398 |
*/ |
|
399 |
static void AddCustomItemsL( RFsEActionMenuIdList aItemList ); |
|
400 |
||
401 |
// <cmail> |
|
402 |
/** |
|
403 |
* Execute previously constructed action menu |
|
404 |
* |
|
405 |
* @param aPosition Vertical position where menu is to be openned |
|
406 |
* @param aIndex Index of focused/highlighted item when menu is opened |
|
407 |
* @return Id of the selected item |
|
408 |
*/ |
|
409 |
static TActionMenuCustomItemId ExecuteL( TFscContactActionMenuPosition aPosition = EFscCenter, |
|
410 |
TInt aIndex = 0, MFsActionMenuPositionGiver* aPositionGiver = 0 ); |
|
411 |
/** |
|
412 |
* Remove all old items, add new items from the aItemList and then |
|
413 |
* execute the action menu |
|
414 |
* |
|
415 |
* @param aItemList List of item ids to be added |
|
416 |
* @param aPosition Vertical position where menu is to be openned |
|
417 |
* @param aIndex Index of focused/highlighted item when menu is opened |
|
418 |
* @return Id of the selected item |
|
419 |
*/ |
|
420 |
// |
|
421 |
static TActionMenuCustomItemId ExecuteL( RFsEActionMenuIdList aItemList, |
|
422 |
TFscContactActionMenuPosition aPosition = EFscCenter, |
|
423 |
TInt aIndex = 0, MFsActionMenuPositionGiver* aPositionGiver = 0 ); |
|
424 |
||
425 |
/** |
|
426 |
* Dismiss menu |
|
427 |
* Menu gets closed if it was visible when the method was called. |
|
428 |
* Otherwise method call does not do anything |
|
429 |
* |
|
430 |
* @param aSlide If ETrue menu slides away from the screen. |
|
431 |
* Otherwise it disappears instantly |
|
432 |
*/ |
|
433 |
static void Dismiss( TBool aSlide ); |
|
434 |
// </cmail> |
|
435 |
||
436 |
/** |
|
437 |
* Create icon by bitmap and mask |
|
438 |
* |
|
439 |
* @param aBitmapId Icon bitmap |
|
440 |
* @param aMaskId Icon mask |
|
441 |
* @return Created icon object |
|
442 |
*/ |
|
443 |
static CGulIcon* CreateIconL( TInt aBitmapId, TInt aMaskId ); |
|
444 |
||
445 |
protected: |
|
446 |
static CFSEmailUiActionMenu* NewL( CFreestyleEmailUiAppUi* aAppUi ); |
|
447 |
~CFSEmailUiActionMenu(); |
|
448 |
||
449 |
private: |
|
450 |
CFSEmailUiActionMenu( CFreestyleEmailUiAppUi* aAppUi ); |
|
451 |
void ConstructL(); |
|
452 |
||
453 |
static TActionMenuCustomItemId ResolveSelectedCustomItemIdL(); |
|
454 |
static void CreateIconsL(); |
|
455 |
||
456 |
private: |
|
457 |
CFscContactActionService* iService; |
|
458 |
static CFscContactActionMenu* iActionMenu; |
|
459 |
static TFileName iIconFilePath; |
|
460 |
static RPointerArray<CGulIcon> iIconArray; |
|
461 |
CFreestyleEmailUiAppUi* iAppUi; |
|
462 |
}; |
|
463 |
||
464 |
/** |
|
465 |
* Generic timer's callback |
|
466 |
* |
|
467 |
* Classes inherited from this one can be used as a callback for the generic |
|
468 |
* timer. TimerEvent() is called when the timer elapses. |
|
469 |
* |
|
470 |
*/ |
|
471 |
class MFSEmailUiGenericTimerCallback |
|
472 |
{ |
|
473 |
public: |
|
474 |
/** |
|
475 |
* @param aTriggeredTimer The timer which launched this event. |
|
476 |
*/ |
|
477 |
virtual void TimerEventL( CFSEmailUiGenericTimer* aTriggeredTimer ) = 0; |
|
478 |
}; |
|
479 |
||
480 |
/** |
|
481 |
* Generic timer |
|
482 |
* |
|
483 |
* Caller gives MFSEmailUiGenericTimerCallback inherited pointer as a |
|
484 |
* parameter, and that pointer is used as a callback when the timer elapses. |
|
485 |
* Timer interval is given as a parameter for the Start function. If interval |
|
486 |
* not given, or it is less than zero, default interval of 1 second is used. |
|
487 |
* |
|
488 |
*/ |
|
489 |
class CFSEmailUiGenericTimer : public CTimer |
|
490 |
{ |
|
491 |
public: |
|
492 |
||
493 |
/** |
|
494 |
* Symbian two-pahse constructor. |
|
495 |
* |
|
496 |
* @param aCallback Callback class |
|
497 |
* @param aPriority Timers priority, EPriorityStandard by default |
|
498 |
*/ |
|
499 |
static CFSEmailUiGenericTimer* NewL( |
|
500 |
MFSEmailUiGenericTimerCallback* aCallback, |
|
501 |
const TInt aPriority = CActive::EPriorityStandard ); |
|
502 |
||
503 |
/** |
|
504 |
* Symbian two-pahse constructor. |
|
505 |
* |
|
506 |
* @param aCallback Callback class |
|
507 |
* @param aPriority Timers priority, EPriorityStandard by default |
|
508 |
*/ |
|
509 |
static CFSEmailUiGenericTimer* NewLC( |
|
510 |
MFSEmailUiGenericTimerCallback* aCallback, |
|
511 |
const TInt aPriority = CActive::EPriorityStandard ); |
|
512 |
||
513 |
/** |
|
514 |
* Destructor. |
|
515 |
*/ |
|
516 |
~CFSEmailUiGenericTimer(); |
|
517 |
||
518 |
/** |
|
519 |
* Starts the timer with specified interval, or with the default value. |
|
520 |
* |
|
521 |
* NOTE: Give time in milliseconds (not microseconds)! |
|
522 |
* |
|
523 |
* @param aInterval Timer interval as milliseconds |
|
524 |
*/ |
|
525 |
void Start( TInt aInterval = KGenericTimerDefaultInterval ); |
|
526 |
||
527 |
/** |
|
528 |
* Stops the timer. |
|
529 |
*/ |
|
530 |
void Stop(); |
|
531 |
||
532 |
/** |
|
533 |
* CActive object's RunL |
|
534 |
*/ |
|
535 |
void RunL(); |
|
536 |
||
537 |
protected: |
|
538 |
/** |
|
539 |
* Constructor. |
|
540 |
*/ |
|
541 |
CFSEmailUiGenericTimer( MFSEmailUiGenericTimerCallback* aCallback, |
|
542 |
const TInt aPriority ); |
|
543 |
||
544 |
private: |
|
545 |
/** |
|
546 |
* 2nd phase constructor. |
|
547 |
*/ |
|
548 |
void ConstructL(); |
|
549 |
||
550 |
private: |
|
551 |
/* Pointer to callback class */ |
|
552 |
MFSEmailUiGenericTimerCallback* iCallback; |
|
553 |
}; |
|
554 |
||
555 |
||
556 |
/** |
|
557 |
* File handle shutter. |
|
558 |
* |
|
559 |
* Instance of file handle shutter can be set to handle the closing of an open |
|
560 |
* file handle on embedded viewer application exit. |
|
561 |
*/ |
|
562 |
class CFsEmailFileHandleShutter : public CBase, |
|
563 |
public MAknServerAppExitObserver |
|
564 |
{ |
|
565 |
public: |
|
566 |
||
567 |
/** |
|
568 |
* Two-phased constuctor. Creates an instance of CFsEmailFileHandleShutter |
|
569 |
* which is set to observe embedded application close events delegated |
|
570 |
* by the given document handler. |
|
571 |
* |
|
572 |
* @param Reference to document handler instance, which the file handle |
|
573 |
* shutter is set to observe. |
|
574 |
*/ |
|
575 |
static CFsEmailFileHandleShutter* NewL( |
|
576 |
CDocumentHandler& aDocumentHandler ); |
|
577 |
||
578 |
/** |
|
579 |
* Destructor. |
|
580 |
*/ |
|
581 |
~CFsEmailFileHandleShutter(); |
|
582 |
||
583 |
/** |
|
584 |
* Sets the file handle that is to be closed when viewer app exits. |
|
585 |
* |
|
586 |
* @param aFile The file handle. |
|
587 |
*/ |
|
588 |
void SetFile( RFile aFile ); |
|
589 |
||
590 |
// from base class MAknServerAppExitObserver |
|
591 |
||
592 |
/** |
|
593 |
* Handle the exit of a connected server app. |
|
594 |
* |
|
595 |
* @param aReason The reason that the server application exited. |
|
596 |
* This will either be an error code, or the command id that caused the |
|
597 |
* server app to exit. |
|
598 |
*/ |
|
599 |
void HandleServerAppExit( TInt aReason ); |
|
600 |
||
601 |
private: |
|
602 |
||
603 |
/** Default constructor. */ |
|
604 |
CFsEmailFileHandleShutter(); |
|
605 |
||
606 |
/** Second phase constructor. */ |
|
607 |
void ConstructL( CDocumentHandler& aDocumentHandler ); |
|
608 |
||
609 |
private: // data |
|
610 |
||
611 |
TBool iHandleOpen; |
|
612 |
RFile iFileHandle; |
|
613 |
||
614 |
}; |
|
615 |
||
616 |
class CFSEmailUiCallDialog : public CAknQueryDialog |
|
617 |
{ |
|
618 |
public: |
|
619 |
TKeyResponse OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType); |
|
620 |
}; |
|
621 |
||
622 |
#endif /*__FREESTYLEMAILUI_UTILITIES_H_*/ |