优化cat1Service的UDP接收数据的逻辑:增加移动入库重启开关机流程 移动入库字段RAM由35MB改成32MB
authorDXY <1731678236@qq.com>
Thu, 29 Aug 2024 10:14:19 +0000 (18:14 +0800)
committerDXY <1731678236@qq.com>
Thu, 29 Aug 2024 10:14:19 +0000 (18:14 +0800)
72 files changed:
autobuild.sh
cat1modem/src/cat1Service.py
cat1modem/src/china_mobile_dmp.py
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h
code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp
code/sdk/application/wearable/fd230app/nativeui/codedlock/src/CodedLockPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/codedlock/src/CodedLockView.cpp
code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/src/DnotDisturbModel.cpp
code/sdk/application/wearable/fd230app/nativeui/main/include/PullUpDownView.h
code/sdk/application/wearable/fd230app/nativeui/main/include/dropdown/DropDownCardPage1.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dropdown/DropDownCardPage2.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/MainModel.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/PullUpDownView.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/dropdown/DropDownCardPage1.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dropdown/DropDownCardPage2.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleData.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleListAdapter.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleListItem.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleModel.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/schedule/include/SchedulePresenter.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleListAdapter.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleListItem.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleModel.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/schedule/src/SchedulePresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/screennotify/src/ui_screennotify.cpp
code/sdk/application/wearable/service/ble_service/blemoder/CMakeLists.txt
code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp
code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp
code/sdk/build/config/target_config/brandy/config.py
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/Schedule/IMAGE_ITEM_ARROW.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_4G.bin [deleted file]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_4G_OFF.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_4G_ON.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_ALIPAY.bin
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_BLUETOOTH.bin [deleted file]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_BLUETOOTHCONNECTED.bin
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_BLUETOOTHDISCONNECTED.bin
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_BT_CONNECT.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_BT_DISCONNECT.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_DNOTDISTURB.bin [deleted file]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_DNOTDISTURB_OFF.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_DNOTDISTURB_ON.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_EARPHONESCONNECTED.bin
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_EARPHONESDISCONNECTED.bin
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_FINDPHONE.bin
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_HD.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_LIGHTING.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_LINE.bin
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_MOBILE_DATA.bin
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_NOSIGNAL.bin
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_PHONECONNECTED.bin
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_PHONEDISCONNECTED.bin
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SAVEPOWER.bin [deleted file]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SAVEPOWER_OFF.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SAVEPOWER_ON.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SELECT_1.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SELECT_2.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SETTING.bin
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SLEEP_OFF.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SLEEP_ON.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/bluetooth_connect.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/bluetooth_disconnect.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/earphones_connect.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/earphones_disconnect.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/phone_connect.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/phone_disconnect.bin [new file with mode: 0644]
gitdiff.sh

index bb7dc45..916d11c 100755 (executable)
@@ -8,7 +8,7 @@ DEFAULT_TARGET_PACK_NAME=pack_brandy_native_js
 DEFAULT_APPLICATION_NAME=brandy-native-js
 DEFAULT_TARGET_PACK_NAME_USER=pack_brandy_native_js_user
 DEFAULT_APPLICATION_NAME_USER=brandy-native-js-user
-DEFAULT_CUSTOM_FW_VERSION=1.1.35
+DEFAULT_CUSTOM_FW_VERSION=1.1.36
 
 TARGET_PACK_NAME=$DEFAULT_TARGET_PACK_NAME
 APPLICATION_NAME=$DEFAULT_APPLICATION_NAME
index 2d566a6..eb30688 100644 (file)
@@ -893,12 +893,24 @@ class Cat1Service:
 
     # socket通信(UDP)模块
     def __Socket_Thread(self):
-        data = b""
         while True:
             try:
                 print("recv====")
                 data=self.__sock.recv(1024)
                 print("data:{}".format(data))
+                if data:
+                    value = self.__unpack_tlv_format(data.decode())
+                    if value != -1:
+                        print('mode: {0}, recv {1} bytes, Data: {2}'.format (value[0],len(data), value[2]))
+                        if value[1] == 'FF':
+                            self.btmcu_cmd_handler(value[0],value[2])
+                        else:
+                            # self.__value = value
+                            # self.__queue.put('1')
+                            self.btmcu_cmd_handler(value[0],value[2])
+                        print("End else Thread")
+                    else:
+                        print("data error!!")
             except Exception as recverr:
                 print("recverr:{}\r\n".format(recverr))
                 if "110" in str(recverr):
@@ -909,19 +921,7 @@ class Cat1Service:
                     utime.sleep(1)
                     self.__sock = self.__socket_reinit()
                 
-            if data:
-                value = self.__unpack_tlv_format(data.decode())
-                if value != -1:
-                    print('mode: {0}, recv {1} bytes, Data: {2}'.format (value[0],len(data), value[2]))
-                    if value[1] == 'FF':
-                        self.btmcu_cmd_handler(value[0],value[2])
-                    else:
-                        # self.__value = value
-                        # self.__queue.put('1')
-                        self.btmcu_cmd_handler(value[0],value[2])
-                    print("End else Thread")
-                else:
-                    print("data error!!")
+            
 
         print("End Socket Thread")
 
index 57437b6..6339858 100644 (file)
@@ -29,6 +29,7 @@ import base64
 import request
 import ujson
 BLOCK_SIZE = 16
+NEED_SAVE_CONFIG_FILE = 0  #是否需要保存上报次数 异常重试次数 时间戳到配置文件 0不保存 1保存
 #中国移动入库
 class chinamobile:
     def __init__(self):
@@ -58,6 +59,7 @@ class chinamobile:
         self.reportTime = 1440#最大上报频率 自注册+心跳上报的频率次数不能大于最大上报频率次数
         self.reportNum = 8 #最大上报次数
 
+
         self.reportTime_Sec = 0 #保存本地 保存时间戳下一次开机使用
         self.report_Num_old = 0#保存本地
         self.retryNum_old = 0#保存本地
@@ -138,12 +140,12 @@ class chinamobile:
 
     #写文件信息
     def write_config_msg_file(self,msg):
+        
         print("write_config_msg_file msg:{}\r\n".format(msg))
         with open("/usr/china_mobie_config.json",'w+',encoding="utf-8") as fd:
             ujson.dump(msg,fd) 
     #读文件信息
     def read_config_msg_file(self):
-
         IFEXIST = ql_fs.path_exists("/usr/china_mobie_config.json")   #不存在
         if IFEXIST == True:
             with open("/usr/china_mobie_config.json","r",encoding='utf-8') as fd:
@@ -305,7 +307,7 @@ class chinamobile:
 
         MAC = self.mac_data
         # base64_MAC = sha256_encode(key,MAC)
-        RAM = "35MB"
+        RAM = "32MB"
         # base64_RAM = sha256_encode(key,RAM)
         ROM = "144MB"
         # base64_ROM = sha256_encode(key,ROM)
@@ -447,9 +449,9 @@ class chinamobile:
             # self.reportTime_Sec = 0 #保存本地 保存时间戳下一次开机使用
             # self.report_Num_old = 0#保存本地
             # self.retryNum_old = 3#保存本地
-
-            if "reportTime_Sec" in self.config_data:
-                self.reportTime_Sec = int(self.config_data["reportTime_Sec"])
+            if NEED_SAVE_CONFIG_FILE == 1:
+                if "reportTime_Sec" in self.config_data:
+                    self.reportTime_Sec = int(self.config_data["reportTime_Sec"])
             if "report_Num_old" in self.config_data:
                 self.report_Num_old = int(self.config_data["report_Num_old"])
             if "retryNum_old" in self.config_data:
@@ -459,18 +461,21 @@ class chinamobile:
     def retryTimerCb(self,*argc):#异常重试机制定时器回调
         #保存本地
         self.retryNum_old+=1 #1 self.reportNum = 1
-        self.config_data["retryNum_old"] = self.retryNum_old
-        self.write_config_msg_file(self.config_data)
+        if NEED_SAVE_CONFIG_FILE == 1:
+            self.config_data["retryNum_old"] = self.retryNum_old
+            self.write_config_msg_file(self.config_data)
         print("retryTimerCb self.retryNum_old:{}\r\n".format(self.retryNum_old))
         self.search_report_num_step()
         pass
-    def reportTimerIntervalError(self,*argc):
+    def reportTimerIntervalError(self):
         self.retryNum_old = 0#保存
         self.report_Num_old = 0#保存 定时清空数据
         date_tmp = utime.localtime()
         time_tmp = utime.mktime(date_tmp)#获取时间戳
         self.reportTime_Sec = time_tmp+self.reportTime*60 #(记录时间+reportTime)标识旧的时间
-        self.config_data["reportTime_Sec"] = self.reportTime_Sec
+        if NEED_SAVE_CONFIG_FILE == 1:
+            self.config_data["reportTime_Sec"] = self.reportTime_Sec
+
         self.config_data["retryNum_old"] = self.retryNum_old
         self.config_data["report_Num_old"] = self.report_Num_old
         self.write_config_msg_file(self.config_data)
@@ -481,14 +486,15 @@ class chinamobile:
        
         if self.retryNum_old >= self.retryNum and self.retryNum_old != 0:#self.retryNum_old > 10#结束HTPP下一个最大频率周期时间间隔流程
             print("error_retryNum_step:self.retryNum_old >= self.retryNum\r\n")
-            self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalError)#重新开始 需要清空数据
+            self.reportTimerIntervalError()
+            # self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalError)#重新开始 需要清空数据
         else:
             get_result = self.first_get_config_json()#发起向服务端请求配置信息下发到设备端
             if get_result == 0:#获取失败或者没有网络 走异常重试机制
                 self.report_Num_old+=1#请求错误请求失败都要保存上报次数
                 self.config_data["report_Num_old"] = self.report_Num_old
                 self.write_config_msg_file(self.config_data)
-                print("error_retryNum_step:self.retryTimer.start :{} {}\r\n".format(self.report_Num_old,self.reportNum))
+                print("error_retryNum_step:self.retryTimer.start :{} {} {}\r\n".format(self.retryInterval,self.report_Num_old,self.reportNum))
                 self.checkMaxReportNum()#检查上报最大次数
                 self.retryTimer.start(self.retryInterval*60*1000,0,self.retryTimerCb)
                 pass
@@ -496,17 +502,22 @@ class chinamobile:
 
                 #第一步触发自注册
                 if get_result == 2:#请求的配置文件和本地不一致重启
-                    self.report_Num_old+=1#请求错误请求失败都要保存上报次数
-                    self.config_data["report_Num_old"] = self.report_Num_old
                     self.retryNum_old = 0#保存本地 配置文件不同重启模组 清空异常重试的报错次数
-                    self.config_data["retryNum_old"] = self.retryNum_old
-                    self.write_config_msg_file(self.config_data)
+                    # self.report_Num_old+=1#请求错误请求失败都要保存上报次数
+                    # if NEED_SAVE_CONFIG_FILE == 1:
+                    #     self.config_data["report_Num_old"] = self.report_Num_old
+                    #     self.config_data["retryNum_old"] = self.retryNum_old
+                    #     self.write_config_msg_file(self.config_data)
+
                     self.china_mobile_init_param()#重新走流程读配置文件->判断上报总数->判断报错次数->获取配置文件
                     self.search_report_num_step()
                     return
+                
                 self.report_Num_old+=1#请求错误请求失败都要保存上报次数
+                
                 self.config_data["report_Num_old"] = self.report_Num_old
                 self.write_config_msg_file(self.config_data)
+                print("error_retryNum_step self.report_Num_old:{}\r\n".format(self.report_Num_old))
                 if self.checkMaxReportNum() == 1:#检查上报最大次数
                     self.search_report_num_step()#重新查询
                     return
@@ -514,6 +525,7 @@ class chinamobile:
                 
                 #第二步触发心跳上报次数
                 if report_result == 1:#注册完成之后根据服务端下发的配置 间隔上报心跳
+                    self.heartreportTimer.stop()
                     self.heartreportTimer.start(self.heartBeatTime*60*1000,1,self.heartreportTimerCb)
     
     def heartreportTimerCb(self,*argc):
@@ -526,7 +538,8 @@ class chinamobile:
         self.report_Num_old = 0#清空上报总次数 #保存本地
         self.retryNum_old = 0#清空上报错误次数 #保存本地
         self.reportTime_Sec = time_tmp+self.reportTime*60#记录当前时间+reportTime的时间用于下次错判断
-        self.config_data["reportTime_Sec"] = self.reportTime_Sec
+        if NEED_SAVE_CONFIG_FILE == 1:
+            self.config_data["reportTime_Sec"] = self.reportTime_Sec
         self.config_data["retryNum_old"] = self.retryNum_old
         self.config_data["report_Num_old"] = self.report_Num_old
         self.write_config_msg_file(self.config_data)
@@ -538,13 +551,13 @@ class chinamobile:
         date_tmp = utime.localtime()
         currentTime = utime.mktime(date_tmp)#获取时间戳
         reportTime = self.reportTime_Sec
-        print("check_current_time:time_tmp - self.reportTime_Sec:{} self.reportTime*60:{}".format(reportTime, currentTime,self.reportTime*60))
+        print("check_current_time:time_tmp - self.reportTime_Sec:{} currentTime:{} self.reportTime*60:{}".format(reportTime, currentTime,self.reportTime*60))
         if currentTime >= reportTime:#当前时间是否大于上次记录的时间 currentTime >= reportTime 直接清空 不超过定时清空数据不再上报数据
             #在规定时间内上报次数大于8次就要等下一个10分钟 或者1440分了开个定时器
             print("currentTime >= reportTime:\r\n")
             self.retpoertTimerClear()
         else:#否则次数置零,记录一下(当前时间+reportTime)时间
-            time_count = (self.reportTime_Sec - currentTime)  #self.reportTime_Sec永远比time_tmp大
+            time_count = (reportTime - currentTime)  #self.reportTime_Sec永远比time_tmp大
             print("time_count:{}".format(time_count))
             print("currentTime < reportTime:\r\n")
             self.retpoertTimerC.start(time_count*1000,0,self.retpoertTimerCB)
@@ -559,7 +572,8 @@ class chinamobile:
         self.report_Num_old = 0#清空上报总次数 #保存本地
         self.retryNum_old = 0#清空上报错误次数 #保存本地
         self.reportTime_Sec = time_tmp+self.reportTime*60#记录当前时间+reportTime的时间用于下次错判断
-        self.config_data["reportTime_Sec"] = self.reportTime_Sec
+        if NEED_SAVE_CONFIG_FILE == 1:
+            self.config_data["reportTime_Sec"] = self.reportTime_Sec
         self.config_data["retryNum_old"] = self.retryNum_old
         self.config_data["report_Num_old"] = self.report_Num_old
         self.write_config_msg_file(self.config_data)
@@ -574,8 +588,9 @@ class chinamobile:
             date_tmp = utime.localtime()
             time_tmp = utime.mktime(date_tmp)#获取时间戳
             self.reportTime_Sec = time_tmp+self.reportTime*60 #(记录时间+reportTime)标识旧的时间
-            self.config_data["reportTime_Sec"] = self.reportTime_Sec
-            self.write_config_msg_file(self.config_data)
+            if NEED_SAVE_CONFIG_FILE == 1:
+                self.config_data["reportTime_Sec"] = self.reportTime_Sec
+                self.write_config_msg_file(self.config_data)
             self.error_retryNum_step()#查询上报错误次数
 
     def search_report_num_step_init(self):#查询上报总数步骤
@@ -587,8 +602,9 @@ class chinamobile:
             time_tmp = utime.mktime(date_tmp)#获取时间戳
             if self.reportTime_Sec == 0:
                 self.reportTime_Sec = time_tmp+self.reportTime*60 #(记录时间+reportTime)标识旧的时间
-                self.config_data["reportTime_Sec"] = self.reportTime_Sec
-                self.write_config_msg_file(self.config_data)
+                if NEED_SAVE_CONFIG_FILE == 1:
+                    self.config_data["reportTime_Sec"] = self.reportTime_Sec
+                    self.write_config_msg_file(self.config_data)
             self.error_retryNum_step()#查询上报错误次数
 
 
@@ -615,7 +631,6 @@ class chinamobile:
             if self.checkMaxRetryNum() == 1:
                 print("retryTimerCb timer22")#异常重试过多重新间隔reportTime注册流程 关闭所有的定时器
                 self.search_report_num_step()#重新查询
-                # self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalCb)#重新开始 需要清空数据
                 return 0
             self.retryTimer.start(self.retryInterval*60*1000,0,self.retryTimerCb)
             return 0
@@ -647,6 +662,7 @@ class chinamobile:
             return 0
         
     def heart_report_cb(self):#心跳上报信息
+        
         date_tmp = utime.localtime()
         time_tmp = utime.mktime(date_tmp)#获取时间戳
         self.report_Num_old+=1#保存本地
@@ -662,9 +678,8 @@ class chinamobile:
             self.checkMaxReportNum()
             if self.checkMaxRetryNum() == 1:#异常重试过多重新间隔reportTime注册流程
                 self.search_report_num_step()#重新查询
-                # self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalCb)#重新开始 需要清空数据
                 return
-            self.retryTimer.start(self.retryInterval*60*1000,0,self.retryTimerCb)
+            self.retryTimer.start(self.retryInterval*60*1000,0,self.retryTimerCb) 
             return
         if self.checkMaxReportNum() == 1:#上报次数大于8次
             self.search_report_num_step()#重新查询
@@ -675,6 +690,7 @@ class chinamobile:
         status = eventMesh.publish("get_factory_status")
         if status == None:
             status = 0
+        print("get_factory_status:{}\r\n".format(status))
         if status == 0:#恢复出厂或者新的机器需要清空不必要的数据
             if self.init_flag == 0:#只初始化一次
                 IFEXIST = ql_fs.path_exists("/usr/telecom_config.json")   #不存在
@@ -706,7 +722,8 @@ class chinamobile:
                 self.config_data["reportTime"] = self.reportTime
                 self.config_data["reportNum"] = self.reportNum
                 # self.config_data["address"] = self.address
-
+                if NEED_SAVE_CONFIG_FILE == 1:
+                    self.config_data["reportTime_Sec"] = self.reportTime_Sec
                 self.config_data["report_Num_old"] = self.report_Num_old
                 self.config_data["retryNum_old"] = self.retryNum_old
 
index 3831c8d..46837da 100644 (file)
@@ -132,7 +132,7 @@ set(PRIVATE_HEADER
     ${ROOT_DIR}/open_source/openharmony/utils/native/lite/include
     ${ROOT_DIR}/open_source/openharmony/utils/native/lite/kv_store/innerkits
 
-    # ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/schedule/include
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/schedule/include
 )
 
 set(SOURCES
@@ -143,6 +143,8 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/MainModel.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/MainPresenterSample.cpp
 
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dropdown/DropDownCardPage1.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dropdown/DropDownCardPage2.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/ModelListenerSample.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/PresenterTask.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/HealthModel.cpp
@@ -749,11 +751,12 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/goal/src/goalhint.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/goal/src/goalControlView.cpp
 
-    # #schedule
-    # ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/schedule/src/ScheduleView.cpp
-    # ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/schedule/src/SchedulePresenter.cpp
-    # ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/schedule/src/ScheduleModel.cpp
-    # ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/schedule/src/ScheduleListAdapter.cpp
+    #schedule
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/schedule/src/ScheduleView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/schedule/src/SchedulePresenter.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/schedule/src/ScheduleModel.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/schedule/src/ScheduleListAdapter.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/schedule/src/ScheduleListItem.cpp
 
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/calculator/src/CalculatorView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/calculator/src/CalculatorPresenter.cpp
index 9722f44..a3fd409 100644 (file)
@@ -120,7 +120,7 @@ namespace OHOS
         void InitDialingMethodSlice(void);
         /* -------------------------------------------------------------------------- */
         void InitCalculatorSlice(void);
-        // void InitScheduleSlice(void);
+        void InitScheduleSlice(void);
         void InittestSlice(void);
 
     private:
index 4ec1ca9..f46d765 100644 (file)
 #include "traing/training_card/include/TraingCardPresenter.h"
 #include "traing/training_card/include/TraingCardView.h"
 /* -------------------------------------------------------------------------- */
-// #include "schedule/include/SchedulePresenter.h"
+#include "schedule/include/SchedulePresenter.h"
 
 #ifdef SUPPORT_ALIPAY_SEC
 #include "AlipayMainView.h"
@@ -414,7 +414,7 @@ namespace OHOS
         /* -------------------------------------------------------------------------- */
         /*智能助手*/
         {VIEW_OFFLINEVOICE, &NativeLauncher::InitOfflineVoice},
-    // {VIEW_SCHEDULE, &NativeLauncher::InitScheduleSlice},
+        {VIEW_SCHEDULE, &NativeLauncher::InitScheduleSlice},
 
 #ifdef SUPPORT_ALIPAY_SEC
         {VIEW_MAIN_ALIPAY, &NativeLauncher::InitMainAlipaySlice},
@@ -1517,16 +1517,16 @@ namespace OHOS
         NativeAbility::GetInstance().AddSliceProxy(VIEW_SET_DIAL_STYLE, setDialStyleView);
     }
 
-    // void NativeLauncher::InitScheduleSlice(void)
-    // {
-    //     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitScheduleSlice");
-    //     SliceProxy * t_View = new AbilitySliceProxy<ScheduleView, SchedulePresenter>;
-    //     if (nullptr == t_View)
-    //     {
-    //         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "View is nullptr");
-    //         return;
-    //     }
-    //     NativeAbility::GetInstance().AddSliceProxy(VIEW_SCHEDULE, t_View);
-    // }
+    void NativeLauncher::InitScheduleSlice(void)
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitScheduleSlice");
+        SliceProxy * t_View = new AbilitySliceProxy<ScheduleView, SchedulePresenter>;
+        if (nullptr == t_View)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "View is nullptr");
+            return;
+        }
+        NativeAbility::GetInstance().AddSliceProxy(VIEW_SCHEDULE, t_View);
+    }
 
 }
index b84bc5e..9702822 100644 (file)
@@ -88,7 +88,7 @@ namespace OHOS
         /* -------------------------------------------------------------------------- */
         // {VIEW_MUSIC_PLAYER, PNG_APPLIST_MUSIC_IMAGE, PNG_APPLIST_MUSIC_IMAGE, PNG_APPLIST_DEFAULT_IMG, "音乐播放器", STR_MUSIC, nullptr},
         {VIEW_OFFLINEVOICE, PNG_APPLIST_VOCASSIST_IMAGE, PNG_APPLIST_VOCASSIST_IMAGE, PNG_APPLIST_DEFAULT_IMG, "语音助手", STR_VOICE_ASSISTANT, nullptr},
-        // {VIEW_SCHEDULE, PNG_APPLIST_SCHEDULE_IMAGE, PNG_APPLIST_SCHEDULE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "schedule", STR_SCHEDULE, nullptr},
+        {VIEW_SCHEDULE, PNG_APPLIST_SCHEDULE_IMAGE, PNG_APPLIST_SCHEDULE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "schedule", STR_SCHEDULE, nullptr},
         {VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_DEFAULT_IMG, "设置", STR_SETTINGS, nullptr},
 #if 0
 /*屏蔽Slice*/
index 616ebd1..ed91c90 100644 (file)
@@ -62,10 +62,6 @@ namespace OHOS
 
     void CodedLockPresenter::OnStop(void)
     {
-        /*关锁*/
-        uapi_dev_runtime_set_lock_status(0);
-        /*设置表盘状态*/
-        MainModel::GetInstance().setDialState(DialState::LOCK, false);
         Presenter<CodedLockView>::OnStop();
     }
     void CodedLockPresenter::JudgeMatch()
@@ -81,8 +77,12 @@ namespace OHOS
         /*每次点击完成判断 是否 完成密码匹配*/
         if (CodedLockModel::GetInstance()->IsLockState())
         {
-            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "回到主界面");
+            /*关锁*/
+            uapi_dev_runtime_set_lock_status(0);
+            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
+            /*设置表盘状态*/
+            MainModel::GetInstance().setDialState(DialState::LOCK, false);
         }
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JudgeMatch is Ok");
     }
index aacd71e..92f2f54 100644 (file)
@@ -172,6 +172,7 @@ namespace OHOS
             point_three->SetStyle(STYLE_BACKGROUND_COLOR, activeColor);
             point_four->SetStyle(STYLE_BACKGROUND_COLOR, activeColor);
             point_five->SetStyle(STYLE_BACKGROUND_COLOR, activeColor);
+            break;
         case 6:
             point_one->SetStyle(STYLE_BACKGROUND_COLOR, activeColor);
             point_two->SetStyle(STYLE_BACKGROUND_COLOR, activeColor);
index e3a78b1..fd110dc 100644 (file)
@@ -1,21 +1,16 @@
-/***
- * @Date: 2024-08-12 10:11:33
- * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-08-20 14:05:51
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/src/DnotDisturbModel.cpp
- */
-/***
- * @Date: 2024-08-12 10:11:33
- * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-08-20 12:09:12
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-08-20 19:16:00
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-08-22 18:57:46
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/src/DnotDisturbModel.cpp
  */
 #include "dnotdisturb/include/DnotDisturbModel.h"
-#include "main/include/PullUpDownView.h"
 #include "main/include/MainViewSample.h"
 #include "MainModel.h"
 #include "ConfigModel.h"
 #include "../../../../../../../drivers/peripheral/utils/custom_runtime.h"
+#include "main/include/dropdown/DropDownCardPage1.h"
 
 namespace OHOS
 {
@@ -53,6 +48,10 @@ namespace OHOS
         if (PullUpDownView::GetInstance() != nullptr)
         {
             /*更新主界面下拉界面配置*/
+            if(DropDownCardPage1::GetInstance() && DropDownCardPage1::GetInstance()->GetDropDownCardPage1_ToggleButton(DropDownCardPage1::toggleButton_DNOTDISTURB))
+            {
+                DropDownCardPage1::GetInstance()->GetDropDownCardPage1_ToggleButton(DropDownCardPage1::toggleButton_DNOTDISTURB)->SetState(GetDoNotDisturbModeEnabled());
+            }
             PullUpDownView::GetInstance()->UpdateDnotDisturbStatus(GetDoNotDisturbModeEnabled());
             /*更新主界面配置*/
             MainModel::GetInstance().setDialState(DialState::DO_NOT_DISTURB, GetDoNotDisturbModeEnabled());
index e742f37..7ff9e3b 100644 (file)
@@ -2,11 +2,10 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-04-17 15:26:49
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-07-16 14:55:16
+ * @LastEditTime: 2024-08-22 16:29:35
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/include/PullUpDownView.h
  */
 
-#if 1
 #ifndef PULL_UP_DOWN_VIEW_H
 #define PULL_UP_DOWN_VIEW_H
 
 #include "components/ui_label_button.h"
 #include "components/ui_box_progress.h"
 #include "components/ui_image_animator.h"
+#include "components/ui_swipe_view.h"
 #include "battery_hal.h"
 #include "main/include/ConnectedStatusView.h"
+#include "main/include/dropdown/DropDownCardPage1.h"
+#include "main/include/dropdown/DropDownCardPage2.h"
 
 extern uint8_t battery_get_voltage(float *voltage);
 
@@ -41,7 +43,7 @@ namespace OHOS
         MAX_DROPDOWNVIEWID,
     } DROPDOWNVIEWID;
 
-    class PullUpDownView : public UICardPage
+    class PullUpDownView : public UICardPage, public UISwipeView::OnSwipeListener
     {
     public:
         PullUpDownView();
@@ -49,222 +51,86 @@ namespace OHOS
         static PullUpDownView *GetInstance(void);
         void PreLoad(void) override;
         void UnLoad(void) override;
-        void UpdatePhoneStatus(int status);
-        void UpdateEarPhoneStatus(int status);
-        void UpdateBlueToothStatus(int status);
         void UpdateDnotDisturbStatus(int status);
-        void UpdateSignalStrengthStatusAndBatteryPosition();
         bool ChangeDropDownView(int16_t thisView);        // 切换到"下拉控制中心"视图
         bool ChangeConnectedStatusView(int16_t thisView); // 切换到"连接状态"视图
         bool ClickFunc(int16_t interface);
         void ChangeView(int16_t hideView, int16_t showView);
         ConnectedStatusView *GetConnectedStatusView(void);
 
-        UILabel *GetTimeLabel();
-        UILabel *GetDateLabel();
-        UILabel *GetWeekLabel();
-        UIBoxProgress *GetProgress();
-
-        bool GetPhoneConnectedStatus(void);
-        bool GetEarPhoneConnectedStatus(void);
-        bool GetBlueToothConnectedStatus(void);
-        struct ImageConfig
-        {
-            int16_t x;
-            int16_t y;
-            int16_t w;
-            int16_t h;
-            const char *viewid;
-            const char *src;
-            UIView::OnClickListener *clicklistener;
-        };
-
     private:
+        void OnSwipe(UISwipeView &view) override;
         bool PullUpDownViewInit();
-        bool InitBaseData(); // 初始化基础数据组件
-        UIImageView *dropDownIconImageViweInit(ImageConfig &imageconfig);
-        void createDropDownIconImageViwe(void);
-        UIImageView *dropDownConnectedStatusImageViweInit(int16_t x, int16_t y, int16_t w, int16_t h);
-        void createDropDownConnectedStatusImageViwe(void);
-
-        bool InitSingalComponentsView();
-        void ClearAllConnectedStatusComponentsView();
-        void ClearAllSingalComponentsView();
         void ClearAll();
-
-        int GetSignalStrength(void);
-        int CalculateSignalBars(int signalStrength);
-        void UpdateSignalBarDisplay(int signalBars, bool state);
-        void UpdateBatteryPosition(bool state);
-        void updateSignalDisplay();
-        void UpdateCat1NoSignalisplay(bool state);
-        void UpdateCat14GDisplay(bool state);
-        void UpdateCat1MobileDataDisplay(bool state);
-
-        void PreLoadPullUpDownImageRes(void);
-        void UnLoadPullUpDownImageRes(void);
-
-    private:
-        ConnectedStatusView *connectedStatusView{nullptr};
-
-    private:
         UIViewGroup *group[MAX_DROPDOWNVIEWID]{nullptr};
-        UIImageView *dropSetting{nullptr};                   // 设置
-        UIImageView *dropBluetooth{nullptr};                 // 蓝牙
-        UIImageView *dropDnotDisturb{nullptr};               // 勿扰模式
-        UIImageView *dropSavePower{nullptr};                 // 省电
-        UIImageView *drofindPhone{nullptr};                  // 找手机
-        UIImageView *dropLine{nullptr};                      // 线
-        UIButton *connectedStatusBackgroundButton{nullptr};  // 放置连接状态icon的背景按钮
-        UIImageView *showPhoneConnectedStatus{nullptr};      // 显示手机连接状态
-        UIImageView *showEarPhoneConnectedStatus{nullptr};   // 显示耳机连接状态
-        UIImageView *showBluetoothConnectedStatus{nullptr};  // 显示蓝牙连接状态
-        UILabel *showTimeLabel{nullptr};                     // 显示时间
-        UILabel *showDateLabel{nullptr};                     // 显示日期
-        UILabel *showWeekLabel{nullptr};                     // 显示星期
-        UIImageView *showSignalStrength[4]{nullptr};         // 信号强度
-        UILabel *Singal_4{nullptr};                          // 4G图标
-        UIImageView *NoSignal{nullptr};                      // 无信号
-        UIImageView *MobileData{nullptr};                    // 移动数据
-
-        UIImageView *batteryimage = nullptr;
-        UIBoxProgress *progress = nullptr;
-
+        ConnectedStatusView *connectedStatusView{nullptr};
         bool viewiInitStatus{false};
-    };
-}
-#endif
-
-#else
-/*
- * @Author: luozheng 1732036298@qq.com
- * @Date: 2024-04-17 15:26:49
- * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-06-28 14:30:04
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/include/PullUpDownView.h
- */
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: WeekStep
- * Author:
- * Create: 2021-09-11
- */
-
-#ifndef PULL_UP_DOWN_VIEW_H
-#define PULL_UP_DOWN_VIEW_H
-
-#include "graphic_types.h"
-#include "wearable_log.h"
-#include "components/ui_card_page.h"
-#include "components/ui_view_group.h"
-#include "components/ui_image_view.h"
-#include "components/ui_label.h"
-#include "components/ui_label_ext.h"
-#include "components/ui_label_button.h"
-#include "components/ui_box_progress.h"
-#include "components/ui_image_animator.h"
-#include "battery_hal.h"
-#include "main/include/ConnectedStatusView.h"
 
