ソースを参照

修改更新界面,修复升级过程中,会出现重复更新下载的情况

vothin 1 年間 前
コミット
8137ceb4be

+ 15 - 10
i18n/zh_CN.tr

@@ -150,10 +150,6 @@
     <string name="GATEWAY">网关</string>
     <string name="VoiceId">语音ID</string>
     <string name="VoiceDomain">语音网关</string>
-    <string name="VersionInfo">版本信息</string>
-    <string name="Version">版本名称</string>
-    <string name="VersionNo">版本号</string>
-    <string name="GetVersionFailed">获取版本失败,错误码</string>
     <string name="ServerIP">服务器IP</string>
     <string name="InputServer">请输入服务器地址和端口</string>
     <string name="ServerTag">只可输入数字和小数点</string>
@@ -161,12 +157,6 @@
     <string name="InputPassword">请输入密码</string>
     <string name="PasswordWrong">密码错误</string>
     <string name="PasswordTag">密码仅为3位数</string>
-    <string name="Searching">查询中...</string>
-    <string name="IsTheLastVersion">已经是最新版本</string>
-    <string name="FindNewVersion">发现新版本</string>
-    <string name="Downloading">下载中</string>
-    <string name="EthernetDisconnect">未连接网络</string>
-    <string name="DownloadFailed">下载错误,错误码</string>
     <string name="PasswordText">3位密码</string>
     <string name="PasswordInput">输入密码</string>
     <string name="RestartTime">重启倒计时:</string>
@@ -195,4 +185,19 @@
     <string name="NoBedDevice">当前床位没有设备,呼叫失败</string>
     <string name="AccountPasswordError">账号或者密码错误</string>
     <string name="WrongJobNumberOrPassword">工号或者密码错误</string>
+    <!-- 版本界面 -->
+    <string name="VersionTitle">版本升级</string>
+    <string name="VersionInfo">版本信息</string>
+    <string name="VersionNow">当前设备版本</string>
+    <string name="VersionNoNow">当前版本号</string>
+    <string name="Version">版本名称</string>
+    <string name="VersionNo">版本号</string>
+    <string name="VersionMsg">确定要重新启动设备吗?</string>
+    <string name="GetVersionFailed">获取版本失败,错误码</string>
+    <string name="Searching">查询中...</string>
+    <string name="IsTheLastVersion">已经是最新版本</string>
+    <string name="FindNewVersion">发现新版本</string>
+    <string name="Downloading">下载中</string>
+    <string name="EthernetDisconnect">未连接网络</string>
+    <string name="DownloadFailed">下载错误,错误码</string>
 </resources>

+ 71 - 84
jni/activity/DeviceUpdateActivity.cpp

@@ -4,40 +4,36 @@
 #include "deviceUpdateActivity.h"
 
 /*TAG:GlobalVariable全局变量*/
-static ZKTextView* mTextPwdInfoPtr;
-static ZKButton* mBtnPwdConfirmPtr;
-static ZKTextView* mPasswordTextViewPtr;
-static ZKEditText* mEditTextPwdPtr;
-static ZKWindow* mWindowPwdPtr;
-static ZKTextView* mTextViewProgressMessagePtr;
-static ZKTextView* mTextViewProgressLoadingPtr;
-static ZKTextView* mTextView4Ptr;
-static ZKWindow* mWindowProgressPtr;
+static ZKButton* mInitUpdateButtonPtr;
+static ZKWindow* mInitWindowPtr;
+static ZKTextView* mProgressMessageTextViewPtr;
+static ZKTextView* mProgressLoadingTextViewPtr;
+static ZKPainter* mProgressPainterPtr;
+static ZKWindow* mProgressWindowPtr;
+static ZKPainter* mDialogPainterPtr;
+static ZKButton* mDialogButtonPtr;
+static ZKTextView* mDialogTextViewPtr;
+static ZKWindow* mDialogWindowPtr;
+static ZKButton* mInstantlyButtonPtr;
+static ZKTextView* mFindNewVersionNoTextViewPtr;
+static ZKTextView* mFindNewTextViewPtr;
+static ZKPainter* mFindNewPainterPtr;
+static ZKWindow* mFindWindowPtr;
+static ZKButton* mInitButtonPtr;
+static ZKButton* mUpdateButtonPtr;
+static ZKTextView* mVersionNoTextViewPtr;
+static ZKTextView* mVersionTextViewPtr;
+static ZKPainter* mDeviceUpdatePicPainterPtr;
+static ZKPainter* mDeviceIpdatePainterPtr;
+static ZKTextView* mTitleTextViewPtr;
 static ZKButton* mBackButtonPtr;
 static ZKListView* mDeviceTypeListViewPtr;
-static ZKWindow* mWindowInitPtr;
-static ZKButton* mButtonDialog1Ptr;
-static ZKTextView* mTextViewDialog1Ptr;
-static ZKTextView* mTextView6Ptr;
-static ZKWindow* mWindowDialog1Ptr;
 static ZKButton* mFindBackButtonPtr;
 static ZKTextView* mVersionNoNewPtr;
-static ZKTextView* mTextView8Ptr;
-static ZKButton* mButtonInstantlyPtr;
-static ZKTextView* mTextView3Ptr;
 static ZKTextView* mVersionNewPtr;
-static ZKTextView* mTextView5Ptr;
-static ZKWindow* mWindowFindPtr;
-static ZKButton* mButtonInitPtr;
 static ZKButton* msys_backPtr;
 static ZKTextView* mVersionNoPtr;
-static ZKTextView* mTextView7Ptr;
-static ZKTextView* mTextViewTitlePtr;
 static ZKTextView* mVersionPtr;
-static ZKTextView* mTextView1Ptr;
-static ZKButton* mButtonUpdatePtr;
-static ZKTextView* mTextView2Ptr;
-static ZKWindow* mWindow1Ptr;
 static deviceUpdateActivity* mActivityPtr;
 
 /*register activity*/
