guitask.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #ifndef __GUI_TASK_H
  2. #define __GUI_TASK_H
  3. #pragma once
  4. #include "SpBase.h"
  5. #include "SpFSM.h"
  6. struct EntityEntry
  7. {
  8. CSimpleStringA Name;
  9. CSimpleStringA ModuleName;
  10. int Type;
  11. int State;
  12. int Id;
  13. int Pid;
  14. int DevelopID;
  15. int DebugLevel;
  16. static const char *GetTypeName(int type)
  17. {
  18. static const char *_names[] = {
  19. "auto",
  20. "manual"
  21. };
  22. return _names[type % ARRAYSIZE(_names)];
  23. }
  24. static const char *GetStateName(int state)
  25. {
  26. static const char *_names[] = {
  27. "NoStart",
  28. "Starting",
  29. "Idle",
  30. "Busy",
  31. "Pause",
  32. "UnLoading",
  33. "Lost",
  34. "Close",
  35. "Killed",
  36. };
  37. return _names[state % ARRAYSIZE(_names)];
  38. }
  39. static const char *GetErrorName(ErrorCodeEnum Error)
  40. {
  41. return "Unknown Error";
  42. }
  43. };
  44. struct StartMenuEntry
  45. {
  46. CSimpleStringA strEntity;
  47. CSimpleStringA strCmdLine;
  48. };
  49. class GUITask : public ICallbackListener, public IEntityStateListener, public ILogListener
  50. {
  51. public:
  52. GUITask();
  53. virtual ~GUITask();
  54. ErrorCodeEnum Kickoff(CEntityBase *pEntity);
  55. ErrorCodeEnum Close();
  56. ErrorCodeEnum EnterHighLevelMode();
  57. ErrorCodeEnum AsyncStartEntity(const char *entity_name, const char *cmdline, void *pData);
  58. ErrorCodeEnum AsyncStopEntity(const char *entity_name, void *pData);
  59. ErrorCodeEnum AsyncPauseEntity(const char *entity_name, void *pData);
  60. ErrorCodeEnum AsyncContinueEntity(const char *entity_name, void *pData);
  61. ErrorCodeEnum AsyncTerminateEntity(const char *entity_name, void *pData);
  62. ErrorCodeEnum GetAllEntity(CAutoArray<EntityEntry> &Entities);
  63. ErrorCodeEnum GetEntity(const char *entity_name, EntityEntry &e);
  64. ErrorCodeEnum GetCustomizeStartMenuList(CAutoArray<StartMenuEntry> &StartItems);
  65. ErrorCodeEnum SubscribeLog();
  66. ErrorCodeEnum UnSubscribeLog();
  67. inline bool HasSubscibeLog(){return (__int64)m_logSubID != 0;}
  68. ErrorCodeEnum SetDebugLevel(const char *pszEntity, int nLevel);
  69. ErrorCodeEnum GetShellDebugLevel(int &nLevel);
  70. ErrorCodeEnum GetFrameworkInfo(CSimpleStringA &strInfo);
  71. ErrorCodeEnum ReqFrameworkQuit(bool bRebootOS);
  72. ErrorCodeEnum BeginInitialize();
  73. ErrorCodeEnum ShowMobileDialog();
  74. ErrorCodeEnum DeleteKeySet();
  75. ErrorCodeEnum BeginAccessAuth();
  76. CEntityBase* GetEntity();
  77. ErrorCodeEnum ShowMaintainView(bool bShow, bool bHighLevel);
  78. ErrorCodeEnum SetWindowPosition(bool bTop);
  79. ErrorCodeEnum ShowBeginInit(bool bShow);
  80. ErrorCodeEnum EnableMobileDialMenu(bool bEnable);
  81. void CloseSoftKeyboard();
  82. ErrorCodeEnum ShowBlueScreen();
  83. ErrorCodeEnum ShowFatalError();
  84. ErrorCodeEnum HideBlueScreen();
  85. ErrorCodeEnum ShowOutputConsole();
  86. ErrorCodeEnum CloseOutputConsole();
  87. // IEntityStateListener
  88. virtual void OnEntityStateHook(const char *pszEntityName,const char *pszTriggerEntity,EntityStateEnum eState,EntityStateEnum eLastState);
  89. virtual void OnCeateConnection(const char *pszCallerEntity,const char *pszServiceEntity) {}
  90. virtual void OnCloseConnection(const char *pszCallerEntity,const char *pszServiceEntity) {}
  91. virtual void OnUserStateHook(const char *pszEntityName,DWORD dwState,DWORD dwLastState) {
  92. //Dbg("OnUserStateHook: %s, %d -> %d", pszEntityName, dwLastState, dwState);
  93. }
  94. // ICallbackListener
  95. virtual void OnAnswer(CSmartPointer<IAsynWaitSp> pAsynWaitSp);
  96. // ILogListener
  97. virtual void OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
  98. const DWORD dwSysError,const DWORD dwUserCode,const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
  99. const CAutoArray<DWORD> &Param, const char *pszEntityName, const char *pszModuleName,const char *pszMessage);
  100. private:
  101. ErrorCodeEnum OutputMsg(const char *pMsg);
  102. ErrorCodeEnum RegistEntityStateEvent();
  103. ErrorCodeEnum UnregistEntityStateEvent();
  104. void Process();
  105. static unsigned int __stdcall __Process(void *arg)
  106. {
  107. GUITask *pThis = static_cast<GUITask *>(arg);
  108. pThis->Process();
  109. _endthreadex(0);
  110. return 0;
  111. }
  112. private:
  113. HANDLE m_hEventStartReady;
  114. HANDLE m_hEventStopReady;
  115. HANDLE m_hThread;
  116. HWND m_hWndMainFrame;
  117. CEntityBase *m_pEntity;
  118. CUUID m_logSubID;
  119. bool m_bHighLevel;
  120. };
  121. #endif // __GUI_TASK_H