-extern uint8_t battery_get_voltage(float *voltage);
-
-namespace OHOS
-{
-    static constexpr int16_t SETTING_INDEX = 0;
-    static constexpr int16_t LIGHTING_INDEX = 1;
-    static constexpr int16_t DNOTDISTURB_INDEX = 2;
-    static constexpr int16_t SAVEPOWER_INDEX = 3;
-    static constexpr int16_t FINDPHONE_INDEX = 4;
-    static constexpr int16_t MAX_INDEX = 5;
-
-    typedef enum : uint8_t
-    {
-        DROPDOWNVIEW = 0,
-        CONNECTEDSTATUSVIEW,
-        MAX_DROPDOWNVIEWID,
-    } DROPDOWNVIEWID;
-
-    class PullUpDownView : public UICardPage
-    {
+        /* ---------------------------------- 1.连接状态 ---------------------------------- */
     public:
-        PullUpDownView();
-        ~PullUpDownView() override;
-        static PullUpDownView *GetInstance(void);
-        void PreLoad(void) override;
-        void UnLoad(void) override;
+        bool GetPhoneConnectedStatus(void);
+        bool GetEarPhoneConnectedStatus(void);
+        bool GetBlueToothConnectedStatus(void);
         void UpdatePhoneStatus(int status);
         void UpdateEarPhoneStatus(int status);
         void UpdateBlueToothStatus(int status);
-        void UpdateDnotDisturbStatus(int status);
-        void UpdateSignalStrengthStatusAndBatteryPosition();
-        bool ChangeDropDownView(int16_t thisView);        // 切换到"下拉控制中心"视图
-        bool ChangeConnectedStatusView(int16_t thisView); // 切换到"连接状态"视图
-        bool ClickFunc(int16_t interface);
-        void ChangeView(int16_t hideView, int16_t showView);
-        ConnectedStatusView *GetConnectedStatusView(void);
 
-        UILabel *GetTimeLabel();
-        UILabel *GetDateLabel();
-        UILabel *GetWeekLabel();
+    private:
+        UIImageView *DropDownConnectedStatusImageViweInit(int16_t x, int16_t y, int16_t w, int16_t h);
+        void CreateDropDownConnectionStatusImageViwe(void);
+        void ClearAll_1(void);
+        UIButton *connectedStatusBackgroundButton{nullptr}; // 放置连接状态icon的背景按钮
+        UIImageView *showPhoneConnectedStatus{nullptr};     // 显示手机连接状态
+        UIImageView *showEarPhoneConnectedStatus{nullptr};  // 显示耳机连接状态
+        UIImageView *showBluetoothConnectedStatus{nullptr}; // 显示蓝牙连接状态
+        /* --------------------------------- 2.基本数据显示-------------------------------- */
+    public:
         UIBoxProgress *GetProgress();
-
-        bool GetPhoneConnectedStatus(void);
-        bool GetEarPhoneConnectedStatus(void);
-        bool GetBlueToothConnectedStatus(void);
+        UILabel *GetDateAndWeekLabel(void);
+        void UpdateSignalStrengthStatusAndBatteryPosition();
 
     private:
-        bool PullUpDownViewInit();
-        bool InitBaseData(); // 初始化基础数据组件
-        void InitViewImgBackGround(void);
-        void InitViewImg(void);
-        void InitConnectedStatusImage(void);
-        bool InitSingalComponentsView();
-        void ClearAllConnectedStatusComponentsView();
-        void ClearAllSingalComponentsView();
-        void ClearAll();
-
+        void InitBaseData();
+        void ClearAll_2(void);
         int GetSignalStrength(void);
         int CalculateSignalBars(int signalStrength);
         void UpdateSignalBarDisplay(int signalBars, bool state);
-        void UpdateBatteryPosition(int signalBars);
         void updateSignalDisplay();
         void UpdateCat1NoSignalisplay(bool state);
         void UpdateCat14GDisplay(bool state);
-
-        void PreLoadPullUpDownImageRes(void);
-        void UnLoadPullUpDownImageRes(void);
+        void UpdateHDDisplay(bool state);
+        void UpdateCat1MobileDataDisplay(bool state);
+        void UpdateXPosition(void);
+        UIViewGroup *group1{nullptr};
+        UIImageView *showSignalStrength[4]{nullptr}; // 信号强度
+        UILabel *Singal_4{nullptr};                  // 4G图标
+        UIImageView *NoSignal{nullptr};              // 无信号
+        UIImageView *MobileData{nullptr};            // 移动数据
+        UIImageView *HD{nullptr};                    // HD
+        UIImageView *batteryimage{nullptr};          // 电池图片
+        UIBoxProgress *progress{nullptr};            // 电池进度条
+        UILabel *showDateAndWeekLabel{nullptr};      // 显示日期和星期
+        /* ---------------------------------- 3.滑动列表 ---------------------------------- */
+    public:
+        AppGroupView *DropDownCardPage1Init(void);
+        AppGroupView *DropDownCardPage2Init(void);
 
     private:
-        ConnectedStatusView *connectedStatusView{nullptr};
-
+        AppGroupView *CreatePage(int32_t WeatherPageId);
+        void CreateDropDownswipeViewListView(void);
+        void ClearAll_3(void);
+        UISwipeView *dropDownswipeViewList{nullptr}; // 滑动列表
+        AppGroupView *recordCard[2]{nullptr};
+        DropDownCardPage1 *dropDownCardPage1{nullptr};
+        DropDownCardPage2 *dropDownCardPage2{nullptr};
+        /* ------------------------------------ 4 ----------------------------------- */
+    public:
+        void UpdateSwipviewSelect(bool value);
     private:
-        UIViewGroup *group[MAX_DROPDOWNVIEWID]{nullptr};
-        UIImageView *dropSetting{nullptr};                   // 设置
-        UIImageView *dropLighting{nullptr};                  // 蓝牙
-        UIImageView *dropDnotDisturb{nullptr};               // 勿扰模式
-        UIImageView *dropSavePower{nullptr};                 // 省电
-        UIImageView *drofindPhone{nullptr};                  // 找手机
-        UIImageView *dropIconBackground[MAX_INDEX]{nullptr}; // 放置各个icon的背景
-        UIButton *connectedStatusBackgroundButton{nullptr};  // 放置连接状态icon的背景按钮
-        UIImageView *showPhoneConnectedStatus{nullptr};      // 显示手机连接状态
-        UIImageView *showEarPhoneConnectedStatus{nullptr};   // 显示耳机连接状态
-        UIImageView *showBluetoothConnectedStatus{nullptr};  // 显示蓝牙连接状态
-        UIImageView *dropLine{nullptr};                      // 线
-        UILabel *showTimeLabel{nullptr};                     // 显示时间
-        UILabel *showDateLabel{nullptr};                     // 显示日期
-        UILabel *showWeekLabel{nullptr};                     // 显示星期
-        UIImageView *showSignalStrength[4]{nullptr};         // 信号强度
-        UILabel *Singal_4{nullptr};                          // 4G图标
-        UIImageView *NoSignal{nullptr};                      // 无信号
-
-        UIImageView *batteryimage = nullptr;
-        UIBoxProgress *progress = nullptr;
-        AnimatorCallback *progresscallback_ = nullptr;
-        Animator *progressanimator_ = nullptr;
-
-        bool viewiInitStatus{false};
-        bool resLoadStatus{false};
+        void CreateView4();
+        void ClearAll_4(void);
+        UIImageView *swipviewSelect{nullptr};
+        UIImageView *line{nullptr};
     };
 }
-#endif
 #endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dropdown/DropDownCardPage1.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dropdown/DropDownCardPage1.h
new file mode 100644 (file)
index 0000000..0b9fa67
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-08-21 11:54:00
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-08-22 17:38:26
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/include/dropdown/DropDownCardPage1.h
+ */
+#ifndef __DROPDOWN_CARD_PAGE1_H__
+#define __DROPDOWN_CARD_PAGE1_H__
+#include "AppGroupView.h"
+#include "components/ui_toggle_button.h"
+
+namespace OHOS
+{
+    class DropDownCardPage1 : public AppGroupView,
+                              public UIView::OnClickListener
+    {
+    public:
+        struct ToggleButtonConfig
+        {
+            int16_t left;
+            int16_t top;
+            int16_t width;
+            int16_t height;
+            const char *viewId;
+            const char *selectImg;
+            const char *unselectImg;
+            bool isTouchable;
+            bool state;
+        };
+        enum toggleButtonid : uint8_t
+        {
+            toggleButton_BT = 0,      // 蓝牙开关
+            toggleButton_4G,          // 4G开关
+            toggleButton_ALIPAY,      // 支付宝
+            toggleButton_SAVEPOWER,   // 省电模式开关
+            toggleButton_SLEEP,       // 睡眠开关
+            toggleButton_DNOTDISTURB, // 勿扰开关
+            toggleButton_SETTING,     // 设置
+            toggleButton_MAX,
+        };
+
+        DropDownCardPage1();
+        ~DropDownCardPage1();
+        static DropDownCardPage1 *GetInstance(void);
+        bool OnClick(UIView &view, const ClickEvent &event) override;
+        bool InitPage(void);
+        bool InitView(void *caller) override;
+        void ClearAll();
+
+        UIToggleButton *GetDropDownCardPage1_ToggleButton(int index);
+
+    private:
+        UIToggleButton *ToggleButtonInit(ToggleButtonConfig &toggleButtonConfig);
+        UIToggleButton *toggleButton[toggleButton_MAX]{nullptr};
+    };
+
+}
+
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dropdown/DropDownCardPage2.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dropdown/DropDownCardPage2.h
new file mode 100644 (file)
index 0000000..d67569c
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-08-21 11:54:00
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-08-21 16:42:29
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/include/dropdown/DropDownCardPage2.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+
+#ifndef __DROPDOWN_CARD_PAGE2_H__
+#define __DROPDOWN_CARD_PAGE2_H__
+#include "AppGroupView.h"
+#include "components/ui_toggle_button.h"
+
+namespace OHOS
+{
+    class DropDownCardPage2 : public AppGroupView,
+                              public UIView::OnClickListener
+    {
+    public:
+        struct ToggleButtonConfig
+        {
+            int16_t left;
+            int16_t top;
+            int16_t width;
+            int16_t height;
+            const char *viewId;
+            const char *selectImg;
+            const char *unselectImg;
+            bool isTouchable;
+        };
+        DropDownCardPage2();
+        ~DropDownCardPage2();
+        static DropDownCardPage2 *GetInstance(void);
+        bool OnClick(UIView &view, const ClickEvent &event) override;
+        bool InitPage(void);
+        bool InitView(void *caller) override;
+        void ClearAll();
+
+        UIToggleButton *GetDropDownCardPage2_ToggleButton(int index);
+
+    private:
+        UIToggleButton *ToggleButtonInit(ToggleButtonConfig &toggleButtonConfig);
+        UIToggleButton *toggleButton[2]{nullptr};
+    };
+
+}
+
+#endif
index 674e135..0cd4521 100644 (file)
@@ -47,7 +47,7 @@ namespace OHOS
 #ifdef CUSTOM_Z1\r
         {DIAL_CLOCK, "Z1", DEFAULT_DIALPER_PATH, DEFAULT_TASK_PERIOD},\r
 #else\r
-        {DIAL_CLOCK, "KUMI", DEFAULT_DIALPER_PATH, DEFAULT_TASK_PERIOD},             // 默认表盘 Id 0\r
+        {DIAL_CLOCK, "KUMI", DEFAULT_DIALPER_PATH, DEFAULT_TASK_PERIOD}, // 默认表盘 Id 0\r
 #endif\r
         {DIAL_CLOCK_1, "Custom_1", CUSTOM_CLOCK1_DIALPER_PATH, DEFAULT_TASK_PERIOD}, // 表盘 Id 1\r
         {DIAL_CLOCK_2, "Custom_2", CUSTOM_CLOCK2_DIALPER_PATH, DEFAULT_TASK_PERIOD}, // 表盘 Id 2\r
@@ -492,17 +492,24 @@ namespace OHOS
     {\r
         // 将 state 转换为整数以进行比较\r
         int stateIndex = static_cast<int>(state);\r
-        if (stateIndex >= 0 && stateIndex < STATE_COUNT)\r
-        {                                             // 确保 index 在有效范围\r
-            dialstateInfo[stateIndex].active = value; // 使用转换后的索引\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Set dialstateInfo[%d].active = %d", stateIndex, value);\r
+        if (stateIndex >= 0 && stateIndex < STATE_COUNT) // 确保 index 在有效范围\r
+        {\r
+            // 检查当前状态是否与要设置的状态一致\r
+            if (dialstateInfo[stateIndex].active != value)\r
+            {\r
+                dialstateInfo[stateIndex].active = value; // 使用转换后的索引\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Set dialstateInfo[%d].active = %d", stateIndex, value);\r
+                SendMsgToUIService(UI_UPDATE_DIALSTATE_DATA, 0, nullptr, 0); // 发送更新消息\r
+            }\r
+            else\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "State %d is unchanged, no update needed.", stateIndex);\r
+            }\r
         }\r
         else\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "state %d is error", stateIndex);\r
         }\r
-\r
-        SendMsgToUIService(UI_UPDATE_DIALSTATE_DATA, 0, nullptr, 0);\r
     }\r
 \r
     // 接口 2: 获取最高优先级为 true 的状态\r
index dc366ab..520899c 100644 (file)
@@ -478,17 +478,17 @@ namespace OHOS
     // 更新时间
     void MainPresenterSample::UpdataTime()
     {
-        // 获取当前时间
-        char *timeStr = (char *)malloc(9);
-        if (uapi_get_HHMMSS_Time(timeStr, ':', false) != ERRCODE_SUCC)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get start time");
-            free(timeStr);
-            return;
-        }
-        if (PullUpDownView::GetInstance() != nullptr)
-            PullUpDownView::GetInstance()->GetTimeLabel()->SetText(timeStr);
-        free(timeStr);
+        // // 获取当前时间
+        // char *timeStr = (char *)malloc(9);
+        // if (uapi_get_HHMMSS_Time(timeStr, ':', false) != ERRCODE_SUCC)
+        // {
+        //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get start time");
+        //     free(timeStr);
+        //     return;
+        // }
+        // if (PullUpDownView::GetInstance() != nullptr)
+        //     // PullUpDownView::GetInstance()->GetTimeLabel()->SetText(timeStr);
+        // free(timeStr);
     }
 
     void MainPresenterSample::UpdataBaseData()
@@ -543,14 +543,15 @@ namespace OHOS
         //         break;
         //     }
         // }
-
+        std::string dateAndweek = std::string(dateStr) + " " + std::string(weekStr) ;
         if (PullUpDownView::GetInstance() != nullptr)
         {
             // PullUpDownView::GetInstance()->GetProgress()->SetImage(progressImageSrc, progressImageSrc);
             PullUpDownView::GetInstance()->GetProgress()->SetValue(value);
-            PullUpDownView::GetInstance()->GetDateLabel()->SetText(dateStr);
-            PullUpDownView::GetInstance()->GetTimeLabel()->SetText(timeStr);
-            PullUpDownView::GetInstance()->GetWeekLabel()->SetText(weekStr);
+            // PullUpDownView::GetInstance()->GetDateLabel()->SetText(dateStr);
+            // PullUpDownView::GetInstance()->GetTimeLabel()->SetText(timeStr);
+            // PullUpDownView::GetInstance()->GetWeekLabel()->SetText(weekStr);
+            PullUpDownView::GetInstance()->GetDateAndWeekLabel()->SetText(dateAndweek.c_str());
         }
 
         // 释放动态分配的内存
@@ -578,15 +579,7 @@ namespace OHOS
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "%d", MainPresenterSample::g_PullUpDownTimes);
         if (MainPresenterSample::g_PullUpDownTimes <= 0)
         {
-            MainPresenterSample::g_PullUpDownTimes = UPDATETIME; //
-            if (MainPresenterSample::GetInstance() != nullptr)
-            {
-                MainPresenterSample::GetInstance()->UpdataTime();
-            }
-            else
-            {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainPresenterSample::GetInstance fail!!");
-            }
+            MainPresenterSample::g_PullUpDownTimes = UPDATETIME;
 
             if (PullUpDownView::GetInstance() != nullptr)
             {
index 6c66b17..74a243e 100644 (file)
@@ -2,11 +2,10 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-26 18:14:24
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-03 17:11:11
+ * @LastEditTime: 2024-08-22 17:53:56
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/src/PullUpDownView.cpp
  */
 
-#if 1
 #include "PullUpDownView.h"
 #include "wearable_log.h"
 #include "UiConfig.h"
@@ -24,93 +23,24 @@ namespace OHOS
 {
 
     /* ---------------------------------- 坐标位置 ---------------------------------- */
-    // 设置
-    static constexpr uint16_t SETTING_IMG_X = 30;
-    static constexpr uint16_t SETTING_IMG_Y = 186;
-    static constexpr const char *DROPDOWN_SETTING_IMAGE = "/user/res/dropdown/DROPDOWN_SETTING.bin";
-
-    // 蓝牙
-    static constexpr uint16_t BLUETOOTH_IMG_X = 76;
-    static constexpr uint16_t BLUETOOTH_IMG_Y = 76;
-    static constexpr const char *DROPDOWN_BLUETOOTH_IMAGE = "/user/res/dropdown/DROPDOWN_BLUETOOTH.bin";
-
-    // 勿扰
-    static constexpr uint16_t DNOTDISTURB_IMG_X = 186;
-    static constexpr uint16_t DNOTDISTURB_IMG_Y = 30;
-    static constexpr const char *DROPDOWN_DNOTDISTURB_IMAGE = "/user/res/dropdown/DROPDOWN_DNOTDISTURB.bin";
-
-    // 省电
-    static constexpr uint16_t SAVEPOWER_IMG_X = 296;
-    static constexpr uint16_t SAVEPOWER_IMG_Y = 76;
-    // static constexpr const char *DROPDOWN_SAVEPOWER_IMAGE = "/user/res/dropdown/DROPDOWN_SAVEPOWER.bin";
-    static constexpr const char *DROPDOWN_SAVEPOWER_IMAGE = "/user/res/dropdown/DROPDOWN_ALIPAY.bin";/*支付宝*/
-
-    // 找手机
-    static constexpr uint16_t FINDPHONE_IMG_X = 342;
-    static constexpr uint16_t FINDPHONE_IMG_Y = 186;
-    // static constexpr const char *DROPDOWN_FINDPHONE_IMAGE = "/user/res/dropdown/DROPDOWN_FINDPHONE.bin";
-    static constexpr const char *DROPDOWN_FINDPHONE_IMAGE = "/user/res/dropdown/DROPDOWN_4G.bin";/*4G*/
-
-    // line
-    static constexpr uint16_t LINE_IMG_X = 193;
-    static constexpr uint16_t LINE_IMG_Y = 430;
-    static constexpr const char *DROPDOWN_LINE_IMAGE = "/user/res/dropdown/DROPDOWN_LINE.bin";
-
-    // icon图片大小
-    static constexpr uint16_t ICON_IMG_SIZE_W = 94;
-    static constexpr uint16_t ICON_IMG_SIZE_H = 94;
-
-    // 电池
-    static constexpr uint16_t BATTERY_X = 209;
-    static constexpr uint16_t BATTERY_Y = 180;
-
-    // 时间
-    static constexpr uint16_t TIME_LABEL_X = 172;
-    static constexpr uint16_t TIME_LABEL_Y = 230;
-
-    // 日期
-    static constexpr uint16_t DATE_LABEL_X = 110;
-    static constexpr uint16_t DATE_LABEL_Y = 300;
-
-    // 星期
-    static constexpr uint16_t WEEK_LABEL_X = 295;
-    static constexpr uint16_t WEEK_LABEL_Y = 300;
-
     // 手机连接状态
-    static constexpr uint16_t PHONECONNECTSTATUS_IMG_X = 123;
-    static constexpr uint16_t PHONECONNECTSTATUS_IMG_Y = 350;
-    static constexpr const char *DROPDOWN_PHONECONNECTED_IMAGE = "/user/res/dropdown/DROPDOWN_PHONECONNECTED.bin";
-    static constexpr const char *DROPDOWN_PHONEDISCONNECTED_IMAGE = "/user/res/dropdown/DROPDOWN_PHONEDISCONNECTED.bin";
-
+    static constexpr const char *DROPDOWN_PHONECONNECTED_IMAGE = "/user/res/dropdown/phone_connect.bin";
+    static constexpr const char *DROPDOWN_PHONEDISCONNECTED_IMAGE = "/user/res/dropdown/phone_disconnect.bin";
     // 耳机连接状态
-    static constexpr uint16_t EARPHONESCONNECTSTATUS_IMG_X = 203;
-    static constexpr uint16_t EARPHONESCONNECTSTATUS_IMG_Y = 350;
-    static constexpr const char *DROPDOWN_EARPHONESCONNECTED_IMAGE = "/user/res/dropdown/DROPDOWN_EARPHONESCONNECTED.bin";
-    static constexpr const char *DROPDOWN_EARPHONESDISCONNECTED_IMAGE = "/user/res/dropdown/DROPDOWN_EARPHONESDISCONNECTED.bin";
-
+    static constexpr const char *DROPDOWN_EARPHONESCONNECTED_IMAGE = "/user/res/dropdown/earphones_connect.bin";
+    static constexpr const char *DROPDOWN_EARPHONESDISCONNECTED_IMAGE = "/user/res/dropdown/earphones_disconnect.bin";
     // 蓝牙连接状态
-    static constexpr uint16_t BLUETOOTHCONNECTSTATUS_IMG_X = 283;
-    static constexpr uint16_t BLUETOOTHCONNECTSTATUS_IMG_Y = 350;
-    static constexpr const char *DROPDOWN_BLUETOOTHCONNECTED_IMAGE = "/user/res/dropdown/DROPDOWN_BLUETOOTHCONNECTED.bin";
-    static constexpr const char *DROPDOWN_BLUETOOTHDISCONNECTED_IMAGE = "/user/res/dropdown/DROPDOWN_BLUETOOTHDISCONNECTED.bin";
-
-    static constexpr uint16_t CONNECTSTATUS_IMG_W = 60;
-    static constexpr uint16_t CONNECTSTATUS_IMG_H = 60;
+    static constexpr const char *DROPDOWN_BLUETOOTHCONNECTED_IMAGE = "/user/res/dropdown/bluetooth_connect.bin";
+    static constexpr const char *DROPDOWN_BLUETOOTHDISCONNECTED_IMAGE = "/user/res/dropdown/bluetooth_disconnect.bin";
 
     static constexpr const char *DROPDOWN_NOSIGNAL_IMAGE = "/user/res/dropdown/DROPDOWN_NOSIGNAL.bin";
     static constexpr const char *DROPDOWN_MOBILE_DATA_IMAGE = "/user/res/dropdown/DROPDOWN_MOBILE_DATA.bin";
+    static constexpr const char *DROPDOWN_HD_IMAGE = "/user/res/dropdown/DROPDOWN_HD.bin";
+    static constexpr const char *DROPDOWN_SELECT_1_IMAGE = "/user/res/dropdown/DROPDOWN_SELECT_1.bin";
+    static constexpr const char *DROPDOWN_SELECT_2_IMAGE = "/user/res/dropdown/DROPDOWN_SELECT_2.bin";
+    static constexpr const char *DROPDOWN_LINE_IMAGE = "/user/res/dropdown/DROPDOWN_LINE.bin";
     static const int64_t COLOR_SIGNAL_ON = 0xffffffff;
     static const int64_t COLOR_SIGNAL_OFF = 0xff383838;
-    static const int BATTERY_IMAGE_WIDTH = 48;
-    static const int BATTERY_IMAGE_HEIGHT = 30;
-    static const int PROGRESS_WIDTH = 30;
-    static const int PROGRESS_HEIGHT = 18;
-    /* -------------------------------------------------------------------------- */
-    std::string getWeekString(int wday)
-    {
-        std::string weekDays[] = {"星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
-        return weekDays[wday];
-    }
     /* -------------------------------------------------------------------------- */
     static PullUpDownView *g_pPullUpDownView = nullptr;
     PullUpDownView::PullUpDownView()
@@ -135,65 +65,18 @@ namespace OHOS
         return g_pPullUpDownView;
     }
 
-    // 清除信号强度相关组件
-    void PullUpDownView::ClearAllSingalComponentsView()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ClearAllSingalComponentsView");
-        if (NoSignal != nullptr)
-        {
-            delete NoSignal;
-            NoSignal = nullptr;
-        }
-
-        for (int i = 0; i < 4; i++)
-        {
-            if (showSignalStrength[i] != nullptr)
-            {
-                delete showSignalStrength[i];
-                showSignalStrength[i] = nullptr;
-            }
-        }
-
-        if (Singal_4 != nullptr)
-        {
-            delete Singal_4;
-            Singal_4 = nullptr;
-        }
-
-        if (MobileData != nullptr)
-        {
-            delete MobileData;
-            MobileData = nullptr;
-        }
-    }
-
-    // 清除所有与连接状态相关的视图组件
-    void PullUpDownView::ClearAllConnectedStatusComponentsView()
+    void PullUpDownView::OnSwipe(UISwipeView &view)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ClearAllConnectedStatusComponentsView");
-        if (connectedStatusBackgroundButton != nullptr)
-        {
-            delete connectedStatusBackgroundButton;
-            connectedStatusBackgroundButton = nullptr;
-        }
-
-        if (showPhoneConnectedStatus != nullptr)
-        {
-            delete showPhoneConnectedStatus;
-            showPhoneConnectedStatus = nullptr;
-        }
-
-        if (showEarPhoneConnectedStatus != nullptr)
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::OnSwipe,current tab index = %d", view.GetCurrentPage());
+        if (view.GetCurrentPage() == 0)
         {
-            delete showEarPhoneConnectedStatus;
-            showEarPhoneConnectedStatus = nullptr;
+            UpdateSwipviewSelect(true);
         }
-
-        if (showBluetoothConnectedStatus != nullptr)
+        else
         {
-            delete showBluetoothConnectedStatus;
-            showBluetoothConnectedStatus = nullptr;
+            UpdateSwipviewSelect(false);
         }
+        return;
     }
 
     void PullUpDownView::ClearAll()
@@ -203,220 +86,27 @@ namespace OHOS
         if (group[DROPDOWNVIEW] != nullptr)
         {
             group[DROPDOWNVIEW]->RemoveAll();
-            group[DROPDOWNVIEW]->ClearBackgroundBlur();
+            /* -------------------------------------------------------------------------- */
+            ClearAll_1();
+            ClearAll_2();
+            ClearAll_3();
+            ClearAll_4();
+            /* -------------------------------------------------------------------------- */
             delete group[DROPDOWNVIEW];
             group[DROPDOWNVIEW] = nullptr;
         }
-
-        if (dropSetting != nullptr)
-        {
-            delete dropSetting;
-            dropSetting = nullptr;
-        }
-
-        if (dropBluetooth != nullptr)
-        {
-            delete dropBluetooth;
-            dropBluetooth = nullptr;
-        }
-
-        if (dropDnotDisturb != nullptr)
-        {
-            delete dropDnotDisturb;
-            dropDnotDisturb = nullptr;
-        }
-
-        if (dropSavePower != nullptr)
-        {
-            delete dropSavePower;
-            dropSavePower = nullptr;
-        }
-
-        if (drofindPhone != nullptr)
-        {
-            delete drofindPhone;
-            drofindPhone = nullptr;
-        }
-
-        if (dropLine != nullptr)
-        {
-            delete dropLine;
-            dropLine = nullptr;
-        }
-
-        if (showTimeLabel != nullptr)
-        {
-            delete showTimeLabel;
-            showTimeLabel = nullptr;
-        }
-
-        if (showDateLabel != nullptr)
-        {
-            delete showDateLabel;
-            showDateLabel = nullptr;
-        }
-
-        if (showWeekLabel != nullptr)
-        {
-            delete showWeekLabel;
-            showWeekLabel = nullptr;
-        }
-        /* -------------------------------------------------------------------------- */
-        ClearAllSingalComponentsView();
-        ClearAllConnectedStatusComponentsView();
-        /* -------------------------------------------------------------------------- */
-        if (batteryimage != nullptr)
-        {
-            delete batteryimage;
-            batteryimage = nullptr;
-        }
-
-        if (progress != nullptr)
-        {
-            delete progress;
-            progress = nullptr;
-        }
-
         if (connectedStatusView != nullptr)
         {
             delete connectedStatusView;
             connectedStatusView = nullptr;
-            group[CONNECTEDSTATUSVIEW] = nullptr;
-        }
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ClearAll end!!");
-    }
-
-    UIImageView *PullUpDownView::dropDownIconImageViweInit(ImageConfig &imageconfig)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::dropDownIconImageViweInit");
-        UIImageView *Image = new UIImageView();
-        if (Image == nullptr)
-        {
-            return nullptr;
-        }
-        Image->SetPosition(imageconfig.x, imageconfig.y, imageconfig.w, imageconfig.h);
-        Image->SetViewId(imageconfig.viewid);
-        Image->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);
-        Image->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
-        Image->SetStyle(STYLE_BORDER_RADIUS, 100);
-        Image->SetAutoEnable(false);
-        Image->SetResizeMode(UIImageView::CENTER);
-        Image->SetSrc(imageconfig.src);
-        Image->SetTouchable(true);
-        Image->SetOnClickListener(imageconfig.clicklistener);
-
-        return Image;
-    }
-
-    /// @brief 创建icon图标
-    void PullUpDownView::createDropDownIconImageViwe(void)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitViewImg");
-        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::MainPresenterSample::GetInstance();
-        if (clickListener == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainPresenterSample::GetInstance fail!!");
-            return;
-        }
-        /* ---------------------------------- 下拉设置图片 ---------------------------------- */
-        ImageConfig imageconfig = {
-            .x = SETTING_IMG_X,
-            .y = SETTING_IMG_Y,
-            .w = ICON_IMG_SIZE_W,
-            .h = ICON_IMG_SIZE_H,
-            .viewid = DROPDOWN_CLICK_SETTING,
-            .src = DROPDOWN_SETTING_IMAGE,
-            .clicklistener = clickListener,
-        };
-        dropSetting = dropDownIconImageViweInit(imageconfig);
-        if (dropSetting == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::dropSetting new fail");
-            return;
-        }
-        /* ----------------------------------- 蓝牙 ----------------------------------- */
-        imageconfig = {
-            .x = BLUETOOTH_IMG_X,
-            .y = BLUETOOTH_IMG_Y,
-            .w = ICON_IMG_SIZE_W,
-            .h = ICON_IMG_SIZE_H,
-            .viewid = DROPDOWN_CLICK_BLUETOOTH,
-            .src = DROPDOWN_BLUETOOTH_IMAGE,
-            .clicklistener = clickListener,
-        };
-        dropBluetooth = dropDownIconImageViweInit(imageconfig);
-        if (dropBluetooth == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::dropBluetooth new fail");
-            return;
-        }
-        /* ----------------------------------- 勿扰模式 ----------------------------------- */
-        imageconfig = {
-            .x = DNOTDISTURB_IMG_X,
-            .y = DNOTDISTURB_IMG_Y,
-            .w = ICON_IMG_SIZE_W,
-            .h = ICON_IMG_SIZE_H,
-            .viewid = DROPDOWN_CLICK_DNOTDISTURB,
-            .src = DROPDOWN_DNOTDISTURB_IMAGE,
-            .clicklistener = clickListener,
-        };
-        dropDnotDisturb = dropDownIconImageViweInit(imageconfig);
-        if (dropDnotDisturb == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::dropDnotDisturb new fail");
-            return;
-        }
-        UpdateDnotDisturbStatus(DnotDisturbModel::GetInstance().GetDoNotDisturbModeEnabled());
-        /* ----------------------------------- 省电 ----------------------------------- */
-        imageconfig = {
-            .x = SAVEPOWER_IMG_X,
-            .y = SAVEPOWER_IMG_Y,
-            .w = ICON_IMG_SIZE_W,
-            .h = ICON_IMG_SIZE_H,
-            .viewid = DROPDOWN_CLICK_SAVEELE,
-            .src = DROPDOWN_SAVEPOWER_IMAGE,
-            .clicklistener = clickListener,
-        };
-        dropSavePower = dropDownIconImageViweInit(imageconfig);
-        if (dropSavePower == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::dropSavePower new fail");
-            return;
-        }
-        /* ----------------------------------- 找手机 ---------------------------------- */
-        imageconfig = {
-            .x = FINDPHONE_IMG_X,
-            .y = FINDPHONE_IMG_Y,
-            .w = ICON_IMG_SIZE_W,
-            .h = ICON_IMG_SIZE_H,
-            .viewid = DROPDOWN_CLICK_FINDMYPHONE,
-            .src = DROPDOWN_FINDPHONE_IMAGE,
-            .clicklistener = clickListener,
-        };
-        drofindPhone = dropDownIconImageViweInit(imageconfig);
-        if (drofindPhone == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::drofindPhone new fail");
-            return;
         }