@@ -75,14 +71,14 @@ typedef struct {
 
 /*TAG:ButtonCallbackTab按键映射表*/
 static S_ButtonCallback sButtonCallbackTab[] = {
-    ID_DEVICEUPDATE_BtnPwdConfirm, onButtonClick_BtnPwdConfirm,
+    ID_DEVICEUPDATE_InitUpdateButton, onButtonClick_InitUpdateButton,
+    ID_DEVICEUPDATE_DialogButton, onButtonClick_DialogButton,
+    ID_DEVICEUPDATE_InstantlyButton, onButtonClick_InstantlyButton,
+    ID_DEVICEUPDATE_InitButton, onButtonClick_InitButton,
+    ID_DEVICEUPDATE_UpdateButton, onButtonClick_UpdateButton,
     ID_DEVICEUPDATE_BackButton, onButtonClick_BackButton,
-    ID_DEVICEUPDATE_ButtonDialog1, onButtonClick_ButtonDialog1,
     ID_DEVICEUPDATE_FindBackButton, onButtonClick_FindBackButton,
-    ID_DEVICEUPDATE_ButtonInstantly, onButtonClick_ButtonInstantly,
-    ID_DEVICEUPDATE_ButtonInit, onButtonClick_ButtonInit,
     ID_DEVICEUPDATE_sys_back, onButtonClick_sys_back,
-    ID_DEVICEUPDATE_ButtonUpdate, onButtonClick_ButtonUpdate,
 };
 /***************/
 
@@ -129,7 +125,6 @@ typedef struct {
 }S_EditTextInputCallback;
 /*TAG:EditTextInputCallback*/
 static S_EditTextInputCallback SEditTextInputCallbackTab[] = {
-    ID_DEVICEUPDATE_EditTextPwd, onEditTextChanged_EditTextPwd,
 };
 
 typedef void (*VideoViewCallback)(ZKVideoView *pVideoView, int msg);
@@ -157,40 +152,36 @@ deviceUpdateActivity::~deviceUpdateActivity() {
     unregisterProtocolDataUpdateListener(onProtocolDataUpdate);
     onUI_quit();
     mActivityPtr = NULL;
-    mTextPwdInfoPtr = NULL;
-    mBtnPwdConfirmPtr = NULL;
-    mPasswordTextViewPtr = NULL;
-    mEditTextPwdPtr = NULL;
-    mWindowPwdPtr = NULL;
-    mTextViewProgressMessagePtr = NULL;
-    mTextViewProgressLoadingPtr = NULL;
-    mTextView4Ptr = NULL;
-    mWindowProgressPtr = NULL;
+    mInitUpdateButtonPtr = NULL;
+    mInitWindowPtr = NULL;
+    mProgressMessageTextViewPtr = NULL;
+    mProgressLoadingTextViewPtr = NULL;
+    mProgressPainterPtr = NULL;
+    mProgressWindowPtr = NULL;
+    mDialogPainterPtr = NULL;
+    mDialogButtonPtr = NULL;
+    mDialogTextViewPtr = NULL;
+    mDialogWindowPtr = NULL;
+    mInstantlyButtonPtr = NULL;
+    mFindNewVersionNoTextViewPtr = NULL;
+    mFindNewTextViewPtr = NULL;
+    mFindNewPainterPtr = NULL;
+    mFindWindowPtr = NULL;
+    mInitButtonPtr = NULL;
+    mUpdateButtonPtr = NULL;
+    mVersionNoTextViewPtr = NULL;
+    mVersionTextViewPtr = NULL;
+    mDeviceUpdatePicPainterPtr = NULL;
+    mDeviceIpdatePainterPtr = NULL;
+    mTitleTextViewPtr = NULL;
     mBackButtonPtr = NULL;
     mDeviceTypeListViewPtr = NULL;
-    mWindowInitPtr = NULL;
-    mButtonDialog1Ptr = NULL;
-    mTextViewDialog1Ptr = NULL;
-    mTextView6Ptr = NULL;
-    mWindowDialog1Ptr = NULL;
     mFindBackButtonPtr = NULL;
     mVersionNoNewPtr = NULL;
-    mTextView8Ptr = NULL;
-    mButtonInstantlyPtr = NULL;
-    mTextView3Ptr = NULL;
     mVersionNewPtr = NULL;
-    mTextView5Ptr = NULL;
-    mWindowFindPtr = NULL;
-    mButtonInitPtr = NULL;
     msys_backPtr = NULL;
     mVersionNoPtr = NULL;
-    mTextView7Ptr = NULL;
-    mTextViewTitlePtr = NULL;
     mVersionPtr = NULL;
-    mTextView1Ptr = NULL;
-    mButtonUpdatePtr = NULL;
-    mTextView2Ptr = NULL;
-    mWindow1Ptr = NULL;
 }
 
 const char* deviceUpdateActivity::getAppName() const{
@@ -200,40 +191,36 @@ const char* deviceUpdateActivity::getAppName() const{
 //TAG:onCreate
 void deviceUpdateActivity::onCreate() {
 	Activity::onCreate();
-    mTextPwdInfoPtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_TextPwdInfo);
-    mBtnPwdConfirmPtr = (ZKButton*)findControlByID(ID_DEVICEUPDATE_BtnPwdConfirm);
-    mPasswordTextViewPtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_PasswordTextView);
-    mEditTextPwdPtr = (ZKEditText*)findControlByID(ID_DEVICEUPDATE_EditTextPwd);if(mEditTextPwdPtr!= NULL){mEditTextPwdPtr->setTextChangeListener(this);}
-    mWindowPwdPtr = (ZKWindow*)findControlByID(ID_DEVICEUPDATE_WindowPwd);
-    mTextViewProgressMessagePtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_TextViewProgressMessage);
-    mTextViewProgressLoadingPtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_TextViewProgressLoading);
-    mTextView4Ptr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_TextView4);
-    mWindowProgressPtr = (ZKWindow*)findControlByID(ID_DEVICEUPDATE_WindowProgress);
+    mInitUpdateButtonPtr = (ZKButton*)findControlByID(ID_DEVICEUPDATE_InitUpdateButton);
+    mInitWindowPtr = (ZKWindow*)findControlByID(ID_DEVICEUPDATE_InitWindow);
+    mProgressMessageTextViewPtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_ProgressMessageTextView);
+    mProgressLoadingTextViewPtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_ProgressLoadingTextView);
+    mProgressPainterPtr = (ZKPainter*)findControlByID(ID_DEVICEUPDATE_ProgressPainter);
+    mProgressWindowPtr = (ZKWindow*)findControlByID(ID_DEVICEUPDATE_ProgressWindow);
+    mDialogPainterPtr = (ZKPainter*)findControlByID(ID_DEVICEUPDATE_DialogPainter);
+    mDialogButtonPtr = (ZKButton*)findControlByID(ID_DEVICEUPDATE_DialogButton);
+    mDialogTextViewPtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_DialogTextView);
+    mDialogWindowPtr = (ZKWindow*)findControlByID(ID_DEVICEUPDATE_DialogWindow);
+    mInstantlyButtonPtr = (ZKButton*)findControlByID(ID_DEVICEUPDATE_InstantlyButton);
+    mFindNewVersionNoTextViewPtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_FindNewVersionNoTextView);
+    mFindNewTextViewPtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_FindNewTextView);
+    mFindNewPainterPtr = (ZKPainter*)findControlByID(ID_DEVICEUPDATE_FindNewPainter);
+    mFindWindowPtr = (ZKWindow*)findControlByID(ID_DEVICEUPDATE_FindWindow);
+    mInitButtonPtr = (ZKButton*)findControlByID(ID_DEVICEUPDATE_InitButton);
+    mUpdateButtonPtr = (ZKButton*)findControlByID(ID_DEVICEUPDATE_UpdateButton);
+    mVersionNoTextViewPtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_VersionNoTextView);
+    mVersionTextViewPtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_VersionTextView);
+    mDeviceUpdatePicPainterPtr = (ZKPainter*)findControlByID(ID_DEVICEUPDATE_DeviceUpdatePicPainter);
+    mDeviceIpdatePainterPtr = (ZKPainter*)findControlByID(ID_DEVICEUPDATE_DeviceIpdatePainter);
+    mTitleTextViewPtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_TitleTextView);
     mBackButtonPtr = (ZKButton*)findControlByID(ID_DEVICEUPDATE_BackButton);
     mDeviceTypeListViewPtr = (ZKListView*)findControlByID(ID_DEVICEUPDATE_DeviceTypeListView);if(mDeviceTypeListViewPtr!= NULL){mDeviceTypeListViewPtr->setListAdapter(this);mDeviceTypeListViewPtr->setItemClickListener(this);}
