chxavinfolistpopup.cpp
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:2k
源码类别:

Symbian

开发平台:

Visual C++

  1. /*============================================================================*
  2.  *
  3.  * (c) 1995-2002 RealNetworks, Inc. Patents pending. All rights reserved.
  4.  *
  5.  *============================================================================*/
  6. #include "chxavmisc.h"
  7. #include "chxavinfolist.h"
  8. #include "chxavcleanupstack.h"
  9. #include "chxavinfolistpopup.h"
  10. ///////////////////////////////////
  11. // ctor
  12. CHXAvInfoListPopup::CHXAvInfoListPopup()
  13. : m_pDisplayLines(0)
  14. {
  15. }
  16. ///////////////////////////////////
  17. // dtor
  18. CHXAvInfoListPopup::~CHXAvInfoListPopup()
  19. {
  20.     HX_DELETE(m_pDisplayLines);  
  21. }
  22. ///////////////////////////////////
  23. //
  24. void CHXAvInfoListPopup::ConstructL(const TDesC& title, CHXAvInfoList* pList)
  25. {
  26.     SetTitleL(title);
  27.     m_pListBox = new (ELeave) CAknSingleHeadingPopupMenuStyleListBox;
  28.     m_pDisplayLines = pList; // assume ownership
  29. }
  30. ///////////////////////////////////
  31. //
  32. void CHXAvInfoListPopup::ConstructL(const TDesC& title, const MDesCArray* pCaptions, const MDesCArray* pFields)
  33. {
  34.     CHXAvInfoList* pList = new (ELeave) CHXAvInfoList();
  35.     pList->AddLinesL(pCaptions, pFields);
  36.     ConstructL(title, pList);
  37. }
  38. ///////////////////////////////////
  39. //
  40. void CHXAvInfoListPopup::SetTitleL(const TDesC& title)
  41. {
  42.     m_spTitle = title.AllocL();
  43. }
  44. ///////////////////////////////////
  45. // run then delete this on exit
  46. void CHXAvInfoListPopup::ExecuteLD()
  47. {
  48.     // delete this on exit
  49.     AUTO_PUSH_POP_DEL(this);
  50.     CAknPopupList* pPopup = CAknPopupList::NewL(m_pListBox.Ptr(), 
  51.                                                 R_AVKON_SOFTKEYS_OK_EMPTY, //R_AVP_SOFTKEYS_OK, 
  52.                                                 AknPopupLayouts::EMenuGraphicHeadingWindow);
  53.     // save cleanupstack init until LD
  54.     {
  55.         AUTO_PUSH_POP(pPopup);
  56.         TInt flags = EAknListBoxViewerFlags;
  57.         m_pListBox->ConstructL(pPopup, flags);
  58.         m_pListBox->CreateScrollBarFrameL(ETrue);   
  59.         m_pListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
  60.         if( m_spTitle )
  61.         {
  62.             pPopup->SetTitleL(*m_spTitle);
  63.         }
  64.         // transfer ownership of item array to the list box
  65.         m_pListBox->Model()->SetItemTextArray(m_pDisplayLines); 
  66.         m_pDisplayLines = 0;
  67.     }
  68.     pPopup->ExecuteLD(); // self-destroying
  69.     
  70. }