-        /* -------------------------------- dropLine -------------------------------- */
-        dropLine = new UIImageView();
-        if (dropLine == nullptr)
+        for (int i = DROPDOWNVIEW; i < MAX_DROPDOWNVIEWID; i++)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropLine new fail");
-            return;
+            group[i] = nullptr;
         }
-        dropLine->SetPosition(LINE_IMG_X, LINE_IMG_Y, ICON_IMG_SIZE_W, ICON_IMG_SIZE_H);
-        dropLine->SetSrc(DROPDOWN_LINE_IMAGE);
-        /* -------------------------------- 添加组件到视图上 -------------------------------- */
-        group[DROPDOWNVIEW]->Add(dropSetting);
-        group[DROPDOWNVIEW]->Add(dropBluetooth);
-        group[DROPDOWNVIEW]->Add(dropDnotDisturb);
-        group[DROPDOWNVIEW]->Add(dropSavePower);
-        group[DROPDOWNVIEW]->Add(drofindPhone);
-        group[DROPDOWNVIEW]->Add(dropLine);
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ClearAll end!!");
     }
-
+    /* --------------------------------- 1.连接状态相关 --------------------------------- */
     // 获取手机连接状态
     bool PullUpDownView::GetPhoneConnectedStatus(void)
     {
@@ -430,7 +120,6 @@ namespace OHOS
 
         return SettingModel::GetInstance().GetPhoneConnectStatus();
     }
-
     // 获取蓝牙耳机连接状态
     bool PullUpDownView::GetEarPhoneConnectedStatus(void)
     {
@@ -444,7 +133,6 @@ namespace OHOS
 
         return SettingModel::GetInstance().GetEarPhoneConnectStatus();
     }
-
     // 获取蓝牙连接状态
     bool PullUpDownView::GetBlueToothConnectedStatus(void)
     {
@@ -459,7 +147,58 @@ namespace OHOS
         return SettingModel::GetInstance().GetBlueToothConnectStatus();
     }
 
-    UIImageView *PullUpDownView::dropDownConnectedStatusImageViweInit(int16_t x, int16_t y, int16_t w, int16_t h)
+    // 更新手机连接状态
+    void PullUpDownView::UpdatePhoneStatus(int status)
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdatePhoneStatus");
+        if (showPhoneConnectedStatus == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showPhoneConnectedStatus nullptr");
+            return;
+        }
+        showPhoneConnectedStatus->SetSrc(status ? DROPDOWN_PHONECONNECTED_IMAGE : DROPDOWN_PHONEDISCONNECTED_IMAGE);
+        showPhoneConnectedStatus->Invalidate();
+
+        if (GetConnectedStatusView() != nullptr)
+            GetConnectedStatusView()->UpdatePhoneConnectedStatus(status);
+
+        return;
+    }
+    // 更新蓝牙耳机连接状态
+    void PullUpDownView::UpdateEarPhoneStatus(int status)
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateEarPhoneStatus");
+        if (showEarPhoneConnectedStatus == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showEarPhoneConnectedStatus nullptr");
+            return;
+        }
+        showEarPhoneConnectedStatus->SetSrc(status ? DROPDOWN_EARPHONESCONNECTED_IMAGE : DROPDOWN_EARPHONESDISCONNECTED_IMAGE);
+        showEarPhoneConnectedStatus->Invalidate();
+
+        if (GetConnectedStatusView() != nullptr)
+            GetConnectedStatusView()->UpdateEarPhoneConnectedStatus(status);
+
+        return;
+    }
+    // 更新蓝牙连接状态
+    void PullUpDownView::UpdateBlueToothStatus(int status)
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateBlueToothStatus");
+        if (showBluetoothConnectedStatus == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showBluetoothConnectedStatus nullptr");
+            return;
+        }
+        showBluetoothConnectedStatus->SetSrc(status ? DROPDOWN_BLUETOOTHCONNECTED_IMAGE : DROPDOWN_BLUETOOTHDISCONNECTED_IMAGE);
+        showBluetoothConnectedStatus->Invalidate();
+
+        if (GetConnectedStatusView() != nullptr)
+            GetConnectedStatusView()->UpdateBlueToothConnectedStatus(status);
+
+        return;
+    }
+    UIImageView *PullUpDownView::DropDownConnectedStatusImageViweInit(int16_t x, int16_t y, int16_t w, int16_t h)
     {
         UIImageView *img = new UIImageView();
         if (img == nullptr)
@@ -473,25 +212,24 @@ namespace OHOS
 
         return img;
     }
-
     /// @brief 创建与连接状态相关组件
-    void PullUpDownView::createDropDownConnectedStatusImageViwe(void)
+    void PullUpDownView::CreateDropDownConnectionStatusImageViwe(void)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitConnectedStatusImage");
-        connectedStatusBackgroundButton = new UIButton();
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::CreateDropDownConnectionStatusImageViwe");
         if (connectedStatusBackgroundButton == nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectedStatusBackgroundButton new fail");
-            return;
+            connectedStatusBackgroundButton = new UIButton();
+            if (connectedStatusBackgroundButton == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectedStatusBackgroundButton new fail");
+                return;
+            }
         }
-        connectedStatusBackgroundButton->SetPosition(113, 348, 240, 64);
+        connectedStatusBackgroundButton->SetPosition(153, 10, 160, 50);
         connectedStatusBackgroundButton->SetViewId(CONNECTEDSTATUSBACKGROUNDBUTTON);
-        connectedStatusBackgroundButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
-        connectedStatusBackgroundButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
-        connectedStatusBackgroundButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);
-        connectedStatusBackgroundButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);
-        connectedStatusBackgroundButton->SetStyleForState(STYLE_BORDER_COLOR, 0xffffffff, UIButton::PRESSED);
-        connectedStatusBackgroundButton->SetStyleForState(STYLE_BORDER_OPA, 0x00, UIButton::PRESSED);
+        connectedStatusBackgroundButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);
+        connectedStatusBackgroundButton->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+        connectedStatusBackgroundButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff383838, UIButton::PRESSED);
         UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::MainPresenterSample::GetInstance();
         if (clickListener == nullptr)
         {
@@ -499,27 +237,37 @@ namespace OHOS
             return;
         }
         connectedStatusBackgroundButton->SetOnClickListener(clickListener);
+        int x = connectedStatusBackgroundButton->GetX();
+        int y = connectedStatusBackgroundButton->GetY();
         /* -------------------------------- 显示手机连接状态 -------------------------------- */
-
-        showPhoneConnectedStatus = dropDownConnectedStatusImageViweInit(PHONECONNECTSTATUS_IMG_X, PHONECONNECTSTATUS_IMG_Y, CONNECTSTATUS_IMG_W, CONNECTSTATUS_IMG_H);
         if (showPhoneConnectedStatus == nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showPhoneConnectedStatus new fail");
-            return;
+            showPhoneConnectedStatus = DropDownConnectedStatusImageViweInit(x + 26, y + 13, 24, 24);
+            if (showPhoneConnectedStatus == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showPhoneConnectedStatus new fail");
+                return;
+            }
         }
         /* -------------------------------- 显示耳机连接状态 -------------------------------- */
-        showEarPhoneConnectedStatus = dropDownConnectedStatusImageViweInit(EARPHONESCONNECTSTATUS_IMG_X, EARPHONESCONNECTSTATUS_IMG_Y, CONNECTSTATUS_IMG_W, CONNECTSTATUS_IMG_H);
         if (showEarPhoneConnectedStatus == nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showEarPhoneConnectedStatus new fail");
-            return;
+            showEarPhoneConnectedStatus = DropDownConnectedStatusImageViweInit(x + 68, y + 13, 24, 24);
+            if (showEarPhoneConnectedStatus == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showEarPhoneConnectedStatus new fail");
+                return;
+            }
         }
         /* -------------------------------- 显示蓝牙连接状态 -------------------------------- */
-        showBluetoothConnectedStatus = dropDownConnectedStatusImageViweInit(BLUETOOTHCONNECTSTATUS_IMG_X, BLUETOOTHCONNECTSTATUS_IMG_Y, CONNECTSTATUS_IMG_W, CONNECTSTATUS_IMG_H);
         if (showBluetoothConnectedStatus == nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showBluetoothConnectedStatus new fail");
-            return;
+            showBluetoothConnectedStatus = DropDownConnectedStatusImageViweInit(x + 110, y + 13, 24, 24);
+            if (showBluetoothConnectedStatus == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showBluetoothConnectedStatus new fail");
+                return;
+            }
         }
         /* -------------------------------------------------------------------------- */
         UpdatePhoneStatus(GetPhoneConnectedStatus());
@@ -532,129 +280,80 @@ namespace OHOS
         group[DROPDOWNVIEW]->Add(showBluetoothConnectedStatus);
     }
 
-    /***
-     * @brief 初始化时间,日期,星期,电池,信号强度
-     */
-    bool PullUpDownView::InitBaseData()
+    void PullUpDownView::ClearAll_1(void)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitBaseData");
-        if (!InitSingalComponentsView())
+        if (connectedStatusBackgroundButton != nullptr)
         {
-            return false;
+            delete connectedStatusBackgroundButton;
+            connectedStatusBackgroundButton = nullptr;
         }
-
-        /* ---------------------------------- 时间显示 ---------------------------------- */
-        showTimeLabel = new UILabel();
-        if (showTimeLabel == nullptr)
+        if (showPhoneConnectedStatus != nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showTimeLabel new fail");
-            return false;
+            delete showPhoneConnectedStatus;
+            showPhoneConnectedStatus = nullptr;
         }
-        showTimeLabel->SetPosition(TIME_LABEL_X, TIME_LABEL_Y);
-        showTimeLabel->SetStyle(STYLE_TEXT_FONT, 50);
-        showTimeLabel->SetStyle(STYLE_LINE_HEIGHT, 59);
-        showTimeLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
-        showTimeLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-        showTimeLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 50);
-        /* ---------------------------------- 日期显示 ---------------------------------- */
-        showDateLabel = new UILabel();
-        if (showDateLabel == nullptr)
+        if (showEarPhoneConnectedStatus != nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showDateLabel new fail");
-            return false;
+            delete showEarPhoneConnectedStatus;
+            showEarPhoneConnectedStatus = nullptr;
         }
-        showDateLabel->SetPosition(DATE_LABEL_X, DATE_LABEL_Y);
-        showDateLabel->SetStyle(STYLE_TEXT_FONT, 30);
-        showDateLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
-        showDateLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
-        showDateLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-        showDateLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
-        /* ---------------------------------- 星期显示 ---------------------------------- */
-        showWeekLabel = new UILabel();
-        if (showWeekLabel == nullptr)
+        if (showBluetoothConnectedStatus != nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showWeekLabel new fail");
-            return false;
+            delete showBluetoothConnectedStatus;
+            showBluetoothConnectedStatus = nullptr;
         }
-        showWeekLabel->SetPosition(WEEK_LABEL_X, WEEK_LABEL_Y);
-        showWeekLabel->SetStyle(STYLE_TEXT_FONT, 30);
-        showWeekLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
-        showWeekLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
-        showWeekLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-        showWeekLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28);
-        /* ----------------------------------- 电池 ----------------------------------- */
-        batteryimage = new UIImageView();
-        if (batteryimage == nullptr)
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ClearAllConnectedStatusComponentsView");
+    }
+    /* -------------------------------------------------------------------------- */
+    /***
+     * @brief 初始化时间,日期,星期,电池,信号强度
+     */
+    void PullUpDownView::InitBaseData()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitBaseData");
+        if (group1 == nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "batteryimage new fail");
-            return false;
+            group1 = new UIViewGroup();
+            if (group1 == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group1 new fail");
+                return;
+            }
         }
-        batteryimage->SetPosition(258, 180, BATTERY_IMAGE_WIDTH, BATTERY_IMAGE_HEIGHT);
-        std::string batteryimagesPath = "/user/res/Battery/Battery-E.bin";
-        batteryimage->SetSrc(batteryimagesPath.c_str());
-        /* -------------------------------------------------------------------------- */
-        progress = new UIBoxProgress();
-        if (progress == nullptr)
+        group1->SetPosition(132, 80, 202, 40);
+        group1->SetStyle(STYLE_BACKGROUND_OPA, 0);
+        /* -------------------------------- NoSignal -------------------------------- */
+        if (NoSignal == nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "progress new fail");
-            return false;
+            NoSignal = new UIImageView();
+            if (NoSignal == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "NoSignal new fail");
+                return;
+            }
         }
-        progress->SetPosition(206, 180, PROGRESS_WIDTH, PROGRESS_HEIGHT);
-        progress->SetValidHeight(PROGRESS_HEIGHT);
-        progress->SetValidWidth(PROGRESS_WIDTH);
-        progress->SetValue(20);
-        // progress->SetRange(100,0);
-        // const char *progressImageSrc = "/user/res/Battery/Battery_Normal.bin";
-        // progress->SetImage(progressImageSrc, progressImageSrc);
-        progress->SetBackgroundStyle(STYLE_BACKGROUND_OPA, 0x00);
-        progress->SetBackgroundStyle(STYLE_TEXT_COLOR, 0xff000000);
-        progress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
-        progress->SetForegroundStyle(STYLE_TEXT_COLOR, 0xff000000);
-        progress->SetForegroundStyle(STYLE_LINE_COLOR, 0xff45A5FF);
-
-        group[DROPDOWNVIEW]->Add(progress);
-        group[DROPDOWNVIEW]->Add(batteryimage);
-        group[DROPDOWNVIEW]->Add(showTimeLabel);
-        group[DROPDOWNVIEW]->Add(showDateLabel);
-        group[DROPDOWNVIEW]->Add(showWeekLabel);
-
-        /* -------------------------------------------------------------------------- */
-        UpdateSignalStrengthStatusAndBatteryPosition();
-        /* -------------------------------------------------------------------------- */
-
-        return true;
-    }
-
-    // 初始化信号强度相关组件
-    bool PullUpDownView::InitSingalComponentsView()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitSingalComponentsView");
-        /* -------------------------------------------------------------------------- */
-        NoSignal = new UIImageView();
-        if (NoSignal == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "NoSignal new fail");
-            return false;
-        }
-        NoSignal->SetPosition(160, 176, 36, 38);
+        NoSignal->SetPosition(0, (group1->GetHeight() - 38) / 2, 36, 38);
         NoSignal->SetAutoEnable(false);
         NoSignal->SetResizeMode(UIImageView::CENTER);
         NoSignal->SetSrc(DROPDOWN_NOSIGNAL_IMAGE);
         NoSignal->SetVisible(false);
-        group[DROPDOWNVIEW]->Add(NoSignal);
-        /* -------------------------------------------------------------------------- */
-        MobileData = new UIImageView();
+        group1->Add(NoSignal);
+        /* ------------------------------- MobileData ------------------------------- */
         if (MobileData == nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MobileData new fail");
-            return false;
+            MobileData = new UIImageView();
+            if (MobileData == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MobileData new fail");
+                return;
+            }
         }
-        MobileData->SetPosition(161, 180, 13, 15);
+        MobileData->SetPosition(1, 4, 13, 15);
         MobileData->SetAutoEnable(false);
         MobileData->SetResizeMode(UIImageView::CENTER);
         MobileData->SetSrc(DROPDOWN_MOBILE_DATA_IMAGE);
         MobileData->SetVisible(false);
-        group[DROPDOWNVIEW]->Add(MobileData);
+        group1->Add(MobileData);
         /* -------------------------------------------------------------------------- */
         // 定义一个结构体,用于存储 ImageView 的信息
         struct ImageViewInfo
@@ -666,10 +365,10 @@ namespace OHOS
         };
         // 待添加的 ImageView 信息列表
         std::vector<ImageViewInfo> imageViewList = {
-            {160, 204, 6, 6},
-            {170, 196, 6, 14},
-            {180, 188, 6, 22},
-            {190, 180, 6, 30},
+            {0, 28, 6, 6},
+            {10, 20, 6, 14},
+            {20, 12, 6, 22},
+            {30, 4, 6, 30},
         };
 
         // 循环添加 ImageView 到相应的容器中
@@ -681,22 +380,22 @@ namespace OHOS
                 if (showSignalStrength[i] == nullptr)
                 {
                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showSignalStrength[%d] new fail", i);
-                    return false;
+                    return;
                 }
             }
             showSignalStrength[i]->SetPosition(imageViewList[i].posX, imageViewList[i].posY, imageViewList[i].width, imageViewList[i].height);
             showSignalStrength[i]->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
             showSignalStrength[i]->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
             showSignalStrength[i]->SetStyle(STYLE_BORDER_RADIUS, 10);
-            group[DROPDOWNVIEW]->Add(showSignalStrength[i]);
+            group1->Add(showSignalStrength[i]);
             showSignalStrength[i]->SetVisible(false);
         }
-        /* -------------------------------------------------------------------------- */
+        /* -------------------------------- Singal_4 -------------------------------- */
         if (Singal_4 == nullptr)
         {
             Singal_4 = new UILabel();
         }
-        Singal_4->SetPosition(201, 176, 40, 47);
+        Singal_4->SetPosition(0, 0, 40, 47);
         Singal_4->SetStyle(STYLE_TEXT_FONT, 34);
         Singal_4->SetStyle(STYLE_LINE_HEIGHT, 40);
         Singal_4->SetText("4G");
@@ -704,1143 +403,127 @@ namespace OHOS
         Singal_4->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
         Singal_4->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 34);
         Singal_4->SetVisible(false);
-        group[DROPDOWNVIEW]->Add(Singal_4);
-
-        return true;
-    }
-
-    // 获取信号强度
-    int PullUpDownView::GetSignalStrength(void)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::GetSignalStrength");
-        int SignalStrength = uapi_dev_runtime_get_cat1_signal(); // 信号强度
-        return CalculateSignalBars(SignalStrength);
-    }
-
-    // 计算信号格
-    int PullUpDownView::CalculateSignalBars(int signalStrength)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::CalculateSignalBars");
-        if (signalStrength < 0 || signalStrength > 32 || signalStrength == 0)
-            return 99; // 无信号 or Invalid signal strength
-
-        // if (signalStrength == 32)
-        //     return 4; // Edge case where signalStrength is exactly at the upper boundary
-
-        return (signalStrength / 8) + 1;
-    }
-
-#if 1
-    // 函数用于更新信号显示的UI
-    void PullUpDownView::updateSignalDisplay()
-    {
-        int sim = uapi_dev_runtime_get_cat1_simstat();
-        int cat1_powerOn = uapi_dev_runtime_get_cat1_powerstat();
-        int signal = uapi_dev_runtime_get_cat1_signal();
-        int network_on = uapi_dev_runtime_get_cat1_networkstat();
-        int cat1_network_type = uapi_dev_runtime_get_cat1_networtype();
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sim = %d", sim);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cat1_powerOn = %d", cat1_powerOn);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "signal = %d", signal);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "network_on = %d", network_on);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cat1_network_type = %d", cat1_network_type);
-
-        const int SIGNAL_NO_SIGNAL = 99;
-        const int NETWORK_TYPE_NO_NETWORK = 0;
-        const int NETWORK_TYPE_4G = 4;
-
-        if (sim == 0 || cat1_powerOn == 0)
-        {
-            // 无信号,无4G图标
-            UpdateCat1NoSignalisplay(true);
-            UpdateCat14GDisplay(false);
-            UpdateSignalBarDisplay(CalculateSignalBars(signal), false);
-            UpdateCat1MobileDataDisplay(false);
-        }
-        else if (cat1_powerOn == 1 && sim == 1)
+        group1->Add(Singal_4);
+        /* ----------------------------------- HD ----------------------------------- */
+        if (HD == nullptr)
         {
-            if (signal == SIGNAL_NO_SIGNAL) // 计算信号强度
-            {
-                // 无信号UI显示
-                // UpdateCat1NoSignalisplay(true);
-                // UpdateCat14GDisplay(false);
-                UpdateSignalBarDisplay(CalculateSignalBars(signal), false);
-            }
-            else
-            {
-                // 信号强度显示
-                UpdateCat1NoSignalisplay(false);
-                // UpdateCat14GDisplay(true);
-                UpdateSignalBarDisplay(CalculateSignalBars(signal), true);
-            }
-
-            if (network_on == 0)
-            {
-                // 无信号,无4G图标 显示
-                // UpdateCat1NoSignalisplay(true);
-                UpdateCat14GDisplay(false);
-                UpdateCat1MobileDataDisplay(false);
-                // UpdateSignalBarDisplay(CalculateSignalBars(signal), false);
-            }
-            else
+            HD = new UIImageView();
+            if (HD == nullptr)
             {
-                if (cat1_network_type == NETWORK_TYPE_NO_NETWORK)
-                {
-                    // 无信号,无4G图标 显示
-                    // UpdateCat1NoSignalisplay(true);
-                    UpdateCat14GDisplay(false);
-                    UpdateCat1MobileDataDisplay(false);
-                    // UpdateSignalBarDisplay(CalculateSignalBars(signal), false);
-                }
-                else if (cat1_network_type == NETWORK_TYPE_4G)
-                {
-                    // 有4G图标,正常显示信号
-                    // UpdateCat1NoSignalisplay(false);
-                    UpdateCat14GDisplay(true);
-                    UpdateCat1MobileDataDisplay(true);
-                    // UpdateSignalBarDisplay(CalculateSignalBars(signal), true);
-                }
-                else
-                {
-                    // 无4G图标,正常显示信号
-                    // UpdateCat1NoSignalisplay(false);
-                    UpdateCat14GDisplay(false);
-                    UpdateCat1MobileDataDisplay(true);
-                    // UpdateSignalBarDisplay(CalculateSignalBars(signal), true);
-                }
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HD new fail");
+                return;
             }
         }
-    }
-#else
-    // 函数用于更新信号显示的UI
-    void PullUpDownView::updateSignalDisplay()
-    {
-        int sim = uapi_dev_runtime_get_cat1_simstat();
-        int cat1_powerOn = uapi_dev_runtime_get_cat1_powerstat();
-        int signal = uapi_dev_runtime_get_cat1_signal();
-        int network_on = uapi_dev_runtime_get_cat1_networkstat();
-        int cat1_network_type = uapi_dev_runtime_get_cat1_networtype();
-
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sim = %d", sim);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cat1_powerOn = %d", cat1_powerOn);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "signal = %d", signal);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "network_on = %d", network_on);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cat1_network_type = %d", cat1_network_type);
-
-        const int SIGNAL_NO_SIGNAL = 99;
-        const int NETWORK_TYPE_NO_NETWORK = 0;
-        const int NETWORK_TYPE_4G = 4;
-
-        bool showNoSignal = (sim == 0 || cat1_powerOn == 0 || signal == SIGNAL_NO_SIGNAL);
-        bool showNo4GIcon = (network_on == 0 || cat1_network_type == NETWORK_TYPE_NO_NETWORK);
-
-        if (showNoSignal)
-        {
-            UpdateCat1NoSignalisplay(true);
-            UpdateCat14GDisplay(false);
-            UpdateSignalBarDisplay(CalculateSignalBars(signal), false);
-        }
-        else
-        {
-            UpdateCat1NoSignalisplay(false);
-            UpdateCat14GDisplay(!showNo4GIcon && cat1_network_type == NETWORK_TYPE_4G);
-            UpdateSignalBarDisplay(CalculateSignalBars(signal), true);
-        }
-    }
-
-#endif
-
-    // 更新信号强度显示
-    void PullUpDownView::UpdateSignalBarDisplay(int signalBars, bool state)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateSignalBarDisplay");
-        for (int i = 0; i < 4; i++)
-        {
-            showSignalStrength[i]->SetStyle(STYLE_BACKGROUND_COLOR, (i < signalBars) ? COLOR_SIGNAL_ON : COLOR_SIGNAL_OFF);
-            showSignalStrength[i]->Invalidate();
-            showSignalStrength[i]->SetVisible(state);
-        }
-    }
-
-    // 更新无信号图标显示
-    void PullUpDownView::UpdateCat1NoSignalisplay(bool state)
-    {
-        if (NoSignal != nullptr)
-        {
-            NoSignal->SetVisible(state);
-        }
-    }
-
-    // 更新4G图标显示
-    void PullUpDownView::UpdateCat14GDisplay(bool state)
-    {
-        if (Singal_4 != nullptr)
-        {
-            Singal_4->SetVisible(state);
-        }
-        UpdateBatteryPosition(state);
-    }
-
-    /*更新移动数据图标显示*/
-    void PullUpDownView::UpdateCat1MobileDataDisplay(bool state)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateCat1MobileDataDisplay %d", state);
-        if (MobileData != nullptr)
+        HD->SetPosition(88 + 10, (group1->GetHeight() - 30) / 2, 46, 30);
+        HD->SetAutoEnable(false);
+        HD->SetResizeMode(UIImageView::CENTER);
+        HD->SetSrc(DROPDOWN_HD_IMAGE);
+        HD->SetVisible(false);
+        group1->Add(HD);
+        /* ----------------------------------- 电池 ----------------------------------- */
+        batteryimage = new UIImageView();
+        if (batteryimage == nullptr)
         {
-            MobileData->SetVisible(state);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "batteryimage new fail");
+            return;
         }