-    mWindowInitPtr = (ZKWindow*)findControlByID(ID_DEVICEUPDATE_WindowInit);
-    mButtonDialog1Ptr = (ZKButton*)findControlByID(ID_DEVICEUPDATE_ButtonDialog1);
-    mTextViewDialog1Ptr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_TextViewDialog1);
-    mTextView6Ptr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_TextView6);
-    mWindowDialog1Ptr = (ZKWindow*)findControlByID(ID_DEVICEUPDATE_WindowDialog1);
     mFindBackButtonPtr = (ZKButton*)findControlByID(ID_DEVICEUPDATE_FindBackButton);
     mVersionNoNewPtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_VersionNoNew);
-    mTextView8Ptr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_TextView8);
-    mButtonInstantlyPtr = (ZKButton*)findControlByID(ID_DEVICEUPDATE_ButtonInstantly);
-    mTextView3Ptr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_TextView3);
     mVersionNewPtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_VersionNew);
-    mTextView5Ptr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_TextView5);
-    mWindowFindPtr = (ZKWindow*)findControlByID(ID_DEVICEUPDATE_WindowFind);
-    mButtonInitPtr = (ZKButton*)findControlByID(ID_DEVICEUPDATE_ButtonInit);
     msys_backPtr = (ZKButton*)findControlByID(ID_DEVICEUPDATE_sys_back);
     mVersionNoPtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_VersionNo);
-    mTextView7Ptr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_TextView7);
-    mTextViewTitlePtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_TextViewTitle);
     mVersionPtr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_Version);
-    mTextView1Ptr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_TextView1);
-    mButtonUpdatePtr = (ZKButton*)findControlByID(ID_DEVICEUPDATE_ButtonUpdate);
-    mTextView2Ptr = (ZKTextView*)findControlByID(ID_DEVICEUPDATE_TextView2);
-    mWindow1Ptr = (ZKWindow*)findControlByID(ID_DEVICEUPDATE_Window1);
 	mActivityPtr = this;
 	onUI_init();
   registerProtocolDataUpdateListener(onProtocolDataUpdate);

+ 24 - 29
jni/activity/DeviceUpdateActivity.h

@@ -13,6 +13,7 @@
 
 #include "utils/Log.h"
 #include "control/ZKDigitalClock.h"
+#include "control/ZKPainter.h"
 #include "control/ZKButton.h"
 #include "control/ZKCircleBar.h"
 #include "control/ZKDiagram.h"
@@ -26,42 +27,36 @@
 #include "window/ZKSlideWindow.h"
 
 /*TAG:Macro宏ID*/
-#define ID_DEVICEUPDATE_TextPwdInfo    50022
-#define ID_DEVICEUPDATE_BtnPwdConfirm    20007
-#define ID_DEVICEUPDATE_PasswordTextView    50017
-#define ID_DEVICEUPDATE_EditTextPwd    51001
-#define ID_DEVICEUPDATE_WindowPwd    110006
-#define ID_DEVICEUPDATE_TextViewProgressMessage    50012
-#define ID_DEVICEUPDATE_TextViewProgressLoading    50008
-#define ID_DEVICEUPDATE_TextView4    50007
-#define ID_DEVICEUPDATE_WindowProgress    110002
+#define ID_DEVICEUPDATE_InitUpdateButton    20007
+#define ID_DEVICEUPDATE_InitWindow    110005
+#define ID_DEVICEUPDATE_ProgressMessageTextView    50012
+#define ID_DEVICEUPDATE_ProgressLoadingTextView    50008
+#define ID_DEVICEUPDATE_ProgressPainter    52005
+#define ID_DEVICEUPDATE_ProgressWindow    110002
+#define ID_DEVICEUPDATE_DialogPainter    52004
+#define ID_DEVICEUPDATE_DialogButton    20006
+#define ID_DEVICEUPDATE_DialogTextView    50011
+#define ID_DEVICEUPDATE_DialogWindow    110003
+#define ID_DEVICEUPDATE_InstantlyButton    20002
+#define ID_DEVICEUPDATE_FindNewVersionNoTextView    50015
+#define ID_DEVICEUPDATE_FindNewTextView    50005
+#define ID_DEVICEUPDATE_FindNewPainter    52003
+#define ID_DEVICEUPDATE_FindWindow    110001
+#define ID_DEVICEUPDATE_InitButton    20003
+#define ID_DEVICEUPDATE_UpdateButton    20001
+#define ID_DEVICEUPDATE_VersionNoTextView    50020
+#define ID_DEVICEUPDATE_VersionNo    50021
+#define ID_DEVICEUPDATE_VersionTextView    50019
+#define ID_DEVICEUPDATE_DeviceUpdatePicPainter    52002
+#define ID_DEVICEUPDATE_DeviceIpdatePainter    52001
+#define ID_DEVICEUPDATE_TitleTextView    50018
 #define ID_DEVICEUPDATE_BackButton    20004
-#define ID_DEVICEUPDATE_IntervalSubItem    24002
-#define ID_DEVICEUPDATE_DownSubItem    24001
 #define ID_DEVICEUPDATE_DeviceTypeListView    80001
-#define ID_DEVICEUPDATE_WindowInit    110005
-#define ID_DEVICEUPDATE_ButtonDialog1    20006
-#define ID_DEVICEUPDATE_TextViewDialog1    50011
-#define ID_DEVICEUPDATE_TextView6    50010
-#define ID_DEVICEUPDATE_WindowDialog1    110003
 #define ID_DEVICEUPDATE_FindBackButton    20005
 #define ID_DEVICEUPDATE_VersionNoNew    50016
-#define ID_DEVICEUPDATE_TextView8    50015
-#define ID_DEVICEUPDATE_ButtonInstantly    20002
-#define ID_DEVICEUPDATE_TextView3    50003
 #define ID_DEVICEUPDATE_VersionNew    50004
-#define ID_DEVICEUPDATE_TextView5    50005
-#define ID_DEVICEUPDATE_WindowFind    110001
-#define ID_DEVICEUPDATE_ButtonInit    20003
 #define ID_DEVICEUPDATE_sys_back   100
-#define ID_DEVICEUPDATE_VersionNo    50014
-#define ID_DEVICEUPDATE_TextView7    50013
-#define ID_DEVICEUPDATE_TextViewTitle    50009
 #define ID_DEVICEUPDATE_Version    50002
-#define ID_DEVICEUPDATE_TextView1    50001
-#define ID_DEVICEUPDATE_ButtonUpdate    20001
-#define ID_DEVICEUPDATE_TextView2    50006
-#define ID_DEVICEUPDATE_Window1    110004
 /*TAG:Macro宏ID END*/
 
 class deviceUpdateActivity : public Activity, 

+ 493 - 0
jni/activity/updateActivity.cpp

