00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef AKNMESSAGEQUERYCONTROL_H
00021 #define AKNMESSAGEQUERYCONTROL_H
00022
00023
00024
00025 #include <akncontrol.h>
00026 #include <aknutils.h>
00027
00028
00029
00030 class CEikEdwin;
00031 class CEikScrollBarFrame;
00032 class CEikRichTextEditor;
00033 class CRichText;
00034 class CAknMessageQueryControlExtension;
00035
00036 enum TMsgQueryTag
00037 {
00038 EMsgQueryLink = 0,
00039 EMsgQueryBold
00040 };
00041
00042
00043
00044
00051 NONSHARABLE_CLASS(CAknMessageQueryControl) : public CAknControl
00052 {
00053 public:
00054
00058 CAknMessageQueryControl();
00059
00063 ~CAknMessageQueryControl();
00064
00070 IMPORT_C void ConstructFromResourceL( TResourceReader& aReader );
00071
00076 IMPORT_C void SetMessageTextL( TDesC* aMessage );
00077
00082 inline TInt Lines() const;
00083
00089 TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode );
00090
00101 void SetMessageTextWithFormattingL(
00102 TDesC* aMessage,
00103 RArray<TDesC*>* aFormatTextArray,
00104 RArray<TInt>* aFormatTextLocationArray,
00105 RArray<TMsgQueryTag>* aFormatTypeArray );
00106
00112 TInt CurrentLink() const;
00113
00119 IMPORT_C TBool LinkHighLighted() const;
00120
00125 void SetListQLayout( TBool aListQLayout );
00126
00133 TBool LinkTappedL( TInt aPos );
00134
00139 void DehighlightLink();
00140
00145 TBool ScrollBarGrabbing();
00146
00147 public:
00148
00153 TSize MinimumSize();
00154
00160 TInt CountComponentControls() const;
00161
00168 CCoeControl* ComponentControl( TInt anIndex ) const;
00169
00174 void SizeChanged();
00175
00180 virtual void ActivateL();
00181
00186 void HandlePointerEventL( const TPointerEvent& aPointerEvent );
00187
00188 private:
00189 void UpdateScrollIndicatorL();
00190
00194 void SetHighlightOnL( TBool aOn );
00195
00200 TBool CanScrollPage( TBool aMoveDown );
00201
00202 TBool IsLinkVisible( TInt aIndex ) const;
00203
00212 void UpdatePageInfo();
00213
00214
00215
00216
00217 void CreateEditorL();
00218 void LayoutEditorL();
00219
00227 TBool SetCurPos( TInt aCurPos );
00228
00236 void TruncateTextForListQLayout( TDes& aMessage );
00237
00238 private:
00239
00240
00241
00242
00243 CEikRichTextEditor* iEdwin;
00244 TInt iNumberOfLines;
00245 TInt iTopLine;
00246 TInt iLinesPerPage;
00247
00248 CEikScrollBarFrame* iSBFrame;
00249 TBool iListQLayout;
00250
00251
00252
00253 TBool iHighlightOn;
00254 TCharFormatMask iCharFormatMask;
00255 TCharFormat iCharFormat;
00256
00257
00258
00259 RArray<TInt> iLinkTextLocationArray;
00260 RArray<TDesC*> iLinkTextArray;
00261 TInt iLinksCount;
00262 TInt iVisibleLinksCount;
00263 TInt iFirstVisibleLink;
00264
00271 TInt iPositionsCount;
00272 TInt iCurPos;
00273 TDesC* iFullMessage;
00274 CAknMessageQueryControlExtension* iExtension;
00275
00276 protected:
00282 IMPORT_C void Draw( const TRect& aRect ) const;
00283
00284
00285 protected:
00291 TRect LayoutRect() const;
00292 };
00293
00294 inline TInt CAknMessageQueryControl::Lines() const
00295 {
00296 return iNumberOfLines;
00297 }
00298
00299 #endif // AKNMESSAGEQUERYCONTROL_H
00300
00301