-    }
-
-    // 更新电池位置
-    void PullUpDownView::UpdateBatteryPosition(bool state)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateBatteryPosition");
-        if (state == false)
+        batteryimage->SetPosition(HD->GetX() + HD->GetWidth() + 10, (group1->GetHeight() - 30) / 2, 48, 30);
+        std::string batteryimagesPath = "/user/res/Battery/Battery-E.bin";
+        batteryimage->SetSrc(batteryimagesPath.c_str());
+        group1->Add(batteryimage);
+        /* -------------------------------------------------------------------------- */
+        progress = new UIBoxProgress();
+        if (progress == nullptr)
         {
-            batteryimage->SetPosition(209, 180, BATTERY_IMAGE_WIDTH, BATTERY_IMAGE_HEIGHT);
-            progress->SetPosition(215, 186, PROGRESS_WIDTH, PROGRESS_HEIGHT);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "progress new fail");
+            return;
         }
-        else
+        progress->SetPosition(batteryimage->GetX() + 7, batteryimage->GetY() + 6, 30, 18);
+        progress->SetValidWidth(30);
+        progress->SetValidHeight(18);
+        progress->SetRange(100, 0);
+        progress->SetStyle(STYLE_BORDER_RADIUS, 3);
+        progress->SetBackgroundStyle(STYLE_BACKGROUND_OPA, 0x00);
+        progress->SetBackgroundStyle(STYLE_TEXT_COLOR, 0xff000000);
+        progress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
+        progress->SetForegroundStyle(STYLE_TEXT_COLOR, 0xff000000);
+        progress->SetForegroundStyle(STYLE_LINE_COLOR, 0xff45A5FF);
+        group1->Add(progress);
+        /* -------------------------------------------------------------------------- */
+        group[DROPDOWNVIEW]->Add(group1);
+        /* --------------------------------- 显示日期和星期 -------------------------------- */
+        showDateAndWeekLabel = new UILabel();
+        if (showDateAndWeekLabel == nullptr)
         {
-            batteryimage->SetPosition(258, 180, BATTERY_IMAGE_WIDTH, BATTERY_IMAGE_HEIGHT);
-            progress->SetPosition(264, 186, PROGRESS_WIDTH, PROGRESS_HEIGHT);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showDateAndWeekLabel new fail");
+            return;
         }
-        batteryimage->Invalidate();
-        progress->Invalidate();
-    }
-
-    // 更新信号强度和电池位置
-    void PullUpDownView::UpdateSignalStrengthStatusAndBatteryPosition()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateSignalStrengthStatusAndBatteryPosition");
-        updateSignalDisplay();
-
-        int a2dp = uapi_a2dp_snk_get_device_connect_state();
-        int hfp = uapi_hfp_connect_state();
-        bool bluetoothstatus = (a2dp == 0 && hfp == 0) ? false : true;
-        UpdateBlueToothStatus(bluetoothstatus);
-        // UpdateBatteryPosition(GetSignalStrength());
+        showDateAndWeekLabel->SetPosition(128, 130, 210, 30);
+        showDateAndWeekLabel->SetStyle(STYLE_TEXT_FONT, 30);
+        showDateAndWeekLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
+        showDateAndWeekLabel->SetTextColor(Color::GetColorFromRGBA(0xaa, 0xaa, 0xaa, 0xff));
+        showDateAndWeekLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+        showDateAndWeekLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        showDateAndWeekLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+        group[DROPDOWNVIEW]->Add(showDateAndWeekLabel);
+        /* -------------------------------------------------------------------------- */
+        UpdateSignalStrengthStatusAndBatteryPosition();
+        /* -------------------------------------------------------------------------- */
+        MainPresenterSample::GetInstance()->UpdataBaseData();
+        /* -------------------------------------------------------------------------- */
     }
-
-    // 下拉视图初始化
-    bool PullUpDownView::PullUpDownViewInit()
+    void PullUpDownView::ClearAll_2(void)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitView");
-
-        group[DROPDOWNVIEW] = new UIViewGroup();
-        if (group[DROPDOWNVIEW] == nullptr)
+        if (group1 != nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group[DROPDOWNVIEW] new fail!!");
-            return false;
-        }
-        group[DROPDOWNVIEW]->SetPosition(0, 0, 466, 466);
-        group[DROPDOWNVIEW]->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
-        group[DROPDOWNVIEW]->SetViewIndex(0);
-        group[DROPDOWNVIEW]->SetFullScreenBlur(true);
-        createDropDownIconImageViwe();
-        createDropDownConnectedStatusImageViwe();
-
-        if (InitBaseData())
-        {
-            MainPresenterSample::GetInstance()->UpdataBaseData();
-        }
-        else
-        {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitBaseData Error!");
-            return false;
-        }
-        SetTouchable(true);
-        SetIntercept(true);
-        Add(group[DROPDOWNVIEW]);
-        return true;
-    }
-
-    void PullUpDownView::PreLoad(void)
-    {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::PreLoad");
-        if (!viewiInitStatus)
-        {
-            PullUpDownViewInit();
-            viewiInitStatus = true;
-        }
-    }
-
-    void PullUpDownView::UnLoad(void)
-    {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UnLoad");
-    }
-
-    // 更新手机连接状态
-    void PullUpDownView::UpdatePhoneStatus(int status)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdatePhoneStatus");
-        if (showPhoneConnectedStatus == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showPhoneConnectedStatus nullptr");
-            return;
-        }
-        showPhoneConnectedStatus->SetSrc(status ? DROPDOWN_PHONECONNECTED_IMAGE : DROPDOWN_PHONEDISCONNECTED_IMAGE);
-        showPhoneConnectedStatus->Invalidate();
-
-        if (GetConnectedStatusView() != nullptr)
-            GetConnectedStatusView()->UpdatePhoneConnectedStatus(status);
-
-        return;
-    }
-
-    // 更新蓝牙耳机连接状态
-    void PullUpDownView::UpdateEarPhoneStatus(int status)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateEarPhoneStatus");
-        if (showEarPhoneConnectedStatus == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showEarPhoneConnectedStatus nullptr");
-            return;
-        }
-        showEarPhoneConnectedStatus->SetSrc(status ? DROPDOWN_EARPHONESCONNECTED_IMAGE : DROPDOWN_EARPHONESDISCONNECTED_IMAGE);
-        showEarPhoneConnectedStatus->Invalidate();
-
-        if (GetConnectedStatusView() != nullptr)
-            GetConnectedStatusView()->UpdateEarPhoneConnectedStatus(status);
-
-        return;
-    }
-
-    // 更新蓝牙连接状态
-    void PullUpDownView::UpdateBlueToothStatus(int status)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateBlueToothStatus");
-        if (showBluetoothConnectedStatus == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showBluetoothConnectedStatus nullptr");
-            return;
-        }
-        showBluetoothConnectedStatus->SetSrc(status ? DROPDOWN_BLUETOOTHCONNECTED_IMAGE : DROPDOWN_BLUETOOTHDISCONNECTED_IMAGE);
-        showBluetoothConnectedStatus->Invalidate();
-
-        if (GetConnectedStatusView() != nullptr)
-            GetConnectedStatusView()->UpdateBlueToothConnectedStatus(status);
-
-        return;
-    }
-
-    /*更新勿扰模式状态*/
-    void PullUpDownView::UpdateDnotDisturbStatus(int status)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateDnotDisturbStatus");
-        if (dropDnotDisturb != nullptr)
-        {
-            dropDnotDisturb->SetStyle(STYLE_BACKGROUND_COLOR, status ? 0xff8e20e2 : 0xff191919);
-            dropDnotDisturb->Invalidate();
-        }
-        else
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropIconBackground[DNOTDISTURB_INDEX] is nullptr");
-            return;
-        }
-    }
-
-    UILabel *PullUpDownView::GetTimeLabel()
-    {
-        return showTimeLabel;
-    }
-    UILabel *PullUpDownView::GetDateLabel()
-    {
-        return showDateLabel;
-    }
-    UILabel *PullUpDownView::GetWeekLabel()
-    {
-        return showWeekLabel;
-    }
-    UIBoxProgress *PullUpDownView::GetProgress()
-    {
-        return progress;
-    }
-    /* ------------------------------ 下拉界面切换到连接状态视图 ----------------------------- */
-    // 切换到"下拉控制中心"视图
-    bool PullUpDownView::ChangeDropDownView(int16_t thisView)
-    {
-        if (group[thisView] == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ChangeDropDownView");
-            Add(group[thisView]);
-        }
-        return true;
-    }
-
-    // 切换到"连接状态"视图
-    bool PullUpDownView::ChangeConnectedStatusView(int16_t thisView)
-    {
-        if (group[thisView] == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ChangeConnectedStatusView");
-            connectedStatusView = new ConnectedStatusView();
-            if (connectedStatusView == nullptr)
-            {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView:: new scrollView[%d] fail", thisView);
-                return false;
-            }
-            group[thisView] = connectedStatusView->ConnectedStatusViewInit();
-            Add(group[thisView]);
-        }
-        return true;
-    }
-
-    struct PullUpDownViewMapper
-    {
-        const int16_t viewId;
-        bool (PullUpDownView::*func)(int16_t thisView);
-    };
-
-    static const PullUpDownViewMapper ViewMapper[] = {
-        {DROPDOWNVIEW, &PullUpDownView::ChangeDropDownView},
-        {CONNECTEDSTATUSVIEW, &PullUpDownView::ChangeConnectedStatusView},
-    };
-
-    bool PullUpDownView::ClickFunc(int16_t interface)
-    {
-        int funcSize = sizeof(ViewMapper) / sizeof(ViewMapper[0]);
-        for (int i = 0; i < funcSize; i++)
-        {
-            if (interface == ViewMapper[i].viewId)
+            group1->RemoveAll();
+            for (int i = 0; i < 4; i++)
             {
-                bool jug = (this->*(ViewMapper[i].func))(interface);
-                if (jug == false)
+                if (showSignalStrength[i] != nullptr)
                 {
-                    return false;
+                    delete showSignalStrength[i];
+                    showSignalStrength[i] = nullptr;
                 }
-                return true;
             }
-        }
-        return false;
-    }
-
-    void PullUpDownView::ChangeView(int16_t hideView, int16_t showView)
-    {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ChangeView");
-        if (hideView > MAX_DROPDOWNVIEWID)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView:: SystemViewId Overstep ones bounds");
-            return;
-        }
-        group[hideView]->SetVisible(false);
-        ClickFunc(showView);
-        group[showView]->SetVisible(true);
-        Invalidate();
-    }
-
-    ConnectedStatusView *PullUpDownView::GetConnectedStatusView(void)
-    {
-        return connectedStatusView;
-    }
-    /* -------------------------------------------------------------------------- */
-}
-#else
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: WeekStep
- * Author:
- * Create: 2021-09-11
- */
-
-#include "PullUpDownView.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "common/screen.h"
-#include "main/include/MainPresenterSample.h"
-#include "screensetting/include/ScreenModels.h"
-#include "settings/include/SettingModel.h"
-#include "ui_resource_image.h"
-#include "dnotdisturb/include/DnotDisturbModel.h"
-#include "custom_utils.h"
-#include "custom_runtime.h"
-namespace OHOS
-{
-
-    /* ---------------------------------- 坐标位置 ---------------------------------- */
-    // 设置
-    constexpr int16_t SETTING_IMG_X = 30;
-    constexpr int16_t SETTING_IMG_Y = 186;
-
-    // 手电筒
-    constexpr int16_t LIGHTING_IMG_X = 76;
-    constexpr int16_t LIGHTING_IMG_Y = 76;
-
-    // 勿扰
-    constexpr int16_t DNOTDISTURB_IMG_X = 186;
-    constexpr int16_t DNOTDISTURB_IMG_Y = 30;
-
-    // 省电
-    constexpr int16_t SAVEPOWER_IMG_X = 296;
-    constexpr int16_t SAVEPOWER_IMG_Y = 76;
-
-    // 找手机
-    constexpr int16_t FINDPHONE_IMG_X = 342;
-    constexpr int16_t FINDPHONE_IMG_Y = 186;
-
-    // line
-    constexpr int16_t LINE_IMG_X = 193;
-    constexpr int16_t LINE_IMG_Y = 430;
-
-    // icon图片大小
-    constexpr int16_t ICON_IMG_SIZE_W = 94;
-    constexpr int16_t ICON_IMG_SIZE_H = 94;
-
-    // 电池
-    constexpr int16_t BATTERY_X = 209;
-    constexpr int16_t BATTERY_Y = 180;
-
-    // 时间
-    constexpr int16_t TIME_LABEL_X = 172;
-    constexpr int16_t TIME_LABEL_Y = 230;
-
-    // 日期
-    constexpr int16_t DATE_LABEL_X = 110;
-    constexpr int16_t DATE_LABEL_Y = 300;
-
-    // 星期
-    constexpr int16_t WEEK_LABEL_X = 295;
-    constexpr int16_t WEEK_LABEL_Y = 300;
-
-    // 手机连接状态
-    constexpr int16_t PHONECONNECTSTATUS_BUTTON_X = 123;
-    constexpr int16_t PHONECONNECTSTATUS_BUTTON_Y = 350;
-    constexpr int16_t PHONECONNECTSTATUS_BUTTON_W = 60;
-    constexpr int16_t PHONECONNECTSTATUS_BUTTON_H = 60;
-
-    // 耳机连接状态
-    constexpr int16_t EARPHONESCONNECTSTATUS_BUTTON_X = 203;
-    constexpr int16_t EARPHONESCONNECTSTATUS_BUTTON_Y = 350;
-    constexpr int16_t EARPHONESCONNECTSTATUS_BUTTON_W = 60;
-    constexpr int16_t EARPHONESCONNECTSTATUS_BUTTON_H = 60;
-
-    // 蓝牙连接状态
-    constexpr int16_t BLUETOOTHCONNECTSTATUS_BUTTON_X = 283;
-    constexpr int16_t BLUETOOTHCONNECTSTATUS_BUTTON_Y = 350;
-    constexpr int16_t BLUETOOTHCONNECTSTATUS_BUTTON_W = 60;
-    constexpr int16_t BLUETOOTHCONNECTSTATUS_BUTTON_H = 60;
-
-    static const int64_t COLOR_SIGNAL_ON = 0xffffffff;
-    static const int64_t COLOR_SIGNAL_OFF = 0xff383838;
-    static const int BATTERY_IMAGE_WIDTH = 48;
-    static const int BATTERY_IMAGE_HEIGHT = 30;
-    static const int PROGRESS_WIDTH = 30;
-    static const int PROGRESS_HEIGHT = 18;
-    /* -------------------------------------------------------------------------- */
-    std::string getWeekString(int wday)
-    {
-        std::string weekDays[] = {"星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
-        return weekDays[wday];
-    }
-    /* -------------------------------------------------------------------------- */
-    static PullUpDownView *g_pPullUpDownView = nullptr;
-    PullUpDownView::PullUpDownView()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::PullUpDownView");
-        g_pPullUpDownView = this;
-    }
-
-    PullUpDownView::~PullUpDownView()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::~PullUpDownView");
-        ClearAll();
-        g_pPullUpDownView = nullptr;
-    }
-
-    PullUpDownView *PullUpDownView::GetInstance(void)
-    {
-        return g_pPullUpDownView;
-    }
-
-    // 清除信号强度相关组件
-    void PullUpDownView::ClearAllSingalComponentsView()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ClearAllSingalComponentsView");
-        if (NoSignal != nullptr)
-        {
-            delete NoSignal;
-            NoSignal = nullptr;
-        }
-
-        for (int i = 0; i < 4; i++)
-        {
-            if (showSignalStrength[i] != nullptr)
+            if (Singal_4 != nullptr)
             {
-                delete showSignalStrength[i];
-                showSignalStrength[i] = nullptr;
+                delete Singal_4;
+                Singal_4 = nullptr;
             }
-        }
-
-        if (Singal_4 != nullptr)
-        {
-            delete Singal_4;
-            Singal_4 = nullptr;
-        }
-    }
-
-    // 清除所有与连接状态相关的视图组件
-    void PullUpDownView::ClearAllConnectedStatusComponentsView()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ClearAllConnectedStatusComponentsView");
-        if (connectedStatusBackgroundButton != nullptr)
-        {
-            delete connectedStatusBackgroundButton;
-            connectedStatusBackgroundButton = nullptr;
-        }
-
-        if (showPhoneConnectedStatus != nullptr)
-        {
-            delete showPhoneConnectedStatus;
-            showPhoneConnectedStatus = nullptr;
-        }
-
-        if (showEarPhoneConnectedStatus != nullptr)
-        {
-            delete showEarPhoneConnectedStatus;
-            showEarPhoneConnectedStatus = nullptr;
-        }
-
-        if (showBluetoothConnectedStatus != nullptr)
-        {
-            delete showBluetoothConnectedStatus;
-            showBluetoothConnectedStatus = nullptr;
-        }
-    }
-
-    void PullUpDownView::ClearAll()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ClearAll");
-        RemoveAll();
-        UnLoadPullUpDownImageRes(); // 切换slice的时候也要卸载资源放在ImageCach空间不够
-        if (group[DROPDOWNVIEW] != nullptr)
-        {
-            group[DROPDOWNVIEW]->RemoveAll();
-            group[DROPDOWNVIEW]->ClearBackgroundBlur();
-            delete group[DROPDOWNVIEW];
-            group[DROPDOWNVIEW] = nullptr;
-        }
-
-        for (int i = 0; i < MAX_INDEX; i++)
-        {
-            if (dropIconBackground[i] != nullptr)
+            if (NoSignal != nullptr)
             {
-                delete dropIconBackground[i];
-                dropIconBackground[i] = nullptr;
+                delete NoSignal;
+                NoSignal = nullptr;
             }
-        }
-
-        if (dropSetting != nullptr)
-        {
-            delete dropSetting;
-            dropSetting = nullptr;
-        }
-
-        if (dropLighting != nullptr)
-        {
-            delete dropLighting;
-            dropLighting = nullptr;
-        }
-
-        if (dropDnotDisturb != nullptr)
-        {
-            delete dropDnotDisturb;
-            dropDnotDisturb = nullptr;
-        }
-
-        if (dropLine != nullptr)
-        {
-            delete dropLine;
-            dropLine = nullptr;
-        }
-
-        if (dropSavePower != nullptr)
-        {
-            delete dropSavePower;
-            dropSavePower = nullptr;
-        }
-
-        if (drofindPhone != nullptr)
-        {
-            delete drofindPhone;
-            drofindPhone = nullptr;
-        }
-
-        if (showTimeLabel != nullptr)
-        {
-            delete showTimeLabel;
-            showTimeLabel = nullptr;
-        }
-
-        if (showDateLabel != nullptr)
-        {
-            delete showDateLabel;
-            showDateLabel = nullptr;
-        }
-
-        if (showWeekLabel != nullptr)
-        {
-            delete showWeekLabel;
-            showWeekLabel = nullptr;
-        }
-        /* -------------------------------------------------------------------------- */
-        ClearAllSingalComponentsView();
-        ClearAllConnectedStatusComponentsView();
-        /* -------------------------------------------------------------------------- */
-        if (batteryimage != nullptr)
-        {
-            delete batteryimage;
-            batteryimage = nullptr;
-        }
-
-        if (progress != nullptr)
-        {
-            delete progress;
-            progress = nullptr;
-        }
-
-        if (progresscallback_ != nullptr)
-        {
-            delete progresscallback_;
-            progresscallback_ = nullptr;
-        }
-
-        if (progressanimator_ != nullptr)
-        {
-            progressanimator_->Stop();
-            delete progressanimator_;
-            progressanimator_ = nullptr;
-        }
-
-        if (connectedStatusView != nullptr)
-        {
-            delete connectedStatusView;
-            connectedStatusView = nullptr;
-            group[CONNECTEDSTATUSVIEW] = nullptr;
-        }
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ClearAll end!!");
-    }
-
-    /// @brief 初始化icon图标背景
-    /// @param  void
-    void PullUpDownView::InitViewImgBackGround(void)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitViewImgBackGround");
-        for (int i = 0; i < MAX_INDEX; i++)
-        {
-            dropIconBackground[i] = new UIImageView();
-            if (dropIconBackground[i] == nullptr)
+            if (MobileData != nullptr)
             {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropIconBackground[%d] new fail", i);
-                return;
+                delete MobileData;
+                MobileData = nullptr;
             }
-            group[DROPDOWNVIEW]->Add(dropIconBackground[i]);
-        }
-        dropIconBackground[SETTING_INDEX]->SetPosition(SETTING_IMG_X, SETTING_IMG_Y);
-        dropIconBackground[LIGHTING_INDEX]->SetPosition(LIGHTING_IMG_X, LIGHTING_IMG_Y);
-        dropIconBackground[DNOTDISTURB_INDEX]->SetPosition(DNOTDISTURB_IMG_X, DNOTDISTURB_IMG_Y);
-        dropIconBackground[SAVEPOWER_INDEX]->SetPosition(SAVEPOWER_IMG_X, SAVEPOWER_IMG_Y);
-        dropIconBackground[FINDPHONE_INDEX]->SetPosition(FINDPHONE_IMG_X, FINDPHONE_IMG_Y);
-        // for (int i = 0; i < MAX_INDEX; i++)
-        // {
-        //     if (i == DNOTDISTURB_INDEX && DnotDisturbModel::GetInstance().GetDoNotDisturbModeEnabled() == true)
-        //     {
-        //         ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropIconBackground[i], DROPDOWN_ICONELLIPSEPURPLE);
-        //     }
-        //     else
-        //     {
-        //         ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropIconBackground[i], DROPDOWN_ICONELLIPSEBLACK);
-        //     }
-        //     group[DROPDOWNVIEW]->Add(dropIconBackground[i]);
-        // }
-    }
-
-    /// @brief 初始化icon图标
-    /// @param  void
-    void PullUpDownView::InitViewImg(void)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitViewImg");
-        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::MainPresenterSample::GetInstance();
-        InitViewImgBackGround();
-        /* ---------------------------------- 下拉设置图片 ---------------------------------- */
-        dropSetting = new UIImageView();
-        if (dropSetting == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropSetting new fail");
-            return;
-        }
-        dropSetting->SetPosition(SETTING_IMG_X, SETTING_IMG_Y, ICON_IMG_SIZE_W, ICON_IMG_SIZE_H);
-        dropSetting->SetAutoEnable(false);
-        dropSetting->SetResizeMode(UIImageView::CENTER);
-        // ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropSetting, DROPDOWN_SETTING);
-        dropSetting->SetViewId(DROPDOWN_CLICK_SETTING); // 进入设置界面
-        dropSetting->SetTouchable(true);
-        dropSetting->SetOnClickListener(clickListener);
-        /* ----------------------------------- 蓝牙 ----------------------------------- */
-        dropLighting = new UIImageView();
-        if (dropLighting == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropLighting new fail");
-            return;
-        }
-        dropLighting->SetPosition(LIGHTING_IMG_X, LIGHTING_IMG_Y, ICON_IMG_SIZE_W, ICON_IMG_SIZE_H);
-        dropLighting->SetAutoEnable(false);
-        dropLighting->SetResizeMode(UIImageView::CENTER);
-        // ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropLighting, DROPDOWN_BLUETOOTH);
-        dropLighting->SetViewId(DROPDOWN_CLICK_BLUETOOTH); // 进入亮屏界面
-        dropLighting->SetTouchable(true);
-        dropLighting->SetOnClickListener(clickListener);
-        /* ----------------------------------- 勿扰模式 ----------------------------------- */
-        dropDnotDisturb = new UIImageView();
-        if (dropDnotDisturb == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropDnotDisturb new fail");
-            return;
-        }
-        dropDnotDisturb->SetPosition(DNOTDISTURB_IMG_X, DNOTDISTURB_IMG_Y, ICON_IMG_SIZE_W, ICON_IMG_SIZE_H);
-        dropDnotDisturb->SetAutoEnable(false);
-        dropDnotDisturb->SetResizeMode(UIImageView::CENTER);
-        // ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropDnotDisturb, DROPDOWN_DNOTDISTURB);
-        dropDnotDisturb->SetViewId(DROPDOWN_CLICK_DNOTDISTURB); // 进入勿扰模式界面
-        dropDnotDisturb->SetTouchable(true);
-        dropDnotDisturb->SetOnClickListener(clickListener);
-        /* ----------------------------------- 省电 ----------------------------------- */
-        dropSavePower = new UIImageView();
-        if (dropSavePower == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropSavePower new fail");
-            return;
-        }
-        dropSavePower->SetPosition(SAVEPOWER_IMG_X, SAVEPOWER_IMG_Y, ICON_IMG_SIZE_W, ICON_IMG_SIZE_H);
-        dropSavePower->SetAutoEnable(false);
-        dropSavePower->SetResizeMode(UIImageView::CENTER);
-        // ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropSavePower, DROPDOWN_SAVEPOWER);
-        dropSavePower->SetViewId(DROPDOWN_CLICK_SAVEELE); // 进入省电界面
-
-        dropSavePower->SetTouchable(true);
-        dropSavePower->SetOnClickListener(clickListener);
-        /* ----------------------------------- 找手机 ---------------------------------- */
-        drofindPhone = new UIImageView();
-        if (drofindPhone == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "drofindPhone new fail");
-            return;
-        }
-        drofindPhone->SetPosition(FINDPHONE_IMG_X, FINDPHONE_IMG_Y, ICON_IMG_SIZE_W, ICON_IMG_SIZE_H);
-        drofindPhone->SetAutoEnable(false);
-        drofindPhone->SetResizeMode(UIImageView::CENTER);
-        // ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, drofindPhone, DROPDOWN_FINDPHONE);
-        drofindPhone->SetViewId(DROPDOWN_CLICK_FINDMYPHONE); // 找手机界面
-        drofindPhone->SetTouchable(true);
-        drofindPhone->SetOnClickListener(clickListener);
-        /* -------------------------------- dropLine -------------------------------- */
-        dropLine = new UIImageView();
-        if (dropLine == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropLine new fail");
-            return;
-        }
-        dropLine->SetPosition(LINE_IMG_X, LINE_IMG_Y, ICON_IMG_SIZE_W, ICON_IMG_SIZE_H);
-        // ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropLine, DROPDOWN_LINE);
-        /* -------------------------------- 添加组件到视图上 -------------------------------- */
-        group[DROPDOWNVIEW]->Add(dropSetting);
-        group[DROPDOWNVIEW]->Add(dropLighting);
-        group[DROPDOWNVIEW]->Add(dropDnotDisturb);
-        group[DROPDOWNVIEW]->Add(dropSavePower);
-        group[DROPDOWNVIEW]->Add(drofindPhone);
-        group[DROPDOWNVIEW]->Add(dropLine);
-    }
-
-    // 获取手机连接状态
-    bool PullUpDownView::GetPhoneConnectedStatus(void)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::GetPhoneConnectedStatus");
-        // uint8_t ret = uapi_dev_runtime_get_ble_connect_stat();
-        // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "ble phone connect stat = %d", ret);
-        // if (ret == 1)
-        //     return true;
-        // else
-        //     return false;
-
-        return SettingModel::GetInstance().GetPhoneConnectStatus();
-    }
-
-    // 获取蓝牙耳机连接状态
-    bool PullUpDownView::GetEarPhoneConnectedStatus(void)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::GetEarPhoneConnectedStatus");
-        // uint8_t ret = uapi_dev_runtime_get_earphone_connect_stat();
-        // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "earphone connect stat = %d", ret);
-        // if (ret == 1)
-        //     return true;
-        // else
-        //     return false;
-
-        return SettingModel::GetInstance().GetEarPhoneConnectStatus();
-    }
-
-    // 获取蓝牙连接状态
-    bool PullUpDownView::GetBlueToothConnectedStatus(void)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::GetBlueToothConnectedStatus");
-        // uint8_t ret = uapi_dev_runtime_get_br_connect_stat();
-        // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "br connect stat = %d [0 no connect, 1 a2dp, 2 hfp, 3 both]", ret);
-        // if (ret != 0)
-        //     return true;
-        // else
-        //     return false;
-
-        return SettingModel::GetInstance().GetBlueToothConnectStatus();
-    }
-
-    /// @brief 初始化与连接状态相关组件
-    /// @param  void
-    void PullUpDownView::InitConnectedStatusImage(void)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitConnectedStatusImage");
-        connectedStatusBackgroundButton = new UIButton();
-        if (connectedStatusBackgroundButton == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectedStatusBackgroundButton new fail");
-            return;
-        }
-        connectedStatusBackgroundButton->SetPosition(113, 348, 240, 64);
-        connectedStatusBackgroundButton->SetViewId(CONNECTEDSTATUSBACKGROUNDBUTTON);
-        connectedStatusBackgroundButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
-        connectedStatusBackgroundButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
-        connectedStatusBackgroundButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);
-        connectedStatusBackgroundButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);
-        connectedStatusBackgroundButton->SetStyleForState(STYLE_BORDER_COLOR, 0xffffffff, UIButton::PRESSED);
-        connectedStatusBackgroundButton->SetStyleForState(STYLE_BORDER_OPA, 0x00, UIButton::PRESSED);
-        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::MainPresenterSample::GetInstance();
-        connectedStatusBackgroundButton->SetOnClickListener(clickListener);
-        group[DROPDOWNVIEW]->Add(connectedStatusBackgroundButton);
-        /* -------------------------------- 显示手机连接状态 -------------------------------- */
-        showPhoneConnectedStatus = new UIImageView();
-        if (showPhoneConnectedStatus == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showPhoneConnectedStatus new fail");
-            return;
-        }
-        showPhoneConnectedStatus->SetPosition(PHONECONNECTSTATUS_BUTTON_X, PHONECONNECTSTATUS_BUTTON_Y, PHONECONNECTSTATUS_BUTTON_W, PHONECONNECTSTATUS_BUTTON_H);
-        showPhoneConnectedStatus->SetAutoEnable(false);
-        showPhoneConnectedStatus->SetResizeMode(UIImageView::CENTER);
-        showPhoneConnectedStatus->SetStyle(STYLE_BORDER_RADIUS, 30);
-        // if (GetPhoneConnectedStatus()) // 获取手机连接状态
-        // {
-        //     ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, showPhoneConnectedStatus, DROPDOWN_PHONECONNECTED);
-        // }
-        // else
-        // {
-        //     ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, showPhoneConnectedStatus, DROPDOWN_PHONEDISCONNECTED);
-        // }
-
-        /* -------------------------------- 显示耳机连接状态 -------------------------------- */
-        showEarPhoneConnectedStatus = new UIImageView();
-        if (showEarPhoneConnectedStatus == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showEarPhoneConnectedStatus new fail");
-            return;
-        }
-        showEarPhoneConnectedStatus->SetPosition(EARPHONESCONNECTSTATUS_BUTTON_X, EARPHONESCONNECTSTATUS_BUTTON_Y, EARPHONESCONNECTSTATUS_BUTTON_W, EARPHONESCONNECTSTATUS_BUTTON_H);
-        showEarPhoneConnectedStatus->SetAutoEnable(false);
-        showEarPhoneConnectedStatus->SetResizeMode(UIImageView::CENTER);
-        showEarPhoneConnectedStatus->SetStyle(STYLE_BORDER_RADIUS, 30);
-        // if (GetEarPhoneConnectedStatus()) // 获取耳机连接状态
-        // {
-        //     ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, showEarPhoneConnectedStatus, DROPDOWN_EARPHONESCONNECTED);
-        // }
-        // else
-        // {
-        //     ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, showEarPhoneConnectedStatus, DROPDOWN_EARPHONESDISCONNECTED);
-        // }
-
-        /* -------------------------------- 显示蓝牙连接状态 -------------------------------- */
-        showBluetoothConnectedStatus = new UIImageView();
-        if (showBluetoothConnectedStatus == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showBluetoothConnectedStatus new fail");
-            return;
-        }
-        showBluetoothConnectedStatus->SetPosition(BLUETOOTHCONNECTSTATUS_BUTTON_X, BLUETOOTHCONNECTSTATUS_BUTTON_Y, BLUETOOTHCONNECTSTATUS_BUTTON_W, BLUETOOTHCONNECTSTATUS_BUTTON_H);
-        showBluetoothConnectedStatus->SetAutoEnable(false);
-        showBluetoothConnectedStatus->SetResizeMode(UIImageView::CENTER);
-        showBluetoothConnectedStatus->SetStyle(STYLE_BORDER_RADIUS, 30);
-        // if (GetBlueToothConnectedStatus()) // 获取蓝牙连接状态
-        // {
-        //     ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, showBluetoothConnectedStatus, DROPDOWN_BLUETOOTHCONNECTED);
-        // }
-        // else
-        // {
-        //     ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, showBluetoothConnectedStatus, DROPDOWN_BLUETOOTHDISCONNECTED);
-        // }
-        /* -------------------------------------------------------------------------- */
-        group[DROPDOWNVIEW]->Add(showPhoneConnectedStatus);
-        group[DROPDOWNVIEW]->Add(showEarPhoneConnectedStatus);
-        group[DROPDOWNVIEW]->Add(showBluetoothConnectedStatus);
-    }
-
-    /***
-     * @brief 初始化时间,日期,星期,电池,信号强度
-     */
-    bool PullUpDownView::InitBaseData()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitBaseData");
-        if (!InitSingalComponentsView())
-        {
-            return false;
-        }
-
-        /* ---------------------------------- 时间显示 ---------------------------------- */
-        showTimeLabel = new UILabel();
-        if (showTimeLabel == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showTimeLabel new fail");
-            return false;
-        }
-        showTimeLabel->SetPosition(TIME_LABEL_X, TIME_LABEL_Y);
-        showTimeLabel->SetStyle(STYLE_TEXT_FONT, 50);
-        showTimeLabel->SetStyle(STYLE_LINE_HEIGHT, 59);
-        showTimeLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
-        showTimeLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-        showTimeLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 50);
-        /* ---------------------------------- 日期显示 ---------------------------------- */
-        showDateLabel = new UILabel();
-        if (showDateLabel == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showDateLabel new fail");
-            return false;
-        }
-        showDateLabel->SetPosition(DATE_LABEL_X, DATE_LABEL_Y);
-        showDateLabel->SetStyle(STYLE_TEXT_FONT, 30);
-        showDateLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
-        showDateLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
-        showDateLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-        showDateLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
-        /* ---------------------------------- 星期显示 ---------------------------------- */
-        showWeekLabel = new UILabel();
-        if (showWeekLabel == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showWeekLabel new fail");
-            return false;
-        }
-        showWeekLabel->SetPosition(WEEK_LABEL_X, WEEK_LABEL_Y);
-        showWeekLabel->SetStyle(STYLE_TEXT_FONT, 30);
-        showWeekLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
-        showWeekLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
-        showWeekLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-        showWeekLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28);
-        /* ----------------------------------- 电池 ----------------------------------- */
-        batteryimage = new UIImageView();
-        if (batteryimage == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "batteryimage new fail");
-            return false;
-        }
-        batteryimage->SetPosition(258, 180, BATTERY_IMAGE_WIDTH, BATTERY_IMAGE_HEIGHT);
-        std::string batteryimagesPath = "/user/res/Battery/Battery-E.bin";
-        batteryimage->SetSrc(batteryimagesPath.c_str());
-        /* -------------------------------------------------------------------------- */
-        progress = new UIBoxProgress();
-        if (progress == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "progress new fail");
-            return false;
-        }
-        progress->SetPosition(206, 180, PROGRESS_WIDTH, PROGRESS_HEIGHT);
-        progress->SetValidHeight(PROGRESS_HEIGHT);
-        progress->SetValidWidth(PROGRESS_WIDTH);
-
-        // progress->SetValue(value);
-        const char *progressImageSrc = "/user/res/Battery/Battery_Normal.bin";
-        progress->SetImage(progressImageSrc, nullptr);
-        progress->SetBackgroundStyle(STYLE_BACKGROUND_OPA, 0x00);
-        progress->SetBackgroundStyle(STYLE_TEXT_COLOR, 0xff000000);
-        progress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
-        progress->SetForegroundStyle(STYLE_TEXT_COLOR, 0xff000000);
-        progress->SetForegroundStyle(STYLE_LINE_COLOR, 0xff45A5FF);
-
-        group[DROPDOWNVIEW]->Add(progress);
-        group[DROPDOWNVIEW]->Add(batteryimage);
-        group[DROPDOWNVIEW]->Add(showTimeLabel);
-        group[DROPDOWNVIEW]->Add(showDateLabel);
-        group[DROPDOWNVIEW]->Add(showWeekLabel);
-
-        /* -------------------------------------------------------------------------- */
-        UpdateSignalStrengthStatusAndBatteryPosition();
-        /* -------------------------------------------------------------------------- */
-
-        return true;
-    }
-
-    // 初始化信号强度相关组件
-    bool PullUpDownView::InitSingalComponentsView()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitSingalComponentsView");
-        /* -------------------------------------------------------------------------- */
-        NoSignal = new UIImageView();
-        if (NoSignal == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "NoSignal new fail");
-            return false;
-        }
-        NoSignal->SetPosition(160, 176, 36, 38);
-        NoSignal->SetAutoEnable(false);
-        NoSignal->SetResizeMode(UIImageView::CENTER);
-        // ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, NoSignal, DROPDOWN_NOSIGNAL);
-        NoSignal->SetVisible(false);
-        group[DROPDOWNVIEW]->Add(NoSignal);
-        /* -------------------------------------------------------------------------- */
-        // 定义一个结构体,用于存储 ImageView 的信息
-        struct ImageViewInfo
-        {
-            int posX;
-            int posY;
-            int width;
-            int height;
-        };
-        // 待添加的 ImageView 信息列表
-        std::vector<ImageViewInfo> imageViewList = {
-            {160, 204, 6, 6},
-            {170, 196, 6, 14},
-            {180, 188, 6, 22},
-            {190, 180, 6, 30},
-        };
-
-        // 循环添加 ImageView 到相应的容器中
-        for (int i = 0; i < 4; i++)
-        {
-            if (showSignalStrength[i] == nullptr)
-            {
-                showSignalStrength[i] = new UIImageView();
-                if (showSignalStrength[i] == nullptr)
-                {
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showSignalStrength[%d] new fail", i);
-                    return false;
-                }
+            if (HD != nullptr)
+            {
+                delete HD;
+                HD = nullptr;
             }
-            showSignalStrength[i]->SetPosition(imageViewList[i].posX, imageViewList[i].posY, imageViewList[i].width, imageViewList[i].height);
-            showSignalStrength[i]->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
-            showSignalStrength[i]->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
-            showSignalStrength[i]->SetStyle(STYLE_BORDER_RADIUS, 10);
-            group[DROPDOWNVIEW]->Add(showSignalStrength[i]);
-            showSignalStrength[i]->SetVisible(false);
+            if (batteryimage != nullptr)
+            {
+                delete batteryimage;
+                batteryimage = nullptr;
+            }
+            if (progress != nullptr)
+            {
+                delete progress;
+                progress = nullptr;
+            }
+            delete group1;
+            group1 = nullptr;
         }
-        /* -------------------------------------------------------------------------- */
-        if (Singal_4 == nullptr)
+        if (showDateAndWeekLabel != nullptr)
         {
-            Singal_4 = new UILabel();
+            delete showDateAndWeekLabel;
+            showDateAndWeekLabel = nullptr;
         }
-        Singal_4->SetPosition(201, 176, 40, 47);
-        Singal_4->SetStyle(STYLE_TEXT_FONT, 34);
-        Singal_4->SetStyle(STYLE_LINE_HEIGHT, 40);
-        Singal_4->SetText("4G");
-        Singal_4->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
-        Singal_4->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-        Singal_4->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 34);
-        Singal_4->SetVisible(false);
-        group[DROPDOWNVIEW]->Add(Singal_4);
-
-        return true;
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ClearAll_2 over!!");
     }
 
     // 获取信号强度
