00001 /* 00002 * ============================================================================ 00003 * Name : AknLists.h 00004 * Part of : Avkon 00005 * 00006 * Description: 00007 * Version: 00008 * 00009 * Copyright © 2002 Nokia Corporation. 00010 * This material, including documentation and any related 00011 * computer programs, is protected by copyright controlled by 00012 * Nokia Corporation. All rights are reserved. Copying, 00013 * including reproducing, storing, adapting or translating, any 00014 * or all of this material requires the prior written consent of 00015 * Nokia Corporation. This material also contains confidential 00016 * information which may not be disclosed to others without the 00017 * prior written consent of Nokia Corporation. 00018 */ 00019 #ifndef __AKNLISTS_H__ 00020 #define __AKNLISTS_H__ 00021 00022 #include <eikclb.h> 00023 #include <eikfrlb.h> 00024 #include <eikslb.h> 00025 #include <AknGrid.h> 00026 #include <aknutils.h> 00027 00028 #include <aknpanic.h> 00029 00030 00031 class TAknTextLineLayout; 00032 class MAknsSkinInstance; 00033 class MAknsControlContext; 00034 00045 // 00046 // 00047 // Helper template definitions. 00048 // (these are before concrete listbox classes because they're needed for inheritance) 00049 // 00050 00051 00058 template<class T> 00059 class AknListBoxLinesTemplate : public T 00060 { 00061 public: 00076 IMPORT_C AknListBoxLinesTemplate(TInt aResourceId); 00081 IMPORT_C void SizeChanged(); 00086 IMPORT_C void Draw(const TRect& aRect) const; 00091 IMPORT_C TInt CountComponentControls() const; 00096 IMPORT_C CCoeControl* ComponentControl(TInt aIndex) const; 00097 00098 private: 00099 TInt iSpare0; // was iResourceId; 00100 TAknLayoutRect iVertLine1, iVertLine2; // not used 00101 TAknLayoutRect iHoriLine; // not used 00102 TBool iResized; 00103 TInt iSpare[2]; 00104 }; 00105 00110 template<class T> 00111 class AknPopupListEmpty : public T 00112 { 00116 IMPORT_C virtual void Draw(const TRect &aRect) const; 00117 }; 00118 00119 00145 class CAknColumnListBox : public CEikColumnListBox 00146 { 00147 public: 00153 IMPORT_C virtual CListBoxView* MakeViewClassInstanceL(); 00154 00158 IMPORT_C virtual void CreateModelL(); 00159 00167 IMPORT_C virtual TInt AdjustRectHeightToWholeNumberOfItems(TRect& aRect) const; 00168 00173 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00174 private: 00178 IMPORT_C void* ExtensionInterface( TUid aInterface ); 00179 private: // listbox use only 00180 IMPORT_C virtual void CEikListBox_Reserved(); 00181 }; 00182 00183 00184 // 00185 // These define what features are needed --> you can remove shortcuts from ALL lists by changing these.. 00186 // Templates available: AknListBoxLinesTemplate<> AknListBoxShortCutTemplate<> 00187 typedef AknListBoxLinesTemplate<CAknColumnListBox > CEikColumnListBoxTypedef; 00188 typedef AknListBoxLinesTemplate<CEikFormattedCellListBox > CEikFormattedCellListBoxTypedef; 00189 typedef AknListBoxLinesTemplate<CEikSettingsListBox > CEikSettingsListBoxTypedef; 00190 typedef CAknGrid CAknSelectionGridTypedef; 00191 00192 // Templates available: AknListBoxShortCutTemplate<> AknListBoxLinesTemplate<> 00193 #define AKNCOLUMNLISTBOXNAME(x) AknListBoxLinesTemplate<CAknColumnListBox >(x) 00194 #define AKNDOUBLELISTBOXNAME(x) AknListBoxLinesTemplate<CEikFormattedCellListBox >(x) 00195 #define AKNSETTINGLISTBOXNAME(x) AknListBoxLinesTemplate<CEikSettingsListBox >(x) 00196 00197 // Templates available: AknListBoxLinesTemplate<>, AknListBoxShortCutTemplate<> 00198 #define AKNCOLUMNLISTBOX AknListBoxLinesTemplate<CAknColumnListBox > 00199 #define AKNFORMATTEDLISTBOX AknListBoxLinesTemplate<CEikFormattedCellListBox > 00200 #define AKNSETTINGSLISTBOX AknListBoxLinesTemplate<CEikSettingsListBox > 00201 #define AKNGRID CAknGrid 00202 00203 00204 00205 00206 00207 00208 00209 // 00210 // 00211 // Derived listboxes (Use these in applications!) 00212 // These are only for full screen lists -- the Rect() of the list must be ClientRect() 00213 // 00214 // 00215 00216 00224 class CAknSingleStyleListBox : public CEikColumnListBoxTypedef 00225 { 00226 public: 00227 IMPORT_C CAknSingleStyleListBox(); 00232 IMPORT_C void SizeChanged(); 00237 IMPORT_C TSize MinimumSize(); 00242 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00243 private: 00244 void SizeChangedL(); 00245 }; 00246 00254 class CAknSingleNumberStyleListBox : public CEikColumnListBoxTypedef 00255 { 00256 public: 00257 IMPORT_C CAknSingleNumberStyleListBox(); 00262 IMPORT_C void SizeChanged(); 00267 IMPORT_C TSize MinimumSize(); 00272 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00273 private: 00274 void SizeChangedL(); 00275 }; 00276 00285 class CAknSingleHeadingStyleListBox : public CEikColumnListBoxTypedef 00286 { 00287 public: 00288 IMPORT_C CAknSingleHeadingStyleListBox(); 00293 IMPORT_C void SizeChanged(); 00298 IMPORT_C TSize MinimumSize(); 00303 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00304 00305 protected: 00310 IMPORT_C virtual void CreateItemDrawerL(); 00311 00316 IMPORT_C virtual CListBoxView* MakeViewClassInstanceL(); 00317 private: 00318 void SizeChangedL(); 00319 }; 00320 00321 00329 class CAknSingleGraphicStyleListBox : public CEikColumnListBoxTypedef 00330 { 00331 public: 00332 IMPORT_C CAknSingleGraphicStyleListBox(); 00337 IMPORT_C void SizeChanged(); 00342 IMPORT_C TSize MinimumSize(); 00347 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00348 private: 00349 void SizeChangedL(); 00350 }; 00351 00359 class CAknSingleGraphicHeadingStyleListBox : public CEikColumnListBoxTypedef 00360 { 00361 public: 00362 IMPORT_C CAknSingleGraphicHeadingStyleListBox(); 00367 IMPORT_C void SizeChanged(); 00372 IMPORT_C TSize MinimumSize(); 00377 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00378 protected: 00379 IMPORT_C virtual void CreateItemDrawerL(); 00384 IMPORT_C virtual CListBoxView* MakeViewClassInstanceL(); 00385 private: 00386 void SizeChangedL(); 00387 }; 00388 00396 class CAknSingleNumberHeadingStyleListBox : public CEikColumnListBoxTypedef 00397 { 00398 public: 00399 IMPORT_C CAknSingleNumberHeadingStyleListBox(); 00404 IMPORT_C void SizeChanged(); 00409 IMPORT_C TSize MinimumSize(); 00414 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00415 protected: 00416 IMPORT_C virtual void CreateItemDrawerL(); 00421 IMPORT_C virtual CListBoxView* MakeViewClassInstanceL(); 00422 private: 00423 void SizeChangedL(); 00424 }; 00425 00433 class CAknSingleLargeStyleListBox : public CEikColumnListBoxTypedef 00434 { 00435 public: 00436 IMPORT_C CAknSingleLargeStyleListBox(); 00441 IMPORT_C void SizeChanged(); 00446 IMPORT_C TSize MinimumSize(); 00451 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00452 private: 00453 void SizeChangedL(); 00454 }; 00455 00463 class CAknDoubleStyleListBox : public CEikFormattedCellListBoxTypedef 00464 { 00465 public: 00466 IMPORT_C CAknDoubleStyleListBox(); 00471 IMPORT_C void SizeChanged(); 00476 IMPORT_C TSize MinimumSize(); 00481 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00482 private: 00483 void SizeChangedL(); 00484 }; 00485 00493 class CAknDoubleStyle2ListBox : public CAknDoubleStyleListBox 00494 { 00495 public: 00500 IMPORT_C void SizeChanged(); 00505 IMPORT_C void CreateItemDrawerL(); 00510 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00511 private: 00512 void SizeChangedL(); 00513 }; 00514 00524 class CAknDoubleNumberStyleListBox : public CEikFormattedCellListBoxTypedef 00525 { 00526 public: 00527 IMPORT_C CAknDoubleNumberStyleListBox(); 00532 IMPORT_C void SizeChanged(); 00537 IMPORT_C TSize MinimumSize(); 00542 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00543 private: 00544 void SizeChangedL(); 00545 }; 00546 00551 class CAknDoubleTimeStyleListBox : public CEikFormattedCellListBoxTypedef 00552 { 00553 public: 00554 IMPORT_C CAknDoubleTimeStyleListBox(); 00559 IMPORT_C void SizeChanged(); 00564 IMPORT_C TSize MinimumSize(); 00569 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00570 private: 00571 void SizeChangedL(); 00572 }; 00573 00586 class CAknDoubleLargeStyleListBox : public CEikFormattedCellListBoxTypedef 00587 { 00588 public: 00589 IMPORT_C CAknDoubleLargeStyleListBox(); 00594 IMPORT_C void SizeChanged(); 00599 IMPORT_C TSize MinimumSize(); 00604 IMPORT_C virtual void CreateItemDrawerL(); 00609 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00610 private: 00611 void SizeChangedL(); 00612 }; 00613 00614 00623 class CAknDoubleGraphicStyleListBox : public CEikFormattedCellListBoxTypedef 00624 { 00625 public: 00626 IMPORT_C CAknDoubleGraphicStyleListBox(); 00631 IMPORT_C void SizeChanged(); 00636 IMPORT_C TSize MinimumSize(); 00641 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00642 private: 00643 void SizeChangedL(); 00644 }; 00645 00646 00655 class CAknDouble2GraphicStyleListBox : public CEikFormattedCellListBoxTypedef 00656 { 00657 public: 00658 IMPORT_C CAknDouble2GraphicStyleListBox(); 00663 IMPORT_C void SizeChanged(); 00668 IMPORT_C TSize MinimumSize(); 00669 00674 IMPORT_C void CreateItemDrawerL(); 00679 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00680 private: 00681 void SizeChangedL(); 00682 }; 00683 00684 00695 class CAknDouble2LargeStyleListBox : public CEikFormattedCellListBoxTypedef 00696 { 00697 public: 00698 IMPORT_C CAknDouble2LargeStyleListBox(); 00703 IMPORT_C void SizeChanged(); 00708 IMPORT_C TSize MinimumSize(); 00713 IMPORT_C virtual void CreateItemDrawerL(); 00718 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00719 private: 00720 void SizeChangedL(); 00721 }; 00722 00723 00739 class CAknDouble2GraphicLargeGraphicStyleListBox : public CEikFormattedCellListBoxTypedef 00740 { 00741 public: 00742 IMPORT_C CAknDouble2GraphicLargeGraphicStyleListBox(); 00747 IMPORT_C void SizeChanged(); 00752 IMPORT_C TSize MinimumSize(); 00757 IMPORT_C virtual void CreateItemDrawerL(); 00762 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00763 private: 00764 void SizeChangedL(); 00765 }; 00766 00767 00776 class CAknFormDoubleGraphicStyleListBox : public CAknDoubleGraphicStyleListBox 00777 { 00778 public: 00783 IMPORT_C void SizeChanged(); 00788 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00789 private: 00790 void SizeChangedL(); 00791 }; 00792 typedef CAknFormDoubleGraphicStyleListBox CAknSingleBigHeadingGraphicListBox; 00793 00801 class CAknFormDoubleStyleListBox : public CAknDoubleStyleListBox 00802 { 00803 public: 00808 IMPORT_C void SizeChanged(); 00813 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00814 private: 00815 void SizeChangedL(); 00816 }; 00817 typedef CAknFormDoubleStyleListBox CAknSingleBigHeadingListBox; 00818 00819 00830 class CAknSettingStyleListBox : public CEikSettingsListBoxTypedef 00831 { 00832 public: 00833 IMPORT_C CAknSettingStyleListBox(); 00838 IMPORT_C void SizeChanged(); 00843 IMPORT_C TSize MinimumSize(); 00848 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00849 private: 00850 void SizeChangedL(); 00851 }; 00852 00863 class CAknSettingNumberStyleListBox : public CEikSettingsListBoxTypedef 00864 { 00865 public: 00866 IMPORT_C CAknSettingNumberStyleListBox(); 00871 IMPORT_C void SizeChanged(); 00876 IMPORT_C TSize MinimumSize(); 00881 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00882 private: 00883 void SizeChangedL(); 00884 }; 00885 00886 00887 // 00888 // Use the popup styles with CAknPopupList and CAknListQueryDialog 00889 // 00890 00899 class CAknSinglePopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox> 00900 { 00901 public: 00906 IMPORT_C void SizeChanged(); 00911 IMPORT_C TSize MinimumSize(); 00912 protected: 00917 IMPORT_C virtual void CreateItemDrawerL(); 00922 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00923 private: 00924 void SizeChangedL(); 00925 }; 00926 00935 class CAknSingleGraphicPopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox> 00936 { 00937 public: 00942 IMPORT_C void SizeChanged(); 00947 IMPORT_C TSize MinimumSize(); 00948 protected: 00953 IMPORT_C virtual void CreateItemDrawerL(); 00958 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00959 private: 00960 void SizeChangedL(); 00961 }; 00962 00972 class CAknSingleGraphicBtPopupMenuStyleListBox : public CAknSingleGraphicPopupMenuStyleListBox 00973 { 00974 public: 00979 IMPORT_C virtual void SizeChanged(); 00984 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00985 }; 00986 00994 class CAknSingleHeadingPopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox> 00995 { 00996 public: 00997 IMPORT_C CAknSingleHeadingPopupMenuStyleListBox(); 01002 IMPORT_C void SizeChanged(); 01007 IMPORT_C TSize MinimumSize(); 01012 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 01013 protected: 01018 IMPORT_C virtual void CreateItemDrawerL(); 01019 private: 01020 void SizeChangedL(); 01021 }; 01022 01023 01033 class CAknSingleGraphicHeadingPopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox> 01034 01035 { 01036 public: 01037 IMPORT_C CAknSingleGraphicHeadingPopupMenuStyleListBox(); 01042 IMPORT_C void SizeChanged(); 01047 IMPORT_C TSize MinimumSize(); 01052 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 01053 protected: 01058 IMPORT_C virtual void CreateItemDrawerL(); 01059 private: 01060 void SizeChangedL(); 01061 }; 01062 01070 class CAknDoublePopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox> 01071 { 01072 public: 01077 IMPORT_C void SizeChanged(); 01082 IMPORT_C TSize MinimumSize(); 01087 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 01088 protected: 01093 IMPORT_C virtual void CreateItemDrawerL(); 01094 private: 01095 void SizeChangedL(); 01096 }; 01097 01105 class CAknSinglePopupSubmenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox> 01106 { 01107 public: 01112 IMPORT_C void SizeChanged(); 01117 IMPORT_C TSize MinimumSize(); 01122 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 01123 private: 01124 void SizeChangedL(); 01125 }; 01126 01127 01137 class CAknDoubleLargeGraphicPopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox> 01138 { 01139 public: 01144 IMPORT_C void SizeChanged(); 01149 IMPORT_C TSize MinimumSize(); 01154 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 01155 protected: 01160 IMPORT_C virtual void CreateItemDrawerL(); 01161 private: 01162 void SizeChangedL(); 01163 }; 01164 01165 01173 class CAknDouble2PopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox> 01174 { 01175 public: 01180 IMPORT_C void SizeChanged(); 01185 IMPORT_C TSize MinimumSize(); 01190 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 01191 protected: 01196 IMPORT_C virtual void CreateItemDrawerL(); 01197 private: 01198 void SizeChangedL(); 01199 }; 01200 01201 01210 class CAknSingle2GraphicPopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox> 01211 { 01212 public: 01213 IMPORT_C CAknSingle2GraphicPopupMenuStyleListBox(); 01218 IMPORT_C void SizeChanged(); 01223 IMPORT_C TSize MinimumSize(); 01224 protected: 01229 IMPORT_C virtual void CreateItemDrawerL(); 01234 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 01235 private: 01236 void SizeChangedL(); 01237 }; 01238 01239 01240 01248 class CAknDoubleGraphicPopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox> 01249 { 01250 public: 01251 IMPORT_C CAknDoubleGraphicPopupMenuStyleListBox(); 01256 IMPORT_C void SizeChanged(); 01261 IMPORT_C TSize MinimumSize(); 01262 protected: 01267 IMPORT_C virtual void CreateItemDrawerL(); 01272 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 01273 private: 01274 void SizeChangedL(); 01275 }; 01276 01277 // --- end of popup styles 01278 01279 01280 01288 class CAknSetStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox> 01289 { 01290 public: 01291 IMPORT_C void ConstructWithWindowL(const CCoeControl *aParent, TInt aFlags); 01296 IMPORT_C void SizeChanged(); 01301 IMPORT_C TSize MinimumSize(); 01302 IMPORT_C void Draw(const TRect& aRect) const; 01303 IMPORT_C TTypeUid::Ptr MopSupplyObject(TTypeUid aId); 01304 01309 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 01310 01311 protected: 01316 IMPORT_C virtual void CreateItemDrawerL(); 01321 IMPORT_C CListBoxView *MakeViewClassInstanceL(); 01322 private: 01323 void SizeChangedL(); 01324 }; 01325 01333 class CAknFormGraphicStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox> 01334 { 01335 public: 01336 IMPORT_C void ConstructWithWindowL(const CCoeControl *aParent, TInt aFlags); 01341 IMPORT_C void SizeChanged(); 01346 IMPORT_C TSize MinimumSize(); 01351 IMPORT_C virtual void CreateItemDrawerL(); 01354 IMPORT_C virtual TInt AdjustRectHeightToWholeNumberOfItems(TRect &aRect) const; 01360 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 01361 private: 01362 void SizeChangedL(); 01363 }; 01364 01365 class CAknFormGraphicWideStyleListBox : public CAknFormGraphicStyleListBox 01366 { 01367 public: 01368 IMPORT_C void SizeChanged(); 01369 IMPORT_C TSize MinimumSize(); 01370 // From CCoeControl 01371 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 01372 private: 01373 void SizeChangedL(); 01374 }; 01375 01376 01395 class CAknPinbStyleGrid : public CAknSelectionGridTypedef 01396 { 01397 public: 01402 IMPORT_C void SizeChanged(); 01407 IMPORT_C TSize MinimumSize(); 01408 01413 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 01414 01415 private: 01416 void SizeChangedL(); 01417 }; 01418 01419 01424 class CAknQdialStyleGrid : public CAknSelectionGridTypedef 01425 { 01426 public: 01431 IMPORT_C virtual void SizeChanged(); 01436 IMPORT_C TSize MinimumSize(); 01437 01442 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 01443 01444 private: 01445 void SizeChangedL(); 01446 }; 01447 01452 class CAknCaleMonthStyleGrid : public CAknSelectionGridTypedef 01453 { 01454 public: 01459 IMPORT_C void SizeChanged(); 01464 IMPORT_C TSize MinimumSize(); 01469 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 01470 01471 private: 01472 void SizeChangedL(); 01473 }; 01474 01475 01476 01477 // 01478 // 01479 // Here we have itemdrawer/view modifications needed by the lists 01480 // 01481 // 01482 01483 // This class is to keep drawing routines that depend on avkon and which we cannot place to 01484 // eikstd or uikon because of that. 01485 01490 class CAknColumnListBoxView : public CColumnListBoxView 01491 { 01492 public: 01493 01498 IMPORT_C void EnableFindEmptyList(); 01499 01504 IMPORT_C void SetFindEmptyListState(TBool aUsedWithFind); 01505 01510 IMPORT_C void DrawEmptyList(const TRect &aClientRect) const; 01511 01518 IMPORT_C virtual void CalcBottomItemIndex(); 01519 TBool GetFindEmptyListState(); 01520 private: // overridden from CListBoxView 01521 IMPORT_C virtual TAny* Reserved_1(); 01522 private: 01523 TBool iEmptyListWithFind; 01524 }; 01525 01530 class CAknSetStyleListBoxView : public CFormattedCellListBoxView 01531 { 01532 public: 01533 IMPORT_C void DrawEmptyList(const TRect &aClientRect) const ; 01534 private: // overridden from CListBoxView 01535 IMPORT_C virtual TAny* Reserved_1(); 01536 }; 01537 01538 01543 class CSingleHeadingStyleView : public CAknColumnListBoxView 01544 { 01545 public: 01546 IMPORT_C void Draw(const TRect* ) const; 01547 IMPORT_C void DrawEmptyList(const TRect& aClientRect) const; 01548 private: // overridden from CListBoxView 01549 IMPORT_C virtual TAny* Reserved_1(); 01550 }; 01551 01555 class CSingleHeadingStyleItemDrawer : public CColumnListBoxItemDrawer 01556 { 01557 public: 01558 IMPORT_C CSingleHeadingStyleItemDrawer(MTextListBoxModel* aTextListBoxModel, const CFont* aFont, CColumnListBoxData* aColumnData); 01559 IMPORT_C ~CSingleHeadingStyleItemDrawer(); 01560 01561 IMPORT_C virtual void DrawItem(TInt aItemIndex, TPoint aItemRectPos, TBool aItemIsSelected, TBool aItemIsCurrent, TBool aViewIsEmphasized, TBool aViewIsDimmed) const; 01562 01563 public: 01564 IMPORT_C void SetTopItemIndex(TInt aTop); 01565 01566 private: 01567 TInt iTopItemIndex; 01568 CCoeEnv* iCoeEnv; 01569 }; 01570 01574 class CDoubleLargeStyleItemDrawer : public CFormattedCellListBoxItemDrawer 01575 { 01576 public: 01577 IMPORT_C CDoubleLargeStyleItemDrawer(MTextListBoxModel* aTextListBoxModel, const CFont* aFont, CFormattedCellListBoxData* aFormattedCellData, CEikListBox *aListBox); 01578 IMPORT_C void DrawItem(TInt aItemIndex, TPoint aItemRectPos, TBool aItemIsSelected, TBool aItemIsCurrent, TBool aViewIsEmphasized, TBool aViewIsDimmed) const; 01579 private: 01580 IMPORT_C void CFormattedCellListBoxItemDrawer_Reserved(); 01581 private: 01582 CEikListBox *iListBox_tmp; 01583 }; 01584 01585 01589 class CWordWrappedFormattedCellItemDrawer : public CFormattedCellListBoxItemDrawer 01590 { 01591 public: 01592 IMPORT_C CWordWrappedFormattedCellItemDrawer(MTextListBoxModel* aTextListBoxModel, const CFont* aFont, CFormattedCellListBoxData* aFormattedCellData, CEikListBox *aListBox, TInt aSubCell, TInt aSubCell2); 01593 IMPORT_C void DrawItem(TInt aItemIndex, TPoint aItemRectPos, TBool aItemIsSelected, TBool aItemIsCurrent, TBool aViewIsEmphasized, TBool aViewIsDimmed) const; 01594 IMPORT_C void DrawItemText(TInt aItemIndex, 01595 const TRect &aItemTextRect, 01596 TBool aItemIsCurrent, 01597 TBool, 01598 TBool aItemIsSelected) const; 01599 private: 01600 IMPORT_C void CFormattedCellListBoxItemDrawer_Reserved(); 01601 private: 01602 TInt iSubCell, iSubCell2; 01603 }; 01604 01605 // 01606 // 01607 // here starts section for building new listboxes. 01608 // 01609 01610 // 01611 // This is helper class that makes the conversion between European LAF and 01612 // different listbox itemdrawer implementations. 01613 // 01614 // Notice, this CEikListBox is a good friend with this class. 01615 // 01616 // 01617 01637 class AknListBoxLayouts 01638 { 01639 public: 01643 IMPORT_C static void SetupStandardListBox(CEikListBox& aListBox); 01648 static void SetupGridPos(CAknGrid& aGrid, 01649 const TAknWindowLineLayout &aLayout); 01653 IMPORT_C static void SetupGridPos(CAknGrid& aGrid, 01654 TInt l, 01655 TInt t, 01656 TInt /*r*/, 01657 TInt /*b*/, 01658 TInt W, 01659 TInt H); 01663 IMPORT_C static void SetupListboxPos(CEikListBox& aListBox, 01664 TInt startx, 01665 TInt starty, 01666 TInt, 01667 TInt, 01668 TInt /*width*/, 01669 TInt height); 01670 01671 /* 01672 * non-exported new internal version 01673 */ 01674 static void SetupListboxPosL( CEikListBox& aListBox, 01675 const TAknWindowLineLayout& aLayout ); // layout of first item 01676 01680 IMPORT_C static void SetupStandardColumnListbox(CColumnListBoxItemDrawer* aItemDrawer); 01684 IMPORT_C static void SetupStandardFormListbox(CFormattedCellListBoxItemDrawer* aItemDrawer); 01688 IMPORT_C static void SetupStandardGrid(CAknGrid& aGrid); 01689 01693 IMPORT_C static void SetupColumnGfxCell(CEikListBox& aListBox, 01694 CColumnListBoxItemDrawer* aItemDrawer, 01695 TInt index, 01696 TInt l, 01697 TInt t, 01698 TInt r, 01699 TInt b, 01700 TInt W, 01701 TInt H, 01702 TInt startx, 01703 TInt endx); 01704 01708 IMPORT_C static void SetupColumnTextCell(CEikListBox& aListBox, 01709 CColumnListBoxItemDrawer* aItemDrawer, 01710 TInt index, 01711 const CFont *font, 01712 TInt /*C*/, 01713 TInt lm, 01714 TInt rm, 01715 TInt B, 01716 TInt /*W*/, 01717 CGraphicsContext::TTextAlign aAlign, 01718 TInt startx, 01719 TInt endx); 01723 IMPORT_C static void SetupColumnTextCell(CEikListBox& aListBox, 01724 CColumnListBoxItemDrawer* aItemDrawer, 01725 TInt index, 01726 const TAknTextLineLayout &aLayout, 01727 TInt startx, 01728 TInt endx); // use with aknlayoutcompiler 01729 01733 IMPORT_C static void SetupFormGfxCell(CEikListBox& aListBox, 01734 CFormattedCellListBoxItemDrawer* aItemDrawer, 01735 TInt index, 01736 TInt l, 01737 TInt t, 01738 TInt /*r*/, 01739 TInt /*b*/, 01740 TInt W, 01741 TInt H, 01742 TPoint p1, 01743 TPoint p2); 01744 01745 01753 IMPORT_C static void SetupGridFormGfxCell(CAknGrid& aListBox, 01754 CFormattedCellListBoxItemDrawer* aItemDrawer, 01755 TInt index, 01756 TInt l, 01757 TInt t, 01758 TInt /*r*/, 01759 TInt /*b*/, 01760 TInt W, 01761 TInt H, 01762 TPoint aP1, 01763 TPoint aP2); 01773 IMPORT_C static void SetupGridFormGfxCell(CAknGrid& aGrid, 01774 CFormattedCellListBoxItemDrawer* aItemDrawer, 01775 TInt aIndex, 01776 const TAknWindowLineLayout& aLine, 01777 TPoint& aP1, 01778 TPoint& aP2); 01779 01783 IMPORT_C static void SetupFormTextCell(CEikListBox& aListBox, 01784 CFormattedCellListBoxItemDrawer* aItemDrawer, 01785 TInt index, 01786 const CFont *font, 01787 TInt /*C*/, 01788 TInt lm, 01789 TInt /*rm*/, 01790 TInt B, 01791 TInt W, 01792 CGraphicsContext::TTextAlign aAlign, 01793 TPoint p1, 01794 TPoint p2); 01801 IMPORT_C static void SetupFormAntiFlickerTextCell(CEikListBox& aListBox, 01802 CFormattedCellListBoxItemDrawer* aItemDrawer, 01803 TInt index, 01804 const CFont *font, 01805 TInt /*C*/, 01806 TInt lm, 01807 TInt /*rm*/, 01808 TInt B, 01809 TInt W, 01810 CGraphicsContext::TTextAlign aAlign, 01811 TPoint p1, 01812 TPoint p2); 01813 01817 IMPORT_C static void SetupFormTextCell(CEikListBox& aListBox, 01818 CFormattedCellListBoxItemDrawer* aItemDrawer, 01819 TInt index, 01820 const TAknTextLineLayout &aLayout, 01821 const TPoint &p1, 01822 const TPoint &p2); // use with layout compiler 01828 IMPORT_C static void SetupFormAntiFlickerTextCell(CEikListBox& aListBox, 01829 CFormattedCellListBoxItemDrawer* aItemDrawer, 01830 TInt index, 01831 const TAknTextLineLayout &aLayout, 01832 const TPoint &p1, 01833 const TPoint &p2); // use with layout compiler 01834 01838 IMPORT_C static void SetupColumnGfxCell(CEikListBox& aListBox, 01839 CColumnListBoxItemDrawer* aItemDrawer, 01840 TInt aIndex, 01841 const TAknWindowLineLayout &aLayout, 01842 TInt startx, 01843 TInt endx); 01844 01848 IMPORT_C static void SetupFormGfxCell(CEikListBox& aListBox, 01849 CFormattedCellListBoxItemDrawer* aItemDrawer, 01850 TInt index, 01851 const TAknWindowLineLayout &aLayout, 01852 const TPoint &p1, 01853 const TPoint &p2); 01854 01855 01859 IMPORT_C static void SetupListboxPos(CEikListBox& aListBox, 01860 const TAknWindowLineLayout &aLayout); 01861 01862 01863 }; 01864 01870 class AknListBoxUtils 01871 { 01872 public: 01882 IMPORT_C static void HandleItemRemovalAndPositionHighlightL(CEikListBox *aListBox, TInt aValueOfCurrentItemIndexBeforeRemoval, TBool aCurrentItemWasRemoved); 01883 01893 IMPORT_C static void HandleItemRemovalAndPositionHighlightL(CEikListBox *aListBox, TInt aValueOfCurrentItemIndexBeforeRemoval, CArrayFix<TInt> &aIndexesToRemovedItems); 01894 01904 IMPORT_C static TBool ListBoxLinesShown(MAknsSkinInstance *aInstance, MAknsControlContext *aCc); 01905 }; 01906 01907 #endif 01908 01909 01910 01911 01912 01913