00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef SPDIACONTROL_H
00025 #define SPDIACONTROL_H
00026
00027
00028 #include <coecntrl.h>
00029 #include <TPbkContactItemField.h>
00030 #include <aknutils.h>
00031 #include <MPbkContactDbObserver.h>
00032 #include <MPbkThumbnailOperationObservers.h>
00033
00034
00035 class CAknGrid;
00036 class CGulIcon;
00037 class CEikonEnv;
00038 class TSpdiaIndexData;
00039 class CPbkContactEngine;
00040 class RPbkViewResourceFile;
00041 class CEikStatusPane;
00042 class CPAlbImageData;
00043 class CSpdiaGridDlg;
00044 class CPbkContactChangeNotifier;
00045 class CPbkSingleItemFetchDlg;
00046 class CAknQueryDialog;
00047
00048 class CPAlbImageFactory;
00049 class CPbkThumbnailManager;
00050
00051 class CAknsBasicBackgroundControlContext;
00052 #include <AknsConstants.h>
00053
00054
00055
00064
00065 const TInt KArraySize =9;
00066 class CSpdiaControl : public CCoeControl,
00067 public MPbkContactDbObserver,
00068 private MPbkThumbnailGetObserver
00069 {
00070 public:
00074 IMPORT_C static CSpdiaControl* NewL();
00075
00081 IMPORT_C static CSpdiaControl* NewL(
00082 CPbkContactEngine& aPbkEngine);
00083
00092 IMPORT_C TBool AssignDialNumberL(TInt aLocation,
00093 CEikStatusPane* aStatusPane = NULL);
00094
00105 IMPORT_C TInt ExecuteLD(TContactItemId aId, TInt aFieldIdx);
00106
00113 IMPORT_C void Cancel();
00114
00127 IMPORT_C TBool DialNumberL(TInt aLocation, TDes& aPhoneNumber,
00128 CEikStatusPane* aStatusPane = NULL);
00129
00130 private:
00134 CSpdiaControl();
00135
00139 CSpdiaControl(CPbkContactEngine* aPbkEngine);
00140
00145 TSize GetThumbnailSize();
00146
00147 public:
00148
00152 IMPORT_C virtual ~CSpdiaControl();
00153
00154 public:
00163 IMPORT_C TBool VoiceMailL(TDes& aNumber);
00164
00168 IMPORT_C CPbkContactEngine* PbkEngine() const;
00169
00177 IMPORT_C TInt Index(TInt aDial) const;
00178
00186 IMPORT_C TInt Number(TInt aIndex) const;
00187
00194 IMPORT_C TContactItemId ContactId(TInt aIndex) const;
00195
00203 IMPORT_C const TDesC& PhoneDialNumber(TInt aDial) const;
00204
00211 IMPORT_C const TDesC& PhoneNumber(TInt aIndex) const;
00212
00213 public:
00224 IMPORT_C HBufC* ContactTitleL(TContactItemId aCid, TBool aUnnamed);
00225
00231 IMPORT_C TInt IconIndex(TInt aIndex) const;
00232
00238 IMPORT_C TInt ThumbIndex(TInt aIndex) const;
00239
00243 IMPORT_C CArrayPtr<CGulIcon>* IconArray() const;
00244
00254 IMPORT_C TBool CreateGridDataL(CAknGrid* aGrid, TBool aIndex);
00255
00261 IMPORT_C TBool AssignDialIndexL(TInt aIndex);
00262
00270 IMPORT_C TBool RemoveDialIndexL(TInt aIndex,
00271 TBool aConfirmation = ETrue);
00275 IMPORT_C TBool AssignNumberL(TInt aIndex,
00276 CEikStatusPane* aStatusPane,
00277 CCoeControl* aContainer,
00278 TBool aConfirmation);
00279 IMPORT_C void ApplyCellSpdiaPaneStyleL(CAknGrid& aListBox, TSize& aSize);
00280 IMPORT_C void DrawShadow(CWindowGc& aGc, const TSize& aSize);
00281
00287 IMPORT_C void SetLayout(const TRect& aRect);
00288
00292 IMPORT_C TInt Size() const;
00293
00297 IMPORT_C TInt VMBoxPosition() const;
00298
00302 IMPORT_C TInt SpdIconIndex(TInt aIndex) const;
00303
00307 IMPORT_C TInt NumberType(TInt aIndex) const;
00311 IMPORT_C void DeleteIconArray();
00315 IMPORT_C void ReloadIconArray();
00316
00317 IMPORT_C TInt VoiceMailType();
00321 IMPORT_C TInt GetSpdCtrlLastError();
00327 IMPORT_C TBool CheckingIfPopUpNeeded();
00328
00329 private:
00335 TBool CheckingIfPopUpNeededL();
00336
00340 void ReloadIconArrayL();
00341
00342 public:
00350 TBool CreateDataL(const CAknGrid& aGrid);
00351
00355
00356
00364 TBool ConfirmationNumberL(TInt aIndex,
00365 TInt aId,
00366 TInt aPromptId);
00367
00373 void DrawShadow(CWindowGc& aGc) const;
00374
00375 private:
00376
00384 void PbkThumbnailGetComplete(MPbkThumbnailOperation& aOperation,
00385 CFbsBitmap* aBitmap);
00386
00393 void PbkThumbnailGetFailed
00394 (MPbkThumbnailOperation& aOperation, TInt aError);
00395
00399 TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
00400
00401 private:
00402
00410 void PbkThumbnailGetCompleteL(MPbkThumbnailOperation& aOperation,
00411 CFbsBitmap* aBitmap);
00412
00413 private:
00417 void Draw(const TRect& aRect) const;
00418
00422 void SizeChanged();
00423
00424 private:
00428 void HandleDatabaseEventL(TContactDbObserverEvent aEvent);
00429
00430 private:
00434 void ConstructL();
00435
00439 void InitIndexDataL();
00440
00444 TBool UpdateIndexDataL(TInt aIndex);
00445
00452 TInt FindIconIndex(TInt aId) const;
00453
00459 TInt ThumbType(TInt aIndex) const;
00460
00466 TSize ThumbSize(TInt aIndex) const;
00467
00474 void SetContactId(TInt aIndex, TContactItemId aCid);
00475
00483 TInt IconPositionL(const CPbkContactItem& aItem, TInt aDial, TInt& aFieldId);
00484
00490 TInt SetIconArrayL(CArrayPtrFlat<CGulIcon>* aArray);
00491
00499 HBufC* ItemDescriptorLC(TInt aIndex, const TSpdiaIndexData& aSdmData);
00500
00507 HBufC* CreateItemDescriptorLC(const TSpdiaIndexData& aSdmData);
00508
00515 void AppendTextL(const TSpdiaIndexData& aSdmData, TPtr& aText);
00516
00524 TPbkContactItemField* FindFieldL(CPbkContactItem& aItem,
00525 TPbkFieldId aFieldId);
00526
00534 void AppendThumbnail(const TSpdiaIndexData& aSdmData,
00535 TPtr& aText,
00536 TBool aFixedLocation);
00537
00543 TInt ConvThumbType(const TSize& aSize) const;
00544
00549 void SetOperationsL();
00550
00556 void SetItemDataL(CDesCArray& aArray);
00557
00564 void AssignDialL(TContactItemId aId, TInt aFieldIdx, TInt aDial);
00565
00573 TBool CheckSpaceBelowCriticalLevelL();
00574
00581 TInt HasOperation(const MPbkThumbnailOperation& aOperation);
00582
00586 void ResetArray();
00587
00594 void SetIndexDataL(TInt aIndex, TSpdiaIndexData& aSdmData);
00595
00602 void ChangeIndexDataL(TInt aIndex, const TSpdiaIndexData& aSdmData);
00603
00611 TBool CreateIndexIconL(TInt aIndex, TSpdiaIndexData& aSdmData,
00612 TBool aSetUpdateThumb);
00613
00614
00615 private:
00616
00617 void InitializeArray();
00618
00619 private:
00620
00621 enum TGridUse
00622 {
00623 EGridUse,
00624 EGridUseAndUpdate,
00625 EGridNoUse
00626 };
00627 CPbkContactEngine* iEngine;
00628 TBool iExEngine;
00629 TGridUse iGridUsed;
00630
00631 TInt iSdmCount;
00632
00633 CArrayFixFlat<TSpdiaIndexData>* iSdmArray;
00634 CArrayFixFlat<TAknLayoutRect>* iShadowLayout;
00635
00636 CPbkContactChangeNotifier* iPbkNotifier;
00637 CPbkSingleItemFetchDlg* iPbkSingleItem;
00638 CAknQueryDialog* iQueryDialog;
00639 RPbkViewResourceFile* iPbkResourceFile;
00640 CSpdiaGridDlg* iGridDlg;
00641
00643 CPbkThumbnailManager* iManager;
00645 CPAlbImageFactory* iThumbFactory;
00646
00647 CAknGrid* iGrid;
00648 TInt iFileOffset;
00649 CArrayPtrFlat<CGulIcon>* iIconArray;
00650
00651 CAknsBasicBackgroundControlContext* iBgContext;
00652
00653
00654
00655 TBool iBooleanVarForAddingDialogVariation;
00656
00657 RArray<TAknsItemID>*iDialSkinBmp;
00658 RArray<TAknsItemID>*iSkinIcons;
00659 TAknLayoutRect icellLayout[KArraySize];
00660 TBuf<254> iBmpPath;
00661 TBuf<254> iRscPath;
00662 TInt iType;
00663 TInt iError;
00664 TBool iPopupDialog;
00665 CAknQueryDialog* iSaveChangesDialog;
00666 TBool iSaveDlg;
00667 };
00668
00669
00670 #endif
00671
00672
00673