-#include "AppViewIDs.h"\r
-#include "components/ui_label_ext.h"\r
-#ifdef FD230\r
- #include"ui_resource_string.h"\r
-#endif\r
-\r
-#include "NativeRegisterManager.h"\r
-#include "NativeAbility.h"\r
-#include "graphic_math.h"\r
-#include "string.h"\r
-#include "producttest/include/testPresenter.h"\r
-// #include "font/font_global_manager.h"\r
-// #include "font/ui_font.h"\r
-#ifdef FD230\r
- #include "languagecode/LanguageInit.h"\r
-#endif\r
-#include "../../../../../../zhihui/utils/custom_utils.h"\r
-#include "power_display_service.h"\r
-#include "components/ui_slider.h"\r
-\r
-#include "audio_capture_wrapper.h"\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
-#include "cywee_service.h"\r
-#endif\r
-\r
-#ifdef FD230\r
- #include "factorytest_protocol.h"\r
-#endif\r
-\r
-\r
-\r
-#include "custom_runtime.h"\r
-\r
-#if defined(SUPPORT_GNSS)\r
-#include "gnss_ctl.h"\r
-#endif\r
-\r
-#ifdef __cplusplus\r
-#if __cplusplus\r
-extern "C"\r
-{\r
-#endif\r
-#endif\r
-#include "pm_definition.h"\r
-#include "pm_veto.h"\r
-#include "pm.h"\r
-#ifdef __cplusplus\r
-#if __cplusplus\r
-}\r
-#endif\r
-#endif\r
-\r
-namespace OHOS\r
-{\r
- REGIST_SLICE(VIEW_TEST, testView, testPresenter);\r
- \r
-\r
- static char* view_id_str[]=\r
- {\r
- "TP_1", "TP_2", "TP_3", "TP_4",\r
- "TP_5", "TP_6", "TP_7", "TP_8", \r
- "TP_9","TP_10", "TP_11", "TP_12",\r
- "TP_13","TP_14", "TP_15", "TP_16",\r
- };\r
-\r
-\r
- // 2.ViewMapper[] 是一个静态的视图映射数组,将视图ID与MainStopWatchView类中的特定成员函数指针进行了绑定。\r
- extern test_ext Test_ViewMapper_t[];\r
- // {FACTORYRESETVIEW,"FactoryResetButton",true},\r
- // {SYSTEMLUPGRADE,"systemupgread",true},\r
- // {TEST,"testButton",true}};\r
- \r
- // {ABOUTTHEWATCHVIEW, &SystemView::ChangeSystemAboutView},\r
- // {SUPERVISEVIEW, &SystemView::ChangeSystemSuperviseView},\r
- // {SYSTEMLANGUAGEVIEW, &SystemView::ChangeSystemLanguageView},\r
-\r
- // 当前Presenter属性实例化的内存指针\r
- static testPresenter *g_pSystemPresenter = nullptr;\r
-\r
- testPresenter::testPresenter()\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testPresenter::testPresenter");\r
- g_pSystemPresenter = this;\r
- //systemModel = testModel::GetInstance();\r
- }\r
-\r
- testPresenter::~testPresenter()\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testPresenter::~testPresenter");\r
- g_pSystemPresenter = nullptr;\r
- }\r
-\r
- testPresenter *testPresenter::GetInstance()\r
- {\r
-\r
- return g_pSystemPresenter;\r
- }\r
- \r
- void testPresenter::OnStart()\r
- {\r
- }\r
-\r
- bool testPresenter::OnPress(UIView &view, const PressEvent &event)\r
- {\r
- return true;\r
- }\r
-\r
- bool testPresenter::OnDrag(UIView &view, const DragEvent &event)\r
- {\r
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemPresenter::");\r
- if(strcmp(view.GetViewId(),"BrightnessControl") == 0 || strcmp(view.GetViewId(),"Brightnesview") == 0 )\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "xxxxxxxxxxxxx::");\r
- uint8_t value= testLUMView::GetInstance()->get_slider_value();\r
-\r
- const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
-\r
- if (display_api->set_brightness(value) != ERRCODE_SUCC)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ChangeBrightness: set_brightness fail!");\r
- return false;\r
- }\r
-\r
- }\r
- \r
- \r
- if(strcmp(view.GetViewId(),"TP_test") == 0)\r
- {\r
- testTPView::GetInstance()->ChangeViewcolor(event.GetLastPoint().x,event.GetLastPoint().y);\r
- \r
- }\r
- return true;\r
- }\r
-\r
- bool testPresenter::OnDragEnd(UIView &view, const DragEvent &event)\r
- {\r
- testView *p_SystemView = testView::GetInstance();\r
-\r
- if(strcmp(view.GetViewId(),"TP_test") == 0 || strcmp(view.GetViewId(),"BrightnessControl") == 0)\r
- {\r
- return true;\r
- }\r
- \r
- // æ\9b´ä¸¥æ ¼ç\9a\84å·¦æ»\91é\80\80å\87ºé\99\90å\88¶æ\9d¡ä»¶\r
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)\r
- {\r
- // 获取拖拽的起始点和结束点\r
- Point startPoint = event.GetStartPoint();\r
- Point endPoint = event.GetLastPoint();\r
- \r
- // 计算拖拽距离和速度\r
- int dragDistance = endPoint.x - startPoint.x;\r
- int dragHeight = abs(endPoint.y - startPoint.y);\r
- \r
- // 严格的退出条件:\r
- // 1. æ°´å¹³æ\8b\96æ\8b½è·\9d离å¿\85须大äº\8e150å\83\8fç´ \r
- // 2. å\9e\82ç\9b´å\81\8fç§»ä¸\8dè\83½è¶\85è¿\8750å\83\8fç´ ï¼\88ä¿\9dè¯\81æ\98¯æ°´å¹³æ»\91å\8a¨ï¼\89\r
- // 3. èµ·å§\8bç\82¹å¿\85é¡»å\9c¨å±\8få¹\95左侧30%å\8cºå\9f\9få\86\85\r
- // 4. æ°´å¹³æ\8b\96æ\8b½è·\9d离å¿\85须大äº\8eå\9e\82ç\9b´å\81\8fç§»ç\9a\843å\80\8dï¼\88ç¡®ä¿\9dæ\98¯æ\98\8eç¡®ç\9a\84æ°´å¹³æ»\91å\8a¨ï¼\89\r
- int screenWidth = Screen::GetInstance().GetWidth();\r
- \r
- if (dragDistance > 150 && // 最小拖拽距离150像素\r
- dragHeight < 50 && // 垂直偏移不超过50像素\r
- startPoint.x < screenWidth * 0.3 && // 起始点在左侧30%区域\r
- dragDistance > dragHeight * 3) // 水平距离是垂直距离的3倍以上\r
- {\r
- for (int i = 1; i < MAX_TESTVIEWID; i++)\r
- {\r
- if (p_SystemView->GetSystemScrollView(i))\r
- {\r
- p_SystemView->ChangeView(i, TESTVIEW);\r
- break;\r
- }\r
- }\r
- return true;\r
- }\r
- }\r
- return false;\r
- }\r
-\r
- // 该点击回调主要用于在系统视图界面进行跳转视图\r
- bool testPresenter::OnClick(UIView &view, const ClickEvent &event)\r
- {\r
- // === VIEWID 点击追踪调试 ===\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"=== ONCLICK VIEWID DEBUG ===\n");\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"按钮被点击,view.GetViewId() = %s\n", view.GetViewId());\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"view.GetViewId() 地址 = %p\n", view.GetViewId());\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"view.GetViewId() 长度 = %zu\n", strlen(view.GetViewId()));\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"按钮类型 = %d\n", view.GetViewType());\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"按钮位置 = (%d, %d)\n", view.GetX(), view.GetY());\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"按钮大小 = %dx%d\n", view.GetWidth(), view.GetHeight());\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"=== ONCLICK VIEWID DEBUG END ===\n");\r
- \r
- testView *p_SystemView = testView::GetInstance();\r
- int len=MAX_TESTVIEWID;//sizeof(Test_ViewMapper_t)/sizeof(Test_ViewMapper_t[0]);\r
- //int len=5;\r
- // 根据控件id查找是哪个控件触发了点击回调\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick %s",view.GetViewId());\r
- \r
- if(strcmp(view.GetViewId(),"xxxx") == 0) \r
- { \r
- //testSPEAKView::GetInstance()->Changspeak(true);\r
- testView::GetInstance()->ChangeView(SEChipTest,TESTVIEW);\r
- return true;\r
- }\r
- \r
- if(strcmp(view.GetViewId(),"oldtestexit") == 0) \r
- { \r
- //testSPEAKView::GetInstance()->Changspeak(true);\r
- testView::GetInstance()->ChangeView(OLDTEST,TESTVIEW);\r
- return true;\r
- }\r
- if(strcmp(view.GetViewId(),"shutdown") == 0)\r
- {\r
- // #ifdef FD230_650\r
- uapi_poweroff_device();\r
- // #endif\r
- return true;\r
- }\r
- if(strcmp(view.GetViewId(),"reset") == 0)\r
- {\r
- // #ifdef FD230_650\r
- uapi_reboot_device();\r
- // #endif\r
-\r
- return true;\r
- }\r
- if(strcmp(view.GetViewId(),"deepsleep") == 0)\r
- {\r
- //TODO: close bt and cat1 , then deepsleep\r
- #ifdef SUPPORT_CYWEE_SERVICE\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_STOP_ACC,NULL);\r
- #endif\r
- stop_custom_ble_service();\r
- LOS_Msleep(50);\r
- uapi_set4GCapability(false);\r
- LOS_Msleep(50);\r
-\r
- uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);\r
- if (cnt == 1) {\r
- uapi_pm_remove_sleep_veto(PM_ID_P_TEST);\r
- } else {\r
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has got pm_id_cat1 vote\r\n");\r
- }\r
-\r
-\r
- // mcu_pm_lcd_off(NULL,NULL);\r
- \r
- const power_display_svr_api_t * display_api = power_display_svr_get_api();\r
- if (display_api)\r
- {\r
- display_api->turn_off_screen(); \r
- }\r
- \r
- return true;\r
- }\r
- \r
- if(strcmp(view.GetViewId(),"FactoryReset") == 0)\r
- {\r
- //TODO: close bt and cat1 , then deepsleep\r
- do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_RESTORE_FACTORY_SETTING, NULL, 0);\r
- return true;\r
- }\r
-\r
- for(int i=0;i<len;i++)\r
- {\r
- if(strcmp(view.GetViewId(),Test_ViewMapper_t[i].viewid_str) == 0)\r
- {\r
- if(Test_ViewMapper_t[i].enable_falg==true) {\r
- testView::GetInstance()->ChangeView(TESTVIEW, Test_ViewMapper_t[i].viewId);\r
- }\r
- return true;\r
- }\r
- if(strcmp(view.GetViewId(),Test_ViewMapper_t[i].viewid_str_next) == 0)\r
- {\r
- if(Test_ViewMapper_t[i+1].enable_falg==true) {\r
- testView::GetInstance()->ChangeView(Test_ViewMapper_t[i].viewId, Test_ViewMapper_t[i+1].viewId);\r
- }\r
- return true;\r
- }\r
-\r
- }\r
- \r
- // 处理各测试界面的 成功/失败 按钮\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"view.GetViewId() %s ",view.GetViewId());\r
- if (strncmp(view.GetViewId(), "TestOK", 6) == 0 || strncmp(view.GetViewId(), "TestNO", 6) == 0)\r
- {\r
-\r
- std::string vid = view.GetViewId();\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"view.GetViewId() %s ",vid.c_str());\r
-\r
- if(testModel::GetInstance()->SetResult(vid))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"SetResult成功");\r
- \r
- // 实时更新按钮颜色\r
- testView::GetInstance()->UpdateButtonColorByViewId(view.GetViewId());\r
- \r
- return true;\r
- }\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"SetResult失败");\r
- return false;\r
- }\r
-\r
-\r
-\r
- if(strcmp(view.GetViewId(),"speak_play") == 0)\r
- { \r
- testSPEAKView::GetInstance()->Changspeak(true);\r
- }\r
- else if (strcmp(view.GetViewId(),"speak_puase") == 0)\r
- {\r
- testSPEAKView::GetInstance()->Changspeak(false);\r
- }\r
- \r
- if(strcmp(view.GetViewId(),"MOTOR_play") == 0)\r
- { \r
- testMOTORView::GetInstance()->Changstatr(true);\r
- }\r
-\r
- if(strcmp(view.GetViewId(),"testmicrohoneView") == 0)\r
- { \r
- testmicrohoneView::GetInstance()->buttoncallback();\r
- } \r
-\r
- if(strcmp(view.GetViewId(),"dial_112") == 0)\r
- { \r
- #ifdef SUPPORT_CAT1_SERVICE\r
- testcat1View::GetInstance()->dial_112(true);\r
- #endif\r
- } \r
-\r
- if(strcmp(view.GetViewId(),"gray_card") == 0)\r
- { \r
-\r
- testhrsenson1View::GetInstance()->gray_test(true);\r
- }\r
-\r
- \r
- if(strcmp(view.GetViewId(),"leeklight") == 0)\r
- { \r
-\r
- testhrsenson1View::GetInstance()->leeklight_test(true);\r
- }\r
- \r
- if(strcmp(view.GetViewId(),"discovery") == 0)\r
- { \r
-\r
- testBTView::GetInstance()->BT_discovery_callback();\r
- }\r
- if(strcmp(view.GetViewId(),"addvolume") == 0)\r
- { \r
- testmicrohoneView::GetInstance()->addvolumebuttoncallback();\r
- }\r
- if(strcmp(view.GetViewId(),"start") == 0)\r
- { \r
- if(uapi_dev_runtime_get_cat1_powerstat())\r
- uapi_set4GCapability(false);\r
- #ifdef SUPPORT_FACTORY_SERVICE\r
- factorytest_start_aging_test();\r
- #endif\r
- }\r
- if(strcmp(view.GetViewId(),"stop") == 0)\r
- { \r
-#ifdef SUPPORT_FACTORY_SERVICE\r
- factorytest_stop_aging_test();\r
-#endif\r
- }\r
- if(strcmp(view.GetViewId(),"exit") == 0)\r
- { \r
- for (int i = 1; i < MAX_TESTVIEWID; i++)\r
- {\r
- if (p_SystemView->GetSystemScrollView(i))\r
- {\r
- p_SystemView->ChangeView(i, TESTVIEW);\r
- break;\r
- }\r
- }\r
- return true;\r
- }\r
- if(strcmp(view.GetViewId(),"deep") == 0)\r
- { \r
- #ifdef SUPPORT_CYWEE_SERVICE\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_STOP_ACC,NULL);\r
- #endif\r
- stop_custom_ble_service();\r
- LOS_Msleep(50);\r
- uapi_set4GCapability(false);\r
- LOS_Msleep(50);\r
-\r
- uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);\r
- if (cnt == 1) {\r
- uapi_pm_remove_sleep_veto(PM_ID_P_TEST);\r
- } else {\r
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has got pm_id_cat1 vote\r\n");\r
- }\r
-\r
-\r
- // mcu_pm_lcd_off(NULL,NULL);\r
- \r
- const power_display_svr_api_t * display_api = power_display_svr_get_api();\r
- if (display_api)\r
- {\r
- display_api->turn_off_screen(); \r
- }\r
-\r
- return true;\r
- }\r
- #ifdef SUPPORT_A5133_SERVICE\r
- if(strcmp(view.GetViewId(),"receive") == 0)\r
- { \r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "strcmp(view.GetViewId()recevie");\r
- testA5133View::GetInstance()->a5133_receive_callback();\r
- }\r
- \r
- if(strcmp(view.GetViewId(),"transmit") == 0)\r
- { \r
- testA5133View::GetInstance()->a5133_receive_callback();\r
- }\r
- if(strcmp(view.GetViewId(),"send_data_1") == 0)\r
- { \r
-\r
- testA5133View::GetInstance()->a5133_receive_callback();\r
- }\r
- if(strcmp(view.GetViewId(),"send_data_2") == 0)\r
- { \r
-\r
- testA5133View::GetInstance()->a5133_receive_callback();\r
- }\r
-\r
- \r
-\r
-\r
- #endif\r
-\r
- #if defined(SUPPORT_GNSS)\r
- if (strcmp(view.GetViewId(), GPS_OPEN_CONFIRM_BUTTON) == 0)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPS Toggle Button OnClick");\r
- \r
- // 切换GPS开关状态\r
- testGPSView* gpsView = testGPSView::GetInstance();\r
- if (gpsView != nullptr)\r
- {\r
- gpsView->ToggleGPSState();\r
- }\r
- }\r
- #endif\r
- return false;\r
- }\r
-\r
- bool testPresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::OnKeyAct");\r
- uint8_t keyID = event.GetKeyId();\r
- uint8_t keystate=event.GetState();\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, ":xxxxxxx:%d",keyID);\r
- // 如果是power键就返回上一级\r
- if(testbuttonView::GetInstance())\r
- {\r
- if (keyID == 41 )\r
- {\r
- if(keystate)\r
- testbuttonView::GetInstance()-> Changbutton(0,true);\r
- else\r
- testbuttonView::GetInstance()-> Changbutton(0,false);\r
- \r
- // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
- // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
- }\r
- if (keyID == 0)\r
- {\r
- if(keystate)\r
- testbuttonView::GetInstance()-> Changbutton(1,true);\r
- else\r
- testbuttonView::GetInstance()-> Changbutton(1,false);\r
- \r
- // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
- // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
- }\r
-\r
-#ifdef BOARD_U8\r
- if (keyID == 1)\r
- {\r
-\r
- if(keystate)\r
- testbuttonView::GetInstance()-> Changbutton(2,true);\r
- else\r
- testbuttonView::GetInstance()-> Changbutton(2,false);\r
- \r
- // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
- // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
- }\r
-#endif\r
-\r
- }\r
- \r
- return true;\r
- }\r
-\r
- bool testPresenter::OnRotate(UIView &view, const RotateEvent &event)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testPresenter::OnRotate %d",event.GetRotate());\r
- testbuttonView::GetInstance()->Changbutton(event.GetRotate());\r
- \r
- testbuttonView::GetInstance()->Changbutton(true);\r
- return true;\r
- }\r
-\r
- bool testPresenter::OnRotateEnd(UIView &view, const RotateEvent &event)\r
- {\r
- UNUSED(view);\r
- UNUSED(event);\r
- testbuttonView::GetInstance()->Changbutton(false);\r
- return true;\r
- }\r
-\r
- // 该拖拽是用来处理系统视图(slice)的左滑退出事件和子视图的左滑退出到系统视图区分开\r
- \r
-\r
- /// @brief 简体中文单选按钮被选中\r
- /// @param void\r
- /// @return true 表示选中 ,false 表示未选中\r
- \r
-\r
- /// @brief 英语单选按钮被选中\r
- /// @param void\r
- /// @return true 表示选中 ,false 表示未选中\r
- \r
-\r
- /* -------------------------------------------------------------------------- */\r
- // 获取语言类\r
- //language *g_planguage = new language;\r
- /* -------------------------------------------------------------------------- */\r
- // 用来监听语言切换\r
-\r
-#ifdef __cplusplus\r
-#if __cplusplus\r
-extern "C"\r
-{\r
-#endif /* __cplusplus */\r
-#endif /* __cplusplus */\r
-\r
- void factorytest_enter_test_tp_view(void)\r
- {\r
- if(testView::GetInstance())\r
- testView::GetInstance()->ChangeView(TESTVIEW,TP);\r
- else\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"xxxxxxxxxxxxxxxxxxxxx\r\n");\r
- }\r
-\r
- void factorytest_enter_test_lcd_view(void)\r
- {\r
- if( testView::GetInstance())\r
- testView::GetInstance()->ChangeView(TESTVIEW,LCD);\r
- else\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"xxxxxxxxxxxxxxxxxxxxx\r\n");\r
- }\r
-\r
- void factorytest_enter_test_button_view(void)\r
- {\r
- testView::GetInstance()->ChangeView(TESTVIEW,BUTTON);\r
- }\r
-\r
-#ifdef __cplusplus\r
-#if __cplusplus\r
-}\r
-#endif /* __cplusplus */\r
-#endif /* __cplusplus */\r
+#include "AppViewIDs.h"
+#include "components/ui_label_ext.h"
+#ifdef FD230
+ #include"ui_resource_string.h"
+#endif
+
+#include "NativeRegisterManager.h"
+#include "NativeAbility.h"
+#include "graphic_math.h"
+#include "string.h"
+#include "producttest/include/testPresenter.h"
+// #include "font/font_global_manager.h"
+// #include "font/ui_font.h"
+#ifdef FD230
+ #include "languagecode/LanguageInit.h"
+#endif
+#include "../../../../../../zhihui/utils/custom_utils.h"
+#include "power_display_service.h"
+#include "components/ui_slider.h"
+
+#include "audio_capture_wrapper.h"
+#ifdef SUPPORT_CYWEE_SERVICE
+#include "cywee_service.h"
+#endif
+
+#ifdef FD230
+ #include "factorytest_protocol.h"
+#endif
+
+
+
+#include "custom_runtime.h"
+
+#if defined(SUPPORT_GNSS)
+#include "gnss_ctl.h"
+#endif
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C"
+{
+#endif
+#endif
+#include "pm_definition.h"
+#include "pm_veto.h"
+#include "pm.h"
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif
+
+namespace OHOS
+{
+ REGIST_SLICE(VIEW_TEST, testView, testPresenter);
+
+
+ static char* view_id_str[]=
+ {
+ "TP_1", "TP_2", "TP_3", "TP_4",
+ "TP_5", "TP_6", "TP_7", "TP_8",
+ "TP_9","TP_10", "TP_11", "TP_12",
+ "TP_13","TP_14", "TP_15", "TP_16",
+ };
+
+
+ // 2.ViewMapper[] 是一个静态的视图映射数组,将视图ID与MainStopWatchView类中的特定成员函数指针进行了绑定。
+ extern test_ext Test_ViewMapper_t[];
+ // {FACTORYRESETVIEW,"FactoryResetButton",true},
+ // {SYSTEMLUPGRADE,"systemupgread",true},
+ // {TEST,"testButton",true}};
+
+ // {ABOUTTHEWATCHVIEW, &SystemView::ChangeSystemAboutView},
+ // {SUPERVISEVIEW, &SystemView::ChangeSystemSuperviseView},
+ // {SYSTEMLANGUAGEVIEW, &SystemView::ChangeSystemLanguageView},
+
+ // 当前Presenter属性实例化的内存指针
+ static testPresenter *g_pSystemPresenter = nullptr;
+
+ testPresenter::testPresenter()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testPresenter::testPresenter");
+ g_pSystemPresenter = this;
+ //systemModel = testModel::GetInstance();
+ }
+
+ testPresenter::~testPresenter()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testPresenter::~testPresenter");
+ g_pSystemPresenter = nullptr;
+ }
+
+ testPresenter *testPresenter::GetInstance()
+ {
+
+ return g_pSystemPresenter;
+ }
+
+ void testPresenter::OnStart()
+ {
+ }
+
+ bool testPresenter::OnPress(UIView &view, const PressEvent &event)
+ {
+ return true;
+ }
+
+ bool testPresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemPresenter::");
+ if(strcmp(view.GetViewId(),"BrightnessControl") == 0 || strcmp(view.GetViewId(),"Brightnesview") == 0 )
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "xxxxxxxxxxxxx::");
+ uint8_t value= testLUMView::GetInstance()->get_slider_value();
+
+ const power_display_svr_api_t *display_api = power_display_svr_get_api();
+
+ if (display_api->set_brightness(value) != ERRCODE_SUCC)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ChangeBrightness: set_brightness fail!");
+ return false;
+ }
+
+ }
+
+
+ if(strcmp(view.GetViewId(),"TP_test") == 0)
+ {
+ testTPView::GetInstance()->ChangeViewcolor(event.GetLastPoint().x,event.GetLastPoint().y);
+
+ }
+ return true;
+ }
+
+ bool testPresenter::OnDragEnd(UIView &view, const DragEvent &event)
+ {
+ testView *p_SystemView = testView::GetInstance();
+
+ if(strcmp(view.GetViewId(),"TP_test") == 0 || strcmp(view.GetViewId(),"BrightnessControl") == 0)
+ {
+ return true;
+ }
+
+ // æ\94¾å®½ç\9a\84å·¦æ»\91é\80\80å\87ºé\99\90å\88¶æ\9d¡ä»¶
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
+ {
+ // 获取拖拽的起始点和结束点
+ Point startPoint = event.GetStartPoint();
+ Point endPoint = event.GetLastPoint();
+
+ // 计算拖拽距离和速度
+ int dragDistance = endPoint.x - startPoint.x;
+ int dragHeight = abs(endPoint.y - startPoint.y);
+
+ // 放宽的退出条件:
+ // 1. æ°´å¹³æ\8b\96æ\8b½è·\9d离大äº\8e80å\83\8fç´ ï¼\88ä»\8e150é\99\8dä½\8eå\88°80ï¼\89
+ // 2. å\9e\82ç\9b´å\81\8fç§»ä¸\8dè¶\85è¿\8780å\83\8fç´ ï¼\88ä»\8e50æ\94¾å®½å\88°80ï¼\89
+ // 3. èµ·å§\8bç\82¹å\9c¨å±\8få¹\95左侧50%å\8cºå\9f\9få\86\85ï¼\88ä»\8e30%æ\94¾å®½å\88°50%ï¼\89
+ // 4. æ°´å¹³æ\8b\96æ\8b½è·\9d离大äº\8eå\9e\82ç\9b´å\81\8fç§»ç\9a\842å\80\8dï¼\88ä»\8e3å\80\8dé\99\8dä½\8eå\88°2å\80\8dï¼\89
+ int screenWidth = Screen::GetInstance().GetWidth();
+
+ if (dragDistance > 80 && // 最小拖拽距离80像素
+ dragHeight < 80 && // 垂直偏移不超过80像素
+ startPoint.x < screenWidth * 0.5 && // 起始点在左侧50%区域
+ dragDistance > dragHeight * 2) // 水平距离是垂直距离的2倍以上
+ {
+ for (int i = 1; i < MAX_TESTVIEWID; i++)
+ {
+ if (p_SystemView->GetSystemScrollView(i))
+ {
+ p_SystemView->ChangeView(i, TESTVIEW);
+ break;
+ }
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+ // 该点击回调主要用于在系统视图界面进行跳转视图
+ bool testPresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ // === VIEWID 点击追踪调试 ===
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"=== ONCLICK VIEWID DEBUG ===\n");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"按钮被点击,view.GetViewId() = %s\n", view.GetViewId());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"view.GetViewId() 地址 = %p\n", view.GetViewId());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"view.GetViewId() 长度 = %zu\n", strlen(view.GetViewId()));
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"按钮类型 = %d\n", view.GetViewType());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"按钮位置 = (%d, %d)\n", view.GetX(), view.GetY());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"按钮大小 = %dx%d\n", view.GetWidth(), view.GetHeight());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"=== ONCLICK VIEWID DEBUG END ===\n");
+
+ testView *p_SystemView = testView::GetInstance();
+ int len=MAX_TESTVIEWID;//sizeof(Test_ViewMapper_t)/sizeof(Test_ViewMapper_t[0]);
+ //int len=5;
+ // 根据控件id查找是哪个控件触发了点击回调
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick %s",view.GetViewId());
+
+ if(strcmp(view.GetViewId(),"xxxx") == 0)
+ {
+ //testSPEAKView::GetInstance()->Changspeak(true);
+ testView::GetInstance()->ChangeView(SEChipTest,TESTVIEW);
+ return true;
+ }
+
+ if(strcmp(view.GetViewId(),"oldtestexit") == 0)
+ {
+ //testSPEAKView::GetInstance()->Changspeak(true);
+ testView::GetInstance()->ChangeView(OLDTEST,TESTVIEW);
+ return true;
+ }
+ if(strcmp(view.GetViewId(),"shutdown") == 0)
+ {
+ // #ifdef FD230_650
+ uapi_poweroff_device();
+ // #endif
+ return true;
+ }
+ if(strcmp(view.GetViewId(),"reset") == 0)
+ {
+ // #ifdef FD230_650
+ uapi_reboot_device();
+ // #endif
+
+ return true;
+ }
+ if(strcmp(view.GetViewId(),"deepsleep") == 0)
+ {
+ //TODO: close bt and cat1 , then deepsleep
+ #ifdef SUPPORT_CYWEE_SERVICE
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_STOP_ACC,NULL);
+ #endif
+ stop_custom_ble_service();
+ LOS_Msleep(50);
+ uapi_set4GCapability(false);
+ LOS_Msleep(50);
+
+ uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
+ if (cnt == 1) {
+ uapi_pm_remove_sleep_veto(PM_ID_P_TEST);
+ } else {
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has got pm_id_cat1 vote\r\n");
+ }
+
+
+ // mcu_pm_lcd_off(NULL,NULL);
+
+ const power_display_svr_api_t * display_api = power_display_svr_get_api();
+ if (display_api)
+ {
+ display_api->turn_off_screen();
+ }
+
+ return true;
+ }
+
+ if(strcmp(view.GetViewId(),"FactoryReset") == 0)
+ {
+ //TODO: close bt and cat1 , then deepsleep
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_RESTORE_FACTORY_SETTING, NULL, 0);
+ return true;
+ }
+
+ for(int i=0;i<len;i++)
+ {
+ if(strcmp(view.GetViewId(),Test_ViewMapper_t[i].viewid_str) == 0)
+ {
+ if(Test_ViewMapper_t[i].enable_falg==true) {
+ testView::GetInstance()->ChangeView(TESTVIEW, Test_ViewMapper_t[i].viewId);
+ }
+ return true;
+ }
+ if(strcmp(view.GetViewId(),Test_ViewMapper_t[i].viewid_str_next) == 0)
+ {
+ if(Test_ViewMapper_t[i+1].enable_falg==true) {
+ testView::GetInstance()->ChangeView(Test_ViewMapper_t[i].viewId, Test_ViewMapper_t[i+1].viewId);
+ }
+ return true;
+ }
+
+ }
+
+ // 处理各测试界面的 成功/失败 按钮
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"view.GetViewId() %s ",view.GetViewId());
+ if (strncmp(view.GetViewId(), "TestOK", 6) == 0 || strncmp(view.GetViewId(), "TestNO", 6) == 0)
+ {
+
+ std::string vid = view.GetViewId();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"view.GetViewId() %s ",vid.c_str());
+
+ if(testModel::GetInstance()->SetResult(vid))
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"SetResult成功");
+
+ // 实时更新按钮颜色
+ testView::GetInstance()->UpdateButtonColorByViewId(view.GetViewId());
+
+ return true;
+ }
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"SetResult失败");
+ return false;
+ }
+
+
+
+ if(strcmp(view.GetViewId(),"speak_play") == 0)
+ {
+ testSPEAKView::GetInstance()->Changspeak(true);
+ }
+ else if (strcmp(view.GetViewId(),"speak_puase") == 0)
+ {
+ testSPEAKView::GetInstance()->Changspeak(false);
+ }
+
+ if(strcmp(view.GetViewId(),"MOTOR_play") == 0)
+ {
+ testMOTORView::GetInstance()->Changstatr(true);
+ }
+
+ if(strcmp(view.GetViewId(),"testmicrohoneView") == 0)
+ {
+ testmicrohoneView::GetInstance()->buttoncallback();
+ }
+
+ if(strcmp(view.GetViewId(),"dial_112") == 0)
+ {
+ #ifdef SUPPORT_CAT1_SERVICE
+ testcat1View::GetInstance()->dial_112(true);
+ #endif
+ }
+
+ if(strcmp(view.GetViewId(),"gray_card") == 0)
+ {
+
+ testhrsenson1View::GetInstance()->gray_test(true);
+ }
+
+
+ if(strcmp(view.GetViewId(),"leeklight") == 0)
+ {
+
+ testhrsenson1View::GetInstance()->leeklight_test(true);
+ }
+
+ if(strcmp(view.GetViewId(),"discovery") == 0)
+ {
+
+ testBTView::GetInstance()->BT_discovery_callback();
+ }
+ if(strcmp(view.GetViewId(),"addvolume") == 0)
+ {
+ testmicrohoneView::GetInstance()->addvolumebuttoncallback();
+ }
+ if(strcmp(view.GetViewId(),"start") == 0)
+ {
+ if(uapi_dev_runtime_get_cat1_powerstat())
+ uapi_set4GCapability(false);
+ #ifdef SUPPORT_FACTORY_SERVICE
+ factorytest_start_aging_test();
+ #endif
+ }
+ if(strcmp(view.GetViewId(),"stop") == 0)
+ {
+#ifdef SUPPORT_FACTORY_SERVICE
+ factorytest_stop_aging_test();
+#endif
+ }
+ if(strcmp(view.GetViewId(),"exit") == 0)
+ {
+ for (int i = 1; i < MAX_TESTVIEWID; i++)
+ {
+ if (p_SystemView->GetSystemScrollView(i))
+ {
+ p_SystemView->ChangeView(i, TESTVIEW);
+ break;
+ }
+ }
+ return true;
+ }
+ if(strcmp(view.GetViewId(),"deep") == 0)
+ {
+ #ifdef SUPPORT_CYWEE_SERVICE
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_STOP_ACC,NULL);
+ #endif
+ stop_custom_ble_service();
+ LOS_Msleep(50);
+ uapi_set4GCapability(false);
+ LOS_Msleep(50);
+
+ uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
+ if (cnt == 1) {
+ uapi_pm_remove_sleep_veto(PM_ID_P_TEST);
+ } else {
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has got pm_id_cat1 vote\r\n");
+ }
+
+
+ // mcu_pm_lcd_off(NULL,NULL);
+
+ const power_display_svr_api_t * display_api = power_display_svr_get_api();
+ if (display_api)
+ {
+ display_api->turn_off_screen();
+ }
+
+ return true;
+ }
+ #ifdef SUPPORT_A5133_SERVICE
+ if(strcmp(view.GetViewId(),"receive") == 0)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "strcmp(view.GetViewId()recevie");
+ testA5133View::GetInstance()->a5133_receive_callback();
+ }
+
+ if(strcmp(view.GetViewId(),"transmit") == 0)
+ {
+ testA5133View::GetInstance()->a5133_receive_callback();
+ }
+ if(strcmp(view.GetViewId(),"send_data_1") == 0)
+ {
+
+ testA5133View::GetInstance()->a5133_receive_callback();
+ }
+ if(strcmp(view.GetViewId(),"send_data_2") == 0)
+ {
+
+ testA5133View::GetInstance()->a5133_receive_callback();
+ }
+
+
+
+
+ #endif
+
+ #if defined(SUPPORT_GNSS)
+ if (strcmp(view.GetViewId(), GPS_OPEN_CONFIRM_BUTTON) == 0)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPS Toggle Button OnClick");
+
+ // 切换GPS开关状态
+ testGPSView* gpsView = testGPSView::GetInstance();
+ if (gpsView != nullptr)
+ {
+ gpsView->ToggleGPSState();
+ }
+ }
+ #endif
+ return false;
+ }
+
+ bool testPresenter::OnKeyAct(UIView &view, const KeyEvent &event)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::OnKeyAct");
+ uint8_t keyID = event.GetKeyId();
+ uint8_t keystate=event.GetState();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, ":xxxxxxx:%d",keyID);
+ // 如果是power键就返回上一级
+ if(testbuttonView::GetInstance())
+ {
+ if (keyID == 41 )
+ {
+ if(keystate)
+ testbuttonView::GetInstance()-> Changbutton(0,true);
+ else
+ testbuttonView::GetInstance()-> Changbutton(0,false);
+
+ // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+ }
+ if (keyID == 0)
+ {
+ if(keystate)
+ testbuttonView::GetInstance()-> Changbutton(1,true);
+ else
+ testbuttonView::GetInstance()-> Changbutton(1,false);
+
+ // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+ }
+
+#ifdef BOARD_U8
+ if (keyID == 1)
+ {
+
+ if(keystate)
+ testbuttonView::GetInstance()-> Changbutton(2,true);
+ else
+ testbuttonView::GetInstance()-> Changbutton(2,false);
+
+ // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+ }
+#endif
+
+ }
+
+ return true;
+ }
+
+ bool testPresenter::OnRotate(UIView &view, const RotateEvent &event)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testPresenter::OnRotate %d",event.GetRotate());
+ testbuttonView::GetInstance()->Changbutton(event.GetRotate());
+
+ testbuttonView::GetInstance()->Changbutton(true);
+ return true;
+ }
+
+ bool testPresenter::OnRotateEnd(UIView &view, const RotateEvent &event)
+ {
+ UNUSED(view);
+ UNUSED(event);
+ testbuttonView::GetInstance()->Changbutton(false);
+ return true;
+ }
+
+ // 该拖拽是用来处理系统视图(slice)的左滑退出事件和子视图的左滑退出到系统视图区分开
+
+
+ /// @brief 简体中文单选按钮被选中
+ /// @param void
+ /// @return true 表示选中 ,false 表示未选中
+
+
+ /// @brief 英语单选按钮被选中
+ /// @param void
+ /// @return true 表示选中 ,false 表示未选中
+
+
+ /* -------------------------------------------------------------------------- */
+ // 获取语言类
+ //language *g_planguage = new language;
+ /* -------------------------------------------------------------------------- */
+ // 用来监听语言切换
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+ void factorytest_enter_test_tp_view(void)
+ {
+ if(testView::GetInstance())
+ testView::GetInstance()->ChangeView(TESTVIEW,TP);
+ else
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"xxxxxxxxxxxxxxxxxxxxx\r\n");
+ }
+
+ void factorytest_enter_test_lcd_view(void)
+ {
+ if( testView::GetInstance())
+ testView::GetInstance()->ChangeView(TESTVIEW,LCD);
+ else
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"xxxxxxxxxxxxxxxxxxxxx\r\n");
+ }
+
+ void factorytest_enter_test_button_view(void)
+ {
+ testView::GetInstance()->ChangeView(TESTVIEW,BUTTON);
+ }
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __cplusplus */
}
\ No newline at end of file