@@ -0,0 +1,493 @@
+/***********************************************
+/gen auto by zuitools
+***********************************************/
+#include "updateActivity.h"
+
+/*TAG:GlobalVariable全局变量*/
+static ZKTextView* mProgressMessageTextViewPtr;
+static ZKTextView* mProgressLoadingTextViewPtr;
+static ZKPainter* mProgressPainterPtr;
+static ZKWindow* mProgressWindowPtr;
+static ZKButton* mBackButtonPtr;
+static ZKButton* mInitUpdateButtonPtr;
+static ZKListView* mDeviceTypeListViewPtr;
+static ZKWindow* mInitWindowPtr;
+static ZKPainter* mDialogPainterPtr;
+static ZKButton* mDialogButtonPtr;
+static ZKTextView* mDialogTextViewPtr;
+static ZKWindow* mDialogWindowPtr;
+static ZKButton* mFindBackButtonPtr;
+static ZKButton* mInstantlyButtonPtr;
+static ZKTextView* mVersionNoNewPtr;
+static ZKTextView* mFindNewVersionNoTextViewPtr;
+static ZKTextView* mVersionNewPtr;
+static ZKTextView* mFindNewTextViewPtr;
+static ZKPainter* mFindNewPainterPtr;
+static ZKWindow* mFindWindowPtr;
+static ZKButton* mInitButtonPtr;
+static ZKButton* mUpdateButtonPtr;
+static ZKTextView* mVersionNoPtr;
+static ZKTextView* mVersionNoTextViewPtr;
+static ZKTextView* mVersionPtr;
+static ZKTextView* mVersionTextViewPtr;
+static ZKPainter* mDeviceUpdatePicPainterPtr;
+static ZKPainter* mDeviceIpdatePainterPtr;
+static ZKTextView* mTitleTextViewPtr;
+static ZKButton* msys_backPtr;
+static updateActivity* mActivityPtr;
+
+/*register activity*/
+REGISTER_ACTIVITY(updateActivity);
+
+typedef struct {
+	int id; // 定时器ID , 不能重复
+	int time; // 定时器  时间间隔  单位 毫秒
+}S_ACTIVITY_TIMEER;
+
+#include "logic/updateLogic.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_UPDATE_BackButton, onButtonClick_BackButton,
+    ID_UPDATE_InitUpdateButton, onButtonClick_InitUpdateButton,
+    ID_UPDATE_DialogButton, onButtonClick_DialogButton,
+    ID_UPDATE_FindBackButton, onButtonClick_FindBackButton,
+    ID_UPDATE_InstantlyButton, onButtonClick_InstantlyButton,
+    ID_UPDATE_InitButton, onButtonClick_InitButton,
+    ID_UPDATE_UpdateButton, onButtonClick_UpdateButton,
+    ID_UPDATE_sys_back, onButtonClick_sys_back,
+};
+/***************/
+
+
+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_UPDATE_DeviceTypeListView, getListItemCount_DeviceTypeListView, obtainListItemData_DeviceTypeListView, onListItemClick_DeviceTypeListView,
+};
+
+
+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[] = {
+};
+
+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[] = {
+};
+
+
+updateActivity::updateActivity() {
+	//todo add init code here
+	mVideoLoopIndex = -1;
+	mVideoLoopErrorCount = 0;
+}
+
+updateActivity::~updateActivity() {
+  //todo add init file here
+  // 退出应用时需要反注册
+    EASYUICONTEXT->unregisterGlobalTouchListener(this);
+    unregisterProtocolDataUpdateListener(onProtocolDataUpdate);
+    onUI_quit();
+    mActivityPtr = NULL;
+    mProgressMessageTextViewPtr = NULL;
+    mProgressLoadingTextViewPtr = NULL;
+    mProgressPainterPtr = NULL;
+    mProgressWindowPtr = NULL;
+    mBackButtonPtr = NULL;
+    mInitUpdateButtonPtr = NULL;
+    mDeviceTypeListViewPtr = NULL;
+    mInitWindowPtr = NULL;
+    mDialogPainterPtr = NULL;
+    mDialogButtonPtr = NULL;
+    mDialogTextViewPtr = NULL;
+    mDialogWindowPtr = NULL;
+    mFindBackButtonPtr = NULL;
+    mInstantlyButtonPtr = NULL;
+    mVersionNoNewPtr = NULL;
+    mFindNewVersionNoTextViewPtr = NULL;
+    mVersionNewPtr = NULL;
+    mFindNewTextViewPtr = NULL;
+    mFindNewPainterPtr = NULL;
+    mFindWindowPtr = NULL;
+    mInitButtonPtr = NULL;
+    mUpdateButtonPtr = NULL;
+    mVersionNoPtr = NULL;
+    mVersionNoTextViewPtr = NULL;
+    mVersionPtr = NULL;
+    mVersionTextViewPtr = NULL;
+    mDeviceUpdatePicPainterPtr = NULL;
+    mDeviceIpdatePainterPtr = NULL;
+    mTitleTextViewPtr = NULL;
+    msys_backPtr = NULL;
+}
+
+const char* updateActivity::getAppName() const{
+	return "update.ftu";
+}
+
+//TAG:onCreate
+void updateActivity::onCreate() {
+	Activity::onCreate();
+    mProgressMessageTextViewPtr = (ZKTextView*)findControlByID(ID_UPDATE_ProgressMessageTextView);
+    mProgressLoadingTextViewPtr = (ZKTextView*)findControlByID(ID_UPDATE_ProgressLoadingTextView);
+    mProgressPainterPtr = (ZKPainter*)findControlByID(ID_UPDATE_ProgressPainter);
+    mProgressWindowPtr = (ZKWindow*)findControlByID(ID_UPDATE_ProgressWindow);
+    mBackButtonPtr = (ZKButton*)findControlByID(ID_UPDATE_BackButton);
+    mInitUpdateButtonPtr = (ZKButton*)findControlByID(ID_UPDATE_InitUpdateButton);
+    mDeviceTypeListViewPtr = (ZKListView*)findControlByID(ID_UPDATE_DeviceTypeListView);if(mDeviceTypeListViewPtr!= NULL){mDeviceTypeListViewPtr->setListAdapter(this);mDeviceTypeListViewPtr->setItemClickListener(this);}
+    mInitWindowPtr = (ZKWindow*)findControlByID(ID_UPDATE_InitWindow);
+    mDialogPainterPtr = (ZKPainter*)findControlByID(ID_UPDATE_DialogPainter);
+    mDialogButtonPtr = (ZKButton*)findControlByID(ID_UPDATE_DialogButton);
+    mDialogTextViewPtr = (ZKTextView*)findControlByID(ID_UPDATE_DialogTextView);
+    mDialogWindowPtr = (ZKWindow*)findControlByID(ID_UPDATE_DialogWindow);
+    mFindBackButtonPtr = (ZKButton*)findControlByID(ID_UPDATE_FindBackButton);
+    mInstantlyButtonPtr = (ZKButton*)findControlByID(ID_UPDATE_InstantlyButton);
+    mVersionNoNewPtr = (ZKTextView*)findControlByID(ID_UPDATE_VersionNoNew);
+    mFindNewVersionNoTextViewPtr = (ZKTextView*)findControlByID(ID_UPDATE_FindNewVersionNoTextView);
+    mVersionNewPtr = (ZKTextView*)findControlByID(ID_UPDATE_VersionNew);
+    mFindNewTextViewPtr = (ZKTextView*)findControlByID(ID_UPDATE_FindNewTextView);
+    mFindNewPainterPtr = (ZKPainter*)findControlByID(ID_UPDATE_FindNewPainter);
+    mFindWindowPtr = (ZKWindow*)findControlByID(ID_UPDATE_FindWindow);
+    mInitButtonPtr = (ZKButton*)findControlByID(ID_UPDATE_InitButton);
+    mUpdateButtonPtr = (ZKButton*)findControlByID(ID_UPDATE_UpdateButton);
+    mVersionNoPtr = (ZKTextView*)findControlByID(ID_UPDATE_VersionNo);
+    mVersionNoTextViewPtr = (ZKTextView*)findControlByID(ID_UPDATE_VersionNoTextView);
+    mVersionPtr = (ZKTextView*)findControlByID(ID_UPDATE_Version);
+    mVersionTextViewPtr = (ZKTextView*)findControlByID(ID_UPDATE_VersionTextView);
+    mDeviceUpdatePicPainterPtr = (ZKPainter*)findControlByID(ID_UPDATE_DeviceUpdatePicPainter);
+    mDeviceIpdatePainterPtr = (ZKPainter*)findControlByID(ID_UPDATE_DeviceIpdatePainter);
+    mTitleTextViewPtr = (ZKTextView*)findControlByID(ID_UPDATE_TitleTextView);
+    msys_backPtr = (ZKButton*)findControlByID(ID_UPDATE_sys_back);
+	mActivityPtr = this;
+	onUI_init();
+  registerProtocolDataUpdateListener(onProtocolDataUpdate);
+  rigesterActivityTimer();
+}
+
+void updateActivity::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 updateActivity::onResume() {
+	Activity::onResume();
+	EASYUICONTEXT->registerGlobalTouchListener(this);
+	startVideoLoopPlayback();
+	onUI_show();
+}
+
+void updateActivity::onPause() {
+	Activity::onPause();
+	EASYUICONTEXT->unregisterGlobalTouchListener(this);
+	stopVideoLoopPlayback();
+	onUI_hide();
+}
+
+void updateActivity::onIntent(const Intent *intentPtr) {
+	Activity::onIntent(intentPtr);
+	onUI_intent(intentPtr);
+}
+
+bool updateActivity::onTimer(int id) {
+	return onUI_Timer(id);
+}
+
+void updateActivity::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 updateActivity::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 updateActivity::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 updateActivity::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 updateActivity::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 updateActivity::onTouchEvent(const MotionEvent &ev) {
+    return onupdateActivityTouchEvent(ev);
+}
+
+void updateActivity::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 updateActivity::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 updateActivity::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 updateActivity::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<std::string> 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 updateActivity::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 updateActivity::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 updateActivity::parseVideoFileList(const char *pFileListPath, std::vector<string>& 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<string>::size_type i = 0; i < mediaFileList.size(); i++) {
+    LOGD("file[%u]:[%s]", ::size_t(i), mediaFileList[i].c_str());
+  }
+	is.close();
+
+	return true;
+}
+
+int updateActivity::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 updateActivity::registerUserTimer(int id, int time) {
+	registerTimer(id, time);
+}
+
+void updateActivity::unregisterUserTimer(int id) {
+	unregisterTimer(id);
+}
+
+void updateActivity::resetUserTimer(int id, int time) {
+	resetTimer(id, time);
+}

