functionActivity.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. /***********************************************
  2. /gen auto by zuitools
  3. ***********************************************/
  4. #include "functionActivity.h"
  5. /*TAG:GlobalVariable全局变量*/
  6. static ZKButton* mFunctionBackButtonPtr;
  7. static ZKButton* mRebootLineButtonPtr;
  8. static ZKTextView* mRebootLineTextViewPtr;
  9. static ZKButton* mRebootDeviceButtonPtr;
  10. static ZKButton* mRebootPowerButtonPtr;
  11. static ZKTextView* mRebootDeviceTextViewPtr;
  12. static ZKTextView* mRebootPowerTextViewPtr;
  13. static ZKWindow* mRebootWindowPtr;
  14. static ZKButton* mServerCancelButtonPtr;
  15. static ZKButton* mServerConfirmButtonPtr;
  16. static ZKTextView* mServerPromptTextViewPtr;
  17. static ZKTextView* mServerTextViewPtr;
  18. static ZKEditText* mServerPortEditTextPtr;
  19. static ZKEditText* mServerIpEditTextPtr;
  20. static ZKPainter* mServerPainterPtr;
  21. static ZKWindow* mServerWindowPtr;
  22. static ZKButton* mPwdBackButtonPtr;
  23. static ZKButton* mPwdConfirmButtonPtr;
  24. static ZKEditText* mPwdEditTextPtr;
  25. static ZKTextView* mPwdPromptTextViewPtr;
  26. static ZKTextView* mPwdTextViewPtr;
  27. static ZKPainter* mPwdPainterPtr;
  28. static ZKWindow* mPwdWindowPtr;
  29. static ZKButton* mCancelLogoutButtonPtr;
  30. static ZKButton* mConfirmLogoutButtonPtr;
  31. static ZKTextView* mLogoutTextViewPtr;
  32. static ZKPainter* mLogoutPicPainterPtr;
  33. static ZKWindow* mLogoutWindowPtr;
  34. static ZKButton* mFunctionButtonPtr;
  35. static ZKTextView* mStateTextViewPtr;
  36. static ZKTextView* mFunctionTextViewPtr;
  37. static ZKPainter* mIconPainterPtr;
  38. static ZKWindow* mFunctionWindowPtr;
  39. static ZKWindow* mWarnWindowPtr;
  40. static ZKButton* mbackButtonPtr;
  41. static ZKTextView* mWarnTextViewPtr;
  42. static ZKButton* mCancelCallButtonPtr;
  43. static ZKButton* mConfirmCallButtonPtr;
  44. static ZKListView* mCallBedListViewPtr;
  45. static ZKTextView* mCallBedTextViewPtr;
  46. static ZKPainter* mCallBedPicPainterPtr;
  47. static ZKWindow* mCallBedWindowPtr;
  48. static ZKPainter* mFunctionPainterPtr;
  49. static functionActivity* mActivityPtr;
  50. /*register activity*/
  51. REGISTER_ACTIVITY(functionActivity);
  52. typedef struct {
  53. int id; // 定时器ID , 不能重复
  54. int time; // 定时器 时间间隔 单位 毫秒
  55. }S_ACTIVITY_TIMEER;
  56. #include "logic/functionLogic.cc"
  57. /***********/
  58. typedef struct {
  59. int id;
  60. const char *pApp;
  61. } SAppInfo;
  62. /**
  63. *点击跳转window
  64. */
  65. static SAppInfo sAppInfoTab[] = {
  66. // { ID_MAIN_TEXT, "TextViewActivity" },
  67. };
  68. /***************/
  69. typedef bool (*ButtonCallback)(ZKButton *pButton);
  70. /**
  71. * button onclick表
  72. */
  73. typedef struct {
  74. int id;
  75. ButtonCallback callback;
  76. }S_ButtonCallback;
  77. /*TAG:ButtonCallbackTab按键映射表*/
  78. static S_ButtonCallback sButtonCallbackTab[] = {
  79. ID_FUNCTION_FunctionBackButton, onButtonClick_FunctionBackButton,
  80. ID_FUNCTION_RebootLineButton, onButtonClick_RebootLineButton,
  81. ID_FUNCTION_RebootDeviceButton, onButtonClick_RebootDeviceButton,
  82. ID_FUNCTION_RebootPowerButton, onButtonClick_RebootPowerButton,
  83. ID_FUNCTION_ServerCancelButton, onButtonClick_ServerCancelButton,
  84. ID_FUNCTION_ServerConfirmButton, onButtonClick_ServerConfirmButton,
  85. ID_FUNCTION_PwdBackButton, onButtonClick_PwdBackButton,
  86. ID_FUNCTION_PwdConfirmButton, onButtonClick_PwdConfirmButton,
  87. ID_FUNCTION_CancelLogoutButton, onButtonClick_CancelLogoutButton,
  88. ID_FUNCTION_ConfirmLogoutButton, onButtonClick_ConfirmLogoutButton,
  89. ID_FUNCTION_FunctionButton, onButtonClick_FunctionButton,
  90. ID_FUNCTION_backButton, onButtonClick_backButton,
  91. ID_FUNCTION_CancelCallButton, onButtonClick_CancelCallButton,
  92. ID_FUNCTION_ConfirmCallButton, onButtonClick_ConfirmCallButton,
  93. };
  94. /***************/
  95. typedef void (*SeekBarCallback)(ZKSeekBar *pSeekBar, int progress);
  96. typedef struct {
  97. int id;
  98. SeekBarCallback callback;
  99. }S_ZKSeekBarCallback;
  100. /*TAG:SeekBarCallbackTab*/
  101. static S_ZKSeekBarCallback SZKSeekBarCallbackTab[] = {
  102. };
  103. typedef int (*ListViewGetItemCountCallback)(const ZKListView *pListView);
  104. typedef void (*ListViewobtainListItemDataCallback)(ZKListView *pListView,ZKListView::ZKListItem *pListItem, int index);
  105. typedef void (*ListViewonItemClickCallback)(ZKListView *pListView, int index, int id);
  106. typedef struct {
  107. int id;
  108. ListViewGetItemCountCallback getListItemCountCallback;
  109. ListViewobtainListItemDataCallback obtainListItemDataCallback;
  110. ListViewonItemClickCallback onItemClickCallback;
  111. }S_ListViewFunctionsCallback;
  112. /*TAG:ListViewFunctionsCallback*/
  113. static S_ListViewFunctionsCallback SListViewFunctionsCallbackTab[] = {
  114. ID_FUNCTION_CallBedListView, getListItemCount_CallBedListView, obtainListItemData_CallBedListView, onListItemClick_CallBedListView,
  115. };
  116. typedef void (*SlideWindowItemClickCallback)(ZKSlideWindow *pSlideWindow, int index);
  117. typedef struct {
  118. int id;
  119. SlideWindowItemClickCallback onSlideItemClickCallback;
  120. }S_SlideWindowItemClickCallback;
  121. /*TAG:SlideWindowFunctionsCallbackTab*/
  122. static S_SlideWindowItemClickCallback SSlideWindowItemClickCallbackTab[] = {
  123. };
  124. typedef void (*EditTextInputCallback)(const std::string &text);
  125. typedef struct {
  126. int id;
  127. EditTextInputCallback onEditTextChangedCallback;
  128. }S_EditTextInputCallback;
  129. /*TAG:EditTextInputCallback*/
  130. static S_EditTextInputCallback SEditTextInputCallbackTab[] = {
  131. ID_FUNCTION_ServerPortEditText, onEditTextChanged_ServerPortEditText,
  132. ID_FUNCTION_ServerIpEditText, onEditTextChanged_ServerIpEditText,
  133. ID_FUNCTION_PwdEditText, onEditTextChanged_PwdEditText,
  134. };
  135. typedef void (*VideoViewCallback)(ZKVideoView *pVideoView, int msg);
  136. typedef struct {
  137. int id; //VideoView ID
  138. bool loop; // 是否是轮播类型
  139. int defaultvolume;//轮播类型时,默认视频音量
  140. VideoViewCallback onVideoViewCallback;
  141. }S_VideoViewCallback;
  142. /*TAG:VideoViewCallback*/
  143. static S_VideoViewCallback SVideoViewCallbackTab[] = {
  144. };
  145. functionActivity::functionActivity() {
  146. //todo add init code here
  147. mVideoLoopIndex = -1;
  148. mVideoLoopErrorCount = 0;
  149. }
  150. functionActivity::~functionActivity() {
  151. //todo add init file here
  152. // 退出应用时需要反注册
  153. EASYUICONTEXT->unregisterGlobalTouchListener(this);
  154. unregisterProtocolDataUpdateListener(onProtocolDataUpdate);
  155. onUI_quit();
  156. mActivityPtr = NULL;
  157. mFunctionBackButtonPtr = NULL;
  158. mRebootLineButtonPtr = NULL;
  159. mRebootLineTextViewPtr = NULL;
  160. mRebootDeviceButtonPtr = NULL;
  161. mRebootPowerButtonPtr = NULL;
  162. mRebootDeviceTextViewPtr = NULL;
  163. mRebootPowerTextViewPtr = NULL;
  164. mRebootWindowPtr = NULL;
  165. mServerCancelButtonPtr = NULL;
  166. mServerConfirmButtonPtr = NULL;
  167. mServerPromptTextViewPtr = NULL;
  168. mServerTextViewPtr = NULL;
  169. mServerPortEditTextPtr = NULL;
  170. mServerIpEditTextPtr = NULL;
  171. mServerPainterPtr = NULL;
  172. mServerWindowPtr = NULL;
  173. mPwdBackButtonPtr = NULL;
  174. mPwdConfirmButtonPtr = NULL;
  175. mPwdEditTextPtr = NULL;
  176. mPwdPromptTextViewPtr = NULL;
  177. mPwdTextViewPtr = NULL;
  178. mPwdPainterPtr = NULL;
  179. mPwdWindowPtr = NULL;
  180. mCancelLogoutButtonPtr = NULL;
  181. mConfirmLogoutButtonPtr = NULL;
  182. mLogoutTextViewPtr = NULL;
  183. mLogoutPicPainterPtr = NULL;
  184. mLogoutWindowPtr = NULL;
  185. mFunctionButtonPtr = NULL;
  186. mStateTextViewPtr = NULL;
  187. mFunctionTextViewPtr = NULL;
  188. mIconPainterPtr = NULL;
  189. mFunctionWindowPtr = NULL;
  190. mWarnWindowPtr = NULL;
  191. mbackButtonPtr = NULL;
  192. mWarnTextViewPtr = NULL;
  193. mCancelCallButtonPtr = NULL;
  194. mConfirmCallButtonPtr = NULL;
  195. mCallBedListViewPtr = NULL;
  196. mCallBedTextViewPtr = NULL;
  197. mCallBedPicPainterPtr = NULL;
  198. mCallBedWindowPtr = NULL;
  199. mFunctionPainterPtr = NULL;
  200. }
  201. const char* functionActivity::getAppName() const{
  202. return "function.ftu";
  203. }
  204. //TAG:onCreate
  205. void functionActivity::onCreate() {
  206. Activity::onCreate();
  207. mFunctionBackButtonPtr = (ZKButton*)findControlByID(ID_FUNCTION_FunctionBackButton);
  208. mRebootLineButtonPtr = (ZKButton*)findControlByID(ID_FUNCTION_RebootLineButton);
  209. mRebootLineTextViewPtr = (ZKTextView*)findControlByID(ID_FUNCTION_RebootLineTextView);
  210. mRebootDeviceButtonPtr = (ZKButton*)findControlByID(ID_FUNCTION_RebootDeviceButton);
  211. mRebootPowerButtonPtr = (ZKButton*)findControlByID(ID_FUNCTION_RebootPowerButton);
  212. mRebootDeviceTextViewPtr = (ZKTextView*)findControlByID(ID_FUNCTION_RebootDeviceTextView);
  213. mRebootPowerTextViewPtr = (ZKTextView*)findControlByID(ID_FUNCTION_RebootPowerTextView);
  214. mRebootWindowPtr = (ZKWindow*)findControlByID(ID_FUNCTION_RebootWindow);
  215. mServerCancelButtonPtr = (ZKButton*)findControlByID(ID_FUNCTION_ServerCancelButton);
  216. mServerConfirmButtonPtr = (ZKButton*)findControlByID(ID_FUNCTION_ServerConfirmButton);
  217. mServerPromptTextViewPtr = (ZKTextView*)findControlByID(ID_FUNCTION_ServerPromptTextView);
  218. mServerTextViewPtr = (ZKTextView*)findControlByID(ID_FUNCTION_ServerTextView);
  219. mServerPortEditTextPtr = (ZKEditText*)findControlByID(ID_FUNCTION_ServerPortEditText);if(mServerPortEditTextPtr!= NULL){mServerPortEditTextPtr->setTextChangeListener(this);}
  220. mServerIpEditTextPtr = (ZKEditText*)findControlByID(ID_FUNCTION_ServerIpEditText);if(mServerIpEditTextPtr!= NULL){mServerIpEditTextPtr->setTextChangeListener(this);}
  221. mServerPainterPtr = (ZKPainter*)findControlByID(ID_FUNCTION_ServerPainter);
  222. mServerWindowPtr = (ZKWindow*)findControlByID(ID_FUNCTION_ServerWindow);
  223. mPwdBackButtonPtr = (ZKButton*)findControlByID(ID_FUNCTION_PwdBackButton);
  224. mPwdConfirmButtonPtr = (ZKButton*)findControlByID(ID_FUNCTION_PwdConfirmButton);
  225. mPwdEditTextPtr = (ZKEditText*)findControlByID(ID_FUNCTION_PwdEditText);if(mPwdEditTextPtr!= NULL){mPwdEditTextPtr->setTextChangeListener(this);}
  226. mPwdPromptTextViewPtr = (ZKTextView*)findControlByID(ID_FUNCTION_PwdPromptTextView);
  227. mPwdTextViewPtr = (ZKTextView*)findControlByID(ID_FUNCTION_PwdTextView);
  228. mPwdPainterPtr = (ZKPainter*)findControlByID(ID_FUNCTION_PwdPainter);
  229. mPwdWindowPtr = (ZKWindow*)findControlByID(ID_FUNCTION_PwdWindow);
  230. mCancelLogoutButtonPtr = (ZKButton*)findControlByID(ID_FUNCTION_CancelLogoutButton);
  231. mConfirmLogoutButtonPtr = (ZKButton*)findControlByID(ID_FUNCTION_ConfirmLogoutButton);
  232. mLogoutTextViewPtr = (ZKTextView*)findControlByID(ID_FUNCTION_LogoutTextView);
  233. mLogoutPicPainterPtr = (ZKPainter*)findControlByID(ID_FUNCTION_LogoutPicPainter);
  234. mLogoutWindowPtr = (ZKWindow*)findControlByID(ID_FUNCTION_LogoutWindow);
  235. mFunctionButtonPtr = (ZKButton*)findControlByID(ID_FUNCTION_FunctionButton);
  236. mStateTextViewPtr = (ZKTextView*)findControlByID(ID_FUNCTION_StateTextView);
  237. mFunctionTextViewPtr = (ZKTextView*)findControlByID(ID_FUNCTION_FunctionTextView);
  238. mIconPainterPtr = (ZKPainter*)findControlByID(ID_FUNCTION_IconPainter);
  239. mFunctionWindowPtr = (ZKWindow*)findControlByID(ID_FUNCTION_FunctionWindow);
  240. mWarnWindowPtr = (ZKWindow*)findControlByID(ID_FUNCTION_WarnWindow);
  241. mbackButtonPtr = (ZKButton*)findControlByID(ID_FUNCTION_backButton);
  242. mWarnTextViewPtr = (ZKTextView*)findControlByID(ID_FUNCTION_WarnTextView);
  243. mCancelCallButtonPtr = (ZKButton*)findControlByID(ID_FUNCTION_CancelCallButton);
  244. mConfirmCallButtonPtr = (ZKButton*)findControlByID(ID_FUNCTION_ConfirmCallButton);
  245. mCallBedListViewPtr = (ZKListView*)findControlByID(ID_FUNCTION_CallBedListView);if(mCallBedListViewPtr!= NULL){mCallBedListViewPtr->setListAdapter(this);mCallBedListViewPtr->setItemClickListener(this);}
  246. mCallBedTextViewPtr = (ZKTextView*)findControlByID(ID_FUNCTION_CallBedTextView);
  247. mCallBedPicPainterPtr = (ZKPainter*)findControlByID(ID_FUNCTION_CallBedPicPainter);
  248. mCallBedWindowPtr = (ZKWindow*)findControlByID(ID_FUNCTION_CallBedWindow);
  249. mFunctionPainterPtr = (ZKPainter*)findControlByID(ID_FUNCTION_FunctionPainter);
  250. mActivityPtr = this;
  251. onUI_init();
  252. registerProtocolDataUpdateListener(onProtocolDataUpdate);
  253. rigesterActivityTimer();
  254. }
  255. void functionActivity::onClick(ZKBase *pBase) {
  256. //TODO: add widget onClik code
  257. int buttonTablen = sizeof(sButtonCallbackTab) / sizeof(S_ButtonCallback);
  258. for (int i = 0; i < buttonTablen; ++i) {
  259. if (sButtonCallbackTab[i].id == pBase->getID()) {
  260. if (sButtonCallbackTab[i].callback((ZKButton*)pBase)) {
  261. return;
  262. }
  263. break;
  264. }
  265. }
  266. int len = sizeof(sAppInfoTab) / sizeof(sAppInfoTab[0]);
  267. for (int i = 0; i < len; ++i) {
  268. if (sAppInfoTab[i].id == pBase->getID()) {
  269. EASYUICONTEXT->openActivity(sAppInfoTab[i].pApp);
  270. return;
  271. }
  272. }
  273. Activity::onClick(pBase);
  274. }
  275. void functionActivity::onResume() {
  276. Activity::onResume();
  277. EASYUICONTEXT->registerGlobalTouchListener(this);
  278. startVideoLoopPlayback();
  279. onUI_show();
  280. }
  281. void functionActivity::onPause() {
  282. Activity::onPause();
  283. EASYUICONTEXT->unregisterGlobalTouchListener(this);
  284. stopVideoLoopPlayback();
  285. onUI_hide();
  286. }
  287. void functionActivity::onIntent(const Intent *intentPtr) {
  288. Activity::onIntent(intentPtr);
  289. onUI_intent(intentPtr);
  290. }
  291. bool functionActivity::onTimer(int id) {
  292. return onUI_Timer(id);
  293. }
  294. void functionActivity::onProgressChanged(ZKSeekBar *pSeekBar, int progress){
  295. int seekBarTablen = sizeof(SZKSeekBarCallbackTab) / sizeof(S_ZKSeekBarCallback);
  296. for (int i = 0; i < seekBarTablen; ++i) {
  297. if (SZKSeekBarCallbackTab[i].id == pSeekBar->getID()) {
  298. SZKSeekBarCallbackTab[i].callback(pSeekBar, progress);
  299. break;
  300. }
  301. }
  302. }
  303. int functionActivity::getListItemCount(const ZKListView *pListView) const{
  304. int tablen = sizeof(SListViewFunctionsCallbackTab) / sizeof(S_ListViewFunctionsCallback);
  305. for (int i = 0; i < tablen; ++i) {
  306. if (SListViewFunctionsCallbackTab[i].id == pListView->getID()) {
  307. return SListViewFunctionsCallbackTab[i].getListItemCountCallback(pListView);
  308. break;
  309. }
  310. }
  311. return 0;
  312. }
  313. void functionActivity::obtainListItemData(ZKListView *pListView,ZKListView::ZKListItem *pListItem, int index){
  314. int tablen = sizeof(SListViewFunctionsCallbackTab) / sizeof(S_ListViewFunctionsCallback);
  315. for (int i = 0; i < tablen; ++i) {
  316. if (SListViewFunctionsCallbackTab[i].id == pListView->getID()) {
  317. SListViewFunctionsCallbackTab[i].obtainListItemDataCallback(pListView, pListItem, index);
  318. break;
  319. }
  320. }
  321. }
  322. void functionActivity::onItemClick(ZKListView *pListView, int index, int id){
  323. int tablen = sizeof(SListViewFunctionsCallbackTab) / sizeof(S_ListViewFunctionsCallback);
  324. for (int i = 0; i < tablen; ++i) {
  325. if (SListViewFunctionsCallbackTab[i].id == pListView->getID()) {
  326. SListViewFunctionsCallbackTab[i].onItemClickCallback(pListView, index, id);
  327. break;
  328. }
  329. }
  330. }
  331. void functionActivity::onSlideItemClick(ZKSlideWindow *pSlideWindow, int index) {
  332. int tablen = sizeof(SSlideWindowItemClickCallbackTab) / sizeof(S_SlideWindowItemClickCallback);
  333. for (int i = 0; i < tablen; ++i) {
  334. if (SSlideWindowItemClickCallbackTab[i].id == pSlideWindow->getID()) {
  335. SSlideWindowItemClickCallbackTab[i].onSlideItemClickCallback(pSlideWindow, index);
  336. break;
  337. }
  338. }
  339. }
  340. bool functionActivity::onTouchEvent(const MotionEvent &ev) {
  341. return onfunctionActivityTouchEvent(ev);
  342. }
  343. void functionActivity::onTextChanged(ZKTextView *pTextView, const std::string &text) {
  344. int tablen = sizeof(SEditTextInputCallbackTab) / sizeof(S_EditTextInputCallback);
  345. for (int i = 0; i < tablen; ++i) {
  346. if (SEditTextInputCallbackTab[i].id == pTextView->getID()) {
  347. SEditTextInputCallbackTab[i].onEditTextChangedCallback(text);
  348. break;
  349. }
  350. }
  351. }
  352. void functionActivity::rigesterActivityTimer() {
  353. int tablen = sizeof(REGISTER_ACTIVITY_TIMER_TAB) / sizeof(S_ACTIVITY_TIMEER);
  354. for (int i = 0; i < tablen; ++i) {
  355. S_ACTIVITY_TIMEER temp = REGISTER_ACTIVITY_TIMER_TAB[i];
  356. registerTimer(temp.id, temp.time);
  357. }
  358. }
  359. void functionActivity::onVideoPlayerMessage(ZKVideoView *pVideoView, int msg) {
  360. int tablen = sizeof(SVideoViewCallbackTab) / sizeof(S_VideoViewCallback);
  361. for (int i = 0; i < tablen; ++i) {
  362. if (SVideoViewCallbackTab[i].id == pVideoView->getID()) {
  363. if (SVideoViewCallbackTab[i].loop) {
  364. //循环播放
  365. videoLoopPlayback(pVideoView, msg, i);
  366. } else if (SVideoViewCallbackTab[i].onVideoViewCallback != NULL){
  367. SVideoViewCallbackTab[i].onVideoViewCallback(pVideoView, msg);
  368. }
  369. break;
  370. }
  371. }
  372. }
  373. void functionActivity::videoLoopPlayback(ZKVideoView *pVideoView, int msg, size_t callbackTabIndex) {
  374. switch (msg) {
  375. case ZKVideoView::E_MSGTYPE_VIDEO_PLAY_STARTED:
  376. LOGD("ZKVideoView::E_MSGTYPE_VIDEO_PLAY_STARTED\n");
  377. if (callbackTabIndex >= (sizeof(SVideoViewCallbackTab)/sizeof(S_VideoViewCallback))) {
  378. break;
  379. }
  380. pVideoView->setVolume(SVideoViewCallbackTab[callbackTabIndex].defaultvolume / 10.0);
  381. mVideoLoopErrorCount = 0;
  382. break;
  383. case ZKVideoView::E_MSGTYPE_VIDEO_PLAY_ERROR:
  384. /**错误处理 */
  385. ++mVideoLoopErrorCount;
  386. if (mVideoLoopErrorCount > 100) {
  387. LOGD("video loop error counts > 100, quit loop playback !");
  388. break;
  389. } //不用break, 继续尝试播放下一个
  390. case ZKVideoView::E_MSGTYPE_VIDEO_PLAY_COMPLETED:
  391. LOGD("ZKVideoView::E_MSGTYPE_VIDEO_PLAY_COMPLETED\n");
  392. std::vector<std::string> videolist;
  393. std::string fileName(getAppName());
  394. if (fileName.size() < 4) {
  395. LOGD("getAppName size < 4, ignore!");
  396. break;
  397. }
  398. fileName = fileName.substr(0, fileName.length() - 4) + "_video_list.txt";
  399. fileName = "/mnt/extsd/" + fileName;
  400. if (!parseVideoFileList(fileName.c_str(), videolist)) {
  401. LOGD("parseVideoFileList failed !");
  402. break;
  403. }
  404. if (pVideoView && !videolist.empty()) {
  405. mVideoLoopIndex = (mVideoLoopIndex + 1) % videolist.size();
  406. pVideoView->play(videolist[mVideoLoopIndex].c_str());
  407. }
  408. break;
  409. }
  410. }
  411. void functionActivity::startVideoLoopPlayback() {
  412. int tablen = sizeof(SVideoViewCallbackTab) / sizeof(S_VideoViewCallback);
  413. for (int i = 0; i < tablen; ++i) {
  414. if (SVideoViewCallbackTab[i].loop) {
  415. ZKVideoView* videoView = (ZKVideoView*)findControlByID(SVideoViewCallbackTab[i].id);
  416. if (!videoView) {
  417. return;
  418. }
  419. //循环播放
  420. videoLoopPlayback(videoView, ZKVideoView::E_MSGTYPE_VIDEO_PLAY_COMPLETED, i);
  421. return;
  422. }
  423. }
  424. }
  425. void functionActivity::stopVideoLoopPlayback() {
  426. int tablen = sizeof(SVideoViewCallbackTab) / sizeof(S_VideoViewCallback);
  427. for (int i = 0; i < tablen; ++i) {
  428. if (SVideoViewCallbackTab[i].loop) {
  429. ZKVideoView* videoView = (ZKVideoView*)findControlByID(SVideoViewCallbackTab[i].id);
  430. if (!videoView) {
  431. return;
  432. }
  433. if (videoView->isPlaying()) {
  434. videoView->stop();
  435. }
  436. return;
  437. }
  438. }
  439. }
  440. bool functionActivity::parseVideoFileList(const char *pFileListPath, std::vector<string>& mediaFileList) {
  441. mediaFileList.clear();
  442. if (NULL == pFileListPath || 0 == strlen(pFileListPath)) {
  443. LOGD("video file list is null!");
  444. return false;
  445. }
  446. ifstream is(pFileListPath, ios_base::in);
  447. if (!is.is_open()) {
  448. LOGD("cann't open file %s \n", pFileListPath);
  449. return false;
  450. }
  451. char tmp[1024] = {0};
  452. while (is.getline(tmp, sizeof(tmp))) {
  453. string str = tmp;
  454. removeCharFromString(str, '\"');
  455. removeCharFromString(str, '\r');
  456. removeCharFromString(str, '\n');
  457. if (str.size() > 1) {
  458. mediaFileList.push_back(str.c_str());
  459. }
  460. }
  461. LOGD("(f:%s, l:%d) parse fileList[%s], get [%d]files", __FUNCTION__,
  462. __LINE__, pFileListPath, int(mediaFileList.size()));
  463. for (std::vector<string>::size_type i = 0; i < mediaFileList.size(); i++) {
  464. LOGD("file[%u]:[%s]", ::size_t(i), mediaFileList[i].c_str());
  465. }
  466. is.close();
  467. return true;
  468. }
  469. int functionActivity::removeCharFromString(string& nString, char c) {
  470. string::size_type pos;
  471. while(1) {
  472. pos = nString.find(c);
  473. if(pos != string::npos) {
  474. nString.erase(pos, 1);
  475. } else {
  476. break;
  477. }
  478. }
  479. return (int)nString.size();
  480. }
  481. void functionActivity::registerUserTimer(int id, int time) {
  482. registerTimer(id, time);
  483. }
  484. void functionActivity::unregisterUserTimer(int id) {
  485. unregisterTimer(id);
  486. }
  487. void functionActivity::resetUserTimer(int id, int time) {
  488. resetTimer(id, time);
  489. }