EasyUIContext.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. /*
  2. * EasyUIContext.h
  3. *
  4. * Created on: Aug 24, 2017
  5. * Author: guoxs
  6. */
  7. #ifndef _ENTRY_EASYUI_CONTEXT_H_
  8. #define _ENTRY_EASYUI_CONTEXT_H_
  9. #include <vector>
  10. #include <stddef.h>
  11. #include "control/Common.h"
  12. #include "system/Mutex.h"
  13. #include "ime/IMEContext.h"
  14. class Intent;
  15. class BaseApp;
  16. class IMEBaseApp;
  17. class EasyUIContext {
  18. public:
  19. /**
  20. * @brief 全局触摸监听接口
  21. */
  22. class ITouchListener {
  23. public:
  24. virtual ~ITouchListener() { }
  25. virtual bool onTouchEvent(const MotionEvent &ev) = 0;
  26. };
  27. /**
  28. * @brief 注册全局触摸监听接口
  29. */
  30. void registerGlobalTouchListener(ITouchListener *pListener);
  31. /**
  32. * @brief 反注册全局触摸监听接口
  33. */
  34. void unregisterGlobalTouchListener(ITouchListener *pListener);
  35. bool notifyGlobalTouchListener(const MotionEvent &ev);
  36. /**
  37. * @brief 按键监听接口
  38. */
  39. class IKeyListener {
  40. public:
  41. virtual ~IKeyListener() { }
  42. virtual bool onKeyEvent(const KeyEvent &ke) = 0;
  43. };
  44. /**
  45. * @brief 注册按键监听接口
  46. */
  47. void registerKeyListener(IKeyListener *pListener);
  48. /**
  49. * @brief 反注册按键监听接口
  50. */
  51. void unregisterKeyListener(IKeyListener *pListener);
  52. bool notifyKeyListener(const KeyEvent &ke);
  53. public:
  54. static EasyUIContext* getInstance();
  55. /**
  56. * @brief 打开界面
  57. * @param appName 界面名称
  58. * @param intentPtr 界面间数据传递对象,默认为NULL
  59. * @attention 传入的intentPtr必须是堆里new出来的对象,最后由框架内部完成delete
  60. */
  61. void openActivity(const char *appName, Intent *intentPtr = NULL);
  62. /**
  63. * @brief 关闭界面
  64. * @param appName 界面名称
  65. */
  66. void closeActivity(const char *appName);
  67. /**
  68. * @brief 回到上一界面
  69. */
  70. void goBack();
  71. /**
  72. * @brief 回到主界面
  73. */
  74. void goHome();
  75. /**
  76. * @brief 当前界面名称
  77. */
  78. const char* currentAppName() const;
  79. /**
  80. * @brief 显示状态栏
  81. */
  82. void showStatusBar();
  83. /**
  84. * @brief 隐藏状态栏
  85. */
  86. void hideStatusBar();
  87. /**
  88. * @brief 状态栏是否显示
  89. */
  90. bool isStatusBarShow() const;
  91. BaseApp* getStatusBar() const;
  92. /**
  93. * @brief 显示导航栏
  94. */
  95. void showNaviBar();
  96. /**
  97. * @brief 隐藏导航栏
  98. */
  99. void hideNaviBar();
  100. /**
  101. * @brief 导航栏是否显示
  102. */
  103. bool isNaviBarShow() const;
  104. BaseApp* getNaviBar() const;
  105. void powerOff();
  106. void powerOn();
  107. bool isPowerOff() const;
  108. /**
  109. * @brief 设置屏保超时时间
  110. * @param timeOut 单位为秒,-1时表示不进屏保
  111. */
  112. void setScreensaverTimeOut(int timeOut);
  113. /**
  114. * @brief 获取屏保超时时间
  115. */
  116. int getScreensaverTimeOut() const;
  117. /**
  118. * @brief 重置屏保检测时间
  119. */
  120. void resetScreensaverTimeOut();
  121. void performResetScreensaverTimeOut();
  122. /**
  123. * @brief 设置是否允许启用屏保
  124. * @param isEnable true 允许启用屏保,false 禁止启用屏保
  125. * @note 应用场景:如升级界面不能进入屏保界面,可以在升级应用里setScreensaverEnable(false)关闭屏保检测,退出setScreensaverEnable(true)恢复屏保功能
  126. */
  127. void setScreensaverEnable(bool isEnable);
  128. /**
  129. * @brief 是否允许启用屏保
  130. */
  131. bool isScreensaverEnable() const;
  132. /**
  133. * @brief 打开屏保
  134. */
  135. void screensaverOn();
  136. /**
  137. * @brief 关闭屏保
  138. */
  139. void screensaverOff();
  140. /**
  141. * @brief 是否已进入屏保
  142. */
  143. bool isScreensaverOn() const;
  144. void performScreensaverOn();
  145. void performScreensaverOff();
  146. void showIME(IMEContext::SIMETextInfo *pInfo, IMEContext::IIMETextUpdateListener *pListener);
  147. void hideIME();
  148. void performHideIME();
  149. /**
  150. * @brief 输入法是否显示
  151. */
  152. bool isIMEShow() const;
  153. /**
  154. * @brief 切换多国语言
  155. * @param code 语言编码
  156. */
  157. void updateLocalesCode(const char *code);
  158. bool initEasyUI();
  159. void deinitEasyUI();
  160. void runEasyUI();
  161. void reqExit();
  162. private:
  163. EasyUIContext();
  164. ~EasyUIContext();
  165. bool initLib();
  166. void deinitLib();
  167. void loadStatusBar();
  168. void loadNaviBar();
  169. void unloadStatusBar();
  170. void unloadNaviBar();
  171. void performEasyUIInit();
  172. void performEasyUIDeinit();
  173. void performStartupApp();
  174. void performLoadStatusBar();
  175. void performLoadNaviBar();
  176. void performScreensaver();
  177. private:
  178. std::vector<ITouchListener *> mGlobalTouchListenerList;
  179. mutable Mutex mTouchLock;
  180. std::vector<IKeyListener *> mKeyListenerList;
  181. mutable Mutex mKeyLock;
  182. BaseApp *mStatusBarPtr;
  183. BaseApp *mNaviBarPtr;
  184. BaseApp *mScreensaverPtr;
  185. IMEBaseApp *mIMEPtr;
  186. struct {
  187. void (*onEasyUIInit)(EasyUIContext*);
  188. void (*onEasyUIDeinit)(EasyUIContext*);
  189. const char* (*onStartupApp)(EasyUIContext*);
  190. } mLibFunInfo;
  191. void *mLibHandle;
  192. void *mInternalLibHandle;
  193. bool mIsUpgradeMode;
  194. int mScreensaverTimeOut;
  195. bool mIsScreensaverEnable;
  196. void *mReservePtr;
  197. };
  198. #define EASYUICONTEXT EasyUIContext::getInstance()
  199. #endif /* _ENTRY_EASYUI_CONTEXT_H_ */