+ 127 - 0
jni/activity/updateActivity.h

@@ -0,0 +1,127 @@
+/***********************************************
+/gen auto by zuitools
+***********************************************/
+#ifndef __UPDATEACTIVITY_H__
+#define __UPDATEACTIVITY_H__
+
+
+#include "app/Activity.h"
+#include "entry/EasyUIContext.h"
+
+#include "uart/ProtocolData.h"
+#include "uart/ProtocolParser.h"
+
+#include "utils/Log.h"
+#include "control/ZKDigitalClock.h"
+#include "control/ZKPainter.h"
+#include "control/ZKButton.h"
+#include "control/ZKCircleBar.h"
+#include "control/ZKDiagram.h"
+#include "control/ZKListView.h"
+#include "control/ZKPointer.h"
+#include "control/ZKQRCode.h"
+#include "control/ZKTextView.h"
+#include "control/ZKSeekBar.h"
+#include "control/ZKEditText.h"
+#include "control/ZKVideoView.h"
+#include "window/ZKSlideWindow.h"
+
+/*TAG:Macro宏ID*/
+#define ID_UPDATE_ProgressMessageTextView    50012
+#define ID_UPDATE_ProgressLoadingTextView    50008
+#define ID_UPDATE_ProgressPainter    52005
+#define ID_UPDATE_ProgressWindow    110002
+#define ID_UPDATE_BackButton    20004
+#define ID_UPDATE_InitUpdateButton    20007
+#define ID_UPDATE_DeviceTypeListView    80001
+#define ID_UPDATE_InitWindow    110005
+#define ID_UPDATE_DialogPainter    52004
+#define ID_UPDATE_DialogButton    20006
+#define ID_UPDATE_DialogTextView    50011
+#define ID_UPDATE_DialogWindow    110003
+#define ID_UPDATE_FindBackButton    20005
+#define ID_UPDATE_InstantlyButton    20002
+#define ID_UPDATE_VersionNoNew    50016
+#define ID_UPDATE_FindNewVersionNoTextView    50015
+#define ID_UPDATE_VersionNew    50004
+#define ID_UPDATE_FindNewTextView    50005
+#define ID_UPDATE_FindNewPainter    52003
+#define ID_UPDATE_FindWindow    110001
+#define ID_UPDATE_InitButton    20003
+#define ID_UPDATE_UpdateButton    20001
+#define ID_UPDATE_VersionNo    50021
+#define ID_UPDATE_VersionNoTextView    50020
+#define ID_UPDATE_Version    50002
+#define ID_UPDATE_VersionTextView    50019
+#define ID_UPDATE_DeviceUpdatePicPainter    52002
+#define ID_UPDATE_DeviceIpdatePainter    52001
+#define ID_UPDATE_TitleTextView    50018
+#define ID_UPDATE_sys_back   100
+/*TAG:Macro宏ID END*/
+
+class updateActivity : public Activity, 
+                     public ZKSeekBar::ISeekBarChangeListener, 
+                     public ZKListView::IItemClickListener,
+                     public ZKListView::AbsListAdapter,
+                     public ZKSlideWindow::ISlideItemClickListener,
+                     public EasyUIContext::ITouchListener,
+                     public ZKEditText::ITextChangeListener,
+                     public ZKVideoView::IVideoPlayerMessageListener
+{
+public:
+    updateActivity();
+    virtual ~updateActivity();
+
+    /**
+     * 注册定时器
+     */
+	void registerUserTimer(int id, int time);
+	/**
+	 * 取消定时器
+	 */
+	void unregisterUserTimer(int id);
+	/**
+	 * 重置定时器
+	 */
+	void resetUserTimer(int id, int time);
+
+protected:
+    /*TAG:PROTECTED_FUNCTION*/
+    virtual const char* getAppName() const;
+    virtual void onCreate();
+    virtual void onClick(ZKBase *pBase);
+    virtual void onResume();
+    virtual void onPause();
+    virtual void onIntent(const Intent *intentPtr);
+    virtual bool onTimer(int id);
+
+    virtual void onProgressChanged(ZKSeekBar *pSeekBar, int progress);
+
+    virtual int getListItemCount(const ZKListView *pListView) const;
+    virtual void obtainListItemData(ZKListView *pListView, ZKListView::ZKListItem *pListItem, int index);
+    virtual void onItemClick(ZKListView *pListView, int index, int subItemIndex);
+
+    virtual void onSlideItemClick(ZKSlideWindow *pSlideWindow, int index);
+
+    virtual bool onTouchEvent(const MotionEvent &ev);
+
+    virtual void onTextChanged(ZKTextView *pTextView, const string &text);
+
+    void rigesterActivityTimer();
+
+    virtual void onVideoPlayerMessage(ZKVideoView *pVideoView, int msg);
+    void videoLoopPlayback(ZKVideoView *pVideoView, int msg, size_t callbackTabIndex);
+    void startVideoLoopPlayback();
+    void stopVideoLoopPlayback();
+    bool parseVideoFileList(const char *pFileListPath, std::vector<string>& mediaFileList);
+    int removeCharFromString(string& nString, char c);
+
+
+private:
+    /*TAG:PRIVATE_VARIABLE*/
+    int mVideoLoopIndex;
+    int mVideoLoopErrorCount;
+
+};
+
+#endif

