/*********************************************** /gen auto by zuitools ***********************************************/ #include "medicalCareActivity.h" /*TAG:GlobalVariable全局变量*/ static ZKTextView* mNfcMsgTextViewPtr; static ZKTextView* mNfcTextViewPtr; static ZKPainter* mNfcPicPainterPtr; static ZKPainter* mNfcPainterPtr; static ZKListView* mClerkListViewPtr; static ZKButton* mEnteringButtonPtr; static ZKPainter* mChooseMsgPicPainterPtr; static ZKTextView* mChooseMsgTextViewPtr; static ZKPainter* mChooseClerkPainterPtr; static ZKPainter* mChooseMsgPainterPtr; static ZKWindow* mChooseClerkWindowPtr; static ZKPainter* mLoginMsgPicPainterPtr; static ZKTextView* mLoginMsgTextViewPtr; static ZKPainter* mLoginMsgPainterPtr; static ZKWindow* mMedicalCareWindowPtr; static ZKPainter* mPromptPainterPtr; static ZKPainter* mNursingPainterPtr; static ZKButton* mLogoutButtonPtr; static ZKTextView* mMedicalCareMsgTextViewPtr; static ZKTextView* mHelloTextViewPtr; static ZKTextView* mClerkNameTextViewPtr; static ZKPainter* mMedicalCarePicPainterPtr; static ZKTextView* mPromptTextViewPtr; static ZKButton* mPromptButtonPtr; static ZKTextView* mNursingTextViewPtr; static ZKButton* mNursingButtonPtr; static ZKTextView* mRoomPatrolTextViewPtr; static ZKPainter* mRoomPatrolPainterPtr; static ZKButton* mRoomPatrolButtonPtr; static ZKTextView* mPositionTextViewPtr; static ZKPainter* mPositionPainterPtr; static ZKButton* mPositionButtonPtr; static ZKPainter* mClerkPainterPtr; static ZKEditText* mPasswordEditTextPtr; static ZKButton* mEnteringMedicalCareButtonPtr; static ZKTextView* mPasswordTextViewPtr; static ZKTextView* mInputMsgTextViewPtr; static ZKTextView* mInputTextViewPtr; static ZKPainter* mLoginPicPainterPtr; static ZKPainter* mMedicalLoginPainterPtr; static ZKWindow* mLoginWindowPtr; static medicalCareActivity* mActivityPtr; /*register activity*/ REGISTER_ACTIVITY(medicalCareActivity); typedef struct { int id; // 定时器ID , 不能重复 int time; // 定时器 时间间隔 单位 毫秒 }S_ACTIVITY_TIMEER; #include "logic/medicalCareLogic.cc" /***********/ typedef struct { int id; const char *pApp; } SAppInfo; /** *点击跳转window */ static SAppInfo sAppInfoTab[] = { // { ID_MAIN_TEXT, "TextViewActivity" }, }; /***************/ typedef bool (*ButtonCallback)(ZKButton *pButton); /** * button onclick表 */ typedef struct { int id; ButtonCallback callback; }S_ButtonCallback; /*TAG:ButtonCallbackTab按键映射表*/ static S_ButtonCallback sButtonCallbackTab[] = { ID_MEDICALCARE_EnteringButton, onButtonClick_EnteringButton, ID_MEDICALCARE_LogoutButton, onButtonClick_LogoutButton, ID_MEDICALCARE_PromptButton, onButtonClick_PromptButton, ID_MEDICALCARE_NursingButton, onButtonClick_NursingButton, ID_MEDICALCARE_RoomPatrolButton, onButtonClick_RoomPatrolButton, ID_MEDICALCARE_PositionButton, onButtonClick_PositionButton, ID_MEDICALCARE_EnteringMedicalCareButton, onButtonClick_EnteringMedicalCareButton, }; /***************/ typedef void (*SeekBarCallback)(ZKSeekBar *pSeekBar, int progress); typedef struct { int id; SeekBarCallback callback; }S_ZKSeekBarCallback; /*TAG:SeekBarCallbackTab*/ static S_ZKSeekBarCallback SZKSeekBarCallbackTab[] = { }; typedef int (*ListViewGetItemCountCallback)(const ZKListView *pListView); typedef void (*ListViewobtainListItemDataCallback)(ZKListView *pListView,ZKListView::ZKListItem *pListItem, int index); typedef void (*ListViewonItemClickCallback)(ZKListView *pListView, int index, int id); typedef struct { int id; ListViewGetItemCountCallback getListItemCountCallback; ListViewobtainListItemDataCallback obtainListItemDataCallback; ListViewonItemClickCallback onItemClickCallback; }S_ListViewFunctionsCallback; /*TAG:ListViewFunctionsCallback*/ static S_ListViewFunctionsCallback SListViewFunctionsCallbackTab[] = { ID_MEDICALCARE_ClerkListView, getListItemCount_ClerkListView, obtainListItemData_ClerkListView, onListItemClick_ClerkListView, }; typedef void (*SlideWindowItemClickCallback)(ZKSlideWindow *pSlideWindow, int index); typedef struct { int id; SlideWindowItemClickCallback onSlideItemClickCallback; }S_SlideWindowItemClickCallback; /*TAG:SlideWindowFunctionsCallbackTab*/ static S_SlideWindowItemClickCallback SSlideWindowItemClickCallbackTab[] = { }; typedef void (*EditTextInputCallback)(const std::string &text); typedef struct { int id; EditTextInputCallback onEditTextChangedCallback; }S_EditTextInputCallback; /*TAG:EditTextInputCallback*/ static S_EditTextInputCallback SEditTextInputCallbackTab[] = { ID_MEDICALCARE_PasswordEditText, onEditTextChanged_PasswordEditText, }; typedef void (*VideoViewCallback)(ZKVideoView *pVideoView, int msg); typedef struct { int id; //VideoView ID bool loop; // 是否是轮播类型 int defaultvolume;//轮播类型时,默认视频音量 VideoViewCallback onVideoViewCallback; }S_VideoViewCallback; /*TAG:VideoViewCallback*/ static S_VideoViewCallback SVideoViewCallbackTab[] = { }; medicalCareActivity::medicalCareActivity() { //todo add init code here mVideoLoopIndex = -1; mVideoLoopErrorCount = 0; } medicalCareActivity::~medicalCareActivity() { //todo add init file here // 退出应用时需要反注册 EASYUICONTEXT->unregisterGlobalTouchListener(this); unregisterProtocolDataUpdateListener(onProtocolDataUpdate); onUI_quit(); mActivityPtr = NULL; mNfcMsgTextViewPtr = NULL; mNfcTextViewPtr = NULL; mNfcPicPainterPtr = NULL; mNfcPainterPtr = NULL; mClerkListViewPtr = NULL; mEnteringButtonPtr = NULL; mChooseMsgPicPainterPtr = NULL; mChooseMsgTextViewPtr = NULL; mChooseClerkPainterPtr = NULL; mChooseMsgPainterPtr = NULL; mChooseClerkWindowPtr = NULL; mLoginMsgPicPainterPtr = NULL; mLoginMsgTextViewPtr = NULL; mLoginMsgPainterPtr = NULL; mMedicalCareWindowPtr = NULL; mPromptPainterPtr = NULL; mNursingPainterPtr = NULL; mLogoutButtonPtr = NULL; mMedicalCareMsgTextViewPtr = NULL; mHelloTextViewPtr = NULL; mClerkNameTextViewPtr = NULL; mMedicalCarePicPainterPtr = NULL; mPromptTextViewPtr = NULL; mPromptButtonPtr = NULL; mNursingTextViewPtr = NULL; mNursingButtonPtr = NULL; mRoomPatrolTextViewPtr = NULL; mRoomPatrolPainterPtr = NULL; mRoomPatrolButtonPtr = NULL; mPositionTextViewPtr = NULL; mPositionPainterPtr = NULL; mPositionButtonPtr = NULL; mClerkPainterPtr = NULL; mPasswordEditTextPtr = NULL; mEnteringMedicalCareButtonPtr = NULL; mPasswordTextViewPtr = NULL; mInputMsgTextViewPtr = NULL; mInputTextViewPtr = NULL; mLoginPicPainterPtr = NULL; mMedicalLoginPainterPtr = NULL; mLoginWindowPtr = NULL; } const char* medicalCareActivity::getAppName() const{ return "medicalCare.ftu"; } //TAG:onCreate void medicalCareActivity::onCreate() { Activity::onCreate(); mNfcMsgTextViewPtr = (ZKTextView*)findControlByID(ID_MEDICALCARE_NfcMsgTextView); mNfcTextViewPtr = (ZKTextView*)findControlByID(ID_MEDICALCARE_NfcTextView); mNfcPicPainterPtr = (ZKPainter*)findControlByID(ID_MEDICALCARE_NfcPicPainter); mNfcPainterPtr = (ZKPainter*)findControlByID(ID_MEDICALCARE_NfcPainter); mClerkListViewPtr = (ZKListView*)findControlByID(ID_MEDICALCARE_ClerkListView);if(mClerkListViewPtr!= NULL){mClerkListViewPtr->setListAdapter(this);mClerkListViewPtr->setItemClickListener(this);} mEnteringButtonPtr = (ZKButton*)findControlByID(ID_MEDICALCARE_EnteringButton); mChooseMsgPicPainterPtr = (ZKPainter*)findControlByID(ID_MEDICALCARE_ChooseMsgPicPainter); mChooseMsgTextViewPtr = (ZKTextView*)findControlByID(ID_MEDICALCARE_ChooseMsgTextView); mChooseClerkPainterPtr = (ZKPainter*)findControlByID(ID_MEDICALCARE_ChooseClerkPainter); mChooseMsgPainterPtr = (ZKPainter*)findControlByID(ID_MEDICALCARE_ChooseMsgPainter); mChooseClerkWindowPtr = (ZKWindow*)findControlByID(ID_MEDICALCARE_ChooseClerkWindow); mLoginMsgPicPainterPtr = (ZKPainter*)findControlByID(ID_MEDICALCARE_LoginMsgPicPainter); mLoginMsgTextViewPtr = (ZKTextView*)findControlByID(ID_MEDICALCARE_LoginMsgTextView); mLoginMsgPainterPtr = (ZKPainter*)findControlByID(ID_MEDICALCARE_LoginMsgPainter); mMedicalCareWindowPtr = (ZKWindow*)findControlByID(ID_MEDICALCARE_MedicalCareWindow); mPromptPainterPtr = (ZKPainter*)findControlByID(ID_MEDICALCARE_PromptPainter); mNursingPainterPtr = (ZKPainter*)findControlByID(ID_MEDICALCARE_NursingPainter); mLogoutButtonPtr = (ZKButton*)findControlByID(ID_MEDICALCARE_LogoutButton); mMedicalCareMsgTextViewPtr = (ZKTextView*)findControlByID(ID_MEDICALCARE_MedicalCareMsgTextView); mHelloTextViewPtr = (ZKTextView*)findControlByID(ID_MEDICALCARE_HelloTextView); mClerkNameTextViewPtr = (ZKTextView*)findControlByID(ID_MEDICALCARE_ClerkNameTextView); mMedicalCarePicPainterPtr = (ZKPainter*)findControlByID(ID_MEDICALCARE_MedicalCarePicPainter); mPromptTextViewPtr = (ZKTextView*)findControlByID(ID_MEDICALCARE_PromptTextView); mPromptButtonPtr = (ZKButton*)findControlByID(ID_MEDICALCARE_PromptButton); mNursingTextViewPtr = (ZKTextView*)findControlByID(ID_MEDICALCARE_NursingTextView); mNursingButtonPtr = (ZKButton*)findControlByID(ID_MEDICALCARE_NursingButton); mRoomPatrolTextViewPtr = (ZKTextView*)findControlByID(ID_MEDICALCARE_RoomPatrolTextView); mRoomPatrolPainterPtr = (ZKPainter*)findControlByID(ID_MEDICALCARE_RoomPatrolPainter); mRoomPatrolButtonPtr = (ZKButton*)findControlByID(ID_MEDICALCARE_RoomPatrolButton); mPositionTextViewPtr = (ZKTextView*)findControlByID(ID_MEDICALCARE_PositionTextView); mPositionPainterPtr = (ZKPainter*)findControlByID(ID_MEDICALCARE_PositionPainter); mPositionButtonPtr = (ZKButton*)findControlByID(ID_MEDICALCARE_PositionButton); mClerkPainterPtr = (ZKPainter*)findControlByID(ID_MEDICALCARE_ClerkPainter); mPasswordEditTextPtr = (ZKEditText*)findControlByID(ID_MEDICALCARE_PasswordEditText);if(mPasswordEditTextPtr!= NULL){mPasswordEditTextPtr->setTextChangeListener(this);} mEnteringMedicalCareButtonPtr = (ZKButton*)findControlByID(ID_MEDICALCARE_EnteringMedicalCareButton); mPasswordTextViewPtr = (ZKTextView*)findControlByID(ID_MEDICALCARE_PasswordTextView); mInputMsgTextViewPtr = (ZKTextView*)findControlByID(ID_MEDICALCARE_InputMsgTextView); mInputTextViewPtr = (ZKTextView*)findControlByID(ID_MEDICALCARE_InputTextView); mLoginPicPainterPtr = (ZKPainter*)findControlByID(ID_MEDICALCARE_LoginPicPainter); mMedicalLoginPainterPtr = (ZKPainter*)findControlByID(ID_MEDICALCARE_MedicalLoginPainter); mLoginWindowPtr = (ZKWindow*)findControlByID(ID_MEDICALCARE_LoginWindow); mActivityPtr = this; onUI_init(); registerProtocolDataUpdateListener(onProtocolDataUpdate); rigesterActivityTimer(); } void medicalCareActivity::onClick(ZKBase *pBase) { //TODO: add widget onClik code int buttonTablen = sizeof(sButtonCallbackTab) / sizeof(S_ButtonCallback); for (int i = 0; i < buttonTablen; ++i) { if (sButtonCallbackTab[i].id == pBase->getID()) { if (sButtonCallbackTab[i].callback((ZKButton*)pBase)) { return; } break; } } int len = sizeof(sAppInfoTab) / sizeof(sAppInfoTab[0]); for (int i = 0; i < len; ++i) { if (sAppInfoTab[i].id == pBase->getID()) { EASYUICONTEXT->openActivity(sAppInfoTab[i].pApp); return; } } Activity::onClick(pBase); } void medicalCareActivity::onResume() { Activity::onResume(); EASYUICONTEXT->registerGlobalTouchListener(this); startVideoLoopPlayback(); onUI_show(); } void medicalCareActivity::onPause() { Activity::onPause(); EASYUICONTEXT->unregisterGlobalTouchListener(this); stopVideoLoopPlayback(); onUI_hide(); } void medicalCareActivity::onIntent(const Intent *intentPtr) { Activity::onIntent(intentPtr); onUI_intent(intentPtr); } bool medicalCareActivity::onTimer(int id) { return onUI_Timer(id); } void medicalCareActivity::onProgressChanged(ZKSeekBar *pSeekBar, int progress){ int seekBarTablen = sizeof(SZKSeekBarCallbackTab) / sizeof(S_ZKSeekBarCallback); for (int i = 0; i < seekBarTablen; ++i) { if (SZKSeekBarCallbackTab[i].id == pSeekBar->getID()) { SZKSeekBarCallbackTab[i].callback(pSeekBar, progress); break; } } } int medicalCareActivity::getListItemCount(const ZKListView *pListView) const{ int tablen = sizeof(SListViewFunctionsCallbackTab) / sizeof(S_ListViewFunctionsCallback); for (int i = 0; i < tablen; ++i) { if (SListViewFunctionsCallbackTab[i].id == pListView->getID()) { return SListViewFunctionsCallbackTab[i].getListItemCountCallback(pListView); break; } } return 0; } void medicalCareActivity::obtainListItemData(ZKListView *pListView,ZKListView::ZKListItem *pListItem, int index){ int tablen = sizeof(SListViewFunctionsCallbackTab) / sizeof(S_ListViewFunctionsCallback); for (int i = 0; i < tablen; ++i) { if (SListViewFunctionsCallbackTab[i].id == pListView->getID()) { SListViewFunctionsCallbackTab[i].obtainListItemDataCallback(pListView, pListItem, index); break; } } } void medicalCareActivity::onItemClick(ZKListView *pListView, int index, int id){ int tablen = sizeof(SListViewFunctionsCallbackTab) / sizeof(S_ListViewFunctionsCallback); for (int i = 0; i < tablen; ++i) { if (SListViewFunctionsCallbackTab[i].id == pListView->getID()) { SListViewFunctionsCallbackTab[i].onItemClickCallback(pListView, index, id); break; } } } void medicalCareActivity::onSlideItemClick(ZKSlideWindow *pSlideWindow, int index) { int tablen = sizeof(SSlideWindowItemClickCallbackTab) / sizeof(S_SlideWindowItemClickCallback); for (int i = 0; i < tablen; ++i) { if (SSlideWindowItemClickCallbackTab[i].id == pSlideWindow->getID()) { SSlideWindowItemClickCallbackTab[i].onSlideItemClickCallback(pSlideWindow, index); break; } } } bool medicalCareActivity::onTouchEvent(const MotionEvent &ev) { return onmedicalCareActivityTouchEvent(ev); } void medicalCareActivity::onTextChanged(ZKTextView *pTextView, const std::string &text) { int tablen = sizeof(SEditTextInputCallbackTab) / sizeof(S_EditTextInputCallback); for (int i = 0; i < tablen; ++i) { if (SEditTextInputCallbackTab[i].id == pTextView->getID()) { SEditTextInputCallbackTab[i].onEditTextChangedCallback(text); break; } } } void medicalCareActivity::rigesterActivityTimer() { int tablen = sizeof(REGISTER_ACTIVITY_TIMER_TAB) / sizeof(S_ACTIVITY_TIMEER); for (int i = 0; i < tablen; ++i) { S_ACTIVITY_TIMEER temp = REGISTER_ACTIVITY_TIMER_TAB[i]; registerTimer(temp.id, temp.time); } } void medicalCareActivity::onVideoPlayerMessage(ZKVideoView *pVideoView, int msg) { int tablen = sizeof(SVideoViewCallbackTab) / sizeof(S_VideoViewCallback); for (int i = 0; i < tablen; ++i) { if (SVideoViewCallbackTab[i].id == pVideoView->getID()) { if (SVideoViewCallbackTab[i].loop) { //循环播放 videoLoopPlayback(pVideoView, msg, i); } else if (SVideoViewCallbackTab[i].onVideoViewCallback != NULL){ SVideoViewCallbackTab[i].onVideoViewCallback(pVideoView, msg); } break; } } } void medicalCareActivity::videoLoopPlayback(ZKVideoView *pVideoView, int msg, size_t callbackTabIndex) { switch (msg) { case ZKVideoView::E_MSGTYPE_VIDEO_PLAY_STARTED: LOGD("ZKVideoView::E_MSGTYPE_VIDEO_PLAY_STARTED\n"); if (callbackTabIndex >= (sizeof(SVideoViewCallbackTab)/sizeof(S_VideoViewCallback))) { break; } pVideoView->setVolume(SVideoViewCallbackTab[callbackTabIndex].defaultvolume / 10.0); mVideoLoopErrorCount = 0; break; case ZKVideoView::E_MSGTYPE_VIDEO_PLAY_ERROR: /**错误处理 */ ++mVideoLoopErrorCount; if (mVideoLoopErrorCount > 100) { LOGD("video loop error counts > 100, quit loop playback !"); break; } //不用break, 继续尝试播放下一个 case ZKVideoView::E_MSGTYPE_VIDEO_PLAY_COMPLETED: LOGD("ZKVideoView::E_MSGTYPE_VIDEO_PLAY_COMPLETED\n"); std::vector videolist; std::string fileName(getAppName()); if (fileName.size() < 4) { LOGD("getAppName size < 4, ignore!"); break; } fileName = fileName.substr(0, fileName.length() - 4) + "_video_list.txt"; fileName = "/mnt/extsd/" + fileName; if (!parseVideoFileList(fileName.c_str(), videolist)) { LOGD("parseVideoFileList failed !"); break; } if (pVideoView && !videolist.empty()) { mVideoLoopIndex = (mVideoLoopIndex + 1) % videolist.size(); pVideoView->play(videolist[mVideoLoopIndex].c_str()); } break; } } void medicalCareActivity::startVideoLoopPlayback() { int tablen = sizeof(SVideoViewCallbackTab) / sizeof(S_VideoViewCallback); for (int i = 0; i < tablen; ++i) { if (SVideoViewCallbackTab[i].loop) { ZKVideoView* videoView = (ZKVideoView*)findControlByID(SVideoViewCallbackTab[i].id); if (!videoView) { return; } //循环播放 videoLoopPlayback(videoView, ZKVideoView::E_MSGTYPE_VIDEO_PLAY_COMPLETED, i); return; } } } void medicalCareActivity::stopVideoLoopPlayback() { int tablen = sizeof(SVideoViewCallbackTab) / sizeof(S_VideoViewCallback); for (int i = 0; i < tablen; ++i) { if (SVideoViewCallbackTab[i].loop) { ZKVideoView* videoView = (ZKVideoView*)findControlByID(SVideoViewCallbackTab[i].id); if (!videoView) { return; } if (videoView->isPlaying()) { videoView->stop(); } return; } } } bool medicalCareActivity::parseVideoFileList(const char *pFileListPath, std::vector& mediaFileList) { mediaFileList.clear(); if (NULL == pFileListPath || 0 == strlen(pFileListPath)) { LOGD("video file list is null!"); return false; } ifstream is(pFileListPath, ios_base::in); if (!is.is_open()) { LOGD("cann't open file %s \n", pFileListPath); return false; } char tmp[1024] = {0}; while (is.getline(tmp, sizeof(tmp))) { string str = tmp; removeCharFromString(str, '\"'); removeCharFromString(str, '\r'); removeCharFromString(str, '\n'); if (str.size() > 1) { mediaFileList.push_back(str.c_str()); } } LOGD("(f:%s, l:%d) parse fileList[%s], get [%d]files", __FUNCTION__, __LINE__, pFileListPath, int(mediaFileList.size())); for (std::vector::size_type i = 0; i < mediaFileList.size(); i++) { LOGD("file[%u]:[%s]", ::size_t(i), mediaFileList[i].c_str()); } is.close(); return true; } int medicalCareActivity::removeCharFromString(string& nString, char c) { string::size_type pos; while(1) { pos = nString.find(c); if(pos != string::npos) { nString.erase(pos, 1); } else { break; } } return (int)nString.size(); } void medicalCareActivity::registerUserTimer(int id, int time) { registerTimer(id, time); } void medicalCareActivity::unregisterUserTimer(int id) { unregisterTimer(id); } void medicalCareActivity::resetUserTimer(int id, int time) { resetTimer(id, time); }