00001
00002
00003
00004
00005
00006
00007
00008 #if !defined(__EIKLBI_H__)
00009 #define __EIKLBI_H__
00010
00011 #include <e32base.h>
00012 #include <gdi.h>
00013
00014
00015 class CWindowGc;
00016 class CListBoxData;
00017 class TListItemProperties;
00018 class TListFontBoundValues;
00019 class MAknsControlContext;
00020
00021
00029 class CListItemDrawer : public CBase
00030 {
00031
00032 public:
00033
00037 IMPORT_C ~CListItemDrawer();
00038
00055 IMPORT_C virtual void DrawItem(TInt aItemIndex,
00056 TPoint aItemRectPos,
00057 TBool aItemIsSelected,
00058 TBool aItemIsCurrent,
00059 TBool aViewIsEmphasized,
00060 TBool aViewIsDimmed) const;
00061
00067 IMPORT_C virtual void ClearRect(const TRect& aRect) const;
00068
00075 IMPORT_C virtual TInt ItemWidthInPixels(TInt aItemIndex) const;
00076
00083 IMPORT_C virtual TSize MinimumCellSize() const;
00084
00090 IMPORT_C virtual void SetGc(CWindowGc* aGc);
00091
00097 IMPORT_C CWindowGc* Gc() const;
00098
00104 IMPORT_C virtual void SetMarkColumnWidth(TInt aWidthInPixels);
00105
00112 IMPORT_C virtual void SetMarkGutter(TInt aGapInPixels);
00113
00119 IMPORT_C TInt MarkColumn() const;
00120
00127 IMPORT_C TInt MarkGutter() const;
00128
00136 IMPORT_C virtual void SetItemCellSize(const TSize& aSizeInPixels);
00137
00144 IMPORT_C TSize ItemCellSize() const;
00145
00153 IMPORT_C virtual void SetViewRect(const TRect& aRect);
00154
00164 IMPORT_C void SetDrawMark(TBool aDrawMark);
00165
00178 IMPORT_C virtual TRect MatcherCursorRect(const TDesC& aMatchableText,
00179 TInt aCharPos,
00180 TInt aItemCellYPos,
00181 TInt aCurrentItemIndex ) const;
00182
00193 IMPORT_C virtual TInt MatcherCursorAscent( TInt aCurrentItemIndex ) const;
00194
00198 IMPORT_C virtual void DrawItemMark(TBool aItemIsSelected,
00199 TBool aViewIsDimmed,
00200 const TPoint& aMarkPos) const;
00201
00208 IMPORT_C void SetSymbolFont(const CFont* aFont);
00209
00216 IMPORT_C void SetVerticalInterItemGap(TInt aGapInPixels);
00217
00224 IMPORT_C void SetData(CListBoxData* aData);
00225
00234 IMPORT_C CFont* Font(TInt aItemIndex) const;
00235
00243 IMPORT_C virtual TListItemProperties Properties(TInt aItemIndex) const;
00244
00255 IMPORT_C void DrawFrame(CWindowGc& aGc,
00256 const TRect& aRect,
00257 TInt aFlags) const;
00258
00259 public:
00260
00265 enum TFlags
00266 {
00275 EDrawMarkSelection = 0x0001,
00276
00281 EPaintedSelection = 0x0002,
00282
00284 EDrawOnlyActiveSelection = 0x0004,
00285
00287 EDisableHighlight = 0x0008
00288 };
00289
00290 public:
00291
00295 enum TListItemAttribute
00296
00297 {
00299 ECurrent = 0x0001,
00300
00307 EEmphasized = 0x0002,
00308
00315 ESelected = 0x0004,
00316
00322 EMask = 0x0007
00323
00324 };
00325
00326 public:
00327
00333 inline void SetTextColor(TRgb aColor);
00334
00340 inline void SetBackColor(TRgb aColor);
00341
00347 inline void SetHighlightedTextColor(TRgb aColor);
00348
00354 inline void SetHighlightedBackColor(TRgb aColor);
00355
00361 inline void SetDimmedTextColor(TRgb aColor);
00362
00368 inline void SetDimmedBackColor(TRgb aColor);
00369
00375 inline TRgb TextColor() const;
00376
00382 inline TRgb BackColor() const;
00383
00389 inline TRgb HighlightedTextColor() const;
00390
00396 inline TRgb HighlightedBackColor() const;
00397
00403 inline TRgb DimmedTextColor() const;
00404
00410 inline TRgb DimmedBackColor() const;
00411
00417 inline TInt Flags() const;
00418
00424 IMPORT_C void SetFlags(TInt aFlags);
00425
00431 IMPORT_C void ClearFlags(TInt aFlags);
00432
00439 IMPORT_C MAknsControlContext *SkinBackgroundControlContext() const;
00448 IMPORT_C void SetSkinEnabledL(TBool aEnabled);
00449
00450 protected:
00451
00455 IMPORT_C CListItemDrawer();
00456
00471 virtual void DrawActualItem(TInt aItemIndex,
00472 const TRect& aActualItemRect,
00473 TBool aItemIsCurrent,
00474 TBool aViewIsEmphasized,
00475 TBool aViewIsDimmed,
00476 TBool aItemIsSelected) const = 0;
00477
00484 IMPORT_C virtual void ResetGc() const;
00485
00493 inline TRgb MarkColor() const;
00494
00500 IMPORT_C TInt VerticalInterItemGap() const;
00501
00508 IMPORT_C void SetupGc(TInt aItemIndex) const;
00509
00510 private:
00511
00512 IMPORT_C virtual TAny* Reserved_1();
00513
00514 inline TInt& VerticalInterItemGap();
00515
00516 inline const CFont* SymbolFont() const;
00517
00518 inline const CFont*& SymbolFont();
00519
00520 protected:
00521
00523 TSize iItemCellSize;
00524
00526 TInt iMarkGutter;
00527
00529 TInt iMarkColumnWidth;
00530
00532 TRect iViewRect;
00533
00535 TBool iDrawMark;
00536
00538 CWindowGc* iGc;
00539
00541 TRgb iTextColor;
00542
00544 TRgb iBackColor;
00545
00547 TRgb iHighlightedTextColor;
00548
00550 TRgb iHighlightedBackColor;
00551
00553 TRgb iDimmedTextColor;
00554
00556 TRgb iDimmedBackColor;
00557
00559 TRgb iMarkColor;
00560
00562 CListBoxData* iData;
00563
00564 private:
00565
00566 const CFont* iSymbolFont;
00567
00568 TInt iVerticalInterItemGap;
00569
00570 TInt iSpare;
00571
00572 TUint iFlags;
00573
00574 };
00575
00576
00577
00578
00579 class MTextListBoxModel;
00580
00581
00588 class CTextListItemDrawer : public CListItemDrawer
00589 {
00590
00591 public:
00592
00596 IMPORT_C CTextListItemDrawer();
00597
00601 IMPORT_C ~CTextListItemDrawer();
00602
00612 IMPORT_C CTextListItemDrawer(MTextListBoxModel* aTextListBoxModel,
00613 const CFont* aFont);
00614
00620 IMPORT_C void ConstructL(const CFont* aFont);
00621
00633 IMPORT_C virtual void DrawActualItem(TInt aItemIndex,
00634 const TRect& aActualItemRect,
00635 TBool aItemIsCurrent,
00636 TBool aViewIsEmphasized,
00637 TBool aViewIsDimmed,
00638 TBool aItemIsSelected) const;
00639
00646 IMPORT_C virtual TInt ItemWidthInPixels(TInt aItemIndex) const;
00647
00654 IMPORT_C virtual TSize MinimumCellSize() const;
00655
00661 IMPORT_C virtual void SetGc(CWindowGc* aGc);
00662
00670 IMPORT_C void SetCellWidthInChars(TInt aNumOfCharsToDisplayInCell);
00671
00682 IMPORT_C virtual TRect MatcherCursorRect(const TDesC& aMatchableText,
00683 TInt aCharPos,
00684 TInt aItemCellYPos,
00685 TInt aCurrentItemIndex ) const;
00686
00698 IMPORT_C virtual TInt MatcherCursorAscent( TInt aCurrentItemIndex ) const;
00699
00705 IMPORT_C void SetFont(const CFont* aFont);
00706
00712 IMPORT_C void SetSearchStringL(const TDesC* aSearchString);
00713
00720 IMPORT_C const CFont* Font(TInt aIndex) const;
00721
00722
00723
00724
00730 inline void SetItemMarkPosition(TInt aPos);
00731
00737 inline TInt ItemMarkPosition() const;
00738
00744 inline void SetItemMarkReplacement(const TDesC &aReplacement);
00745
00751 inline TPtrC ItemMarkReplacement() const;
00752
00759 inline void SetItemMarkReverse(TBool aReverse);
00760
00767 inline TBool ItemMarkReverse() const;
00768
00769
00770 protected:
00771
00785 IMPORT_C virtual void DoDrawItemText(const TDesC& aDes,
00786 const TRect& aItemTextRect,
00787 TBool aItemIsCurrent,
00788 TBool aViewIsEmphasized,
00789 TBool aItemIsSelected,
00790 TInt aItemIndex) const;
00791
00803 IMPORT_C virtual void DrawItemText(TInt aItemIndex,
00804 const TRect& aItemTextRect,
00805 TBool aItemIsCurrent,
00806 TBool aViewIsEmphasized,
00807 TBool aItemIsSelected) const;
00808
00814 IMPORT_C virtual void ResetGc() const;
00815
00816 private:
00817
00818 IMPORT_C virtual TAny* Reserved_1();
00819
00820 protected:
00821
00823 MTextListBoxModel* iModel;
00824
00826 const CFont* iFont;
00827
00828 private:
00829
00830 TInt iNumOfCharsInCell;
00831
00832
00833
00834 TInt iItemMarkPos;
00835
00836 TPtrC iItemMarkReplacement;
00837
00838 TBool iItemMarkReverse;
00839
00840
00841
00842 };
00843
00844
00845
00846
00855 class TListItemProperties
00856
00857 {
00858
00859 public:
00860
00864 IMPORT_C TListItemProperties();
00865
00866 public:
00867
00875 inline void SetBold(TBool aBold);
00876
00884 inline TBool IsBold() const;
00885
00893 inline void SetItalics(TBool aItalics);
00894
00902 inline TBool IsItalics() const;
00903
00910 inline void SetUnderlined(TBool aUnderlined);
00911
00918 inline TBool IsUnderlined() const;
00919
00928 inline void SetDimmed(TBool aDimmed);
00929
00939 inline TBool IsDimmed() const;
00940
00946 inline void SetColor(TRgb aColor);
00947
00953 inline TRgb Color() const;
00954
00963 inline void SetSeparatorAfter(TBool aSeparator);
00964
00972 inline TBool IsSeparatorAfter() const;
00973
00980 inline void SetHiddenSelection(TBool aHidden);
00981
00987 inline TBool IsSelectionHidden() const;
00988
00989 private:
00990
00991 TUint iFlags;
00992
00993 TRgb iColor;
00994
00995 private:
00996
00997 enum
00998
00999 {
01000
01001 ELbxItemBold = 0x0001,
01002
01003 ELbxItemItalics = 0x0002,
01004
01005 ELbxItemUnderlined = 0x0004,
01006
01007 ELbxItemDimmed = 0x0008,
01008
01009 ELbxItemSeparatorAfter = 0x0010,
01010
01011 ELbxItemSelectionHidden = 0x0020
01012
01013 };
01014
01015 };
01016
01017
01018
01019
01020
01021
01022
01023
01024
01025
01026
01027 inline void CListItemDrawer::SetTextColor(TRgb aColor)
01028
01029 {iTextColor=aColor;}
01030
01031 inline void CListItemDrawer::SetBackColor(TRgb aColor)
01032
01033 {iBackColor=aColor;}
01034
01035 inline void CListItemDrawer::SetHighlightedTextColor(TRgb aColor)
01036
01037 {iHighlightedTextColor=aColor;}
01038
01039 inline void CListItemDrawer::SetHighlightedBackColor(TRgb aColor)
01040
01041 {iHighlightedBackColor=aColor;}
01042
01043 inline void CListItemDrawer::SetDimmedTextColor(TRgb aColor)
01044
01045 {iDimmedTextColor=aColor;}
01046
01047 inline void CListItemDrawer::SetDimmedBackColor(TRgb aColor)
01048
01049 {iDimmedBackColor=aColor;}
01050
01051 inline TRgb CListItemDrawer::TextColor() const
01052
01053 {return iTextColor;}
01054
01055 inline TRgb CListItemDrawer::BackColor() const
01056
01057 {return iBackColor;}
01058
01059 inline TRgb CListItemDrawer::HighlightedTextColor() const
01060
01061 {return iHighlightedTextColor;}
01062
01063 inline TRgb CListItemDrawer::HighlightedBackColor() const
01064
01065 {return iHighlightedBackColor;}
01066
01067 inline TRgb CListItemDrawer::DimmedTextColor() const
01068
01069 {return iDimmedTextColor;}
01070
01071 inline TRgb CListItemDrawer::DimmedBackColor() const
01072
01073 {return iDimmedBackColor;}
01074
01075 inline TRgb CListItemDrawer::MarkColor() const
01076
01077 {return iMarkColor;}
01078
01079 inline TInt CListItemDrawer::Flags() const
01080
01081 {return iFlags;}
01082
01083
01084
01085 inline TBool TListItemProperties::IsItalics() const
01086
01087 {return iFlags&ELbxItemItalics;}
01088
01089 inline TBool TListItemProperties::IsBold() const
01090
01091 {return iFlags&ELbxItemBold;}
01092
01093 inline TBool TListItemProperties::IsUnderlined() const
01094
01095 {return iFlags&ELbxItemUnderlined;}
01096
01097 inline TBool TListItemProperties::IsDimmed() const
01098
01099 {return iFlags&ELbxItemDimmed;}
01100
01101 inline TBool TListItemProperties::IsSeparatorAfter() const
01102
01103 {return iFlags&ELbxItemSeparatorAfter;}
01104
01105 inline TBool TListItemProperties::IsSelectionHidden() const
01106
01107 {return iFlags&ELbxItemSelectionHidden;}
01108
01109
01110
01111 inline void TListItemProperties::SetColor(TRgb aColor)
01112
01113 {iColor=aColor;}
01114
01115 inline TRgb TListItemProperties::Color() const
01116
01117 {return iColor;}
01118
01119 inline void TListItemProperties::SetBold(TBool aBold)
01120
01121 {
01122
01123 if (aBold)
01124
01125 iFlags|=ELbxItemBold;
01126
01127 else
01128
01129 iFlags&=(~ELbxItemBold);
01130
01131 }
01132
01133 inline void TListItemProperties::SetItalics(TBool aItalics)
01134
01135 {
01136
01137 if (aItalics)
01138
01139 iFlags|=ELbxItemItalics;
01140
01141 else
01142
01143 iFlags&=(~ELbxItemItalics);
01144
01145 }
01146
01147 inline void TListItemProperties::SetUnderlined(TBool aUnderlined)
01148
01149 {
01150
01151 if (aUnderlined)
01152
01153 iFlags|=ELbxItemUnderlined;
01154
01155 else
01156
01157 iFlags&=(~ELbxItemUnderlined);
01158
01159 }
01160
01161 inline void TListItemProperties::SetDimmed(TBool aDimmed)
01162
01163 {
01164
01165 if (aDimmed)
01166
01167 iFlags|=ELbxItemDimmed;
01168
01169 else
01170
01171 iFlags&=(~ELbxItemDimmed);
01172
01173 }
01174
01175
01176
01177 inline void TListItemProperties::SetSeparatorAfter(TBool aSeparator)
01178
01179 {
01180
01181 if (aSeparator)
01182
01183 iFlags|=ELbxItemSeparatorAfter;
01184
01185 else
01186
01187 iFlags&=(~ELbxItemSeparatorAfter);
01188
01189 }
01190
01191
01192 inline void TListItemProperties::SetHiddenSelection(TBool aBlocked)
01193
01194 {
01195
01196 if (aBlocked)
01197
01198 iFlags|=ELbxItemSelectionHidden;
01199
01200 else
01201
01202 iFlags&=(~ELbxItemSelectionHidden);
01203
01204 }
01205
01206
01207
01208
01209
01210
01211
01212
01213 inline void CTextListItemDrawer::SetItemMarkPosition(TInt aPos) { iItemMarkPos = aPos; }
01214
01215 inline TInt CTextListItemDrawer::ItemMarkPosition() const { return iItemMarkPos; }
01216
01217 inline void CTextListItemDrawer::SetItemMarkReplacement(const TDesC & aReplacement) { iItemMarkReplacement.Set(aReplacement); }
01218
01219 inline TPtrC CTextListItemDrawer::ItemMarkReplacement() const { return iItemMarkReplacement; }
01220
01221 inline void CTextListItemDrawer::SetItemMarkReverse(TBool aReverse) { iItemMarkReverse = aReverse; }
01222 inline TBool CTextListItemDrawer::ItemMarkReverse() const { return iItemMarkReverse; }
01223
01224
01225
01226
01227
01228
01229 #endif
01230
01231