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

Symbian

开发平台:

C/C++

  1. /*============================================================================*
  2.  *
  3.  * (c) 1995-2002 RealNetworks, Inc. Patents pending. All rights reserved.
  4.  *
  5.  *============================================================================*/
  6. //
  7. // central repository of information about the state, particularly
  8. // relating to power and communications, of the Symbian OS phone
  9. //
  10. // each event has a UID
  11. // 
  12. // see "Using the System Agent interface" in docs; also "SACLS.H"
  13. //
  14. // e.g., these variables can be queried or watched:
  15. //
  16. // KUidNetworkStatus
  17. // KUidNetworkStrength
  18. // KUidIrdaStatus
  19. // KUidCurrentCall
  20. //
  21. // *** KUidCurrentCall event types are:
  22. //
  23. // ESACallNone,
  24. // ESACallVoice,
  25. // ESACallFax,
  26. // ESACallData,
  27. // ESACallAlerting,
  28. // ESACallRinging,
  29. // ESACallAlternating
  30. //
  31. #include "chxsymsysagentwatcher.h"
  32. #include "hxsym_leaveutil.h"
  33. #include "chxavutil.h"
  34. ///////////////////////////////////
  35. // ctor
  36. CHXSymSysAgentWatcher::CHXSymSysAgentWatcher()
  37. {
  38. }
  39. ///////////////////////////////////
  40. // dtor
  41. CHXSymSysAgentWatcher::~CHXSymSysAgentWatcher()
  42. {
  43.     StopWatching();
  44.     m_sa.Close();
  45. }
  46. ////////////////////////////////////////////////////////
  47. // event defined in sacls.h 
  48. void CHXSymSysAgentWatcher::ConstructL(const TUid& idEvent, TInt activePriority)
  49. {
  50.     BaseConstructL(activePriority);
  51.     HXSYM_LEAVE_IF_ERR(m_sa.Connect());
  52.     // type of event we are watching (e.g., phone event)
  53.     m_event.SetUid(idEvent);
  54. }
  55. ////////////////////////////////////////////////////////
  56. //
  57. void CHXSymSysAgentWatcher::DoCancelRequest(const CHXAvActiveCmplPtr& spActive)
  58. {
  59.     m_sa.NotifyEventCancel();
  60. }
  61. ////////////////////////////////////////////////////////
  62. // issue request for event notification:
  63. //
  64. // when event occurs, use GetSaEvent() to get event info
  65. //
  66. void CHXSymSysAgentWatcher::DoIssueRequest(const CHXAvActiveCmplPtr& spActive)
  67. {
  68.     m_event.SetRequestStatus(spActive->Status());
  69.     // request notification when state of variable changes
  70.     m_sa.NotifyOnEvent(m_event);
  71. }
  72. ////////////////////////////////////////////////////////
  73. // primarily so you can call State() to get current state
  74. // of a variable after an event occurs
  75. //
  76. const TSysAgentEvent& CHXSymSysAgentWatcher::GetSaEvent() const
  77. {
  78.     return m_event;
  79. }
  80. ////////////////////////////////////////////////////////
  81. // primarily so you can query current values (GetState, GetStates)
  82. // and possibly set event buffering
  83. //
  84. RSystemAgent& CHXSymSysAgentWatcher::GetSa()
  85. {
  86.     return m_sa;
  87. }