@@ -1864,7 +547,6 @@ namespace OHOS
         return (signalStrength / 8) + 1;
     }
 
-#if 0
     // 函数用于更新信号显示的UI
     void PullUpDownView::updateSignalDisplay()
     {
@@ -1889,87 +571,62 @@ namespace OHOS
             UpdateCat1NoSignalisplay(true);
             UpdateCat14GDisplay(false);
             UpdateSignalBarDisplay(CalculateSignalBars(signal), false);
+            UpdateCat1MobileDataDisplay(false);
         }
         else if (cat1_powerOn == 1 && sim == 1)
         {
-            if (signal == SIGNAL_NO_SIGNAL)
+            if (signal == SIGNAL_NO_SIGNAL) // 计算信号强度
             {
                 // 无信号UI显示
-                UpdateCat1NoSignalisplay(true);
-                UpdateCat14GDisplay(false);
+                // UpdateCat1NoSignalisplay(true);
+                // UpdateCat14GDisplay(false);
                 UpdateSignalBarDisplay(CalculateSignalBars(signal), false);
             }
             else
             {
                 // 信号强度显示
                 UpdateCat1NoSignalisplay(false);
-                UpdateCat14GDisplay(true);
+                // UpdateCat14GDisplay(true);
                 UpdateSignalBarDisplay(CalculateSignalBars(signal), true);
             }
+
             if (network_on == 0)
             {
                 // 无信号,无4G图标 显示
-                UpdateCat1NoSignalisplay(true);
+                // UpdateCat1NoSignalisplay(true);
                 UpdateCat14GDisplay(false);
-                UpdateSignalBarDisplay(CalculateSignalBars(signal), false);
+                UpdateCat1MobileDataDisplay(false);
+                // UpdateSignalBarDisplay(CalculateSignalBars(signal), false);
             }
             else
             {
                 if (cat1_network_type == NETWORK_TYPE_NO_NETWORK)
                 {
                     // 无信号,无4G图标 显示
-                    UpdateCat1NoSignalisplay(true);
+                    // UpdateCat1NoSignalisplay(true);
                     UpdateCat14GDisplay(false);
-                    UpdateSignalBarDisplay(CalculateSignalBars(signal), false);
+                    UpdateCat1MobileDataDisplay(false);
+                    // UpdateSignalBarDisplay(CalculateSignalBars(signal), false);
                 }
                 else if (cat1_network_type == NETWORK_TYPE_4G)
                 {
                     // 有4G图标,正常显示信号
-                    UpdateCat1NoSignalisplay(false);
+                    // UpdateCat1NoSignalisplay(false);
                     UpdateCat14GDisplay(true);
-                    UpdateSignalBarDisplay(CalculateSignalBars(signal), true);
+                    UpdateCat1MobileDataDisplay(true);
+                    // UpdateSignalBarDisplay(CalculateSignalBars(signal), true);
                 }
                 else
                 {
                     // 无4G图标,正常显示信号
-                    UpdateCat1NoSignalisplay(false);
+                    // UpdateCat1NoSignalisplay(false);
                     UpdateCat14GDisplay(false);
-                    UpdateSignalBarDisplay(CalculateSignalBars(signal), true);
+                    UpdateCat1MobileDataDisplay(true);
+                    // UpdateSignalBarDisplay(CalculateSignalBars(signal), true);
                 }
             }
         }
     }
-#else
-    // 函数用于更新信号显示的UI
-    void PullUpDownView::updateSignalDisplay()
-    {
-        int sim = uapi_dev_runtime_get_cat1_simstat();
-        int cat1_powerOn = uapi_dev_runtime_get_cat1_powerstat();
-        int signal = uapi_dev_runtime_get_cat1_signal();
-        int network_on = uapi_dev_runtime_get_cat1_networkstat();
-        int cat1_network_type = uapi_dev_runtime_get_cat1_networtype();
-
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sim = %d", sim);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cat1_powerOn = %d", cat1_powerOn);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "signal = %d", signal);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "network_on = %d", network_on);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cat1_network_type = %d", cat1_network_type);
-
-        const int SIGNAL_NO_SIGNAL = 99;
-        const int NETWORK_TYPE_NO_NETWORK = 0;
-        const int NETWORK_TYPE_4G = 4;
-
-        bool showNoSignalUI = (sim == 0 || cat1_powerOn == 0 || signal == SIGNAL_NO_SIGNAL);
-        bool showNoNetworkUI = (network_on == 0 || cat1_network_type == NETWORK_TYPE_NO_NETWORK);
-
-        bool show4GIcon = (cat1_network_type == NETWORK_TYPE_4G);
-
-        UpdateCat1NoSignalisplay(showNoSignalUI);
-        UpdateCat14GDisplay(show4GIcon);
-        UpdateSignalBarDisplay(CalculateSignalBars(signal), !(showNoSignalUI || showNoNetworkUI));
-    }
-#endif
-
     // 更新信号强度显示
     void PullUpDownView::UpdateSignalBarDisplay(int signalBars, bool state)
     {
@@ -2000,267 +657,335 @@ namespace OHOS
         }
     }
 
-    // æ\9b´æ\96°ç\94µæ± ä½\8dç½®
-    void PullUpDownView::UpdateBatteryPosition(int signalBars)
+    // æ\9c\89HDä¸\80å®\9aæ\9c\894G
+    void PullUpDownView::UpdateHDDisplay(bool state)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateBatteryPosition");
-        if (signalBars == 99)
-        {
-            batteryimage->SetPosition(209, 180, BATTERY_IMAGE_WIDTH, BATTERY_IMAGE_HEIGHT);
-            progress->SetPosition(215, 186, PROGRESS_WIDTH, PROGRESS_HEIGHT);
-        }
-        else
+        if (HD != nullptr)
         {
-            batteryimage->SetPosition(258, 180, BATTERY_IMAGE_WIDTH, BATTERY_IMAGE_HEIGHT);
-            progress->SetPosition(264, 186, PROGRESS_WIDTH, PROGRESS_HEIGHT);
+            HD->SetVisible(state);
         }
-        batteryimage->Invalidate();
-        progress->Invalidate();
-    }
-
-    // 更新信号强度和电池位置
-    void PullUpDownView::UpdateSignalStrengthStatusAndBatteryPosition()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateSignalStrengthStatusAndBatteryPosition");
-        updateSignalDisplay();
-        UpdateBatteryPosition(GetSignalStrength());
     }
 
-    bool PullUpDownView::PullUpDownViewInit()
+    /*更新移动数据图标显示*/
+    void PullUpDownView::UpdateCat1MobileDataDisplay(bool state)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitView");
-
-        group[DROPDOWNVIEW] = new UIViewGroup();
-        if (group[DROPDOWNVIEW] == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group[DROPDOWNVIEW] new fail!!");
-            return false;
-        }
-        group[DROPDOWNVIEW]->SetPosition(0, 0, 466, 466);
-        group[DROPDOWNVIEW]->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
-        group[DROPDOWNVIEW]->SetViewIndex(0);
-        group[DROPDOWNVIEW]->SetFullScreenBlur(true);
-        InitViewImg();
-        InitConnectedStatusImage();
-
-        if (InitBaseData())
-        {
-            MainPresenterSample::GetInstance()->UpdataBaseData();
-        }
-        else
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateCat1MobileDataDisplay %d", state);
+        if (MobileData != nullptr)
         {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitBaseData Error!");
-            return false;
+            MobileData->SetVisible(state);
         }
-        SetTouchable(true);
-        SetIntercept(true);
-        Add(group[DROPDOWNVIEW]);
-        return true;
     }
 
-    /*预加载下拉视图的图片资源*/
-    void PullUpDownView::PreLoadPullUpDownImageRes(void)
+    void PullUpDownView::UpdateXPosition(void)
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::PreLoadPullUpDownImageRes");
-        if (!resLoadStatus)
+        // 判断相关组件是否有效
+        if (MobileData && HD && Singal_4 && NoSignal && batteryimage && progress)
         {
-            /* -------------------------------------------------------------------------- */
-            for (int i = 0; i < MAX_INDEX; i++)
+            // 获取各个组件的可见状态
+            bool mobileDataVisible = MobileData->IsVisible(); // 移动数据
+            bool hdVisible = HD->IsVisible();                 // HD [VoLTE开关]
+            bool signal4Visible = Singal_4->IsVisible();      // 4G
+            bool noSignalVisible = NoSignal->IsVisible();     // 无信号
+
+            int x;
+            int signalWidth = NoSignal->GetWidth();
+            int batteryWidth = batteryimage->GetWidth();
+            int spacing = 10;
+
+            if (noSignalVisible) // 无信号时的处理
+            {
+                x = (group1->GetWidth() - (signalWidth + batteryWidth + spacing)) / 2;
+                NoSignal->SetX(x);
+                batteryimage->SetX(x + signalWidth + spacing);
+                progress->SetX(batteryimage->GetX() + 7);
+            }
+            else // 有信号时的处理
             {
-                if (i == DNOTDISTURB_INDEX && DnotDisturbModel::GetInstance().GetDoNotDisturbModeEnabled() == true)
+                if (!signal4Visible) // 无 4G
                 {
-                    ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropIconBackground[i], DROPDOWN_ICONELLIPSEPURPLE);
+                    x = (group1->GetWidth() - (signalWidth + batteryWidth + spacing)) / 2;
+                    for (int i = 0; i < 4; i++)
+                    {
+                        if (showSignalStrength[i] != nullptr)
+                        {
+                            showSignalStrength[i]->SetX(x + 10);
+                        }
+                    }
+                    batteryimage->SetX(showSignalStrength[3]->GetX() + signalWidth + spacing);
+                    progress->SetX(batteryimage->GetX() + 7);
                 }
-                else
+                else // 有 4G
                 {
-                    ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropIconBackground[i], DROPDOWN_ICONELLIPSEBLACK);
+                    int additionalWidth = hdVisible ? HD->GetWidth() : 0;
+                    x = (group1->GetWidth() - (signalWidth + Singal_4->GetWidth() + additionalWidth + batteryWidth + spacing * (2 + hdVisible))) / 2;
+                    for (int i = 0; i < 4; i++)
+                    {
+                        if (showSignalStrength[i] != nullptr)
+                        {
+                            showSignalStrength[i]->SetX(x + 10);
+                        }
+                    }
+                    Singal_4->SetX(showSignalStrength[3]->GetX() + signalWidth + spacing);
+                    if (hdVisible) // 无 HD
+                    {
+                        HD->SetX(Singal_4->GetX() + Singal_4->GetWidth() + spacing);
+                        batteryimage->SetX(HD->GetX() + HD->GetWidth() + spacing);
+                        progress->SetX(batteryimage->GetX() + 7);
+                    }
+                    else // 有 HD
+                    {
+                        batteryimage->SetX(Singal_4->GetX() + Singal_4->GetWidth() + spacing);
+                        progress->SetX(batteryimage->GetX() + 7);
+                    }
+
+                    if (mobileDataVisible) // 如果有移动数据图标,设置其位置
+                    {
+                        MobileData->SetX(showSignalStrength[0]->GetX());
+                    }
                 }
             }
-            /* -------------------------------------------------------------------------- */
-            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropSetting, DROPDOWN_SETTING);
-            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropLighting, DROPDOWN_BLUETOOTH);
-            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropDnotDisturb, DROPDOWN_DNOTDISTURB);
-            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropSavePower, DROPDOWN_SAVEPOWER);
-            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, drofindPhone, DROPDOWN_FINDPHONE);
-            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropLine, DROPDOWN_LINE);
-            /* -------------------------------------------------------------------------- */
-            bool phoneStatus = GetPhoneConnectedStatus();         // 获取手机连接状态
-            bool EarPhoneStatus = GetEarPhoneConnectedStatus();   // 获取耳机连接状态
-            bool blueToothStatus = GetBlueToothConnectedStatus(); // 获取蓝牙连接状态
-            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, showPhoneConnectedStatus, phoneStatus ? DROPDOWN_PHONECONNECTED : DROPDOWN_PHONEDISCONNECTED);
-            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, showEarPhoneConnectedStatus, EarPhoneStatus ? DROPDOWN_EARPHONESCONNECTED : DROPDOWN_EARPHONESDISCONNECTED);
-            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, showBluetoothConnectedStatus, blueToothStatus ? DROPDOWN_BLUETOOTHCONNECTED : DROPDOWN_BLUETOOTHDISCONNECTED);
-
-            /* -------------------------------------------------------------------------- */
-            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, NoSignal, DROPDOWN_NOSIGNAL);
-            /* -------------------------------------------------------------------------- */
-            resLoadStatus = true;
+            // 使相关组件无效化以触发重绘
+            MobileData->Invalidate();
+            HD->Invalidate();
+            Singal_4->Invalidate();
+            NoSignal->Invalidate();
+            batteryimage->Invalidate();
+            progress->Invalidate();
         }
     }
 
-    /*卸载下拉视图的图片资源*/
-    void PullUpDownView::UnLoadPullUpDownImageRes(void)
+    // 更新信号强度和电池位置
+    void PullUpDownView::UpdateSignalStrengthStatusAndBatteryPosition()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateSignalStrengthStatusAndBatteryPosition");
+        updateSignalDisplay(); // 函数用于更新信号显示的UI
+        UpdateXPosition();
+
+        /*更新蓝牙连接状态*/
+        int a2dp = uapi_a2dp_snk_get_device_connect_state();
+        int hfp = uapi_hfp_connect_state();
+        bool bluetoothstatus = (a2dp == 0 && hfp == 0) ? false : true;
+        UpdateBlueToothStatus(bluetoothstatus);
+    }
+
+    UILabel *PullUpDownView::GetDateAndWeekLabel(void)
+    {
+        return showDateAndWeekLabel;
+    }
+    /* -------------------------------------------------------------------------- */
+    AppGroupView *PullUpDownView::DropDownCardPage1Init(void)
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UnLoadPullUpDownImageRes");
-        if (resLoadStatus)
+        if (dropDownCardPage1 == nullptr)
         {
-            ImageInfo *img = nullptr;
-            for (int i = 0; i < MAX_INDEX; i++)
+            dropDownCardPage1 = new DropDownCardPage1();
+            if (dropDownCardPage1 == nullptr)
             {
-                dropIconBackground[i]->SetSrc(img);
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropDownCardPage1 new fail!!");
+                return nullptr;
             }
-            /* -------------------------------------------------------------------------- */
-            dropSetting->SetSrc(img);
-            dropLighting->SetSrc(img);
-            dropDnotDisturb->SetSrc(img);
-            dropSavePower->SetSrc(img);
-            drofindPhone->SetSrc(img);
-            dropLine->SetSrc(img);
-            /* -------------------------------------------------------------------------- */
-            showPhoneConnectedStatus->SetSrc(img);
-            showEarPhoneConnectedStatus->SetSrc(img);
-            showBluetoothConnectedStatus->SetSrc(img);
-            /* -------------------------------------------------------------------------- */
-            NoSignal->SetSrc(img);
-            /* -------------------------------------------------------------------------- */
-            bool isDoNotDisturbOpen = DnotDisturbModel::GetInstance().GetDoNotDisturbModeEnabled(); // 勿扰是否开启
-            ImageCacheManager::GetInstance().UnloadOneInMultiRes(isDoNotDisturbOpen ? DROPDOWN_ICONELLIPSEPURPLE : DROPDOWN_ICONELLIPSEBLACK, DROPDOWN_IAMGES);
-            /* -------------------------------------------------------------------------- */
-            ImageCacheManager::GetInstance().UnloadOneInMultiRes(DROPDOWN_SETTING, DROPDOWN_IAMGES);
-            ImageCacheManager::GetInstance().UnloadOneInMultiRes(DROPDOWN_BLUETOOTH, DROPDOWN_IAMGES);
-            ImageCacheManager::GetInstance().UnloadOneInMultiRes(DROPDOWN_DNOTDISTURB, DROPDOWN_IAMGES);
-            ImageCacheManager::GetInstance().UnloadOneInMultiRes(DROPDOWN_SAVEPOWER, DROPDOWN_IAMGES);
-            ImageCacheManager::GetInstance().UnloadOneInMultiRes(DROPDOWN_FINDPHONE, DROPDOWN_IAMGES);
-            ImageCacheManager::GetInstance().UnloadOneInMultiRes(DROPDOWN_LINE, DROPDOWN_IAMGES);
-            /* -------------------------------------------------------------------------- */
-            bool phoneStatus = GetPhoneConnectedStatus();         // 获取手机连接状态
-            bool EarPhoneStatus = GetEarPhoneConnectedStatus();   // 获取耳机连接状态
-            bool blueToothStatus = GetBlueToothConnectedStatus(); // 获取蓝牙连接状态
-            ImageCacheManager::GetInstance().UnloadOneInMultiRes(phoneStatus ? DROPDOWN_PHONECONNECTED : DROPDOWN_PHONEDISCONNECTED, DROPDOWN_IAMGES);
-            ImageCacheManager::GetInstance().UnloadOneInMultiRes(EarPhoneStatus ? DROPDOWN_EARPHONESCONNECTED : DROPDOWN_EARPHONESDISCONNECTED, DROPDOWN_IAMGES);
-            ImageCacheManager::GetInstance().UnloadOneInMultiRes(blueToothStatus ? DROPDOWN_BLUETOOTHCONNECTED : DROPDOWN_BLUETOOTHDISCONNECTED, DROPDOWN_IAMGES);
-            /* -------------------------------------------------------------------------- */
-            ImageCacheManager::GetInstance().UnloadOneInMultiRes(DROPDOWN_NOSIGNAL, DROPDOWN_IAMGES);
-            /* -------------------------------------------------------------------------- */
-            resLoadStatus = false;
         }
+        return dropDownCardPage1;
     }
-
-    void PullUpDownView::PreLoad(void)
+    AppGroupView *PullUpDownView::DropDownCardPage2Init(void)
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::PreLoad");
-        if (!viewiInitStatus)
+        if (dropDownCardPage2 == nullptr)
         {
-            PullUpDownViewInit();
-            viewiInitStatus = true;
+            dropDownCardPage2 = new DropDownCardPage2();
+            if (dropDownCardPage2 == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropDownCardPage2 new fail!!");
+                return nullptr;
+            }
         }
-
-        PreLoadPullUpDownImageRes();
+        return dropDownCardPage2;
     }
-
-    void PullUpDownView::UnLoad(void)
+    struct DropDownSwipViewMapper
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UnLoad");
-        UnLoadPullUpDownImageRes();
-    }
-
-    // 更新手机连接状态
-    void PullUpDownView::UpdatePhoneStatus(int status)
+        const int16_t viewId;
+        AppGroupView *(PullUpDownView::*func)(void);
+    };
+    static const DropDownSwipViewMapper g_pageMapper[] = {
+        {0, &PullUpDownView::DropDownCardPage1Init},
+        {1, &PullUpDownView::DropDownCardPage2Init},
+    };
+    AppGroupView *PullUpDownView::CreatePage(int32_t PageId)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdatePhoneStatus");
-        if (showPhoneConnectedStatus == nullptr)
+        uint16_t i;
+        AppGroupView *view = nullptr;
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CreatePage %d", PageId);
+
+        for (i = 0; i < sizeof(g_pageMapper) / sizeof(g_pageMapper[0]); i++)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showPhoneConnectedStatus nullptr");
-            return;
+            if (g_pageMapper[i].viewId == PageId)
+            {
+                view = (this->*(g_pageMapper[i].func))();
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CreatePage view:%p", view);
+                return view;
+            }
         }
-        ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, showPhoneConnectedStatus, (status ? DROPDOWN_PHONECONNECTED : DROPDOWN_PHONEDISCONNECTED));
-        showPhoneConnectedStatus->Invalidate();
-
-        if (GetConnectedStatusView() != nullptr)
-            GetConnectedStatusView()->UpdatePhoneConnectedStatus(status);
-
-        return;
+        return nullptr; // 如果没有找到匹配的视图ID,返回 nullptr
     }
+    void PullUpDownView::ClearAll_3(void)
+    {
+        if (dropDownswipeViewList != nullptr)
+        {
+            dropDownswipeViewList->RemoveAll();
 
-    // 更新蓝牙耳机连接状态
-    void PullUpDownView::UpdateEarPhoneStatus(int status)
+            delete dropDownswipeViewList;
+            dropDownswipeViewList = nullptr;
+        }
+        if (dropDownCardPage1 != nullptr)
+        {
+            delete dropDownCardPage1;
+            dropDownCardPage1 = nullptr;
+        }
+        if (dropDownCardPage2 != nullptr)
+        {
+            delete dropDownCardPage2;
+            dropDownCardPage2 = nullptr;
+        }
+        for (int i = 0; i < sizeof(g_pageMapper) / sizeof(g_pageMapper[0]); i++)
+        {
+            recordCard[i] = nullptr;
+        }
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ClearAll_3 over!!");
+    }
+    // 创建与滑动列表相关组件
+    void PullUpDownView::CreateDropDownswipeViewListView(void)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateEarPhoneStatus");
-        if (showEarPhoneConnectedStatus == nullptr)
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::CreateDropDownswipeViewListView start!!");
+        dropDownswipeViewList = new UISwipeView(UISwipeView::HORIZONTAL); // 水平方向
+        if (nullptr == dropDownswipeViewList)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showEarPhoneConnectedStatus nullptr");
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropDownswipeViewList new fail!!");
             return;
         }
