chxavsettingsview.cpp
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:5k
源码类别:

Symbian

开发平台:

C/C++

  1. /************************************************************************
  2.  * chxavsettingsview.h
  3.  * -------------------
  4.  *
  5.  * Synopsis:
  6.  * Contains the declaration of the setting view, which manages prefs.
  7.  *
  8.  * Target:
  9.  * Symbian OS
  10.  *
  11.  *
  12.  * (c) 1995-2003 RealNetworks, Inc. Patents pending. All rights reserved.
  13.  *
  14.  ************************************************************************/
  15. // Symbian includes...
  16. #include <aknnavide.h>
  17. #include <aknconsts.h>
  18. #include <aknselectionlist.h>
  19. #include <aknviewappui.h>
  20. // Includes from this project...
  21. #include "comptr_traits.h"
  22. #include "chxavplayer.h"
  23. #include "chxavmisc.h"
  24. #include "chxavplayerui.h"
  25. #include "chxavsettingslist.h"
  26. #include "chxavsettingsview.h"
  27. #include "chxavsettingsviewwindow.h"
  28. #include "chxavselectsettingsview.h"
  29. #include "hxsym_debug.h"
  30. #include "hxapihelp.h"
  31. #include "realplayer.hrh"
  32. #include "chxavconfignames.h"
  33. ///////////////////////////////////
  34. //
  35. CHXAvSettingsView::CHXAvSettingsView(TInt idxView, CHXAvPlayerUI* pPlayerUI)
  36. : CHXAvViewBase(idxView, pPlayerUI)
  37. , m_idxPendingActivePage(0)
  38. , m_pPlayerUi(pPlayerUI)
  39.     HX_ASSERT(m_pPlayerUi);
  40. }
  41. CHXAvSettingsView::~CHXAvSettingsView()
  42. {
  43. }
  44. ////////////////////////////////////////////////////////////
  45. //
  46. void CHXAvSettingsView::ConstructL()
  47. {
  48.     BaseConstructL(R_AVP_SETTINGS_VIEW_INFO); 
  49. }
  50. ////////////////////////////////////////////////////////////////
  51. //
  52. void CHXAvSettingsView::SaveChangesL()
  53. {
  54.     DPRINTF(SYMP_INFO, ("CHXAvSettingsView::SaveChangesL(): updating config filen"));
  55.     m_spWindow->ApplyChangesL();
  56. }
  57. ////////////////////////////////////////////////////////////////
  58. // exit the view
  59. void CHXAvSettingsView::DoBackL()
  60. {
  61.     // prepare the select settings view with the index to initially show
  62.     CAknView* pView = m_playerUI->View(TUid::Uid(CHXAvPlayerUI::VID_SelectSettingsView));
  63.     HX_ASSERT(pView);
  64.     CHXAvSelectSettingsView* pSelectSettingsView = static_cast<CHXAvSelectSettingsView*>(pView);
  65.     TInt idxCurrent = m_spWindow->GetCurrentPageIndex();
  66.     pSelectSettingsView->ResetCurrentIndex(idxCurrent);
  67.     SaveChangesL();
  68.     AppUi()->HandleCommandL(EAknSoftkeyBack);
  69. }
  70. ///////////////////////////////////
  71. //
  72. void CHXAvSettingsView::SetActivePageIndexL(TInt idxPage)
  73. {
  74.     if( m_spWindow )
  75.     {
  76.         m_spWindow->ShowPageL(idxPage);
  77.     }
  78.     else
  79.     {
  80.         // remember this until next time we show window
  81.         m_idxPendingActivePage = idxPage;
  82.     }
  83. }
  84. ///////////////////////////////////
  85. //
  86. CCoeControl* CHXAvSettingsView::CreateViewWindowForActivatingViewL()
  87. {
  88.     DPRINTF(SYMP_INFO, ("CHXAvSettingsView::CreateViewWindowForActivatingViewL()n"));
  89.     m_pPlayerUi->SetPrefChangeObserver(this);
  90.     if( !m_spWindow )
  91.     {
  92.         m_spWindow = new (ELeave) CHXAvSettingsViewWindow(this);
  93.         m_spWindow->ConstructL(ClientRect(), m_idxPendingActivePage);
  94.         m_idxPendingActivePage = 0;
  95.     }
  96.     return m_spWindow.raw_ptr();
  97. }
  98. ////////////////////////////////////////////////////////////////////
  99. //
  100. void CHXAvSettingsView::UpdateViewStateL()
  101. {
  102.     m_spWindow->UpdateTopAndBottomL();
  103. }
  104. ///////////////////////////////////
  105. //
  106. void CHXAvSettingsView::FinishViewDeactivateL()
  107. {
  108.     DPRINTF(SYMP_INFO, ("CHXAvSettingsView::FinishViewDeactivateL()n"));
  109.     m_pPlayerUi->SetPrefChangeObserver(0);
  110.     m_spWindow = 0;
  111.     m_idxPendingActivePage = 0;
  112. }
  113. ///////////////////////////////////
  114. //
  115. void
  116. CHXAvSettingsView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
  117. {
  118.     if(R_AVP_SETTINGS_MENU_PANE == aResourceId)
  119.     {
  120.         CHXAvMisc::InitHelpMenuItem(aMenuPane);
  121.     }
  122. }
  123. void CHXAvSettingsView::OnPrefsChanged()
  124. {
  125.     // refresh current page
  126.     m_spWindow->ShowPageL(m_spWindow->GetCurrentPageIndex());
  127. }
  128. ////////////////////////////////////////////////////////////////
  129. //
  130. // this view gets first crack at command; unknowns forwarded to appui
  131. //
  132. void CHXAvSettingsView::HandleCommandL(TInt command)
  133. {
  134.     DPRINTF(SYMP_INFO, ("CHXAvSettingsView::HandleCommandL(%d)n", command));
  135.     switch(command)
  136.     {
  137.     case EAknSoftkeyBack:
  138.     case EAknSoftkeyOk:
  139. DoBackL();
  140. break;
  141.     case EAknSoftkeyExit:
  142.     case EAknCmdExit:// framework tranlates EAknCmdExit to EEikCmdExit
  143.     case EEikCmdExit: 
  144.         SaveChangesL();
  145.         AppUi()->HandleCommandL(command);
  146.         break;
  147.     case EChange:
  148. m_spWindow->EditCurrentItemL();
  149. break;
  150.     default:
  151. AppUi()->HandleCommandL(command);
  152. break;
  153.     }
  154. }