+ 87 - 88
jni/logic/DeviceUpdateLogic.cc

@@ -29,6 +29,8 @@ namespace {
 
 Json::Value linuxVersionList;
 string updateUrl;
+int chooseVersionId;
+
 static void getLinuxVersionList() {
 		std::string url = getHttpGateway() + "/util/get_linux_version_list";
 
@@ -53,23 +55,23 @@ static void getLinuxVersionList() {
 
 
 void NavibarSetProgressWindowVisible(bool visible) {
-	mWindowProgressPtr->setVisible(visible);
+	mProgressWindowPtr->setVisible(visible);
 }
 
 void NavibarSetDialog1WindowVisible(bool visible) {
-	mWindowDialog1Ptr->setVisible(visible);
+	mDialogWindowPtr->setVisible(visible);
 }
 
 void NavibarSetProgressMessage(const std::string& msg) {
-	mTextViewProgressMessagePtr->setText(msg);
+	mProgressMessageTextViewPtr->setText(msg);
 }
 
 void NavibarSetDialog1Message(const std::string& msg) {
-	mTextViewDialog1Ptr->setText(msg);
+	mDialogTextViewPtr->setText(msg);
 }
 
 void NavibarProgressAnimation(bool visible) {
-	mTextViewProgressLoadingPtr->setVisible(visible);
+	mProgressLoadingTextViewPtr->setVisible(visible);
 	if (visible) {
 		loading_index = 0;
 		mActivityPtr->registerUserTimer(kTimerProgress, 100);
@@ -118,14 +120,23 @@ void updateDevice(){
 		UpgradeMonitor::getInstance()->checkUpgradeFile("/mnt/extsd");
 		LOGD("img版本-> %s", "");
 
-		const char* msg = "-1";
-		TcpClient::instance()->sendMsg(msg);
 		system("touch /tmp/zkautoupgrade");
 		UPGRADEMONITOR->checkUpgradeFile("/tmp");
+
+//		const char* msg = "-1";
+//		TcpClient::instance()->sendMsg(msg);
 		return 0;
 	});
 }
 
+void openInitWindow() {
+	getLinuxVersionList();
+
+	chooseVersionId = 0;
+	mInitWindowPtr->showWnd();
+}
+
+
 /**
  * 注册定时器
  * 填充数组用于注册定时器
@@ -148,8 +159,9 @@ static void onUI_init(){
 
 	mVersionPtr->setText(currentVersion);	// 写入界面的版本
 	mVersionNoPtr->setText(to_string(currentVersionNo));	// 写入界面的版本号
-	mWindowProgressPtr->setVisible(false);
-	mWindowDialog1Ptr->setVisible(false);
+	mProgressWindowPtr->setVisible(false);
+	mDialogWindowPtr->setVisible(false);
+	mInitWindowPtr->hideWnd();
 }
 
 /**
@@ -212,7 +224,7 @@ static bool onUI_Timer(int id){
 	switch (id) {
 		case kTimerProgress: {
 				loading_index = (loading_index + 1) % 8;
-				mTextViewProgressLoadingPtr->setBackgroundPic(
+				mProgressLoadingTextViewPtr->setBackgroundPic(
 						base::format("loading/%d.png", loading_index).c_str());
 			}
 			break;
@@ -250,17 +262,58 @@ static bool onButtonClick_sys_back(ZKButton *pButton) {
     return false;
 }
 
-static bool onButtonClick_ButtonUpdate(ZKButton *pButton) {
-    LOGD(" ButtonClick ButtonUpdate !!!\n");
-    mWindow1Ptr->hideWnd();
+static int getListItemCount_DeviceTypeListView(const ZKListView *pListView) {
+    //LOGD("getListItemCount_DeviceTypeListView !\n");
+	if (linuxVersionList.size() > 4) {
+		return linuxVersionList.size();
+	}
+    return 4;
+}
+
+static void obtainListItemData_DeviceTypeListView(ZKListView *pListView,ZKListView::ZKListItem *pListItem, int index) {
+    //LOGD(" obtainListItemData_ DeviceTypeListView  !!!\n");
+	string version = linuxVersionList[index]["type_name"].asString() + "         " + linuxVersionList[index]["version_code"].asString();
+		if (version != "         ") {
+			pListItem->setText(version);
+		}
+		else {
+			pListItem->setText("");
+		}
+
+		if (index == chooseVersionId) {
+			updateUrl = linuxVersionList[chooseVersionId]["app_path"].asString();
+			pListItem->setSelected(true);
+		}
+		else {
+			pListItem->setSelected(false);
+		}
+}
+
+static void onListItemClick_DeviceTypeListView(ZKListView *pListView, int index, int id) {
+    //LOGD(" onListItemClick_ DeviceTypeListView  !!!\n");
+	chooseVersionId = index;
+	updateUrl = linuxVersionList[index]["app_path"].asString();
+}
+
+static bool onButtonClick_BackButton(ZKButton *pButton) {
+    LOGD(" ButtonClick BackButton !!!\n");
+    mInitWindowPtr->hideWnd();
+    return false;
+}
+static bool onButtonClick_FindBackButton(ZKButton *pButton) {
+    LOGD(" ButtonClick FindBackButton !!!\n");
+    EASYUICONTEXT->goBack();
+    return false;
+}
 
+static bool onButtonClick_UpdateButton(ZKButton *pButton) {
+    LOGD(" ButtonClick UpdateButton !!!\n");
     PopupService::Show([](PopupService* srv){
-    	string msg = LANGUAGEMANAGER->getValue("Searching");
+		string msg = LANGUAGEMANAGER->getValue("Searching");
 		srv->SetMessage(msg);
 		if (!NETMANAGER->getEthernetManager()->isConnected()) {
 			std::string msg = LANGUAGEMANAGER->getValue("EthernetDisconnect");
 		  srv->SetMessage(msg);
-		  mWindow1Ptr->showWnd();
 		  return -1;
 		}
 		int ret = assistant.GetLatest("bed", &info);
@@ -279,65 +332,41 @@ static bool onButtonClick_ButtonUpdate(ZKButton *pButton) {
 			msg = LANGUAGEMANAGER->getValue("IsTheLastVersion");	// 已经是最新版本
 
 		  srv->SetMessage(msg);
-		  mWindow1Ptr->showWnd();
 		  return -1;
 		}
 
 		mVersionNewPtr->setText(info.version);
 		mVersionNoNewPtr->setText(to_string(info.versionNo));
-		mWindowFindPtr->showWnd();
+		mFindWindowPtr->showWnd();
 		return 0;
 	});
-
     return false;
 }
 
-static bool onButtonClick_ButtonInstantly(ZKButton *pButton) {
-    LOGD(" ButtonClick ButtonInstantly !!!\n");
-    updateDevice();
+static bool onButtonClick_InitButton(ZKButton *pButton) {
+    LOGD(" ButtonClick InitButton !!!\n");
+    Intent* intent = new Intent();
+	intent->putExtra(functionWindows, "init");
+	EASYUICONTEXT->openActivity("functionActivity", intent);
     return false;
 }
-static bool onButtonClick_ButtonDialog1(ZKButton *pButton) {
-    LOGD(" ButtonClick ButtonDialog1 !!!\n");
+
+static bool onButtonClick_InstantlyButton(ZKButton *pButton) {
+    LOGD(" ButtonClick InstantlyButton !!!\n");
+    updateDevice();
     return false;
 }
-static bool onButtonClick_ButtonInit(ZKButton *pButton) {
-    LOGD(" ButtonClick ButtonInit !!!\n");
-//	getLinuxVersionList();
-//  mWindowInitPtr->showWnd();
-	mWindowPwdPtr->showWnd();
+
+static bool onButtonClick_DialogButton(ZKButton *pButton) {
+    LOGD(" ButtonClick DialogButton !!!\n");
     return false;
 }
-static int getListItemCount_DeviceTypeListView(const ZKListView *pListView) {
-    //LOGD("getListItemCount_DeviceTypeListView !\n");
-	if (linuxVersionList.size() > 5) {
-		return linuxVersionList.size();
-	}
-    return 5;
-}
 
-static void obtainListItemData_DeviceTypeListView(ZKListView *pListView,ZKListView::ZKListItem *pListItem, int index) {
-    //LOGD(" obtainListItemData_ DeviceTypeListView  !!!\n");
-	ZKListView::ZKListSubItem* down = pListItem->findSubItemByID(ID_DEVICEUPDATE_DownSubItem);
-
-	string version = linuxVersionList[index]["type_name"].asString() + "         " + linuxVersionList[index]["version_code"].asString();
-	if (version != "         ") {
-		pListItem->setText(version);
-		down->setText(LANGUAGEMANAGER->getValue("SoftDown"));
-	}
-	else {
-		pListItem->setText("");
-		down->setText("");
-	}
-}
-
-static void onListItemClick_DeviceTypeListView(ZKListView *pListView, int index, int id) {
-    //LOGD(" onListItemClick_ DeviceTypeListView  !!!\n");
-
-	// 小于的时候,代表在linuxVersionList里面
-	if (linuxVersionList[index]["app_path"].asString() != "") {
-		mWindowProgressPtr->showWnd();
-		updateUrl = linuxVersionList[index]["app_path"].asString();
+static bool onButtonClick_InitUpdateButton(ZKButton *pButton) {
+    LOGD(" ButtonClick InitUpdateButton !!!\n");
+    // 小于的时候,代表在linuxVersionList里面
+	if (updateUrl != "") {
+		mProgressWindowPtr->showWnd();
 
 		PopupService::Show([](PopupService* srv){
 
@@ -364,7 +393,7 @@ static void onListItemClick_DeviceTypeListView(ZKListView *pListView, int index,
 			if (response.StatusCode() != 200) {	// 下载失败
 				string msg = LANGUAGEMANAGER->getValue("DownloadFailed") + "%d";
 			  srv->SetMessage(base::format(msg.c_str(), response.ErrorCode()));
-			  mWindowProgressPtr->hideWnd();
+			  mProgressWindowPtr->hideWnd();
 			  return -1;
 			}
 
@@ -379,35 +408,5 @@ static void onListItemClick_DeviceTypeListView(ZKListView *pListView, int index,
 			return 0;
 		});
 	}
-}
-
-static bool onButtonClick_BackButton(ZKButton *pButton) {
-    LOGD(" ButtonClick BackButton !!!\n");
-    mWindowInitPtr->hideWnd();
-    return false;
-}
-static bool onButtonClick_FindBackButton(ZKButton *pButton) {
-    LOGD(" ButtonClick FindBackButton !!!\n");
-    EASYUICONTEXT->goBack();
-    return false;
-}
-static void onEditTextChanged_EditTextPwd(const std::string &text) {
-    //LOGD(" onEditTextChanged_ EditTextPwd %s !!!\n", text.c_str());
-}
-
-static bool onButtonClick_BtnPwdConfirm(ZKButton *pButton) {
-    LOGD(" ButtonClick BtnPwdConfirm !!!\n");
-
-    string pwd = mEditTextPwdPtr->getText();
-	// 密码为666
-	string cpwd = "666";
-    if (pwd == cpwd){
-    	getLinuxVersionList();
-    	mWindowPwdPtr->hideWnd();
-        mWindowInitPtr->showWnd();
-		return false;
-    } else {
-    	mTextPwdInfoPtr->setTextTr("PasswordWrong");
-    }
     return false;
 }

+ 18 - 1
jni/logic/functionLogic.cc

@@ -219,7 +219,9 @@ static void onUI_intent(const Intent *intentPtr) {
 			_functionText = intentPtr->getExtra(functionText);
 			nursingEnd(_functionText);
 		}
-		else if (_functionWindows == "serverChange" || _functionWindows == "setting") {
+		else if (_functionWindows == "serverChange" ||
+				_functionWindows == "setting" ||
+				_functionWindows == "init") {
 			pwdWindowInfo();
 		}
     }
@@ -442,6 +444,21 @@ static bool onButtonClick_PwdConfirmButton(ZKButton *pButton) {
 			mPwdPromptTextViewPtr->setTextColor(0xFFFF0000);
 		}
     }
+	else if (_functionWindows == "init") {
+
+		// 密码为888
+		string cpwd = "888";
+		if (pwd == cpwd){
+			// 关闭密码输入界面
+			mPwdWindowPtr->hideWnd();
+			EASYUICONTEXT->closeActivity("functionActivity");
+			// 打开初始化界面
+			openInitWindow();
+		} else {
+			mPwdPromptTextViewPtr->setTextTr("PasswordWrong");
+			mPwdPromptTextViewPtr->setTextColor(0xFFFF0000);
+		}
+	}
     return false;
 }
 

+ 182 - 0
jni/logic/updateLogic.cc

@@ -0,0 +1,182 @@
+#pragma once
+#include "uart/ProtocolSender.h"
+/*
+*此文件由GUI工具生成
+*文件功能:用于处理用户的逻辑相应代码
+*功能说明:
+*========================onButtonClick_XXXX
+当页面中的按键按下后系统会调用对应的函数,XXX代表GUI工具里面的[ID值]名称,
+如Button1,当返回值为false的时候系统将不再处理这个按键,返回true的时候系统将会继续处理此按键。比如SYS_BACK.
+*========================onSlideWindowItemClick_XXXX(int index) 
+当页面中存在滑动窗口并且用户点击了滑动窗口的图标后系统会调用此函数,XXX代表GUI工具里面的[ID值]名称,
+如slideWindow1;index 代表按下图标的偏移值
+*========================onSeekBarChange_XXXX(int progress) 
+当页面中存在滑动条并且用户改变了进度后系统会调用此函数,XXX代表GUI工具里面的[ID值]名称,
+如SeekBar1;progress 代表当前的进度值
+*========================ogetListItemCount_XXXX() 
+当页面中存在滑动列表的时候,更新的时候系统会调用此接口获取列表的总数目,XXX代表GUI工具里面的[ID值]名称,
+如List1;返回值为当前列表的总条数
+*========================oobtainListItemData_XXXX(ZKListView::ZKListItem *pListItem, int index)
+ 当页面中存在滑动列表的时候,更新的时候系统会调用此接口获取列表当前条目下的内容信息,XXX代表GUI工具里面的[ID值]名称,
+如List1;pListItem 是贴图中的单条目对象,index是列表总目的偏移量。具体见函数说明
+*========================常用接口===============
+*LOGD(...)  打印调试信息的接口
+*mTextXXXPtr->setText("****") 在控件TextXXX上显示文字****
+*mButton1Ptr->setSelected(true); 将控件mButton1设置为选中模式,图片会切换成选中图片,按钮文字会切换为选中后的颜色
+*mSeekBarPtr->setProgress(12) 在控件mSeekBar上将进度调整到12
+*mListView1Ptr->refreshListView() 让mListView1 重新刷新,当列表数据变化后调用
+*mDashbroadView1Ptr->setTargetAngle(120) 在控件mDashbroadView1上指针显示角度调整到120度
+*
+* 在Eclipse编辑器中  使用 “alt + /”  快捷键可以打开智能提示
+*/
+
+
+/**
+ * 注册定时器
+ * 填充数组用于注册定时器
+ * 注意:id不能重复
+ */
+static S_ACTIVITY_TIMEER REGISTER_ACTIVITY_TIMER_TAB[] = {
+	//{0,  6000}, //定时器id=0, 时间间隔6秒
+	//{1,  1000},
+};
+
+/**
+ * 当界面构造时触发
+ */
+static void onUI_init(){
+    //Tips :添加 UI初始化的显示代码到这里,如:mText1Ptr->setText("123");
+
+}
+
+/**
+ * 当切换到该界面时触发
+ */
+static void onUI_intent(const Intent *intentPtr) {
+    if (intentPtr != NULL) {
+        //TODO
+    }
+}
+
+/*
+ * 当界面显示时触发
+ */
+static void onUI_show() {
+
+}
+
+/*
+ * 当界面隐藏时触发
+ */
+static void onUI_hide() {
+
+}
+
+/*
+ * 当界面完全退出时触发
+ */
+static void onUI_quit() {
+
+}
+
+/**
+ * 串口数据回调接口
+ */
+static void onProtocolDataUpdate(const SProtocolData &data) {
+
+}
+
+/**
+ * 定时器触发函数
+ * 不建议在此函数中写耗时操作,否则将影响UI刷新
+ * 参数: id
+ *         当前所触发定时器的id,与注册时的id相同
+ * 返回值: true
+ *             继续运行当前定时器
+ *         false
+ *             停止运行当前定时器
+ */
+static bool onUI_Timer(int id){
+	switch (id) {
+
+		default:
+			break;
+	}
+    return true;
+}
+
+/**
+ * 有新的触摸事件时触发
+ * 参数:ev
+ *         新的触摸事件
+ * 返回值:true
+ *            表示该触摸事件在此被拦截,系统不再将此触摸事件传递到控件上
+ *         false
+ *            触摸事件将继续传递到控件上
+ */
+static bool onupdateActivityTouchEvent(const MotionEvent &ev) {
+    switch (ev.mActionStatus) {
+		case MotionEvent::E_ACTION_DOWN://触摸按下
+			//LOGD("时刻 = %ld 坐标  x = %d, y = %d", ev.mEventTime, ev.mX, ev.mY);
+			break;
+		case MotionEvent::E_ACTION_MOVE://触摸滑动
+			break;
+		case MotionEvent::E_ACTION_UP:  //触摸抬起
+			break;
+		default:
+			break;
+	}
+	return false;
+}
+static bool onButtonClick_sys_back(ZKButton *pButton) {
+    LOGD(" ButtonClick sys_back !!!\n");
+    return false;
+}
+
+static bool onButtonClick_UpdateButton(ZKButton *pButton) {
+    LOGD(" ButtonClick UpdateButton !!!\n");
+    return false;
+}
+
+static bool onButtonClick_InitButton(ZKButton *pButton) {
+    LOGD(" ButtonClick InitButton !!!\n");
+    return false;
+}
+
+static bool onButtonClick_InstantlyButton(ZKButton *pButton) {
+    LOGD(" ButtonClick InstantlyButton !!!\n");
+    return false;
+}
+
+static bool onButtonClick_FindBackButton(ZKButton *pButton) {
+    LOGD(" ButtonClick FindBackButton !!!\n");
+    return false;
+}
+
+static bool onButtonClick_DialogButton(ZKButton *pButton) {
+    LOGD(" ButtonClick DialogButton !!!\n");
+    return false;
+}
+
+static int getListItemCount_DeviceTypeListView(const ZKListView *pListView) {
+    //LOGD("getListItemCount_DeviceTypeListView !\n");
+    return 4;
+}
+
+static void obtainListItemData_DeviceTypeListView(ZKListView *pListView,ZKListView::ZKListItem *pListItem, int index) {
+    //LOGD(" obtainListItemData_ DeviceTypeListView  !!!\n");
+}
+
+static void onListItemClick_DeviceTypeListView(ZKListView *pListView, int index, int id) {
+    //LOGD(" onListItemClick_ DeviceTypeListView  !!!\n");
+}
+
+static bool onButtonClick_InitUpdateButton(ZKButton *pButton) {
+    LOGD(" ButtonClick InitUpdateButton !!!\n");
+    return false;
+}
+
+static bool onButtonClick_BackButton(ZKButton *pButton) {
+    LOGD(" ButtonClick BackButton !!!\n");
+    return false;
+}

+ 2 - 0
jni/service/BusinessConfig.h

@@ -147,6 +147,8 @@ void setNursing(bool setNursing);
 
 const bool checkAddr(std::string addr);
 
+void openInitWindow();
+
 
 enum CallFinishType {
 	CANCEL,

BIN
libs/armeabi/libzkgui.so


BIN
obj/activity/DeviceUpdateActivity.o


BIN
obj/activity/callActivity.o


BIN
obj/activity/deviceInfoActivity.o


BIN
obj/activity/functionActivity.o


BIN
obj/activity/mainActivity.o


BIN
obj/activity/medicalCareActivity.o


BIN
obj/activity/navibar.o


BIN
obj/activity/promptActivity.o


BIN
obj/activity/settingActivity.o


BIN
obj/activity/sipTestActivity.o


BIN
obj/activity/startActivity.o


BIN
obj/activity/statusbar.o


BIN
obj/activity/updateActivity.o


BIN
obj/core/update_assistant.o


BIN
obj/net/tcp_client.o


BIN
obj/net/tcp_model.o


BIN
obj/server/http_server.o


BIN
obj/service/BusinessConfig.o


BIN
obj/service/time.o


BIN
resources/deviceUpdate/choose.png


BIN
resources/deviceUpdate/noChoose.png


BIN
resources/deviceUpdate/white_481x441.png


BIN
resources/function/dianhua.png


BIN
ui/DeviceUpdate.ftu