-        ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, showEarPhoneConnectedStatus, (status ? DROPDOWN_EARPHONESCONNECTED : DROPDOWN_EARPHONESDISCONNECTED));
-        showPhoneConnectedStatus->Invalidate();
-
-        if (GetConnectedStatusView() != nullptr)
-            GetConnectedStatusView()->UpdateEarPhoneConnectedStatus(status);
-
-        return;
+        dropDownswipeViewList->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
+        dropDownswipeViewList->SetPosition(18, 180, 430, 210); // 0 : X; 0 : Y
+        dropDownswipeViewList->SetAnimatorTime(200);           // 200:animator drag time(ms)
+        dropDownswipeViewList->SetDraggable(true);
+        dropDownswipeViewList->SetTouchable(true);
+        for (uint16_t i = 0; i < 2; i++)
+        {
+            recordCard[i] = CreatePage(i);
+            if (nullptr == recordCard[i])
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recordCard[%d] is nullptr!!", i);
+                return;
+            }
+            recordCard[i]->InitView(this);
+            dropDownswipeViewList->Add(recordCard[i]);
+        }
+        dropDownswipeViewList->SetOnSwipeListener(this);
+        group[DROPDOWNVIEW]->Add(dropDownswipeViewList);
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::CreateDropDownswipeViewListView over!!");
     }
-
-    // 更新蓝牙连接状态
-    void PullUpDownView::UpdateBlueToothStatus(int status)
+    /* ------------------------------------ 4 ----------------------------------- */
+    void PullUpDownView::UpdateSwipviewSelect(bool value)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateBlueToothStatus");
-        if (showBluetoothConnectedStatus == nullptr)
+        if (swipviewSelect)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showBluetoothConnectedStatus nullptr");
-            return;
+            swipviewSelect->SetSrc(value ? DROPDOWN_SELECT_1_IMAGE : DROPDOWN_SELECT_2_IMAGE);
+            swipviewSelect->Invalidate();
         }
-        ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, showBluetoothConnectedStatus, (status ? DROPDOWN_BLUETOOTHCONNECTED : DROPDOWN_BLUETOOTHDISCONNECTED));
-        showPhoneConnectedStatus->Invalidate();
-
-        if (GetConnectedStatusView() != nullptr)
-            GetConnectedStatusView()->UpdateBlueToothConnectedStatus(status);
-
-        return;
     }
 
-    /*更新勿扰模式状态*/
-    void PullUpDownView::UpdateDnotDisturbStatus(int status)
+    void PullUpDownView::CreateView4()
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateDnotDisturbStatus");
-        for (int i = 0; i < MAX_INDEX; i++)
+        /* ----------------------------- swipviewSelect ----------------------------- */
+        if (swipviewSelect == nullptr)
         {
-            if (dropIconBackground[i] == nullptr)
+            swipviewSelect = new UIImageView();
+            if (swipviewSelect == nullptr)
             {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropIconBackground[%d] is nullptr", i);
+                return;
             }
         }
-
-        if (dropIconBackground[DNOTDISTURB_INDEX] != nullptr)
+        swipviewSelect->SetPosition(217, 410, 33, 12);
+        swipviewSelect->SetSrc(DROPDOWN_SELECT_1_IMAGE);
+        group[DROPDOWNVIEW]->Add(swipviewSelect);
+        /* ---------------------------------- line ---------------------------------- */
+        if (line == nullptr)
         {
-            if (status)
+            line = new UIImageView();
+            if (line == nullptr)
             {
-                ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropIconBackground[DNOTDISTURB_INDEX], DROPDOWN_ICONELLIPSEPURPLE);
-            }
-            else
-            {
-                ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropIconBackground[DNOTDISTURB_INDEX], DROPDOWN_ICONELLIPSEBLACK);
+                return;
             }
-            dropIconBackground[DNOTDISTURB_INDEX]->Invalidate();
         }
-        else
+        line->SetPosition(193, 440, 80, 8);
+        line->SetSrc(DROPDOWN_LINE_IMAGE);
+        group[DROPDOWNVIEW]->Add(line);
+    }
+
+    void PullUpDownView::ClearAll_4(void)
+    {
+        if (swipviewSelect != nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropIconBackground[DNOTDISTURB_INDEX] is nullptr");
-            return;
+            delete swipviewSelect;
+            swipviewSelect = nullptr;
+        }
+        if (line != nullptr)
+        {
+            delete line;
+            line = nullptr;
+        }
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ClearAll_4 over!!");
+    }
+
+    /* -------------------------------------------------------------------------- */
+    // 下拉视图初始化
+    bool PullUpDownView::PullUpDownViewInit()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitView");
+
+        group[DROPDOWNVIEW] = new UIViewGroup();
+        if (group[DROPDOWNVIEW] == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group[DROPDOWNVIEW] new fail!!");
+            return false;
         }
+        group[DROPDOWNVIEW]->SetPosition(0, 0, 466, 466);
+        group[DROPDOWNVIEW]->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+        group[DROPDOWNVIEW]->SetViewIndex(0);
+        group[DROPDOWNVIEW]->SetFullScreenBlur(false); /*设置高斯模式*/
+        /* ----------------------------------- 1 ----------------------------------- */
+        CreateDropDownConnectionStatusImageViwe();
+        /* ------------------------------------ 2 ----------------------------------- */
+        InitBaseData();
+        /* ------------------------------------ 3 ----------------------------------- */
+        CreateDropDownswipeViewListView();
+        /* ------------------------------------ 4 ----------------------------------- */
+        CreateView4();
+        /* -------------------------------------------------------------------------- */
+
+        SetTouchable(true);
+        SetIntercept(true);
+        Add(group[DROPDOWNVIEW]);
+        return true;
     }
 
-    UILabel *PullUpDownView::GetTimeLabel()
+    void PullUpDownView::PreLoad(void)
     {
-        return showTimeLabel;
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::PreLoad");
+        if (!viewiInitStatus)
+        {
+            PullUpDownViewInit();
+            viewiInitStatus = true;
+        }
     }
-    UILabel *PullUpDownView::GetDateLabel()
+
+    void PullUpDownView::UnLoad(void)
     {
-        return showDateLabel;
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UnLoad");
     }
-    UILabel *PullUpDownView::GetWeekLabel()
+
+    /*更新勿扰模式状态*/
+    void PullUpDownView::UpdateDnotDisturbStatus(int status)
     {
-        return showWeekLabel;
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateDnotDisturbStatus");
     }
+
     UIBoxProgress *PullUpDownView::GetProgress()
     {
         return progress;
@@ -2338,10 +1063,10 @@ namespace OHOS
         Invalidate();
     }
 
+    /*获取连接状态视图*/
     ConnectedStatusView *PullUpDownView::GetConnectedStatusView(void)
     {
         return connectedStatusView;
     }
     /* -------------------------------------------------------------------------- */
 }
