#include "custom_utils.h"
#include "producttest/include/testPresenter.h"
// #include "producttest/include/testcat1.h"
-#include "AlarmClockModel.h"
+#include "alarm/include/AlarmClockModel.h"
#include "cmsis_os2.h"
#if defined(SUPPORT_GNSS)
#include "NMEA0183.h"
#include "pgnss_sample.h"
+#include "gnss_ctl.h"
// code/sdk/zhihui/services/gnss/inc/.h
#include "producttest/include/testView.h"
#include "producttest/include/testGPS.h"
+#include "producttest/include/testModel.h"
+#include "uicomponents/UIComponents.h"
// #include "gnss_sample.h"
#include "graphic_service.h"
namespace OHOS
testGPSView::testGPSView()
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemAboutTheWatchView::SystemAboutTheWatchView");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testGPSView::testGPSView");
g_pSystemAboutTheWatchView = this;
}
void testGPSView::ClearAll()
{
- if(testGPSScrollView)
+ if (GPS_TEST_timer != NULL) {
+ osTimerStop(GPS_TEST_timer);
+ osTimerDelete(GPS_TEST_timer);
+ GPS_TEST_timer = NULL;
+ }
+
+ // 清理固定元素 - 先从父组件中移除,再删除
+ if(labelButton_next)
{
- testGPSScrollView->RemoveAll();
-
- if (GPS_TEST_timer != NULL) {
- osTimerStop(GPS_TEST_timer);
- osTimerDelete(GPS_TEST_timer);
- GPS_TEST_timer = NULL;
+ if(mainContainer && mainContainer->GetChildrenNumber() > 0) {
+ mainContainer->Remove(labelButton_next);
}
- if(labelButton_next)
- {
- delete labelButton_next;
- labelButton_next=nullptr;
- }
- if(label_1_GPS_MSG)
- {
- delete label_1_GPS_MSG;
- label_1_GPS_MSG=nullptr;
+ delete labelButton_next;
+ labelButton_next=nullptr;
+ }
+ if(label_1_GPS_MSG)
+ {
+ if(contentScrollView && contentScrollView->GetChildrenNumber() > 0) {
+ contentScrollView->Remove(label_1_GPS_MSG);
}
-
- if(label_1_GPS_on_or_off)
- {
- delete label_1_GPS_on_or_off;
- label_1_GPS_on_or_off=nullptr;
+ delete label_1_GPS_MSG;
+ label_1_GPS_MSG=nullptr;
+ }
+ if(label_1_GPS_on_or_off)
+ {
+ if(mainContainer && mainContainer->GetChildrenNumber() > 0) {
+ mainContainer->Remove(label_1_GPS_on_or_off);
}
-
- if(Title)
- {
- delete Title;
- Title=nullptr;
+ delete label_1_GPS_on_or_off;
+ label_1_GPS_on_or_off=nullptr;
+ }
+ if(Title)
+ {
+ if(mainContainer && mainContainer->GetChildrenNumber() > 0) {
+ mainContainer->Remove(Title);
}
-
- if(GPSbutton[0])
- {
- delete GPSbutton[0];
- GPSbutton[0]=nullptr;
+ delete Title;
+ Title=nullptr;
+ }
+ if(GPSbutton[0])
+ {
+ if(mainContainer && mainContainer->GetChildrenNumber() > 0) {
+ mainContainer->Remove(GPSbutton[0]);
}
-
- if(GPSbutton[1])
- {
- delete GPSbutton[1];
- GPSbutton[1]=nullptr;
+ delete GPSbutton[0];
+ GPSbutton[0]=nullptr;
+ }
+ if(GPSbutton[1])
+ {
+ if(mainContainer && mainContainer->GetChildrenNumber() > 0) {
+ mainContainer->Remove(GPSbutton[1]);
}
-
- if(tempImage)
- {
- delete tempImage;
- tempImage = nullptr;
+ delete GPSbutton[1];
+ GPSbutton[1]=nullptr;
+ }
+ if(BDSButton)
+ {
+ if(mainContainer && mainContainer->GetChildrenNumber() > 0) {
+ mainContainer->Remove(BDSButton);
}
-
+ delete BDSButton;
+ BDSButton=nullptr;
+ }
- delete testGPSScrollView;
- testGPSScrollView=nullptr;
- }
+ // 清理滚动内容区域
+ if(contentScrollView)
+ {
+ contentScrollView->RemoveAll();
+ // 如果contentScrollView是mainContainer的子组件,先从mainContainer中移除
+ if(mainContainer && mainContainer->GetChildrenNumber() > 0) {
+ mainContainer->Remove(contentScrollView);
+ }
+ delete contentScrollView;
+ contentScrollView=nullptr;
+ }
+
+ // 清理主容器 - 最后清理
+ if(mainContainer)
+ {
+ mainContainer->RemoveAll();
+ // 如果mainContainer是RootView的子组件,先从RootView中移除
+ RootView::GetInstance()->Remove(mainContainer);
+ delete mainContainer;
+ mainContainer=nullptr;
+ }
}
UILabelButtonExt *testGPSView::SetTheButton_ext(ButtonConfig_ext_t &buttonconfig)
}
button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h);
button->SetViewId(buttonconfig.ViewId);
+
+ // 默认状态:蓝色背景
button->SetStyle(STYLE_BACKGROUND_COLOR, Color::Blue().full);
- //button->SetStyle(STYLE_BORDER_RADIUS,0);
+ button->SetStyle(STYLE_BACKGROUND_OPA, 0x80);
+
+ // 按下状态:深灰色背景
button->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);
- //button->SetStyleForState(STYLE_BORDER_RADIUS,0, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BACKGROUND_OPA, 0xff, UIButton::PRESSED);
+
button->SetTouchable(true);
- button->SetStyle(STYLE_BACKGROUND_OPA, 0x80);
button->SetText(buttonconfig.str);
- button->SetAlign(TEXT_ALIGNMENT_LEFT);
- button->SetLabelPosition(buttonconfig.label_x,buttonconfig.label_y );
+ button->SetAlign(buttonconfig.ALIGN); // 使用配置的对齐方式
+ button->SetLabelPosition(buttonconfig.label_x, buttonconfig.label_y);
button->SetFont(DEFAULT_VECTOR_FONT_FILENAME_EN, buttonconfig.Fontsize);
- UIView:: OnClickListener *touchListener = static_cast<UIView::OnClickListener *>(testPresenter::GetInstance());
+
+ UIView::OnClickListener *touchListener = static_cast<UIView::OnClickListener *>(testPresenter::GetInstance());
button->SetOnClickListener(touchListener);
return button;
}
+
+ void testGPSView::SetGPSButtonActive(bool isActive)
+ {
+ if (GPSbutton[0] != nullptr)
+ {
+ if (isActive)
+ {
+ // 激活状态:绿色背景,文字显示"关"
+ GPSbutton[0]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Green().full);
+ GPSbutton[0]->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ GPSbutton[0]->SetText("关");
+ }
+ else
+ {
+ // 默认状态:蓝色背景,文字显示"开"
+ GPSbutton[0]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Blue().full);
+ GPSbutton[0]->SetStyle(STYLE_BACKGROUND_OPA, 0x80);
+ GPSbutton[0]->SetText("开");
+ }
+ }
+
+ // 强制刷新界面
+ RootView::GetInstance()->Invalidate();
+ }
+
+ void testGPSView::ToggleGPSState()
+ {
+ // 检查按钮是否被禁用
+ if (!gpsButtonEnabled) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPS Toggle: Button is disabled, ignoring click");
+ return;
+ }
+
+ // 切换GPS状态
+ gpsIsOn = !gpsIsOn;
+
+ // 更新按钮颜色和文字
+ SetGPSButtonActive(gpsIsOn);
+
+ // 更新按钮状态(互斥逻辑)
+ UpdateButtonStates();
+
+ // 根据状态执行相应操作
+ if (gpsIsOn)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPS Toggle: Turning ON (Button: Green '关')");
+
+ // 检查GPS是否已经在运行
+ if (getPGnssServerStat() == 1) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPS Toggle: GPS already running, skipping start");
+ return;
+ }
+
+ gnss_start();
+ }
+ else
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPS Toggle: Turning OFF (Button: Blue '开')");
+
+ // 检查GPS是否已经停止
+ if (getPGnssServerStat() == 0) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPS Toggle: GPS already stopped, skipping stop");
+ return;
+ }
+
+ gnss_stop();
+ }
+ }
+
+ void testGPSView::SetBDSButtonActive(bool isActive)
+ {
+ if (BDSButton != nullptr)
+ {
+ if (isActive)
+ {
+ // 激活状态:绿色背景,文字显示"关"
+ BDSButton->SetStyle(STYLE_BACKGROUND_COLOR, Color::Green().full);
+ BDSButton->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ BDSButton->SetText("北斗关");
+ }
+ else
+ {
+ // 默认状态:蓝色背景,文字显示"开"
+ BDSButton->SetStyle(STYLE_BACKGROUND_COLOR, Color::Blue().full);
+ BDSButton->SetStyle(STYLE_BACKGROUND_OPA, 0x80);
+ BDSButton->SetText("北斗开");
+ }
+ }
+
+ // 强制刷新界面
+ RootView::GetInstance()->Invalidate();
+ }
+
+ void testGPSView::ToggleBDSState()
+ {
+ // 检查按钮是否被禁用
+ if (!bdsButtonEnabled) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BDS Toggle: Button is disabled, ignoring click");
+ return;
+ }
+
+ // 切换北斗状态
+ bdsIsOn = !bdsIsOn;
+
+ // 更新按钮颜色和文字
+ SetBDSButtonActive(bdsIsOn);
+
+ // 更新按钮状态(互斥逻辑)
+ UpdateButtonStates();
+
+ // 根据状态设置北斗标志位
+ if (bdsIsOn)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BDS Toggle: Setting BDS mode flag (Button: Green '关')");
+
+ // 设置北斗模式标志位
+ setBDSModeFlag(1);
+ gnss_start();
+ }
+ else
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BDS Toggle: Setting GPS mode flag (Button: Blue '开')");
+
+ // 设置GPS模式标志位
+ setBDSModeFlag(0);
+ gnss_stop();
+ }
+ }
+
+ // 按钮启用/禁用控制函数
+ void testGPSView::SetGPSButtonEnabled(bool enabled)
+ {
+ gpsButtonEnabled = enabled;
+ if (GPSbutton[0] != nullptr) {
+ GPSbutton[0]->SetTouchable(enabled);
+ if (enabled) {
+ // 启用状态:恢复正常颜色
+ if (gpsIsOn) {
+ GPSbutton[0]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Green().full);
+ GPSbutton[0]->SetText("关");
+ } else {
+ GPSbutton[0]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Blue().full);
+ GPSbutton[0]->SetText("开");
+ }
+ } else {
+ // 禁用状态:灰色,保持原有文字
+ GPSbutton[0]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Gray().full);
+ GPSbutton[0]->SetStyle(STYLE_BACKGROUND_OPA, 0x60);
+ // 不改变文字内容,保持原有的"开"或"关"
+ }
+ }
+ RootView::GetInstance()->Invalidate();
+ }
+
+ void testGPSView::SetBDSButtonEnabled(bool enabled)
+ {
+ bdsButtonEnabled = enabled;
+ if (BDSButton != nullptr) {
+ BDSButton->SetTouchable(enabled);
+ if (enabled) {
+ // 启用状态:恢复正常颜色
+ if (bdsIsOn) {
+ BDSButton->SetStyle(STYLE_BACKGROUND_COLOR, Color::Green().full);
+ BDSButton->SetText("北斗关");
+ } else {
+ BDSButton->SetStyle(STYLE_BACKGROUND_COLOR, Color::Blue().full);
+ BDSButton->SetText("北斗开");
+ }
+ } else {
+ // 禁用状态:灰色,保持原有文字
+ BDSButton->SetStyle(STYLE_BACKGROUND_COLOR, Color::Gray().full);
+ BDSButton->SetStyle(STYLE_BACKGROUND_OPA, 0x60);
+ // 不改变文字内容,保持原有的"北斗开"或"北斗关"
+ }
+ }
+ RootView::GetInstance()->Invalidate();
+ }
+
+ void testGPSView::UpdateButtonStates()
+ {
+ // 互斥逻辑:如果GPS开启,禁用北斗按钮;如果北斗开启,禁用GPS按钮
+ if (gpsIsOn) {
+ // GPS开启,禁用北斗按钮
+ SetBDSButtonEnabled(false);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPS is ON, disabling BDS button");
+ } else if (bdsIsOn) {
+ // 北斗开启,禁用GPS按钮
+ SetGPSButtonEnabled(false);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BDS is ON, disabling GPS button");
+ } else {
+ // 两个都关闭,启用所有按钮
+ SetGPSButtonEnabled(true);
+ SetBDSButtonEnabled(true);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Both OFF, enabling all buttons");
+ }
+ }
UILabel *testGPSView::InitLabel(LabelConfig &labelConfig)
{
void testGPSView:: gpsdataTimerCallBack(void)
{
if (label_1_GPS_MSG != nullptr) {
-
gps_data_t * gpsdata=getPGPSGlobaldata();
gps_data_t gpsd={0};
if (gpsdata->last_gps_time_ms>0)
bool testGPSView::testGPSScrollViewcrollViewinit(uint8_t id)
{
-
- testGPSScrollView = new UIScrollView();
- if (testGPSScrollView == nullptr)
+ // 创建主容器(固定布局)
+ mainContainer = new UIViewGroup();
+ if (mainContainer == nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemAboutTheWatchView::testGPSScrollView new fail!");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testGPSView::mainContainer new fail!");
return false;
}
- testGPSScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
- testGPSScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
- testGPSScrollView->SetStyle(STYLE_BORDER_RADIUS, 0);
- testGPSScrollView->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
- testGPSScrollView->SetStyle(STYLE_BORDER_COLOR, Color::Yellow().blue);
- testGPSScrollView->SetScrollBlankSize(75);
-
+ mainContainer->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ mainContainer->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ mainContainer->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
+
+ // 固定元素:标题(顶部固定)
+ Title = testAboutView::GetInstance()->init_title(165, 15, "GPS_TEST");
+ mainContainer->Add(Title);
+
+ // 固定元素:GPS状态显示(顶部固定,居中)
LabelConfig Config = {
- .left = 50,
- .top = 85,
- .width = Screen::GetInstance().GetWidth()-80,
+ .left = (Screen::GetInstance().GetWidth() - 200) / 2, // 居中显示
+ .top = 55,
+ .width = 200,
.height = 35,
- .fontSize = 20,
- .lineHeigh = 25,
+ .fontSize = 25, // 增大字体
+ .lineHeigh = 35,
.text = "",
.lineBreakMode = UILabel::LINE_BREAK_WRAP,
};
- label_1_GPS_MSG= InitLabel(Config);
- if (label_1_GPS_MSG == nullptr)
+ label_1_GPS_on_or_off = InitLabel(Config);
+ if (label_1_GPS_on_or_off == nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::SystemAboutTheWatchTitle new fail!");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testGPSView::label_1_GPS_on_or_off new fail!");
return false;
}
- testGPSScrollView->Add(label_1_GPS_MSG);
-
+ label_1_GPS_on_or_off->SetAlign(TEXT_ALIGNMENT_CENTER); // 设置文字居中对齐
+ mainContainer->Add(label_1_GPS_on_or_off);
+
+ // 固定元素:下一页按钮(右上角固定)
+ labelButton_next = testAboutView::GetInstance()->init_button_next(320, 55, Test_ViewMapper_t[id].viewid_str_next);
+ mainContainer->Add(labelButton_next);
+
+ // 固定元素:GPS开关按钮(左侧)
+ ButtonConfig_ext_t buttonconfig;
+ buttonconfig.x = (Screen::GetInstance().GetWidth() - 300) / 2; // 左侧位置
+ buttonconfig.y = 100;
+ buttonconfig.w = 120; // 调整宽度
+ buttonconfig.h = 70; // 保持高度
+ buttonconfig.label_x = 0; // 文字居中,不需要偏移
+ buttonconfig.label_y = 0;
+ buttonconfig.Fontsize = 30; // 增大字体大小
+ buttonconfig.ViewId = GPS_OPEN_CONFIRM_BUTTON;
+ buttonconfig.str = "开"; // 改为"开"
+ buttonconfig.ALIGN = TEXT_ALIGNMENT_CENTER; // 居中对齐
+ GPSbutton[0] = SetTheButton_ext(buttonconfig);
+ mainContainer->Add(GPSbutton[0]);
+
+ // 固定元素:北斗开关按钮(右侧)
+ buttonconfig.x = (Screen::GetInstance().GetWidth() - 300) / 2 + 150; // 右侧位置
+ buttonconfig.y = 100;
+ buttonconfig.w = 120; // 调整宽度
+ buttonconfig.h = 70; // 保持高度
+ buttonconfig.label_x = 0; // 文字居中,不需要偏移
+ buttonconfig.label_y = 0;
+ buttonconfig.Fontsize = 30; // 增大字体大小
+ buttonconfig.ViewId = BDS_OPEN_CONFIRM_BUTTON;
+ buttonconfig.str = "北斗开"; // 改为"开"
+ buttonconfig.ALIGN = TEXT_ALIGNMENT_CENTER; // 居中对齐
+ BDSButton = SetTheButton_ext(buttonconfig);
+ mainContainer->Add(BDSButton);
+
+ // 将第二个按钮设为空,不再使用
+ GPSbutton[1] = nullptr;
+
+ // 确保按钮初始状态为蓝色(GPS和北斗关闭状态)
+ SetGPSButtonActive(false);
+ SetBDSButtonActive(false);
+
+ // 初始化按钮状态(两个按钮都启用)
+ UpdateButtonStates();
+
+ // 创建可滚动内容区域(下半部分)
+ contentScrollView = new UIScrollView();
+ if (contentScrollView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testGPSView::contentScrollView new fail!");
+ return false;
+ }
+ int scrollY = 190; // 固定元素下方开始滚动区域
+ int scrollHeight = Screen::GetInstance().GetHeight() - scrollY;
+ contentScrollView->SetPosition(0, scrollY, Screen::GetInstance().GetWidth(), scrollHeight);
+ contentScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ contentScrollView->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
+
+ // 优化滚动体验参数 - 完全消除惯性
+ contentScrollView->SetScrollBlankSize(100); // 增大滚动空白区域,允许底部继续滑动
+ contentScrollView->SetReboundSize(0); // 设置为0,消除回弹惯性
+ contentScrollView->SetDirection(1); // 垂直滚动
+ contentScrollView->SetThrowDrag(false); // 关闭抛掷滚动惯性
+ contentScrollView->SetMaxScrollDistance(0); // 设置为0,消除最大滚动距离惯性
+ contentScrollView->SetSwipeACCLevel(0); // 关闭滑动加速度补偿
+ contentScrollView->SetYScrollBarVisible(true); // 显示滚动条
+
+ // 在可滚动区域添加GPS详细信息
Config = {
- .left = 50,
- .top = 50,
- .width = 350,
- .height = 30,
- .fontSize = 25,
- .lineHeigh = 35,
+ .left = 20,
+ .top = 20, // 相对于滚动视图的位置
+ .width = Screen::GetInstance().GetWidth()-40,
+ .height = 200, // 足够的高度容纳GPS信息
+ .fontSize = 20, // 增大GPS信息字体
+ .lineHeigh = 25,
.text = "",
.lineBreakMode = UILabel::LINE_BREAK_WRAP,
};
- label_1_GPS_on_or_off= InitLabel(Config);
- if (label_1_GPS_on_or_off == nullptr)
+ label_1_GPS_MSG = InitLabel(Config);
+ if (label_1_GPS_MSG == nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::SystemAboutTheWatchTitle new fail!");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testGPSView::label_1_GPS_MSG new fail!");
return false;
}
- testGPSScrollView->Add(label_1_GPS_on_or_off);
+ contentScrollView->Add(label_1_GPS_MSG);
- ButtonConfig_ext_t buttonconfig;
- buttonconfig.x = 20;
- buttonconfig.y = 400;
- buttonconfig.w = 180;
- buttonconfig.h = 96;
- buttonconfig.label_x=40;
- buttonconfig.label_y=0;
- buttonconfig.Fontsize=30;
- buttonconfig.ViewId=GPS_OPEN_CONFIRM_BUTTON;
- buttonconfig.str=GPS_OPEN_CONFIRM_BUTTON;
- buttonconfig.ALIGN=TEXT_ALIGNMENT_LEFT;
- GPSbutton[0]=SetTheButton_ext(buttonconfig);
- testGPSScrollView->Add( GPSbutton[0]);
- //testcat1ScrollView->Add(button);
-
- buttonconfig.x = 220;
- buttonconfig.y = 400;
- buttonconfig.w = 180;
- buttonconfig.h = 96;
- buttonconfig.label_x=40;
- buttonconfig.label_y=0;
- buttonconfig.Fontsize=30;
- buttonconfig.ViewId=GPS_CLOSE_CANCEL_BUTTON;
- buttonconfig.str=GPS_CLOSE_CANCEL_BUTTON;
- buttonconfig.ALIGN=TEXT_ALIGNMENT_LEFT;
- GPSbutton[1]=SetTheButton_ext(buttonconfig);
- testGPSScrollView->Add( GPSbutton[1]);
+ // 为可滚动区域设置拖拽属性和监听器
+ contentScrollView->SetTouchable(true);
+ contentScrollView->SetDraggable(true);
-
-
-
+ // 设置拖拽监听器以支持左滑退出功能
UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(testPresenter::GetInstance());
- if (draglistener == nullptr)
+ if (draglistener != nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::draglistener can not be nullptr!");
- return false;
+ contentScrollView->SetOnDragListener(draglistener); // 恢复左滑退出功能
}
- testGPSScrollView->SetOnDragListener(draglistener);
-
-
- labelButton_next= testAboutView::GetInstance()->init_button_next(267,320,Test_ViewMapper_t[id].viewid_str_next);
- testGPSScrollView->Add(labelButton_next);
- Title= testAboutView::GetInstance()->init_title(165,45,"GPS_TEST");
- testGPSScrollView->Add(Title);
-
-
- if (tempImage == nullptr)
- {
- tempImage = new UIImageView();
- if (tempImage == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tempImage can not be nullptr!");
- return false;
- }
- }
- tempImage->SetPosition(193, GPSbutton[0]->GetY()+GPSbutton[0]->GetHeight() + 60, 40, 40);
- testGPSScrollView->Add(tempImage);
-
-
+ // 将滚动区域添加到主容器
+ mainContainer->Add(contentScrollView);
- testGPSScrollView->SetTouchable(true);
- testGPSScrollView->SetDraggable(true);
+ // 启动GPS数据更新定时器
uint32_t tick;
osStatus_t retTimer;
GPS_TEST_timer = osTimerNew((osTimerFunc_t)gpsdataTimerCallBackproc, osTimerPeriodic, NULL, NULL);
- tick =2000;// osMs2Tick(1000);
+ tick = 2000;
retTimer = osTimerStart(GPS_TEST_timer, tick);
if (retTimer != osOK && GPS_TEST_timer != NULL) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"StartCallTimer osTimerStart failed, ret = %lx!!", retTimer);
return true;
}
- UIScrollView *testGPSView::testGPSInitIView(uint8_t id)
+ UIViewGroup *testGPSView::testGPSInitIView(uint8_t id)
{
if (!testGPSScrollViewcrollViewinit(id))
{
return nullptr;
}
- return testGPSScrollView;
+ // 返回主容器(包含固定元素和可滚动区域)
+ return mainContainer;
}
}
#include "producttest/include/testView.h"\r
#include "producttest/include/testPresenter.h"\r
+#include "producttest/include/testModel.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/root_view.h"\r
#include "power_display_service.h"\r
#include "wearable_log.h"\r
#ifdef SUPPORT_CAT1_SERVICE\r
static testView *g_pSystemView{nullptr};\r
\r
// 2.ViewMapper[] 是一个静态的视图映射数组,将视图ID与MainStopWatchView类中的特定成员函数指针进行了绑定。\r
- test_ext Test_ViewMapper_t[] = {\r
- {TESTVIEW,"","","",&testView::ChangeSystemAboutView,false},//占位,空的\r
- {VISON,"AboutTheWatchButton","Verison","AboutTheWatchButton_next",&testView::ChangeSystemAboutView,true},\r
- {LCD,"LCDButton","LCD","LCDButton_next",&testView::ChangeLCDTESTView,true},\r
- {TP,"TPButton","TP","TPButton_next", &testView::ChangeTPTESTView,true},\r
- {MAGETIC,"MAGETICButton","Magetic","MAGETICButton_next", &testView::ChangeMGTESTView,true},\r
- {LUMINANCE,"luminanceButton","luminance","luminanceButton_next", &testView::ChangLUMTESTView,true},\r
- {CHARG,"chargingButton","bat&charger","chargingButton_next",&testView::ChangchargingTESTView,true},\r
- {SPEAK,"speakButton","speak","speakButton_next" ,&testView::ChangspeakTESTView,true},\r
-\r
- {MOTOR,"motorButton","motor","motorButton_next" ,&testView::ChangmotorTESTView,true},\r
- #ifdef SUPPORT_CAT1_SERVICE\r
- {CAT1,"cat1button","CAT1", "cat1button_next",&testView::ChangeCAT1TESTView,true},\r
- #endif\r
- {BUTTON,"buttonbutton","button" ,"buttonbutton_next",&testView::ChangKEYTESTView,true},\r
- {MICROPHONE,"microphonebutton","microphone", "microphonebutton_next",&testView::ChangeMPTESTView,true},\r
- {HRSENSON,"hrsensonbutton","hrsensor", "hrsensonbutton_next",&testView::ChangeHRTESTView,true},\r
- {GSENSON,"gsensonbutton","gsensor","gsensonbutton_next" ,&testView::ChangeGTESTView,true},\r
+ test_ext Test_ViewMapper_t[] = {\r
+ {TESTVIEW, "", "", "", &testView::ChangeSystemAboutView, false}, // 占位,空的\r
+ {VISON, "AboutTheWatchButton", "Verison", "AboutTheWatchButton_next", &testView::ChangeSystemAboutView, true},\r
+ {LCD, "LCDButton", "LCD", "LCDButton_next", &testView::ChangeLCDTESTView, true},\r
+ {TP, "TPButton", "TP", "TPButton_next", &testView::ChangeTPTESTView, true},\r
+ {MAGETIC, "MAGETICButton", "Magetic", "MAGETICButton_next", &testView::ChangeMGTESTView, true},\r
+ {LUMINANCE, "luminanceButton", "luminance", "luminanceButton_next", &testView::ChangLUMTESTView, true},\r
+ {CHARG, "chargingButton", "bat&charger", "chargingButton_next", &testView::ChangchargingTESTView, true},\r
+ {SPEAK, "speakButton", "speak", "speakButton_next", &testView::ChangspeakTESTView, true},\r
+ {MOTOR, "motorButton", "motor", "motorButton_next", &testView::ChangmotorTESTView, true},\r
+#ifdef SUPPORT_CAT1_SERVICE\r
+ {CAT1, "cat1button", "CAT1", "cat1button_next", &testView::ChangeCAT1TESTView, true},\r
+#endif\r
+ {BUTTON, "buttonbutton", "Button", "buttonbutton_next", &testView::ChangKEYTESTView, true},\r
+ {MICROPHONE, "microphonebutton", "microphone", "microphonebutton_next", &testView::ChangeMPTESTView, true},\r
+ {HRSENSON, "hrsensonbutton", "hrsensor", "hrsensonbutton_next", &testView::ChangeHRTESTView, true},\r
+ {GSENSON, "gsensonbutton", "gsensor", "gsensonbutton_next", &testView::ChangeGTESTView, true},\r
+ {BTTEST, "BTbutton", "BT", "BTbutton_next", &testView::ChangeBTTESTView, true},\r
+ {SEChipTest, "SEChipTestbutton", "SEChipTest", "SEChipTestbutton_next", &testView::ChangeSEChipTESTView, true},\r
+ // {PingTest, "PingTestbutton", "PingTest", "PingTestbutton_next", &testView::ChangePingTESTView, true},\r
#if defined(SUPPORT_GNSS)\r
- {GPSTEST,"GPSTestbutton","GPSTest","GPSTestbutton_next" ,&testView::ChangeGPSTESTView,true},\r
+ {GPSTEST, "GPSTestbutton", "GPSTest", "GPSTestbutton_next", &testView::ChangeGPSTESTView, true},\r
#endif\r
- {BTTEST,"BTbutton","BT" ,"BTbutton_next",&testView::ChangeBTTESTView,true},\r
- {SEChipTest,"SEChipTestbutton","SEChipTest","SEChipTestbutton_next" ,&testView::ChangeSEChipTESTView,true},\r
- {PingTest,"PingTestbutton","PingTest","PingTestbutton_next" ,&testView::ChangePingTESTView,true},\r
-#if defined(ENABLE_LQBP002TA)\r
- {PRESSURETEST,"pressureTestbutton","pressureTest","pressureTestbutton_next" ,&testView::ChangepressureTestTESTView,true},\r
+#ifdef ENABLE_LQBP002TA\r
+ {PRESSURETEST, "pressureTestbutton", "pressureTest", "pressureTestbutton_next", &testView::ChangepressureTestTESTView, true},\r
+#endif\r
+#ifdef AGINGTEST\r
+ {OLDTEST, "oldtestbutton", "aging", "oldtestexit", &testView::ChangeoldTESTView, true},\r
+#endif\r
+ {DEEPSLEEP, "deepsleep", "DeepSleepCurrent", "xxxxxxxxx", &testView::ChangeoldTESTView, true},\r
+ {shutdown, "shutdown", "shutdown", "xxxxxxxxx", &testView::ChangeoldTESTView, true},\r
+ {RESET, "reset", "reset", "xxxxxxxxx", &testView::ChangeoldTESTView, true},\r
+ {FACTORYRESE, "FactoryReset", "FactoryReset", "xxxxxxxxx", &testView::ChangeoldTESTView, true},\r
+#ifdef SUPPORT_A5133_SERVICE\r
+ {RF5133, "RF5133", "RF5133", "xxxxxxxxx", &testView::ChangeA5133TESTView, true},\r
#endif\r
-// #if defined(ENABLE_GYRO)\r
-// {GYROTEST,"gyroTestbutton","gyroTest","gyroTestbutton_next" ,&testView::ChangegyroTestTESTView,true},\r
-// #endif\r
- {OLDTEST,"oldtestbutton","aging" ,"oldtestexit",&testView::ChangeoldTESTView,true},\r
- {DEEPSLEEP,"deepsleep","DeepSleepCurrent","xxxxxxxxx" ,&testView::ChangeoldTESTView,true},\r
- {shutdown,"shutdown","shutdown", "xxxxxxxxx",&testView::ChangeoldTESTView,true},\r
- {RESET,"reset","reset", "xxxxxxxxx",&testView::ChangeoldTESTView,true},\r
- {FACTORYRESE,"FactoryReset","FactoryReset","xxxxxxxxx", &testView::ChangeoldTESTView,true},\r
- #ifdef SUPPORT_A5133_SERVICE\r
- {RF5133,"RF5133","RF5133", "xxxxxxxxx",&testView::ChangeA5133TESTView,true},\r
- #endif\r
\r
};\r
- \r
+\r
testView::testView()\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "testView::testView");\r
\r
void testView::ClearAll()\r
{\r
- if (initViewStatus == true)\r
+ if (group)\r
{\r
- SystemScrollView[TESTVIEW]->RemoveAll();\r
- int funcSize = sizeof(Test_ViewMapper_t) / sizeof(Test_ViewMapper_t[TESTVIEW]);\r
- for (int i = 0; i < funcSize; i++)\r
+ group->RemoveAll();\r
+ delete group;\r
+ group = nullptr;\r
+ if (SystemScrollView[TESTVIEW])\r
{\r
- if(button[i])\r
+ SystemScrollView[TESTVIEW]->RemoveAll();\r
+ delete SystemScrollView[TESTVIEW];\r
+ SystemScrollView[TESTVIEW] = nullptr;\r
+ delete SystemLabel;\r
+ SystemLabel = nullptr;\r
+ int funcSize = sizeof(Test_ViewMapper_t) / sizeof(Test_ViewMapper_t[TESTVIEW]);\r
+ for (int i = 0; i < funcSize; i++)\r
{\r
- delete button[i];\r
- button[i]=NULL;\r
+ if (button[i])\r
+ {\r
+ delete button[i];\r
+ button[i] = NULL;\r
+ }\r
}\r
}\r
- if(test_about_view)\r
- {\r
- delete test_about_view; //1\r
- test_about_view = nullptr;\r
- }\r
- \r
- if(test_LCD_view)\r
- {\r
- delete test_LCD_view; //2\r
+ }\r
+ if (test_about_view)\r
+ {\r
+ delete test_about_view; // 1\r
+ test_about_view = nullptr;\r
+ }\r
+\r
+ if (test_LCD_view)\r
+ {\r
+ delete test_LCD_view; // 2\r
test_LCD_view = nullptr;\r
- }\r
- if(test_TP_view)\r
- {\r
- delete test_TP_view; //3\r
+ }\r
+ if (test_TP_view)\r
+ {\r
+ delete test_TP_view; // 3\r
test_TP_view = nullptr;\r
- }\r
- if(test_lum_view)\r
- {\r
- delete test_lum_view;//4\r
+ }\r
+ if (test_lum_view)\r
+ {\r
+ delete test_lum_view; // 4\r
test_lum_view = nullptr;\r
- }\r
- if(test_charging_view)\r
- {\r
- delete test_charging_view;//5\r
+ }\r
+ if (test_charging_view)\r
+ {\r
+ delete test_charging_view; // 5\r
test_charging_view = nullptr;\r
- }\r
- if(test_speak_view)\r
- {\r
- delete test_speak_view;//6\r
+ }\r
+ if (test_speak_view)\r
+ {\r
+ delete test_speak_view; // 6\r
test_speak_view = nullptr;\r
- }\r
- if(test_motor_view)\r
- {\r
- delete test_motor_view;//7\r
+ }\r
+ if (test_motor_view)\r
+ {\r
+ delete test_motor_view; // 7\r
test_motor_view = nullptr;\r
- }\r
+ }\r
#ifdef SUPPORT_CAT1_SERVICE\r
- if(test_cat1_view)\r
- {\r
- delete test_cat1_view;//8\r
+ if (test_cat1_view)\r
+ {\r
+ delete test_cat1_view; // 8\r
test_cat1_view = nullptr;\r
- }\r
+ }\r
#endif\r
\r
- if(test_KEY_view)\r
- {\r
- delete test_KEY_view;//9\r
+ if (test_KEY_view)\r
+ {\r
+ delete test_KEY_view; // 9\r
test_KEY_view = nullptr;\r
- }\r
- if(test_MG_view)\r
- {\r
- delete test_MG_view;//10\r
+ }\r
+ if (test_MG_view)\r
+ {\r
+ delete test_MG_view; // 10\r
test_MG_view = nullptr;\r
- }\r
- if(test_hr_view)\r
- {\r
- delete test_hr_view;//11\r
+ }\r
+ if (test_hr_view)\r
+ {\r
+ delete test_hr_view; // 11\r
test_hr_view = nullptr;\r
- }\r
- if(test_MP_view)\r
- {\r
- delete test_MP_view;//12\r
+ }\r
+ if (test_MP_view)\r
+ {\r
+ delete test_MP_view; // 12\r
test_MP_view = nullptr;\r
- }\r
- if(test_G_view)\r
- {\r
- delete test_G_view;//13\r
- test_G_view= nullptr;\r
- }\r
+ }\r
+ if (test_G_view)\r
+ {\r
+ delete test_G_view; // 13\r
+ test_G_view = nullptr;\r
+ }\r
#ifdef SUPPORT_A5133_SERVICE\r
- if(test_A5133_view)\r
- {\r
- delete test_A5133_view;//13\r
- test_A5133_view= nullptr;\r
- }\r
+ if (test_A5133_view)\r
+ {\r
+ delete test_A5133_view; // 13\r
+ test_A5133_view = nullptr;\r
+ }\r
#endif\r
- // delete test_G_view;//13\r
- // test_G_view= nullptr;\r
+ // delete test_G_view;//13\r
+ // test_G_view= nullptr;\r
\r
- delete SystemLabel;\r
- SystemLabel = nullptr;\r
- if(SystemScrollView[TESTVIEW])\r
- {\r
- delete SystemScrollView[TESTVIEW];\r
- SystemScrollView[TESTVIEW] = nullptr;\r
- }\r
- for(int i=1;i<13;i++)\r
- {\r
- if(SystemScrollView[i])\r
- SystemScrollView[i] = nullptr; \r
- }\r
- \r
+ for (int i = 1; i < 13; i++)\r
+ {\r
+ if (SystemScrollView[i])\r
+ SystemScrollView[i] = nullptr;\r
+ }\r
+ if (test_Ping_view)\r
+ {\r
+ delete test_Ping_view; // PingTest\r
+ test_Ping_view = nullptr;\r
+ }\r
+#ifdef SUPPORT_GNSS\r
+ if (test_GPS_view)\r
+ {\r
+ delete test_GPS_view; // GPS\r
+ test_GPS_view = nullptr;\r
}\r
+#endif\r
}\r
\r
/// @brief 设置SystemScrollView\r
buttonconfig.w = w;\r
buttonconfig.h = h;\r
\r
- int len =sizeof(Test_ViewMapper_t)/sizeof(Test_ViewMapper_t[0]);\r
+ int len = sizeof(Test_ViewMapper_t) / sizeof(Test_ViewMapper_t[0]);\r
\r
- for(int i=1;i<len;i++)\r
+ for (int i = 1; i < len; i++)\r
{\r
- buttonconfig.str=Test_ViewMapper_t[i].Labe_str;\r
+ buttonconfig.str = Test_ViewMapper_t[i].Labe_str;\r
buttonconfig.ViewId = Test_ViewMapper_t[i].viewid_str;\r
buttonconfig.ImageSrc = imagsrc;\r
- buttonconfig.label_x=40;\r
- buttonconfig.label_y=0;\r
- buttonconfig.Fontsize=30;\r
- buttonconfig.ALIGN=TEXT_ALIGNMENT_LEFT;\r
+ buttonconfig.label_x = 40;\r
+ buttonconfig.label_y = 0;\r
+ buttonconfig.Fontsize = 30;\r
+ buttonconfig.ALIGN = TEXT_ALIGNMENT_LEFT;\r
button[i] = SetTheButton_ext(buttonconfig, clickListener);\r
- buttonconfig.y+=interval;\r
-\r
+ buttonconfig.y += interval;\r
}\r
/* -------------------------------------------------------------------------- */\r
- \r
}\r
\r
- \r
// 0.跳转到系统视图,其他视图都市通过这个视图跳转\r
bool testView::ChangeSystemView(int16_t thisView)\r
{\r
if (SystemScrollView[thisView] == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeSystemView");\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
return false;\r
}\r
SystemScrollView[thisView] = test_about_view->SystemAbouTheWatchtInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
return false;\r
}\r
SystemScrollView[thisView] = test_LCD_view->testLCDInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
return false;\r
}\r
SystemScrollView[thisView] = test_TP_view->testTPInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
\r
- bool testView::ChangeMGTESTView(int16_t thisView)\r
+ bool testView::ChangeMGTESTView(int16_t thisView)\r
{\r
if (SystemScrollView[thisView] == nullptr)\r
{\r
return false;\r
}\r
SystemScrollView[thisView] = test_MG_view->testmagicInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
return false;\r
}\r
SystemScrollView[thisView] = test_lum_view->testLUMInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
- \r
+\r
bool testView::ChangchargingTESTView(int16_t thisView)\r
{\r
if (SystemScrollView[thisView] == nullptr)\r
return false;\r
}\r
SystemScrollView[thisView] = test_charging_view->testCHANINGInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
return false;\r
}\r
SystemScrollView[thisView] = test_speak_view->testSPEAKInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
return false;\r
}\r
SystemScrollView[thisView] = test_motor_view->testMOTORInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
\r
- bool testView::ChangeCAT1TESTView(int16_t thisView)\r
+ bool testView::ChangeCAT1TESTView(int16_t thisView)\r
{\r
- #ifdef SUPPORT_CAT1_SERVICE\r
+#ifdef SUPPORT_CAT1_SERVICE\r
if (SystemScrollView[thisView] == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeCAT1TESTView");\r
return false;\r
}\r
SystemScrollView[thisView] = test_cat1_view->testcat1InitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
- #endif\r
+#endif\r
return true;\r
}\r
\r
return false;\r
}\r
SystemScrollView[thisView] = test_KEY_view->testBUTTONInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
return false;\r
}\r
SystemScrollView[thisView] = test_MP_view->testmicrophoneInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
return false;\r
}\r
SystemScrollView[thisView] = test_hr_view->testhrsensonInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
\r
- \r
bool testView::ChangeGTESTView(int16_t thisView)\r
{\r
if (SystemScrollView[thisView] == nullptr)\r
return false;\r
}\r
SystemScrollView[thisView] = test_G_view->testGSENSONInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
- \r
\r
- bool testView::ChangeoldTESTView(int16_t thisView)\r
+ bool testView::ChangeoldTESTView(int16_t thisView)\r
{\r
+#ifdef AGINGTEST\r
if (SystemScrollView[thisView] == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeoldTESTView");\r
return false;\r
}\r
SystemScrollView[thisView] = test_old_view->testoldInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
+#endif\r
return true;\r
- \r
}\r
- \r
\r
bool testView::ChangeBTTESTView(int16_t thisView)\r
{\r
return false;\r
}\r
SystemScrollView[thisView] = test_BT_view->testBTInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
\r
- \r
bool testView::ChangeSEChipTESTView(int16_t thisView)\r
{\r
if (SystemScrollView[thisView] == nullptr)\r
return false;\r
}\r
SystemScrollView[thisView] = test_SEChip_view->SEChipInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
{\r
if (SystemScrollView[thisView] == nullptr)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeSEChipTESTView");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangePingTESTView");\r
test_Ping_view = new testPingView();\r
if (test_Ping_view == nullptr)\r
{\r
return false;\r
}\r
SystemScrollView[thisView] = test_Ping_view->testPingInitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView:: new scrollView[%d] fail", thisView);\r
return false;\r
}\r
- SystemScrollView[thisView] = test_GPS_view->testGPSInitIView((uint8_t)thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ SystemScrollView[thisView] = static_cast<UIScrollView*>(test_GPS_view->testGPSInitIView((uint8_t)thisView));\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
\r
return true;\r
}\r
#endif\r
-#if defined(ENABLE_LQBP002TA)\r
- bool testView::ChangepressureTestTESTView(int16_t thisView)\r
+#ifdef ENABLE_LQBP002TA\r
+ bool testView::ChangepressureTestTESTView(int16_t thisView)\r
{\r
\r
if (SystemScrollView[thisView] == nullptr)\r
return false;\r
}\r
SystemScrollView[thisView] = test_pressure_view->testpressureInitIView((uint8_t)thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
- }\r
-\r
-\r
- return true;\r
- }\r
-#endif\r
-#if defined(ENABLE_GYRO)\r
- bool testView::ChangegyroTestTESTView(int16_t thisView)\r
- {\r
-\r
- if (SystemScrollView[thisView] == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeSEChipTESTView");\r
- test_gyro_view = new testgyroView();\r
- if (test_gyro_view == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView:: new scrollView[%d] fail", thisView);\r
- return false;\r
- }\r
- SystemScrollView[thisView] = test_gyro_view->testgyroInitIView((uint8_t)thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
\r
return true;\r
}\r
-\r
#endif\r
#ifdef SUPPORT_A5133_SERVICE\r
bool testView::ChangeA5133TESTView(int16_t thisView)\r
return false;\r
}\r
SystemScrollView[thisView] = test_A5133_view->testA5133InitIView(thisView);\r
- RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+ group->Add(SystemScrollView[thisView]);\r
}\r
return true;\r
}\r
\r
/* -------------------------------------------------------------------------- */\r
// 1.MainStopWatchViewMapper:结构体定义了一个将视图ID映射到特定成员函数指针的映射表。\r
- \r
+\r
// 3.根据传入的interface参数执行相应视图ID关联的成员函数。\r
bool testView::ClickFunc(int16_t interface)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView:: SystemViewId Overstep ones bounds");\r
return;\r
}\r
- SystemScrollView[hideView]->SetVisible(false);\r
+ if (SystemScrollView[hideView] != nullptr)\r
+ {\r
+ SystemScrollView[hideView]->SetVisible(false);\r
+ }\r
+ else\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView:: SystemScrollView[%d] is nullptr", hideView);\r
+ }\r
ClickFunc(showView);\r
- SystemScrollView[showView]->SetVisible(true);\r
- Draw();\r
- if(hideView!=0)\r
+ if (SystemScrollView[showView] != nullptr)\r
+ {\r
+ SystemScrollView[showView]->SetVisible(true);\r
+ }\r
+ else\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView:: SystemScrollView[%d] is nullptr", showView);\r
+ }\r
+ if (hideView != 0)\r
{\r
- switch (hideView)\r
- {\r
+ switch (hideView)\r
+ {\r
case VISON:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_about_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_about_view;\r
test_about_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
- break;\r
+ SystemScrollView[hideView] = nullptr;\r
+ break;\r
case LCD:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_LCD_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_LCD_view;\r
test_LCD_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
- break;\r
+ SystemScrollView[hideView] = nullptr;\r
+ break;\r
case TP:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_TP_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_TP_view;\r
test_TP_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
- break; \r
+ SystemScrollView[hideView] = nullptr;\r
+ break;\r
case MAGETIC:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_MG_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_MG_view;\r
test_MG_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
- break;\r
+ SystemScrollView[hideView] = nullptr;\r
+ break;\r
case LUMINANCE:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_lum_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_lum_view;\r
test_lum_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
- break;\r
+ SystemScrollView[hideView] = nullptr;\r
+ break;\r
case CHARG:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_charging_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_charging_view;\r
test_charging_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
- break;\r
+ SystemScrollView[hideView] = nullptr;\r
+ break;\r
\r
case SPEAK:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_speak_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_speak_view;\r
test_speak_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
- break;\r
+ SystemScrollView[hideView] = nullptr;\r
+ break;\r
case MOTOR:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_motor_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_motor_view;\r
test_motor_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
- break;\r
+ SystemScrollView[hideView] = nullptr;\r
+ break;\r
#ifdef SUPPORT_CAT1_SERVICE\r
- case CAT1:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_cat1_view; \r
+ case CAT1:\r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_cat1_view;\r
test_cat1_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
- break;\r
+ SystemScrollView[hideView] = nullptr;\r
+ break;\r
#endif\r
- case BUTTON:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_KEY_view; \r
+ case BUTTON:\r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_KEY_view;\r
test_KEY_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
- break;\r
+ SystemScrollView[hideView] = nullptr;\r
+ break;\r
case MICROPHONE:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_MP_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_MP_view;\r
test_MP_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
- break;\r
+ SystemScrollView[hideView] = nullptr;\r
+ break;\r
case HRSENSON:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_hr_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_hr_view;\r
test_hr_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
- break;\r
+ SystemScrollView[hideView] = nullptr;\r
+ break;\r
case GSENSON:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_G_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_G_view;\r
test_G_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
- break;\r
+ SystemScrollView[hideView] = nullptr;\r
+ break;\r
case OLDTEST:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_old_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_old_view;\r
test_old_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
+ SystemScrollView[hideView] = nullptr;\r
break;\r
case BTTEST:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_BT_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_BT_view;\r
test_BT_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
+ SystemScrollView[hideView] = nullptr;\r
break;\r
case SEChipTest:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_SEChip_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_SEChip_view;\r
test_SEChip_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
- break;\r
- case PingTest:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_Ping_view; \r
- test_Ping_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
+ SystemScrollView[hideView] = nullptr;\r
break;\r
+ // case PingTest:\r
+ // group->Remove(SystemScrollView[hideView]);\r
+ // delete test_Ping_view;\r
+ // test_Ping_view = nullptr;\r
+ // SystemScrollView[hideView] = nullptr;\r
+ // break;\r
#if defined(SUPPORT_GNSS)\r
case GPSTEST:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_GPS_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_GPS_view;\r
test_GPS_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
- break; \r
+ SystemScrollView[hideView] = nullptr;\r
+ break;\r
#endif\r
#ifdef SUPPORT_A5133_SERVICE\r
case RF5133:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_A5133_view; \r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_A5133_view;\r
test_A5133_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
+ SystemScrollView[hideView] = nullptr;\r
break;\r
#endif\r
#if defined(ENABLE_LQBP002TA)\r
- case PRESSURETEST:\r
- RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
- delete test_pressure_view; \r
+ case PRESSURETEST:\r
+ group->Remove(SystemScrollView[hideView]);\r
+ delete test_pressure_view;\r
test_pressure_view = nullptr;\r
- SystemScrollView[hideView]=nullptr;\r
+ SystemScrollView[hideView] = nullptr;\r
break;\r
#endif\r
-// #if defined(ENABLE_GYRO)\r
-// case GYROTEST:\r
-// RootView::GetInstance()->Remove(SystemScrollView[hideView]);\r
-// delete test_gyro_view; \r
-// test_gyro_view = nullptr;\r
-// SystemScrollView[hideView]=nullptr;\r
-// break;\r
-// #endif\r
-\r
- default:\r
- break;\r
- }\r
- }\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "change>>>>>>>>>>>hideView %d > showView %d >>>",hideView,showView);\r
- \r
+ default:\r
+ break;\r
+ }\r
+ }\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "change>>>>>>>>>>>hideView %d > showView %d >>>", hideView, showView);\r
}\r
/* -------------------------------------------------------------------------- */\r
\r
void testView::OnStart()\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnStart>>>>>>>>>>>>>");\r
- View<testPresenter>::OnStart();\r
- //InitIView();\r
- initView_ext(43,120,380,100,120,"/user/res/SETTING_NEXT.bin");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnStart>>>>>>>>>>>>>");\r
+\r
+ if (group == nullptr)\r
+ {\r
+ group = new UIViewGroup();\r
+ if (group == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WatchQRCodeView::WatchQRCodeGroupView new fail!");\r
+ }\r
+ }\r
+ group->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+ group->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+ group->SetTouchable(true);\r
+ group->SetDraggable(true);\r
+\r
+ // InitIView();\r
+ initView_ext(43, 120, 380, 100, 120, "/user/res/SETTING_NEXT.bin");\r
const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
if (display_api->get_screen_state() != SCREEN_ON)\r
- { \r
- display_api->turn_on_screen(); \r
- } \r
+ {\r
+ display_api->turn_on_screen();\r
+ }\r
display_api->set_auto_timeout_function(false);\r
\r
uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cnt : %d\n",cnt);\r
- if (cnt == 0) \r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cnt : %d\n", cnt);\r
+ if (cnt == 0)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_pm_add_sleep_veto(PM_ID_P_TEST);");\r
uapi_pm_add_sleep_veto(PM_ID_P_TEST);\r
}\r
\r
- uapi_set4GCapability(true);\r
+ if (!uapi_dev_runtime_get_factory_test_status_flag())\r
+ uapi_set4GCapability(true);\r
\r
start_custom_ble_service();\r
- }\r
\r
- void testView::OnSetUpView()\r
- {\r
- View<testPresenter>::OnSetUpView();\r
if (SystemScrollView[TESTVIEW] == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView:: OnSetUpView has nullptr");\r
return;\r
}\r
- \r
SystemScrollView[TESTVIEW]->Add(SystemLabel);\r
-\r
- int len =sizeof(Test_ViewMapper_t)/sizeof(Test_ViewMapper_t[0]);\r
-\r
- for(int i=0;i<len;i++)\r
+ int len = sizeof(Test_ViewMapper_t) / sizeof(Test_ViewMapper_t[0]);\r
+ for (int i = 0; i < len; i++)\r
{\r
- SystemScrollView[TESTVIEW]->Add(button[i]);\r
+ SystemScrollView[TESTVIEW]->Add(button[i]);\r
}\r
- \r
- // SystemScrollView[SYSTEMVIEW]->Add(SuperviseButton);\r
- // SystemScrollView[SYSTEMVIEW]->Add(SystemLanguageButton);\r
- // SystemScrollView[SYSTEMVIEW]->Add(FactoryResetButton);\r
- // SystemScrollView[SYSTEMVIEW]->Add(SystemUpgradeButtonExt);\r
-\r
- RootView::GetInstance()->Add(SystemScrollView[TESTVIEW]);\r
- Draw();\r
- }\r
-\r
- void testView::OnTearDownView()\r
- {\r
-\r
- View<testPresenter>::OnTearDownView();\r
- return;\r
- }\r
-\r
- void testView::OnStop()\r
- {\r
-\r
- View<testPresenter>::OnStop();\r
- RootView::GetInstance()->RemoveAll();\r
- return;\r
+ group->Add(SystemScrollView[TESTVIEW]);\r
+ RootView::GetInstance()->Add(group);\r
}\r
}
\ No newline at end of file