-#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dropdown/DropDownCardPage1.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dropdown/DropDownCardPage1.cpp
new file mode 100644 (file)
index 0000000..cb118b0
--- /dev/null
@@ -0,0 +1,220 @@
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-08-21 11:54:00
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-08-22 18:54:22
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/src/dropdown/DropDownCardPage1.cpp
+ */
+#include "main/include/dropdown/DropDownCardPage1.h"
+#include "wearable_log.h"
+#include "iostream"
+#include "string"
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+#include "dnotdisturb/include/DnotDisturbModel.h"
+#include "main/include/MainModel.h"
+#include <custom_runtime.h>
+#include "ConfigModel.h"
+#include "../../../../../../../drivers/peripheral/slip/cat1Service/cat1_ctl.h"
+#include <custom_utils.h>
+namespace OHOS
+{
+    // viewId
+    static constexpr const char *DROPDOWN_BT_TOGGLEBUTTON_VIEWID = "dropdown_bt";                   // 蓝牙
+    static constexpr const char *DROPDOWN_4G_TOGGLEBUTTON_VIEWID = "dropdown_4g";                   // 4g
+    static constexpr const char *DROPDOWN_ALIPAY_TOGGLEBUTTON_VIEWID = "dropdown_ALIPAY";           // 支付宝
+    static constexpr const char *DROPDOWN_SAVEPOWER_TOGGLEBUTTON_VIEWID = "dropdown_savepower";     // 省电模式
+    static constexpr const char *DROPDOWN_SLEEP_TOGGLEBUTTON_VIEWID = "dropdown_sleep";             // 睡眠模式
+    static constexpr const char *DROPDOWN_DNOTDISTURB_TOGGLEBUTTON_VIEWID = "dropdown_dnotdisturb"; // 勿扰模式
+    static constexpr const char *DROPDOWN_SETTING_TOGGLEBUTTON_VIEWID = "dropdown_setting";         // 设置
+
+    // Image src
+    static constexpr const char *DROPDOWN_BT_CONNECT_IMAGE = "/user/res/dropdown/DROPDOWN_BT_CONNECT.bin";
+    static constexpr const char *DROPDOWN_BT_DISCONNECT_IMAGE = "/user/res/dropdown/DROPDOWN_BT_DISCONNECT.bin";
+
+    static constexpr const char *DROPDOWN_4G_ON_IMAGE = "/user/res/dropdown/DROPDOWN_4G_ON.bin";
+    static constexpr const char *DROPDOWN_4G_OFF_IMAGE = "/user/res/dropdown/DROPDOWN_4G_OFF.bin";
+
+    static constexpr const char *DROPDOWN_ALIPAY_IMAGE = "/user/res/dropdown/DROPDOWN_ALIPAY.bin";
+
+    static constexpr const char *DROPDOWN_SAVEPOWER_ON_IMAGE = "/user/res/dropdown/DROPDOWN_SAVEPOWER_ON.bin";
+    static constexpr const char *DROPDOWN_SAVEPOWER_OFF_IMAGE = "/user/res/dropdown/DROPDOWN_SAVEPOWER_OFF.bin";
+
+    static constexpr const char *DROPDOWN_SLEEP_ON_IMAGE = "/user/res/dropdown/DROPDOWN_SLEEP_ON.bin";
+    static constexpr const char *DROPDOWN_SLEEP_OFF_IMAGE = "/user/res/dropdown/DROPDOWN_SLEEP_OFF.bin";
+
+    static constexpr const char *DROPDOWN_DNOTDISTURB_ON_IMAGE = "/user/res/dropdown/DROPDOWN_DNOTDISTURB_ON.bin";
+    static constexpr const char *DROPDOWN_DNOTDISTURB_OFF_IMAGE = "/user/res/dropdown/DROPDOWN_DNOTDISTURB_OFF.bin";
+
+    static constexpr const char *DROPDOWN_SETTING_IMAGE = "/user/res/dropdown/DROPDOWN_SETTING.bin";
+
+    static DropDownCardPage1 *g_pDropDownCardPage1{nullptr};
+    DropDownCardPage1::DropDownCardPage1()
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DropDownCardPage1::DropDownCardPage1");
+        SetPosition(0, 0, 430, 210);
+        g_pDropDownCardPage1 = this;
+    }
+
+    DropDownCardPage1::~DropDownCardPage1()
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DropDownCardPage1::~DropDownCardPage1");
+        ClearAll();
+        g_pDropDownCardPage1 = nullptr;
+    }
+
+    DropDownCardPage1 *DropDownCardPage1::GetInstance(void)
+    {
+        return g_pDropDownCardPage1;
+    }
+
+    bool DropDownCardPage1::OnClick(UIView &view, const ClickEvent &event)
+    {
+        std::string viewId = view.GetViewId();
+        bool state;
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DropDownCardPage1::OnClick %s ", view.GetViewId());
+        if (viewId == DROPDOWN_BT_TOGGLEBUTTON_VIEWID) // 蓝牙开关
+        {
+            state = toggleButton[DropDownCardPage1::toggleButton_BT]->GetState();
+            if (state)
+            {
+                start_custom_ble_service(); // 主动开启蓝牙
+                ConfigModel::GetInstance()->SetClassicBlueToothState(true);
+            }
+            else
+            {
+                stop_custom_ble_service();
+                ConfigModel::GetInstance()->SetClassicBlueToothState(false);
+            }
+        }
+        else if (viewId == DROPDOWN_4G_TOGGLEBUTTON_VIEWID) // 4G开关
+        {
+            state = toggleButton[DropDownCardPage1::toggleButton_4G]->GetState();
+            if (state)
+            {
+                uapi_set4GCapability(true);
+                ConfigModel::GetInstance()->SetCat1_4Gability(uapi_cat1_get_power_stat());
+            }
+            else
+            {
+#if defined(A5133_DEMO_CLIENT) || defined(A5133_DEMO_SERVER)
+                uapi_set4GCapability(true);
+#else
+                uapi_set4GCapability(false);
+#endif
+                ConfigModel::GetInstance()->SetCat1_4Gability(uapi_cat1_get_power_stat());
+            }
+        }
+        else if (viewId == DROPDOWN_ALIPAY_TOGGLEBUTTON_VIEWID) // 支付宝
+        {
+#ifdef SUPPORT_ALIPAY_SEC
+            NativeAbility::GetInstance().EnterSlice(VIEW_MAIN_ALIPAY);
+#endif
+        }
+        else if (viewId == DROPDOWN_SAVEPOWER_TOGGLEBUTTON_VIEWID) // 省电模式开关
+        {
+            state = toggleButton[DropDownCardPage1::toggleButton_SAVEPOWER]->GetState();
+            NativeAbility::GetInstance().EnterSlice(VIEW_SAVEELE);
+        }
+        else if (viewId == DROPDOWN_SLEEP_TOGGLEBUTTON_VIEWID) // 睡眠开关
+        {
+            state = toggleButton[DropDownCardPage1::toggleButton_SLEEP]->GetState();
+        }
+        else if (viewId == DROPDOWN_DNOTDISTURB_TOGGLEBUTTON_VIEWID) // 勿扰开关
+        {
+            state = toggleButton[DropDownCardPage1::toggleButton_DNOTDISTURB]->GetState();
+            DnotDisturbModel::GetInstance().SetDoNotDisturbModeEnabled(state);
+        }
+        else if (viewId == DROPDOWN_SETTING_TOGGLEBUTTON_VIEWID) // 设置
+        {
+            NativeAbility::GetInstance().EnterSlice(VIEW_SETTING);
+        }
+        return true;
+    }
+
+    void DropDownCardPage1::ClearAll()
+    {
+        RemoveAll();
+        int size = sizeof(toggleButton) / sizeof(toggleButton[0]);
+        for (int i = 0; i < size; i++)
+        {
+            if (toggleButton[i] != nullptr)
+            {
+                delete toggleButton[i];
+                toggleButton[i] = nullptr;
+            }
+        }
+    }
+
+    UIToggleButton *DropDownCardPage1::ToggleButtonInit(ToggleButtonConfig &toggleButtonConfig)
+    {
+        UIToggleButton *toggleButton = new UIToggleButton();
+        if (toggleButton == nullptr)
+        {
+            return nullptr;
+        }
+        toggleButton->SetPosition(toggleButtonConfig.left, toggleButtonConfig.top, toggleButtonConfig.width, toggleButtonConfig.height);
+        toggleButton->SetViewId(toggleButtonConfig.viewId);
+        toggleButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
+        toggleButton->SetStyle(STYLE_BORDER_RADIUS, 200);
+        toggleButton->SetImages(toggleButtonConfig.selectImg, toggleButtonConfig.unselectImg);
+        toggleButton->SetState(toggleButtonConfig.state);
+
+        toggleButton->SetTouchable(toggleButtonConfig.isTouchable);
+        toggleButton->SetOnClickListener(this);
+        return toggleButton;
+    }
+
+    bool DropDownCardPage1::InitPage(void)
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DropDownCardPage1::InitPage");
+
+        bool state_bt = ConfigModel::GetInstance()->GetClassicBlueToothState(); // 传统蓝牙开关
+        bool state_4g = uapi_cat1_get_power_stat();
+        bool state_savepower = uapi_dev_runtime_get_saveele_status();
+        bool state_sleep = uapi_dev_runtime_get_sleep_monitoring_status();
+        bool state_dnotdisturb = DnotDisturbModel::GetInstance().GetDoNotDisturbModeEnabled();
+
+        ToggleButtonConfig toggleButtonConfig[] = {
+            {0, 0, 100, 100, DROPDOWN_BT_TOGGLEBUTTON_VIEWID, DROPDOWN_BT_CONNECT_IMAGE, DROPDOWN_BT_DISCONNECT_IMAGE, true, state_bt},
+            {110, 0, 100, 100, DROPDOWN_4G_TOGGLEBUTTON_VIEWID, DROPDOWN_4G_ON_IMAGE, DROPDOWN_4G_OFF_IMAGE, true, state_4g},
+            {220, 0, 100, 100, DROPDOWN_ALIPAY_TOGGLEBUTTON_VIEWID, DROPDOWN_ALIPAY_IMAGE, DROPDOWN_ALIPAY_IMAGE, true, true},
+            {330, 0, 100, 100, DROPDOWN_SAVEPOWER_TOGGLEBUTTON_VIEWID, state_savepower ? DROPDOWN_SAVEPOWER_ON_IMAGE : DROPDOWN_SAVEPOWER_OFF_IMAGE, state_savepower ? DROPDOWN_SAVEPOWER_ON_IMAGE : DROPDOWN_SAVEPOWER_OFF_IMAGE, true, state_savepower},
+            {55, 100, 100, 100, DROPDOWN_SLEEP_TOGGLEBUTTON_VIEWID, DROPDOWN_SLEEP_ON_IMAGE, DROPDOWN_SLEEP_OFF_IMAGE, true, state_sleep},
+            {165, 100, 100, 100, DROPDOWN_DNOTDISTURB_TOGGLEBUTTON_VIEWID, DROPDOWN_DNOTDISTURB_ON_IMAGE, DROPDOWN_DNOTDISTURB_OFF_IMAGE, true, state_dnotdisturb},
+            {275, 100, 100, 100, DROPDOWN_SETTING_TOGGLEBUTTON_VIEWID, DROPDOWN_SETTING_IMAGE, DROPDOWN_SETTING_IMAGE, true, true},
+        };
+
+        for (int i = 0; i < toggleButton_MAX; i++)
+        {
+            if (toggleButton[i] == nullptr)
+            {
+                toggleButton[i] = ToggleButtonInit(toggleButtonConfig[i]);
+                if (toggleButton[i] == nullptr)
+                {
+                    return false;
+                }
+                Add(toggleButton[i]);
+            }
+        }
+        return true;
+    }
+
+    bool DropDownCardPage1::InitView(void *caller)
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DropDownCardPage1::InitView %p", caller);
+        if (InitPage() == false)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DropDownCardPage1::InitPage fail");
+            return false;
+        }
+        SetDraggable(true);
+        SetTouchable(true);
+        return true;
+    }
+
+    UIToggleButton *DropDownCardPage1::GetDropDownCardPage1_ToggleButton(int index)
+    {
+        return toggleButton[index];
+    }
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dropdown/DropDownCardPage2.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dropdown/DropDownCardPage2.cpp
new file mode 100644 (file)
index 0000000..7647e2c
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-08-21 11:54:00
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-08-22 19:01:37
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/src/dropdown/DropDownCardPage2.cpp
+ */
+#include "main/include/dropdown/DropDownCardPage2.h"
+#include "wearable_log.h"
+#include "iostream"
+#include "string"
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+namespace OHOS
+{
+    // viewId
+    static constexpr const char *DROPDOWN_FINDPHONE_TOGGLEBUTTON_VIEWID = "dropdown_bt"; // 查找手机
+    static constexpr const char *DROPDOWN_LIGHTING_TOGGLEBUTTON_VIEWID = "dropdown_4g";  // 手电筒
+
+    // Image src
+    static constexpr const char *DROPDOWN_FINDPHONE_IMAGE = "/user/res/dropdown/DROPDOWN_FINDPHONE.bin";
+
+    static constexpr const char *DROPDOWN_LIGHTING_IMAGE = "/user/res/dropdown/DROPDOWN_LIGHTING.bin";
+
+    static DropDownCardPage2 *g_pDropDownCardPage2{nullptr};
+    DropDownCardPage2::DropDownCardPage2()
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DropDownCardPage2::DropDownCardPage2");
+        SetPosition(0, 0, 430, 210);
+        g_pDropDownCardPage2 = this;
+    }
+
+    DropDownCardPage2::~DropDownCardPage2()
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DropDownCardPage2::~DropDownCardPage2");
+        ClearAll();
+        g_pDropDownCardPage2 = nullptr;
+    }
+
+    DropDownCardPage2 *DropDownCardPage2::GetInstance(void)
+    {
+        return g_pDropDownCardPage2;
+    }
+
+    bool DropDownCardPage2::OnClick(UIView &view, const ClickEvent &event)
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DropDownCardPage2::OnClick");
+        std::string viewId = view.GetViewId();
+        if (viewId == DROPDOWN_FINDPHONE_TOGGLEBUTTON_VIEWID) 
+        {
+            NativeAbility::GetInstance().EnterSlice(VIEW_FIND_PHONE);
+        }
+        else if (viewId == DROPDOWN_LIGHTING_TOGGLEBUTTON_VIEWID)
+        {
+            NativeAbility::GetInstance().EnterSlice(VIEW_FLASHLIGHT);
+        }
+        return true;
+    }
+
+    void DropDownCardPage2::ClearAll()
+    {
+        RemoveAll();
+        int size = sizeof(toggleButton) / sizeof(toggleButton[0]);
+        for (int i = 0; i < size; i++)
+        {
+            if (toggleButton[i] != nullptr)
+            {
+                delete toggleButton[i];
+                toggleButton[i] = nullptr;
+            }
+        }
+    }
+
+    UIToggleButton *DropDownCardPage2::ToggleButtonInit(ToggleButtonConfig &toggleButtonConfig)
+    {
+        UIToggleButton *toggleButton = new UIToggleButton();
+        if (toggleButton == nullptr)
+        {
+            return nullptr;
+        }
+        toggleButton->SetPosition(toggleButtonConfig.left, toggleButtonConfig.top, toggleButtonConfig.width, toggleButtonConfig.height);
+        toggleButton->SetViewId(toggleButtonConfig.viewId);
+        toggleButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
+        toggleButton->SetStyle(STYLE_BORDER_RADIUS, 200);
+        toggleButton->SetImages(toggleButtonConfig.selectImg, toggleButtonConfig.unselectImg);
+
+        toggleButton->SetTouchable(toggleButtonConfig.isTouchable);
+        toggleButton->SetOnClickListener(this);
+        return toggleButton;
+    }
+
+    bool DropDownCardPage2::InitPage(void)
+    {
+        int size = sizeof(toggleButton) / sizeof(toggleButton[0]);
+        ToggleButtonConfig toggleButtonConfig[] = {
+            {0, 0, 100, 100, DROPDOWN_FINDPHONE_TOGGLEBUTTON_VIEWID, DROPDOWN_FINDPHONE_IMAGE, DROPDOWN_FINDPHONE_IMAGE, true},
+            {110, 0, 100, 100, DROPDOWN_LIGHTING_TOGGLEBUTTON_VIEWID, DROPDOWN_LIGHTING_IMAGE, DROPDOWN_LIGHTING_IMAGE, true},
+        };
+
+        for (int i = 0; i < size; i++)
+        {
+            if (toggleButton[i] == nullptr)
+            {
+                toggleButton[i] = ToggleButtonInit(toggleButtonConfig[i]);
+                if (toggleButton[i] == nullptr)
+                {
+                    return false;
+                }
+                Add(toggleButton[i]);
+            }
+        }
+        return true;
+    }
+
+    bool DropDownCardPage2::InitView(void *caller)
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DropDownCardPage2::InitView %p", caller);
+        if (InitPage() == false)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DropDownCardPage2::InitPage fail");
+            return false;
+        }
+        SetDraggable(true);
+        SetTouchable(true);
+        return true;
+    }
+
+    UIToggleButton *DropDownCardPage2::GetDropDownCardPage2_ToggleButton(int index)
+    {
+        return toggleButton[index];
+    }
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleData.h b/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleData.h
new file mode 100644 (file)
index 0000000..56dd43a
--- /dev/null
@@ -0,0 +1,38 @@
+
+#ifndef __SCHEDULEDATA_H__
+#define __SCHEDULEDATA_H__
+
+// #include "ohos_types.h"
+#include <string>
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif
+#endif
+
+namespace OHOS
+{
+    typedef struct
+    {
+        std::string date; // 7/8
+        std::string topic; // xxxx
+        std::string time; //10:30-14:00
+        std::string content; // yyyyyyy
+    }ScheduleRevData;
+
+    #define SCHEDULE_DATA_COUNT_MAX (20)
+
+    void C_ScheduleSetByApp(ScheduleRevData * data, uint8_t index, bool is_finish);
+    int C_ScheduleDataReadFromFile();
+    int C_ScheduleDataWriteToFile(); 
+}
+
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif
+
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleListAdapter.h b/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleListAdapter.h
new file mode 100644 (file)
index 0000000..e98c1ff
--- /dev/null
@@ -0,0 +1,31 @@
+
+#ifndef __SCHEDULELISTADAPTER_H__
+#define __SCHEDULELISTADAPTER_H__
+
+#include "View.h"
+#include "components/abstract_adapter.h"
+#include "schedule/include/ScheduleModel.h"
+#include "schedule/include/ScheduleListItem.h"
+
+
+namespace OHOS
+{
+    class ScheduleListAdapter : public AbstractAdapter
+    {
+    public:
+        ScheduleListAdapter();
+        ~ScheduleListAdapter() override;
+        ScheduleListAdapter * GetInstance();
+
+        UIView * GetView(UIView * inView, int16_t index) override;
+        uint16_t GetCount() override;
+        void AddListItem(const ScheduleListItemInfo &item);
+
+        void SetItemClickListener(UIView::OnClickListener *itemClickListener);
+
+    private:
+        List<ScheduleListItemInfo> nodeList_;
+        UIView::OnClickListener * itemClickListener_;
+    };
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleListItem.h b/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleListItem.h
new file mode 100644 (file)
index 0000000..09f5bef
--- /dev/null
@@ -0,0 +1,63 @@
+
+#ifndef __SCHEDULELISTITEM_H__
+#define __SCHEDULELISTITEM_H__
+
+#include "View.h"
+#include "ohos_types.h"
+#include "components/ui_view_group.h"
+#include "components/ui_label_ext.h"
+#include "components/ui_image_view.h"
+
+
+namespace OHOS
+{
+    typedef struct
+    {
+        std::string DateStr;
+        std::string TopicStr;
+        std::string TimeStr;
+        std::string DataStr;
+        uint8_t index;
+        bool is_date_item;
+        uint8_t child_num; // if(true == is_date_item)
+        uint8_t child_index;  // if(false == is_date_item)
+    } ScheduleListItemInfo;
+
+
+    class ScheduleListItem : public UIViewGroup
+    {
+    public:
+        ScheduleListItem();
+        ~ScheduleListItem() override;
+        void SetItemInfo(const ScheduleListItemInfo &itemInfo);
+        void ResetItemStyle(const ScheduleListItemInfo &itemInfo);
+
+
+    private:
+        ScheduleListItem(const ScheduleListItem &);
+        ScheduleListItem &operator = (const ScheduleListItem &);
+
+        UIViewGroup InfoGroup_;
+        UILabelExt LabelExtDate_;
+        UILabelExt LabelExtTopic_;
+        UILabelExt LabelExtTime_;
+        UIImageView Image_;
+        // ScheduleListItemInfo itemInfo_ = { nullptr, nullptr, nullptr, nullptr, 0 };
+
+        #define ITEM_WIDTH (380)
+        #define ITEM_HEIGHT (100)
+        #define ITEM_GAP (20)
+
+        #define ODD_ITEM_BACKGROUND_COLOR (0Xff001833)
+        #define ODD_ITEM_TOPIC_COLOR (0Xff0176ff)
+        #define ODD_ITEM_TIME_COLOR (0Xff8bc0ff)
+
+        #define EVEN_ITEM_BACKGROUND_COLOR (0Xff331f00)
+        #define EVEN_ITEM_TOPIC_COLOR (0Xffff7b01)
+        #define EVEN_ITEM_TIME_COLOR (0Xffffc28b)
+
+        #define IMAGE_ITEM_ARROW "/user/res/Schedule/IMAGE_ITEM_ARROW.bin"
+        // #define IMAGE_ITEM_ARROW "/user/res/settings/SETTINGS_DISPLAY_MODE.bin"
+    };
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleModel.h b/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleModel.h
new file mode 100644 (file)
index 0000000..9811d71
--- /dev/null
@@ -0,0 +1,42 @@
+\r
+#ifndef __SCHEDULEMODEL_H__\r
+#define __SCHEDULEMODEL_H__\r
+\r
+#include "ohos_types.h"\r
+#include "schedule/include/ScheduleListItem.h"\r
+#include "schedule/include/ScheduleData.h"\r
+\r
+\r
+namespace OHOS\r
+{\r
+    class ScheduleModel\r
+    {\r
+    public:\r
+        static ScheduleModel &GetInstance(void);\r
+        bool ScheduleDataIsEmpty(void);\r
+        ScheduleListItemInfo * ScheduleDataInfoGet(void);\r
+        uint8_t ScheduleDataItemCountGet(void);\r
+\r
+        std::string ScheduleInfoDateStrGet(uint8_t index);\r
+        std::string ScheduleInfoTopicStrGet(uint8_t index);\r
+        std::string ScheduleInfoTimeStrGet(uint8_t index);\r
+        std::string ScheduleInfoDataStrGet(uint8_t index);\r
+\r
+        void ScheduleSetByApp(ScheduleRevData * data, uint8_t index, bool is_finish);\r
+\r
+    private:\r
+        ScheduleModel();\r
+        ~ScheduleModel();\r
+        ScheduleModel(const ScheduleModel &) = delete;\r
+        ScheduleModel &operator=(const ScheduleModel &) = delete;\r
+\r
+        void ScheduleDataItemCountSet(uint8_t count);\r
+        void ScheduleDataToInfo(void);\r
+\r
+        ScheduleRevData ScheduleRevData_[SCHEDULE_DATA_COUNT_MAX] = {nullptr, nullptr, nullptr, nullptr};\r
+        ScheduleListItemInfo ScheduleDataInfo_[SCHEDULE_DATA_COUNT_MAX*2] = {nullptr, nullptr, nullptr, nullptr, 0, false, 0, 0};\r
+        uint8_t ItemCount_{0};\r
+    };\r
+}\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/include/SchedulePresenter.h b/code/sdk/application/wearable/fd230app/nativeui/schedule/include/SchedulePresenter.h
new file mode 100644 (file)
index 0000000..64dce38
--- /dev/null
@@ -0,0 +1,42 @@
+\r
+#ifndef __SCHEDULEPRESENTER_H__\r
+#define __SCHEDULEPRESENTER_H__\r
+\r
+#include "Presenter.h"\r
+#include "View.h"\r
+\r
+#include "schedule/include/ScheduleView.h"\r
+#include "schedule/include/ScheduleModel.h"\r
+\r
+\r
+namespace OHOS\r
+{\r
+    class ScheduleView;\r
+    class ScheduleModel;\r
+    class SchedulePresenter : public Presenter<ScheduleView, ScheduleModel>,\r
+                             public UIView::OnClickListener,\r
+                             public UIView::OnDragListener,\r
+                             public RootView::OnKeyActListener\r
+    {\r
+    public:\r
+        SchedulePresenter();\r
+        virtual ~SchedulePresenter();\r
+        static SchedulePresenter * GetInstance();\r
+\r
+        void OnStart() override;\r
+        void OnResume() override;\r
+        void OnPause() override;\r
+        void OnStop() override;\r
+\r
+    private:\r
+        bool OnClick(UIView &view, const ClickEvent &event) override;\r
+        bool OnDrag(UIView &view, const DragEvent &event) override;\r
+        bool OnDragEnd(UIView &view, const DragEvent &event) override;\r
+        bool OnKeyAct(UIView &view, const KeyEvent &event) override;\r
+\r
+        ScheduleModel * ScheduleModel_;\r
+        bool X_DRAG_FLAG{false};\r
+    };\r
+}\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleView.h b/code/sdk/application/wearable/fd230app/nativeui/schedule/include/ScheduleView.h
new file mode 100644 (file)
index 0000000..d6faf5c
--- /dev/null
@@ -0,0 +1,85 @@
+\r
+#ifndef __SCHEDULEVIEW_H__\r
+#define __SCHEDULEVIEW_H__\r
+\r
+#include "View.h"\r
+#include "ohos_types.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_label_ext.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_list.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_button.h"\r
+#include "common/screen.h"\r
+#include "ui_resource_string.h"\r
+\r
+#include "schedule/include/SchedulePresenter.h"\r
+#include "schedule/include/ScheduleListAdapter.h"\r
+#include "schedule/include/ScheduleListItem.h"\r
+\r
+\r
+namespace OHOS\r
+{\r
+    typedef enum\r
+    {\r
+        ENUM_SCHEDULE_NO_DATA_SCREEN,\r
+        ENUM_SCHEDULE_LIST_SCREEN,\r
+        ENUM_SCHEDULE_CONTENT_SCREEN,\r
+        ENUM_SCHEDULE_DELETE_SCREEN,\r
+\r
+        ENUM_SCHEDULE_MAX_SCREEN\r
+    }ENUM_SCHEDULE_SCREEN;\r
+\r
+    class SchedulePresenter;\r
+    class ScheduleView : public View<SchedulePresenter>\r
+    {\r
+    public:\r
+        ScheduleView();\r
+        ~ScheduleView();\r
+        static ScheduleView * GetInstance(void);\r
+\r
+        void OnStart() override;\r
+        void OnSetUpView() override;\r
+        void OnTearDownView() override;\r
+        void OnStop() override;\r
+        void AddItemToList(const ScheduleListItemInfo &item);\r
+        void DisplayContentScreen(uint8_t index);\r
+\r
+    private:\r
+        UIViewGroup * InitNoDataScreen();\r
+        UIViewGroup * InitDataScreen();\r
+        UILabelExt * InitLabel(int16_t x, int16_t y, int16_t width, int16_t height,\r
+                                uint16_t line_height, uint8_t font_size, uint16_t text_id, uint32_t text_color);\r
+        void DisplayMainScreen(void);\r
+\r
+        UIScrollView * InitContentScreen();\r
+\r
+        UIViewGroup * NoDataGroup_{nullptr};\r
+        UILabelExt * LabelExt0_{nullptr};\r
+        UIImageView * ImageView_{nullptr};\r
+        UILabelExt * LabelExt1_{nullptr};\r
+        UILabelExt * LabelExt2_{nullptr};\r
+\r
+        UIViewGroup * DataGroup_{nullptr};\r
+        UIList * ScheduleList_{nullptr};\r
+        ScheduleListAdapter * ScheduleListAdapter_{nullptr};\r
+\r
+        UIScrollView * ContentGroup_{nullptr};\r
+        UILabelExt * ContentLabelExt0_{nullptr};\r
+        UILabelExt * ContentLabelExt1_{nullptr};\r
+        UILabelExt * ContentLabelExt2_{nullptr};\r
+        UILabelExt * ContentLabelExt3_{nullptr};\r
+        UIButton * ContentButton0_{nullptr};\r
+        UIButton * ContentButton1_{nullptr};\r
+\r
+        UIViewGroup * GroupArray_[ENUM_SCHEDULE_MAX_SCREEN]{nullptr};\r
+\r
+        #define LIST_LEFT (43)\r
+        #define LIST_TOP (50)\r
+        #define LIST_WIDTH (Screen::GetInstance().GetWidth() - LIST_LEFT * 2)\r
+        #define LIST_HEIGHT (Screen::GetInstance().GetHeight() - LIST_TOP * 2)\r
+\r
+        #define NO_DATA_IMAGE "/user/res/Schedule/schedule_no_data.bin"\r
+    };\r
+}\r
+#endif\r
diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleListAdapter.cpp b/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleListAdapter.cpp
new file mode 100644 (file)
index 0000000..d1312f2
--- /dev/null
@@ -0,0 +1,81 @@
+
+
+#include "schedule/include/ScheduleListAdapter.h"
+#include "wearable_log.h"
+
+namespace OHOS
+{
+    static ScheduleListAdapter * p_ScheduleListAdapterInstance = nullptr;
+
+    ScheduleListAdapter::ScheduleListAdapter()
+    {
+        p_ScheduleListAdapterInstance = this;
+    }
+
+    ScheduleListAdapter::~ScheduleListAdapter()
+    {
+        p_ScheduleListAdapterInstance = nullptr;
+        nodeList_.Clear();
+    }
+
+    ScheduleListAdapter * ScheduleListAdapter::GetInstance()
+    {
+        return p_ScheduleListAdapterInstance;
+    }
+
+    UIView * ScheduleListAdapter::GetView(UIView * inView, int16_t index)
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:GetView,%d", __LINE__, index);
+        if(nodeList_.IsEmpty() || nodeList_.Size() <= index || 0 > index)
+        {
+            return nullptr;
+        }
+
+        ScheduleListItem * item = nullptr;
+        ListNode<ScheduleListItemInfo> * node = nodeList_.Begin();
+        for (uint16_t i = 0; i < index; i++) 
+        {
+            node = node->next_;
+        }
+
+        if (nullptr == inView) 
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:GetView", __LINE__);
+            item = new ScheduleListItem();
+            if (nullptr == item)
+                return nullptr;
+        } 
+        else 
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:GetView", __LINE__);
+            item = static_cast<ScheduleListItem *>(inView);
+        }
+
+        if (item != nullptr) 
+        {
+            item->SetViewIndex(index);
+            item->ResetItemStyle(node->data_);
+            item->SetItemInfo(node->data_);
+            item->SetOnClickListener(itemClickListener_);
+        }
+
+        return item;
+    }
+
+    uint16_t ScheduleListAdapter::GetCount()
+    {
+        return nodeList_.Size();
+    }
+
+    void ScheduleListAdapter::AddListItem(const ScheduleListItemInfo &item)
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:AddListItem", __LINE__);
+        nodeList_.PushBack(item);
+    }
+
+    void ScheduleListAdapter::SetItemClickListener(UIView::OnClickListener *itemClickListener)
+    {
+        itemClickListener_ = itemClickListener;
+    }
+
+}
diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleListItem.cpp b/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleListItem.cpp
new file mode 100644 (file)
index 0000000..b53ed61
--- /dev/null
@@ -0,0 +1,142 @@
+
+#include "ScheduleListItem.h"
+#include "wearable_log.h"
+
+namespace OHOS
+{
+    ScheduleListItem::ScheduleListItem()
+    {
+        SetPosition(0, 0, ITEM_WIDTH, ITEM_HEIGHT + ITEM_GAP);
+        SetStyle(STYLE_BACKGROUND_COLOR, OHOS::Color::Black().full);
+        SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+        // SetStyle(STYLE_BORDER_RADIUS, 20);
+        // SetTouchable(true);
+
+        InfoGroup_.SetPosition(0, ITEM_GAP>>1, ITEM_WIDTH, ITEM_HEIGHT);
+        InfoGroup_.SetStyle(STYLE_BACKGROUND_COLOR, OHOS::Color::Black().full);
+        InfoGroup_.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+        InfoGroup_.SetStyle(STYLE_BORDER_RADIUS, 20);
+        InfoGroup_.SetTouchable(true);
+
+        LabelExtDate_.SetPosition((ITEM_WIDTH - 300)>>1, (ITEM_HEIGHT - 55)>>1, 300, 55);
+        LabelExtDate_.SetStyle(STYLE_TEXT_FONT, 30);
+        LabelExtDate_.SetStyle(STYLE_LINE_HEIGHT, 35);
+        // LabelExtDate_.SetTextId(text_id);
+        LabelExtDate_.SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
+        LabelExtDate_.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        LabelExtDate_.SetRollSpeed(70);
+        LabelExtDate_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+        LabelExtDate_.SetStyle(STYLE_TEXT_COLOR, 0xffff5a36);
+
+        LabelExtTopic_.SetPosition(47, 22, 250, 35);
+        LabelExtTopic_.SetStyle(STYLE_TEXT_FONT, 30);
+        LabelExtTopic_.SetStyle(STYLE_LINE_HEIGHT, 35);
+        // LabelExtTopic_.SetTextId(text_id);
+        LabelExtTopic_.SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
+        LabelExtTopic_.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP);
+        LabelExtTopic_.SetRollSpeed(70);
+        LabelExtTopic_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+        // LabelExtTopic_.SetStyle(STYLE_TEXT_COLOR, 0xffff5a36);
+
+        LabelExtTime_.SetPosition(47, 57, 105, 24);
+        LabelExtTime_.SetStyle(STYLE_TEXT_FONT, 20);
+        LabelExtTime_.SetStyle(STYLE_LINE_HEIGHT, 24);
+        // LabelExtTime_.SetTextId(text_id);
+        LabelExtTime_.SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
+        LabelExtTime_.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP);
+        LabelExtTime_.SetRollSpeed(70);
+        LabelExtTime_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20);
+        // LabelExtTime_.SetStyle(STYLE_TEXT_COLOR, 0xffff5a36);
+
+        Image_.SetPosition(326, 37, 14, 26);
+        Image_.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);
+        Image_.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+        Image_.SetResizeMode(UIImageView::CENTER);
+        Image_.SetAutoEnable(false);
+        Image_.SetSrc(IMAGE_ITEM_ARROW);
+
+        InfoGroup_.Add(&LabelExtDate_);
+        InfoGroup_.Add(&LabelExtTopic_);
+        InfoGroup_.Add(&LabelExtTime_);
+        InfoGroup_.Add(&Image_);
+        Add(&InfoGroup_);
+    }
+
+    ScheduleListItem::~ScheduleListItem()
+    {
+        RemoveAll();
+    }
+
+    void ScheduleListItem::SetItemInfo(const ScheduleListItemInfo &itemInfo)
+    {
+        if(true == itemInfo.is_date_item)
+        {
+            LabelExtDate_.SetText(itemInfo.DateStr.c_str());
+        }
+        else
+        {
+            if(0 == (itemInfo.child_index % 2))
+            {
+                LabelExtTopic_.SetText(itemInfo.TopicStr.c_str());
+                LabelExtTime_.SetText(itemInfo.TimeStr.c_str());
+            }
+            else
+            {
+                LabelExtTopic_.SetText(itemInfo.TopicStr.c_str());
+                LabelExtTime_.SetText(itemInfo.TimeStr.c_str());
+            }
+        }
+    }
+
+    void ScheduleListItem::ResetItemStyle(const ScheduleListItemInfo &itemInfo)
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:ResetItemStyle,%d,%d,%d",
+                                    __LINE__, itemInfo.is_date_item, itemInfo.child_num, itemInfo.child_index);
+
+        if(true == itemInfo.is_date_item)
+        {
+            SetHeight(ITEM_HEIGHT);
+
+            InfoGroup_.SetStyle(STYLE_BACKGROUND_COLOR, OHOS::Color::Black().full);
+            InfoGroup_.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+            InfoGroup_.SetTouchable(false);
+
+            LabelExtDate_.SetVisible(true);
+            LabelExtTopic_.SetVisible(false);
+            LabelExtTime_.SetVisible(false);
+            Image_.SetVisible(false);
+        }
+        else
+        {
+            if(0 == (itemInfo.child_index % 2))
+            {
+                InfoGroup_.SetStyle(STYLE_BACKGROUND_COLOR, ODD_ITEM_BACKGROUND_COLOR);
+                InfoGroup_.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+                InfoGroup_.SetTouchable(true);
+
+                LabelExtDate_.SetVisible(false);
+                LabelExtTopic_.SetVisible(true);
+                LabelExtTime_.SetVisible(true);
+                Image_.SetVisible(true);
+                
+                LabelExtTopic_.SetStyle(STYLE_TEXT_COLOR, ODD_ITEM_TOPIC_COLOR);
+                LabelExtTime_.SetStyle(STYLE_TEXT_COLOR, ODD_ITEM_TIME_COLOR);
+            }
+            else
+            {
+                InfoGroup_.SetStyle(STYLE_BACKGROUND_COLOR, EVEN_ITEM_BACKGROUND_COLOR);
+                InfoGroup_.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+                InfoGroup_.SetTouchable(true);
+
+                LabelExtDate_.SetVisible(false);
+                LabelExtTopic_.SetVisible(true);
+                LabelExtTime_.SetVisible(true);
+                Image_.SetVisible(true);
+
+                LabelExtTopic_.SetStyle(STYLE_TEXT_COLOR, EVEN_ITEM_TOPIC_COLOR);
+                LabelExtTime_.SetStyle(STYLE_TEXT_COLOR, EVEN_ITEM_TIME_COLOR);
+            }
+        }
+    }
+
+}
diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleModel.cpp
new file mode 100644 (file)
index 0000000..145b4a6
--- /dev/null
@@ -0,0 +1,164 @@
+\r
+#include "schedule/include/ScheduleModel.h"\r
+#include "wearable_log.h"\r
+\r
+namespace OHOS\r
+{\r
+    ScheduleModel::ScheduleModel()\r
+    {\r
+\r
+    }\r
+\r
+    ScheduleModel::~ScheduleModel()\r
+    {\r
+\r
+    }\r
+\r
+    ScheduleModel &ScheduleModel::GetInstance()\r
+    {\r
+        static ScheduleModel instance;\r
+        return instance;\r
+    }\r
+\r
+    bool ScheduleModel::ScheduleDataIsEmpty(void)\r
+    {\r
+        if(0 == ItemCount_)\r
+            return true;\r
+        \r
+        return false;\r
+    }\r
+\r
+    uint8_t ScheduleModel::ScheduleDataItemCountGet(void)\r
+    {\r
+        return ItemCount_;\r
+    }\r
+\r
+    void ScheduleModel::ScheduleDataItemCountSet(uint8_t count)\r
+    {\r
+        ItemCount_ = count;\r
+    }\r
+\r
+    ScheduleListItemInfo * ScheduleModel::ScheduleDataInfoGet(void)\r
+    {\r
+        return ScheduleDataInfo_;\r
+    }\r
+\r
+    std::string ScheduleModel::ScheduleInfoDateStrGet(uint8_t index)\r
+    {\r
+        return ScheduleDataInfo_[index].DateStr.c_str();\r
+    }\r
+\r
+    std::string ScheduleModel::ScheduleInfoTopicStrGet(uint8_t index)\r
+    {\r
+        return ScheduleDataInfo_[index].TopicStr.c_str();\r
+    }\r
+\r
+    std::string ScheduleModel::ScheduleInfoTimeStrGet(uint8_t index)\r
+    {\r
+        return ScheduleDataInfo_[index].TimeStr.c_str();\r
+    }\r
+\r
+    std::string ScheduleModel::ScheduleInfoDataStrGet(uint8_t index)\r
+    {\r
+        return ScheduleDataInfo_[index].DataStr.c_str();\r
+    }\r
+\r
+    void ScheduleModel::ScheduleSetByApp(ScheduleRevData * data, uint8_t index, bool is_finish)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScheduleModel::ScheduleSetByApp,%d,%d", index, is_finish);\r
+\r
+        ScheduleRevData_[index].date.assign(data->date);\r
+        ScheduleRevData_[index].topic.assign(data->topic);\r
+        ScheduleRevData_[index].time.assign(data->time);\r
+        ScheduleRevData_[index].content.assign(data->content);\r
+\r
+        if(true == is_finish)\r
+        {\r
+            ScheduleDataToInfo();\r
+        }\r
+    }\r
+\r
+    void ScheduleModel::ScheduleDataToInfo(void)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScheduleModel::ScheduleDataToInfo");\r
+        uint8_t i = 0;\r
+        uint8_t j = 0;\r
+        uint8_t count = 0;\r
+\r
+        memset(ScheduleDataInfo_, 0x0, sizeof(ScheduleListItemInfo) * SCHEDULE_DATA_COUNT_MAX*2);\r
+\r
+        count = 1;\r
+\r
+        for(i = 0, j = 0; i < count; i++)\r
+        {\r
+            if(0 == i)\r
+            {\r
+                ScheduleDataInfo_[j].DateStr.assign(ScheduleRevData_[i].date);\r
+                ScheduleDataInfo_[j].index = j;\r
+                ScheduleDataInfo_[j].is_date_item = true;\r
+\r
+                j++;\r
+                ScheduleDataInfo_[j].DateStr.assign(ScheduleRevData_[i].date);\r
+                ScheduleDataInfo_[j].TopicStr.assign(ScheduleRevData_[i].topic);\r
+                ScheduleDataInfo_[j].TimeStr.assign(ScheduleRevData_[i].time);\r
+                ScheduleDataInfo_[j].DataStr.assign(ScheduleRevData_[i].content);\r
+                ScheduleDataInfo_[j].index = j;\r
+                ScheduleDataInfo_[j].is_date_item = false;\r
+                ScheduleDataInfo_[j].child_index = 0;\r
+            }\r
+            else\r
+            {\r
+                if(0 == ScheduleRevData_[i].date.compare(ScheduleRevData_[i - 1].date))\r
+                {\r
+                    j++;\r
+                    ScheduleDataInfo_[j].DateStr.assign(ScheduleRevData_[i].date);\r
+                    ScheduleDataInfo_[j].TopicStr.assign(ScheduleRevData_[i].topic);\r
+                    ScheduleDataInfo_[j].TimeStr.assign(ScheduleRevData_[i].time);\r
+                    ScheduleDataInfo_[j].DataStr.assign(ScheduleRevData_[i].content);\r
+                    ScheduleDataInfo_[j].index = j;\r
+                    ScheduleDataInfo_[j].is_date_item = false;\r
+                    ScheduleDataInfo_[j].child_index = ScheduleDataInfo_[i - 1].child_index + 1;\r
+                }\r
+                else\r
+                {\r
+                    ScheduleDataInfo_[j].DateStr.assign(ScheduleRevData_[i].date);\r
+                    ScheduleDataInfo_[j].index = j;\r
+                    ScheduleDataInfo_[j].is_date_item = true;\r
+\r
+                    j++;\r
+                    ScheduleDataInfo_[j].DateStr.assign(ScheduleRevData_[i].date);\r
+                    ScheduleDataInfo_[j].TopicStr.assign(ScheduleRevData_[i].topic);\r
+                    ScheduleDataInfo_[j].TimeStr.assign(ScheduleRevData_[i].time);\r
+                    ScheduleDataInfo_[j].DataStr.assign(ScheduleRevData_[i].content);\r
+                    ScheduleDataInfo_[j].index = j;\r
+                    ScheduleDataInfo_[j].is_date_item = false;\r
+                    ScheduleDataInfo_[j].child_index = 0;\r
+                }\r
+            }\r
+                    \r
+            if((SCHEDULE_DATA_COUNT_MAX * 2) <= j)\r
+            {\r
+                break;\r
+            }\r
+        }\r
+\r
+        ScheduleDataItemCountSet(j + 1);\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScheduleModel::ScheduleDataToInfo,%d,%s", j, ScheduleDataInfo_[0].DateStr.c_str());\r
+    }\r
+\r
+\r
+    void C_ScheduleSetByApp(ScheduleRevData * data, uint8_t index, bool is_finish)\r
+    {\r
+        ScheduleModel::GetInstance().ScheduleSetByApp(data, index, is_finish);\r
+    }\r
+\r
+    int C_ScheduleDataReadFromFile()\r
+    {\r
+        return 0;\r
+    }\r
+\r
+    int C_ScheduleDataWriteToFile()\r
+    {\r
+        return 0;\r
+    }\r
+}\r
diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/src/SchedulePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/schedule/src/SchedulePresenter.cpp
new file mode 100644 (file)
index 0000000..a904095
--- /dev/null
@@ -0,0 +1,130 @@
+/*\r
+ * @Author: luozheng 1732036298@qq.com\r
+ * @Date: 2024-06-20 15:11:17\r
+ * @LastEditors: luozheng 1732036298@qq.com\r
+ * @LastEditTime: 2024-07-08 09:45:02\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/SchedulePresenter.cpp\r
+ */\r
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+#include "common/key_code.h"\r
+#include <custom_utils.h>\r
+#include "UiConfig.h"\r
+#include "schedule/include/SchedulePresenter.h"\r
+\r
+\r
+namespace OHOS\r
+{\r
+    // 当前Presenter属性实例化的内存指针\r
+    static SchedulePresenter * p_SchedulePresenterInstance = nullptr;\r
+\r
+    SchedulePresenter::SchedulePresenter()\r
+    {\r
+        ScheduleModel_ = &ScheduleModel::GetInstance();\r
+        p_SchedulePresenterInstance = this;\r
+    }\r
+\r
+    SchedulePresenter::~SchedulePresenter()\r
+    {\r
+        p_SchedulePresenterInstance = nullptr;\r
+    }\r
+\r
+    SchedulePresenter *SchedulePresenter::GetInstance()\r
+    {\r
+        return p_SchedulePresenterInstance;\r
+    }\r
+\r
+    // 启动时执行的逻辑\r
+    void SchedulePresenter::OnStart()\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SchedulePresenter::OnStart");\r
+        Presenter<ScheduleView, ScheduleModel>::OnStart();\r
+    }\r
+\r
+    // 页面已经展示后的调用逻辑\r
+    void SchedulePresenter::OnResume(void)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SchedulePresenter::OnResume");\r
+        Presenter<ScheduleView, ScheduleModel>::OnResume();\r
+        if (nullptr == view_)\r
+        {\r
+            return;\r
+        }\r
+\r
+        ScheduleListItemInfo * ItemInfo = ScheduleModel_->ScheduleDataInfoGet();\r
+        for (uint8_t i = 0; i < ScheduleModel_->ScheduleDataItemCountGet(); i++)\r
+        {\r
+            view_->AddItemToList(ItemInfo[i]);\r
+        }\r
+    }\r
+\r
+    // 页面准备切换到后台前执行的逻辑\r
+    void SchedulePresenter::OnPause(void)\r
+    {\r
+        // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SchedulePresenter::OnPause");\r
+        Presenter<ScheduleView, ScheduleModel>::OnPause();\r
+    }\r
+\r
+    // 页面完全置于后台时的逻辑。\r
+    void SchedulePresenter::OnStop(void)\r
+    {\r
+        // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SchedulePresenter::OnStop");\r
+        Presenter<ScheduleView, ScheduleModel>::OnStop();\r
+    }\r
+\r
+    bool SchedulePresenter::OnClick(UIView &view, const ClickEvent &event)\r
+    {\r
+        UNUSED(event);\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SchedulePresenter::OnClick");\r
+\r
+        if (nullptr == &view) \r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:OnClick", __LINE__);\r
+            return false;\r
+        } \r
+        else \r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:OnClick", __LINE__);\r
+            ScheduleListItem * item = static_cast<ScheduleListItem *>(&view);\r
+            view_->DisplayContentScreen(item->GetViewIndex());\r
+        }\r
+        return true;\r
+    }\r
+\r
+    bool SchedulePresenter::OnDrag(UIView &view, const DragEvent &event)\r
+    {\r
+        UNUSED(view);\r
+        // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SchedulePresenter::OnDrag");\r
+        if ((event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) // 拖动过程中判断是否是水平滑动\r
+        {\r
+            SchedulePresenter::X_DRAG_FLAG = true;\r
+        }\r
+        return true;\r
+    }\r
+\r
+    bool SchedulePresenter::OnDragEnd(UIView &view, const DragEvent &event)\r
+    {\r
+        UNUSED(view);\r
+        // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SchedulePresenter::OnDragEnd");\r
+        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && SchedulePresenter::X_DRAG_FLAG)\r
+        {\r
+            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+            SchedulePresenter::X_DRAG_FLAG = false;\r
+        }\r
+        return true;\r
+    }\r
+\r
+    bool SchedulePresenter::OnKeyAct(UIView &view, const KeyEvent &event) // 增加按键事件\r
+    {\r
+        UNUSED(view);\r
+        // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SchedulePresenter::OnKeyAct");\r
+        uint16_t keyID = event.GetKeyId();\r
+        uint16_t keyState = event.GetState();\r
+        // 如果是power键,且是亮屏状态,按键释放就返回上一级\r
+        if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)\r
+        {\r
+            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+        }\r
+        return true;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleView.cpp b/code/sdk/application/wearable/fd230app/nativeui/schedule/src/ScheduleView.cpp
new file mode 100644 (file)
index 0000000..aa22e2c
--- /dev/null
@@ -0,0 +1,448 @@
+\r
+#include "schedule/include/ScheduleView.h"\r
+#include "wearable_log.h"\r
+\r
+namespace OHOS\r
+{\r
+    static ScheduleView * p_ScheduleViewInstance = nullptr;\r
+\r
+    ScheduleView::ScheduleView()\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScheduleView::ScheduleView");\r
+        p_ScheduleViewInstance = this;\r
+    }\r
+\r
+    ScheduleView::~ScheduleView()\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScheduleView::~ScheduleView");\r
+        p_ScheduleViewInstance = nullptr;\r
+    }\r
+\r
+    ScheduleView * ScheduleView::GetInstance()\r
+    {\r
+        return p_ScheduleViewInstance;\r
+    }\r
+\r
+    void ScheduleView::OnStart()\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScheduleView::OnStart");\r
+        View<SchedulePresenter>::OnStart();\r
+\r
+        SetContainerView(new UIViewGroup());\r
+        if (nullptr == GetContainer())\r
+        {\r
+                       WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]", __LINE__);\r
+            return;\r
+        }\r
+        container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        container_->SetTouchable(true);\r
+        container_->SetDraggable(true);\r
+        container_->SetOnDragListener(presenter_);\r
+        container_->Add(InitNoDataScreen());\r
+        container_->Add(InitDataScreen());\r
+\r
+        RootView::GetInstance()->SetOnKeyActListener(presenter_);\r
+    }\r
+\r
+    void ScheduleView::OnSetUpView()\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScheduleView::OnSetUpView");\r
+        View<SchedulePresenter>::OnSetUpView();\r
+\r
+        DisplayMainScreen();\r
+        // GroupArray_\r
+        Draw();\r
+    }\r
+\r
+    void ScheduleView::OnTearDownView()\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScheduleView::OnTearDownView");\r
+        View<SchedulePresenter>::OnTearDownView();\r
+    }\r
+\r
+    void ScheduleView::OnStop()\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScheduleView::OnStop");\r
+        View<SchedulePresenter>::OnStop();\r
+        RootView::GetInstance()->ClearOnKeyActListener();\r
+\r
+        if (nullptr != container_)\r
+        {\r
+            container_->RemoveAll();\r
+            if (nullptr != NoDataGroup_)\r
+            {\r
+                NoDataGroup_->RemoveAll();\r
+                if (nullptr != LabelExt0_)\r
+                {\r
+                    delete LabelExt0_;\r
+                    LabelExt0_ = nullptr;\r
+                }\r
+                if (nullptr != ImageView_)\r
+                {\r
+                    delete ImageView_;\r
+                    ImageView_ = nullptr;\r
+                }\r
+                if (nullptr != LabelExt1_)\r
+                {\r
+                    delete LabelExt1_;\r
+                    LabelExt1_ = nullptr;\r
+                }\r
+                if (nullptr != LabelExt2_)\r
+                {\r
+                    delete LabelExt2_;\r
+                    LabelExt2_ = nullptr;\r
+                }\r
+\r
+                delete NoDataGroup_;\r
+                NoDataGroup_ = nullptr;\r
+            }\r
+            if (nullptr != DataGroup_)\r
+            {\r
+                DataGroup_->RemoveAll();\r
+                if (nullptr != ScheduleListAdapter_)\r
+                {\r
+                    delete ScheduleListAdapter_;\r
+                    ScheduleListAdapter_ = nullptr;\r
+                }\r
+                if (nullptr != ScheduleList_)\r
+                {\r
+                    delete ScheduleList_;\r
+                    ScheduleList_ = nullptr;\r
+                }\r
+\r
+                delete DataGroup_;\r
+                DataGroup_ = nullptr;\r
+            }\r
+            delete container_;\r
+            container_ = nullptr;\r
+        }\r
+    }\r
+\r
+    void ScheduleView::AddItemToList(const ScheduleListItemInfo &item)\r
+    {\r
+        ScheduleListAdapter_->AddListItem(item);\r
+    }\r
+\r
+    void ScheduleView::DisplayMainScreen(void)\r
+    {\r
+        if(true == ScheduleModel::GetInstance().ScheduleDataIsEmpty())\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:DisplayMainScreen", __LINE__);\r
+            NoDataGroup_->SetVisible(true);\r
+            DataGroup_->SetVisible(false);\r
+        }\r
+        else\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]:DisplayMainScreen", __LINE__);\r
+            NoDataGroup_->SetVisible(false);\r
+            DataGroup_->SetVisible(true);\r
+            ScheduleList_->RefreshList();\r
+        }\r
+    }\r
+\r
+    void ScheduleView::DisplayContentScreen(uint8_t index)\r
+    {\r
+        NoDataGroup_->SetVisible(false);\r
+        DataGroup_->SetVisible(false);\r
+\r
+        UIScrollView * temp_group = InitContentScreen();\r
+        if(nullptr == temp_group)\r
+            return;\r
+\r
+        container_->Add(temp_group);\r
+\r
+        ContentLabelExt0_->SetText(ScheduleModel::GetInstance().ScheduleInfoDateStrGet(index).c_str());\r
+\r
+        int16_t temp_y = 0;\r
+        temp_y = ContentLabelExt0_->GetY() + ContentLabelExt0_->GetHeight() + 50;\r
+        ContentLabelExt1_->SetY(temp_y);\r
+        ContentLabelExt1_->SetText(ScheduleModel::GetInstance().ScheduleInfoTopicStrGet(index).c_str());\r
+\r
+        temp_y = ContentLabelExt1_->GetY() + ContentLabelExt1_->GetHeight() + 20;\r
+        ContentLabelExt2_->SetY(temp_y);\r
+        ContentLabelExt2_->SetText(ScheduleModel::GetInstance().ScheduleInfoTimeStrGet(index).c_str());\r
+\r
+        temp_y = ContentLabelExt2_->GetY() + ContentLabelExt2_->GetHeight() + 20;\r
+        ContentLabelExt3_->SetY(temp_y);\r
+        ContentLabelExt3_->SetText(ScheduleModel::GetInstance().ScheduleInfoDataStrGet(index).c_str());\r
+\r
+        temp_y = ContentLabelExt3_->GetY() + ContentLabelExt3_->GetHeight() + 50;\r
+        ContentButton0_->SetY(temp_y);\r
+\r
+        temp_y = ContentButton0_->GetY() + ContentButton0_->GetHeight() + 20;\r
+        ContentButton1_->SetY(temp_y);\r
+    }\r
+\r
+    UIViewGroup * ScheduleView::InitNoDataScreen()\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]", __LINE__);\r
+        if(nullptr == NoDataGroup_)\r
+        {\r
+            NoDataGroup_ = new UIViewGroup();\r
+            if(nullptr == NoDataGroup_)\r
+                return nullptr;\r
+        }\r
+        NoDataGroup_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        NoDataGroup_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+        NoDataGroup_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+        NoDataGroup_->SetOnDragListener(presenter_);\r
+        NoDataGroup_->SetTouchable(true);\r
+        NoDataGroup_->SetDraggable(true);\r
+\r
+        if(nullptr == LabelExt0_)\r
+        {\r
+            LabelExt0_ = InitLabel(83, 50, 300, 35, 35, 30, STR_SCHEDULE_TITLE, Color::White().full);\r
+            if(nullptr == LabelExt0_)\r
+            {\r
+                return nullptr;\r
+            }\r
+        }\r
+\r
+        if(nullptr == ImageView_)\r
+        {\r
+            ImageView_ = new UIImageView();\r
+            if(nullptr == ImageView_)\r
+            {\r
+                return nullptr;\r
+            }\r
+\r
+            ImageView_->SetPosition(175, 150, 116, 120);\r
+            // ImageView_->SetAutoEnable(true);\r
+            // ImageView_->SetViewId(viewId);\r
+            ImageView_->SetSrc(NO_DATA_IMAGE);\r
+        }\r
+\r
+        if(nullptr == LabelExt1_)\r
+        {\r
+            LabelExt1_ = InitLabel(53, 330, 360, 35, 35, 30, STR_SCHEDULE_NO_DATA, 0xff999999);\r
+            if(nullptr == LabelExt1_)\r
+            {\r
+                return nullptr;\r
+            }\r
+        }\r
+\r
+        if(nullptr == LabelExt2_)\r
+        {\r
+            LabelExt2_ = InitLabel(53, 370, 360, 35, 35, 30, STR_SCHEDULE_NO_DATA_PROMPT, 0xff999999);\r
+            if(nullptr == LabelExt2_)\r
+            {\r
+                return nullptr;\r
+            }\r
+        }\r
+\r
+        NoDataGroup_->Add(LabelExt0_);\r
+        NoDataGroup_->Add(ImageView_);\r
+        NoDataGroup_->Add(LabelExt1_);\r
+        NoDataGroup_->Add(LabelExt2_);\r
+\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]", __LINE__);\r
+        return NoDataGroup_;\r
+    }\r
+\r
+    UIViewGroup * ScheduleView::InitDataScreen()\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]", __LINE__);\r
+        if(nullptr == DataGroup_)\r
+        {\r
+            DataGroup_ = new UIViewGroup();\r
+            if(nullptr == DataGroup_)\r
+                return nullptr;\r
+        }\r
+        DataGroup_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        DataGroup_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+        DataGroup_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+        DataGroup_->SetOnDragListener(presenter_);\r
+        DataGroup_->SetTouchable(true);\r
+        DataGroup_->SetDraggable(true);\r
+\r
+        if(nullptr == ScheduleListAdapter_)\r
+        {\r
+            ScheduleListAdapter_ = new ScheduleListAdapter();\r
+            if(nullptr == ScheduleListAdapter_)\r
+                return nullptr;\r
+            \r
+            ScheduleListAdapter_->SetItemClickListener(presenter_);\r
+        }\r
+\r
+        if(nullptr == ScheduleList_)\r
+        {\r
+            ScheduleList_ = new UIList();\r
+            if(nullptr == ScheduleList_)\r
+            {\r
+                return nullptr;\r
+            }\r
+        }\r
+        ScheduleList_->SetPosition(LIST_LEFT, LIST_TOP, LIST_WIDTH, LIST_HEIGHT);\r
+        // ScheduleList_->SetScrollBlankSize(30);\r
+        // ScheduleList_->SetSelectPosition(VERTICAL_RESOLUTION / 2);\r
+        ScheduleList_->SetDraggable(true);\r
+        ScheduleList_->SetThrowDrag(true);\r
+        // ScheduleList_->EnableAutoAlign(true);\r
+        ScheduleList_->SetAdapter(ScheduleListAdapter_);\r
+        // ScheduleList_->SetScrollStateListener(presenter_);\r
+        ScheduleList_->SetMaxScrollDistance(1000); // 1000: max scroll distance\r
+        ScheduleList_->SetSwipeACCLevel(800); // 800: compensation distance\r
+        ScheduleList_->SetDragACCLevel(5); // 5: drag acceleration\r
+        ScheduleList_->SetYScrollBarVisible(false);\r
+\r
+        ScheduleList_->SetRotateFactor(2); // 增加表冠控制\r
+        ScheduleList_->RequestFocus();\r
+\r
+        DataGroup_->Add(ScheduleList_);\r
+\r
+        return DataGroup_;\r
+    }\r
+\r
+    UIScrollView * ScheduleView::InitContentScreen()\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]", __LINE__);\r
+        if(nullptr == ContentGroup_)\r
+        {\r
+            ContentGroup_ = new UIScrollView();\r
+            if(nullptr == ContentGroup_)\r
+                return nullptr;\r
+        }\r
+        // ContentGroup_->SetViewIndex(ENUM_SCHEDULE_CONTENT_SCREEN);\r
+        ContentGroup_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        ContentGroup_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+        ContentGroup_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+        ContentGroup_->SetOnDragListener(presenter_);\r
+        ContentGroup_->SetTouchable(true);\r
+        ContentGroup_->SetDraggable(true);\r
+\r
+        ContentGroup_->SetScrollBlankSize(40);\r
+        ContentGroup_->SetReboundSize(40);\r
+        ContentGroup_->SetDirection(1);\r
+        ContentGroup_->SetMaxScrollDistance(1000);\r
+        ContentGroup_->SetThrowDrag(true);\r
+        ContentGroup_->RequestFocus();\r
+        ContentGroup_->SetRotateFactor(2);\r
+\r
+        if(nullptr == ContentLabelExt0_)\r
+        {\r
+            ContentLabelExt0_ = new UILabelExt();\r
+            if(nullptr == ContentLabelExt0_)\r
+                return nullptr;\r
+\r
+            ContentLabelExt0_->SetPosition(83, 50, 300, 35);\r
+            ContentLabelExt0_->SetStyle(STYLE_TEXT_FONT, 30);\r
+            ContentLabelExt0_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+            // ContentLabelExt0_->SetTextId(text_id);\r
+            ContentLabelExt0_->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+            ContentLabelExt0_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+            ContentLabelExt0_->SetRollSpeed(70);\r
+            ContentLabelExt0_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+            ContentLabelExt0_->SetStyle(STYLE_TEXT_COLOR, 0xffff5a36);\r
+        }\r
+\r
+        if(nullptr == ContentLabelExt1_)\r
+        {\r
+            ContentLabelExt1_ = new UILabelExt();\r
+            if(nullptr == ContentLabelExt1_)\r
+                return nullptr;\r
+\r
+            ContentLabelExt1_->SetPosition(53, 0, 360, 35);\r
+            ContentLabelExt1_->SetStyle(STYLE_TEXT_FONT, 30);\r
+            ContentLabelExt1_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+            // ContentLabelExt1_->SetTextId(text_id);\r
+            ContentLabelExt1_->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+            ContentLabelExt1_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP);\r
+            ContentLabelExt1_->SetRollSpeed(70);\r
+            ContentLabelExt1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+            ContentLabelExt1_->SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
+        }\r
+\r
+        if(nullptr == ContentLabelExt2_)\r
+        {\r
+            ContentLabelExt2_ = new UILabelExt();\r
+            if(nullptr == ContentLabelExt2_)\r
+                return nullptr;\r
+\r
+            ContentLabelExt2_->SetPosition(53, 0, 360, 35);\r
+            ContentLabelExt2_->SetStyle(STYLE_TEXT_FONT, 30);\r
+            ContentLabelExt2_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+            // ContentLabelExt2_->SetTextId(text_id);\r
+            ContentLabelExt2_->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+            ContentLabelExt2_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP);\r
+            ContentLabelExt2_->SetRollSpeed(70);\r
+            ContentLabelExt2_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+            ContentLabelExt2_->SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
+        }\r
+\r
+        if(nullptr == ContentLabelExt3_)\r
+        {\r
+            ContentLabelExt3_ = new UILabelExt();\r
+            if(nullptr == ContentLabelExt3_)\r
+                return nullptr;\r
+\r
+            int16_t y = ContentLabelExt2_->GetHeight();\r
+            ContentLabelExt3_->SetPosition(53, 0, 360, 35);\r
+            ContentLabelExt3_->SetStyle(STYLE_TEXT_FONT, 30);\r
+            ContentLabelExt3_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+            // ContentLabelExt3_->SetTextId(text_id);\r
+            ContentLabelExt3_->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
+            ContentLabelExt3_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP);\r
+            ContentLabelExt3_->SetRollSpeed(70);\r
+            ContentLabelExt3_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+            ContentLabelExt3_->SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
+        }\r
+\r
+        if(nullptr == ContentButton0_)\r
+        {\r
+            ContentButton0_ = new UIButton();\r
+            if(nullptr == ContentButton0_)\r
+                return nullptr;\r
+\r
+            ContentButton0_->SetPosition(93, 0, 280, 90);\r
+            // ContentButton0_->SetViewId();\r
+            ContentButton0_->SetStyle(STYLE_BACKGROUND_COLOR, 0xfffd5213);\r
+            ContentButton0_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+            ContentButton0_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffd5213, UIButton::PRESSED);\r
+        }\r
+\r
+        if(nullptr == ContentButton1_)\r
+        {\r
+            ContentButton1_ = new UIButton();\r
+            if(nullptr == ContentButton1_)\r
+                return nullptr;\r
+\r
+            ContentButton1_->SetPosition(93, 0, 280, 90);\r
+            // ContentButton1_->SetViewId();\r
+            ContentButton1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+            ContentButton1_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+            ContentButton1_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff191919, UIButton::PRESSED);\r
+        }\r
+\r
+        ContentGroup_->Add(ContentLabelExt0_);\r
+        ContentGroup_->Add(ContentLabelExt1_);\r
+        ContentGroup_->Add(ContentLabelExt2_);\r
+        ContentGroup_->Add(ContentLabelExt3_);\r
+        ContentGroup_->Add(ContentButton0_);\r
+        ContentGroup_->Add(ContentButton1_);\r
+\r
+        return ContentGroup_;\r
+    }\r
+\r
+    UILabelExt * ScheduleView::InitLabel(int16_t x, int16_t y, int16_t width, int16_t height,\r
+                                            uint16_t line_height, uint8_t font_size, uint16_t text_id, uint32_t text_color)\r
+    {\r
+        UILabelExt * LabelExt = new UILabelExt();\r
+        if(nullptr == LabelExt)\r
+        {\r
+            return nullptr;\r
+        }\r
+\r
+        LabelExt->SetPosition(x, y, width, height);\r
+        LabelExt->SetStyle(STYLE_TEXT_FONT, font_size);\r
+        LabelExt->SetStyle(STYLE_LINE_HEIGHT, line_height);\r
+        LabelExt->SetTextId(text_id);\r
+        LabelExt->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+        LabelExt->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        LabelExt->SetRollSpeed(70);\r
+        LabelExt->SetFont(DEFAULT_VECTOR_FONT_FILENAME, font_size);\r
+        LabelExt->SetStyle(STYLE_TEXT_COLOR, text_color);\r
+\r
+        return LabelExt;\r
+    }\r
+\r
+}
\ No newline at end of file
index 138b98b..89f5464 100644 (file)
@@ -34,6 +34,7 @@ extern "C"
     {
         screen_context_t *sc = power_display_get_screen_context();
         uint16_t current_slice_id = OHOS::NativeAbility::GetInstance().GetCurSliceId();
+
         for (uint16_t i = 0; i < sizeof(ignore_slice_ids) / sizeof(uint16_t); i++)
         {
             if (ignore_slice_ids[i] == current_slice_id)
@@ -47,8 +48,12 @@ extern "C"
                           sc->screen_off_time_interval);
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GetNativeAbilityState = %u",
                           OHOS::NativeAbility::GetInstance().GetNativeAbilityState());
+                               /*密码锁开关被打开*/
+        if (OHOS::ConfigModel::GetInstance()->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_PASSWORD_SWITCH))
+        {
             if (OHOS::NativeAbility::GetInstance().GetNativeAbilityState() == STATE_ACTIVE)
             {
+
 #if 0
                 if (current_slice_id != VIEW_MAIN)
                 {
@@ -64,21 +69,21 @@ extern "C"
                     }
                 }
 #endif
-                /*密码锁开关被打开*/
-                if (OHOS::ConfigModel::GetInstance()->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_PASSWORD_SWITCH))
-                {
                     /*如果是未上锁界面或者是密码锁界面*/
                     if (uapi_dev_runtime_get_lock_status() == 0)
                     {
                         /*重新进入一次主界面*/
                         OHOS::NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
-                        // 切换回主表盘页面
-                        OHOS::MainViewSample::GetInstance()->SwitchToClockPage();
                         /*上锁*/
                         uapi_dev_runtime_set_lock_status(1);
                         /*设置表盘状态*/
                         OHOS::MainModel::GetInstance().setDialState(OHOS::DialState::LOCK, true);
                     }
+                    if (uapi_dev_runtime_get_lock_status() == 1 && (current_slice_id == VIEW_CODED_LOCK))
+                    {
+                        /*重新进入一次主界面*/
+                        OHOS::NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
+                    }
                 }
             }
         }
index b345bf8..a48e9f4 100644 (file)
@@ -37,6 +37,7 @@ ${ROOT_DIR}/application/wearable/fd230app/nativeui/set_dial/include
 ${ROOT_DIR}/application/wearable/fd230app/nativeui/aivoice/include
 ${ROOT_DIR}/application/wearable/fd230app/nativeui/alarm/include
 ${ROOT_DIR}/application/wearable/fd230app/nativeui/musicplayer/include
+${ROOT_DIR}/application/wearable/fd230app/nativeui/schedule/include
 
 #/home/hcj/FD230/code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmClockModel.h
 #/home/hcj/FD230/code/sdk/middleware/services/media/foundation/player/interfaces/kits/player.h
index dd0dd71..a83924f 100644 (file)
@@ -82,6 +82,7 @@ extern "C" {
 #include <dirent.h>
 #include <ppg_service.h>
 #include "power_display_service.h"
+#include "ScheduleData.h"
 
 #define before_file_day 30
 
@@ -99,26 +100,48 @@ bool is_first_pair(void)
 
 bool Ble_Set_ScheduleInfo(uint8_t id,uint32_t timetamp_begin,uint32_t timetamp_end,char *title,char *data)
 {
-   OHOS::ScheduleInfo info;
-    info.id=id;
-    info.timetamp_begin=timetamp_begin;
-    info.timetamp_end=timetamp_end;
-    info.titel.clear();
-    info.content.clear();
-    info.titel.append(title,strlen(title)+1);
-    info.content.append(data,strlen(data)+1);
 
-    printf("///////////////////日程数据////////////////////\r\n");
-    printf("id:%d\r\n",info.id);
-    printf("timetamp_begin:%d\r\n",info.timetamp_begin);
-    printf("timetamp_end:%d\r\n",info.timetamp_end);
-    printf("titel:%s\r\n",info.titel.c_str());
-    printf("content:%s\r\n",info.content.c_str());
+    OHOS::ScheduleRevData info_;
+    
+    info_.topic.clear();
+    info_.content.clear();
+    info_.topic.append(title,strlen(title)+1);
+    info_.content.append(data,strlen(data)+1);
 
+    time_t currtime=timetamp_begin;
+    struct tm *timeinfo;
+    timeinfo = localtime(&currtime);
+    int y=timeinfo->tm_year+ 1900;
+    int m=timeinfo->tm_mon+1;
+    int d=timeinfo->tm_mday;
+    int h=timeinfo->tm_hour;
+    int min=timeinfo->tm_min;
+    char day_buf[24]={0};
+    sprintf_s(day_buf,24,"%d/%d",m,d);
+    info_.date.clear();
+    info_.date.append(day_buf,strlen(day_buf)+1);
+
+    currtime=timetamp_end;
+    timeinfo = localtime(&currtime);
+   
+    int h_=timeinfo->tm_hour;
+    int min_=timeinfo->tm_min;
+    char time_buf[24]={0};
+    sprintf_s(time_buf,24,"%02d:%02d-%02d:%02d",h,min,h_,min_);
+    info_.time.clear();
+    info_.time.append(time_buf,strlen(time_buf)+1);
+
+    printf("///////////////////日程数据////////////////////\r\n");
+    printf("date:%s\r\n",info_.date.c_str());
+    printf("time:%s\r\n",info_.time.c_str());
+    printf("titel:%s\r\n",info_.topic.c_str());
+    printf("content:%s\r\n",info_.content.c_str());
     printf("//////////////////////////////////////////////\r\n");
-    return true;
+    //printf("delete_before_file now day%d %d %d\r\n ",y,m,d);
 
-    
+    OHOS::C_ScheduleSetByApp(&info_, id - 1, false);
+
+    return true;
 }
 
 
index d2866b9..0738afc 100644 (file)
@@ -373,7 +373,10 @@ void MsgCenterNotifyChargePlugProc(const Topic topic, Request* req)
     }
     else
     {
-        NotificationManager::GetInstance()->ShowNotify(ShowChargeingNotify, (uint16_t)topic, true);
+        if (CheckPriority(topic))
+        {
+            NotificationManager::GetInstance()->ShowNotify(ShowChargeingNotify, (uint16_t)topic, true);
+        }
     }
    
 }
@@ -433,8 +436,11 @@ void MsgCenterNotifyLowPowerAlarmProc(const Topic topic, Request* req)
         display_api->set_screen_set_keepon_timeout(1000*5);
 
         set_lowpower_falg(0);
-        NotificationManager::GetInstance()->SetNotifyPriority(PRIORITY_TWO);
-        NotificationManager::GetInstance()->ShowNotify(showlowpowerNotify, (uint16_t)topic, true);
+        if (CheckPriority(topic))
+        {
+            NotificationManager::GetInstance()->SetNotifyPriority(PRIORITY_TWO);
+            NotificationManager::GetInstance()->ShowNotify(showlowpowerNotify, (uint16_t)topic, true);
+        }
     }
     else
     {
@@ -448,9 +454,11 @@ void MsgCenterNotifyLowPowerAlarmProc(const Topic topic, Request* req)
         set_lowpower_falg(1);
         if (NotificationManager::GetInstance()->HasNotifyShowing())
         NotificationManager::GetInstance()->StopNotify();
-
+        if (CheckPriority(topic))
+        {
         NotificationManager::GetInstance()->SetNotifyPriority(PRIORITY_ONE);
         NotificationManager::GetInstance()->ShowNotify(showlowpowerNotify, (uint16_t)topic, true);
+        }
 
     }
 
@@ -708,6 +716,7 @@ void MsgCenterNotifyMessageProc(const Topic topic, Request* req)
     unused(req);
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "MsgCenterNotifyMessageProc !");
     if (CheckPriority(topic)) {
+        NotificationManager::GetInstance()->SetNotifyPriority(PRIORITY_THREE);
         NotificationManager::GetInstance()->ShowNotify(showMessageNotify, (uint16_t)topic, true);
     }
 }
@@ -730,8 +739,10 @@ void MsgCenterNotifySleepProc(const Topic topic, Request* req)
     {
         NotificationManager::GetInstance()->SetNotifyPriority(PRIORITY_THREE);
     }
- 
-    NotificationManager::GetInstance()->ShowNotify(showSleepNotify, (uint16_t)topic, true);
+    if (CheckPriority(topic))
+    {
+        NotificationManager::GetInstance()->ShowNotify(showSleepNotify, (uint16_t)topic, true);
+    }
     
 }
 #endif
@@ -1151,8 +1162,12 @@ void MsgCenterNotifyArAlertProc(const Topic topic, Request* req)
     {
         return;
     }
-    MotionRecognitionViewEventListener::GetInstance().SetMotionTypeId(*motionType);
-    NotificationManager::GetInstance()->ShowNotify(showMotionRecognitionNotify, (uint16_t)topic, true);
+    if (CheckPriority(topic))
+    {
+        MotionRecognitionViewEventListener::GetInstance().SetMotionTypeId(*motionType);
+        NotificationManager::GetInstance()->ShowNotify(showMotionRecognitionNotify, (uint16_t)topic, true);
+    }
+   
 }
 
 void MsgCenterNotifyInactivityProc(const Topic topic, Request *req)
@@ -1195,7 +1210,10 @@ void MsgCenterNotifyInactivityProc(const Topic topic, Request *req)
         case INACTIVITY_MODE_SEDENTARY_OUTPUT:
             if(cywee_Inactivity_Info->status == 1)
             {
-                NotificationManager::GetInstance()->ShowNotify(showSedentaryReminderNotify, (uint16_t)topic, true);
+                if (CheckPriority(topic))
+                {
+                    NotificationManager::GetInstance()->ShowNotify(showSedentaryReminderNotify, (uint16_t)topic, true);
+                }
             } 
             else if(cywee_Inactivity_Info->status==9)
             {
index 450299e..ed4299f 100755 (executable)
@@ -210,12 +210,12 @@ target = {
     },
     'brandy-native-js-ct': {
         'base_target_name': 'brandy-native-js',
-        'defines': ['SUPPORT_TELECOM_DMP'],
+        'defines': ['SUPPORT_TELECOM_DMP'],     #电信
         'fs_image_path':'fd230',
     },
     'brandy-native-js-cm': {
         'base_target_name': 'brandy-native-js',
-        'defines': ['SUPPORT_CHINA_MOBILE_DMP'],
+        'defines': ['SUPPORT_CHINA_MOBILE_DMP'], #移动
         'fs_image_path':'fd230',
     }, 
     'brandy-native-js-obu': {
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/Schedule/IMAGE_ITEM_ARROW.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/Schedule/IMAGE_ITEM_ARROW.bin
new file mode 100644 (file)
index 0000000..4822819
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cba8ef0eaffc79e3918a64cac8e3e607f0f3522b827f2e02e855dd03017dd846
+size 360
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_4G.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_4G.bin
deleted file mode 100644 (file)
index 6350060..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:34598428db956980c4a4872fcac30bd2269a3e95af03bae8a7cd2e29356e642f
-size 1560
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_4G_OFF.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_4G_OFF.bin
new file mode 100644 (file)
index 0000000..73589e2
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:577ac3d636d28e778810904a9f3c7050e6fb8f5e9ca4e3b5e89977ca96160d08
+size 6824
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_4G_ON.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_4G_ON.bin
new file mode 100644 (file)
index 0000000..c043b15
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:690e6a09139ecfd6f5c33814cee1fec19603f9e9216055778969ecb69c72bda0
+size 6824
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_BLUETOOTH.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_BLUETOOTH.bin
deleted file mode 100644 (file)
index f850345..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6db591e3eb1bb54b9010e4c57c5b0f40d28a1290e95f28a9c0920ba7369e0171
-size 792
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_BT_CONNECT.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_BT_CONNECT.bin
new file mode 100644 (file)
index 0000000..137a642
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb23385c5e0f30741f1daee38327f8ee129098caaffc0e54c1e79891f7e8075a
+size 6824
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_BT_DISCONNECT.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_BT_DISCONNECT.bin
new file mode 100644 (file)
index 0000000..7c0526d
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b1fd43a729394c9369ac00fd9a9e535372cbd938a0fcb6fa2f32fdc4d43a6624
+size 6824
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_DNOTDISTURB.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_DNOTDISTURB.bin
deleted file mode 100644 (file)
index 776256e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:50053d273b582b274ff2e748de6940cc52312ee25adff7bf2bbd2a9e9e27960f
-size 1560
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_DNOTDISTURB_OFF.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_DNOTDISTURB_OFF.bin
new file mode 100644 (file)
index 0000000..4a7bfa7
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2fc9288c4f82c47c2a7e5ae8de6c7f8f6416029c093035bafe175e3193e60fdf
+size 6824
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_DNOTDISTURB_ON.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_DNOTDISTURB_ON.bin
new file mode 100644 (file)
index 0000000..8c124ea
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ce406b51adb4a8eeac02219635a7f7798131374b30c552e6a2c4b520da0cd741
+size 6824
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_HD.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_HD.bin
new file mode 100644 (file)
index 0000000..ac24f43
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ccd08d684b039120a694a5063eb0317713d41989329beecd482101ab224f8678
+size 1048
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_LIGHTING.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_LIGHTING.bin
new file mode 100644 (file)
index 0000000..f066d26
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5589fba2c549bc7cea35e988c37a9b1345c07f836d428a9edec0dbedde177724
+size 6824
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SAVEPOWER.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SAVEPOWER.bin
deleted file mode 100644 (file)
index c403103..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:08218c18c5b6abb4d2427c0e9694e0d97f0046f30ce7f7f3e291f322bc10542d
-size 1560
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SAVEPOWER_OFF.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SAVEPOWER_OFF.bin
new file mode 100644 (file)
index 0000000..5e0cd86
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8120777259ef1138317ed77edea5e063c1c5f3d484bcf0a2e483d9bbbae617d4
+size 6824
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SAVEPOWER_ON.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SAVEPOWER_ON.bin
new file mode 100644 (file)
index 0000000..c9bb6f4
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:308fc80312070e3d36152fcac317a84239c4d80ee4dae39bdcde8427ef516abb
+size 6824
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SELECT_1.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SELECT_1.bin
new file mode 100644 (file)
index 0000000..e481892
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7b174742055efa5938b64551a55fd1628a53b094a955030eade2e5805972df28
+size 312
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SELECT_2.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SELECT_2.bin
new file mode 100644 (file)
index 0000000..505e6b7
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6512f32f946b26859a11c628d49a57a518b59127aab38a669cf70a888b5da098
+size 312
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SLEEP_OFF.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SLEEP_OFF.bin
new file mode 100644 (file)
index 0000000..8625175
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6d6f0d7144c7fa7086c43f0fd74f3f1fb7c2f840bf43c9f16f5e2fe9d9e0fa91
+size 6824
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SLEEP_ON.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/DROPDOWN_SLEEP_ON.bin
new file mode 100644 (file)
index 0000000..1cb95ca
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:39d90507886017aff1e024f2a95f468e6426f4ee01d8c02d12b21d5f4488ac91
+size 6824
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/bluetooth_connect.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/bluetooth_connect.bin
new file mode 100644 (file)
index 0000000..18b6cb1
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1ef5835d358587a909b57c87e2ea4884d02ed97db2c7edf9ed0e0dc24d42180a
+size 408
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/bluetooth_disconnect.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/bluetooth_disconnect.bin
new file mode 100644 (file)
index 0000000..37b9a13
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef114c9bf2ab68c7d416636aa83abc9cb65bb64088b6b4df3c83ce56d7f9b123
+size 408
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/earphones_connect.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/earphones_connect.bin
new file mode 100644 (file)
index 0000000..1056a44
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:319061f20e42b134cdd01344fa79bb3ac706643a7da68c3b8199f6b6d630bce7
+size 408
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/earphones_disconnect.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/earphones_disconnect.bin
new file mode 100644 (file)
index 0000000..48b61e9
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d197881a9b85fa97faa6bd7a94d684d55ca7680ef661d758b9d259e289751a22
+size 408
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/phone_connect.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/phone_connect.bin
new file mode 100644 (file)
index 0000000..10762d4
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9df2a4a49dff299179c5b4854f6bd4136d297117f4e20e8430122fb6c0cc7953
+size 312
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/phone_disconnect.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dropdown/phone_disconnect.bin
new file mode 100644 (file)
index 0000000..bf4de2d
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ec2ff4171692a30af22a443998788d830965c80ea4a6c909f2a6dfcf3cb48dad
+size 408
index 646f750..64efbc2 100644 (file)
@@ -1,5 +1,5 @@
 #!/bin/bash
-#set -e
+#set -ex
 version=HEAD
 DATE=$(date  +%Y%m%d.%H%M%S)
 HOMEDIR=$PWD
@@ -69,7 +69,7 @@ cd $HOMEDIR
 }
 
 genpatch $PWD
-echo done
+echo $BACKUPDIR_HOME done