闹钟相关文件夹合并
authorluozheng <1732036298@qq.com>
Mon, 19 May 2025 08:13:15 +0000 (16:13 +0800)
committerluozheng <1732036298@qq.com>
Mon, 19 May 2025 08:13:15 +0000 (16:13 +0800)
59 files changed:
code/sdk/application/wearable/fd230/nativeapp/nativeui/aivoice/src/AiVoicePresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/include/AlarmClockModel.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/include/AlarmClockModelC.h [new file with mode: 0644]
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/include/AlarmCloseRingView.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/include/AlarmConfigView.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/include/AlarmJudgeView.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/include/AlarmMaxClock.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/include/AlarmNewTimeView.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/include/AlarmPresenter.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/include/AlarmSetTimeView.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/include/AlarmSetWeekView.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/include/MainAlarmView.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/src/AlarmClockModel.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/src/AlarmCloseRingView.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/src/AlarmConfigView.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/src/AlarmJudgeView.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/src/AlarmMaxClock.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/src/AlarmNewTimeView.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/src/AlarmPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/src/AlarmSetTimeView.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/src/AlarmSetWeekView.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/src/MainAlarmView.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarmclockmanage/src/AlarmClockManage.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarmclocktimerconfig/include/AlarmClockTimerConfig.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/bloodoxygen/src/BloodDetectionPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/bloodoxygen/src/BloodResultPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/brightnesslevel/src/BrightnessLevelPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/calculator/src/CalculatorPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/src/CalendarPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/countdown/src/MainCountDownPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/displaybrightness/src/DisplayBrightnessPresent.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/dnotdisturb/src/DnotDisturbPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/findphone/src/FindPhonePresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/flashlight/src/FlashlightPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/goal/src/Maingoalpresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/heartrate/src/HeartChartPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/heartrate/src/HeartDetectionPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/heartrate/src/HeartResultPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/languagecode/src/LanguageSwitchPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/message/src/MessagePresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/message/src/MessageShowPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/musicplayer/src/MusicPlayerPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/phone/src/MainPhonePresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/record/src/RecordingPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/respiratorytraining/src/RespiratoryTrainingPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/schedule/src/SchedulePresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/sleep/src/SleepControlPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/src/SleepModePresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/stopwatch/src/MainStopWatchPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/takephotos/src/TakephotosModel.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/takephotos/src/TakephotosPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/themestyle/src/ThemeStylePresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/src/TraingNomalPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/traingrecord/src/TraingRecordPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/weather/src/MainWeatherPresenter.cpp
code/sdk/zhihui/utils/custom_cmd_service.c

index cfdcb8c..3b04183 100644 (file)
@@ -471,7 +471,7 @@ namespace OHOS
             if (scrollView == view_->GetAiVoiceScrollView(AIVOICE_STARTCHAT_VIEWID))
             {
                 /*AI对话界面右滑退出当前Slice*/
-                // NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+                // NativeAbility::GetInstance().Back();
                 DragLeftToRightChangeAIModel();
             }
             else if (scrollView == view_->GetAiVoiceScrollView(AIVOICE_ALERT_APPBLUETOOTH_AND_4GNETWORK_VIEWID))
@@ -530,7 +530,7 @@ namespace OHOS
         // 如果是power键,且是亮屏状态,按键释放就返回上一级
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
             AiVoiceModel::GetInstance().CancelCurAIChat();
         }
         return true;
index 074df44..59177ef 100644 (file)
@@ -86,6 +86,7 @@ public:
     bool GetClockWeek(int16_t alarmNum, uint8_t *alarmWeek);\r
     bool GetClockStatus(int16_t num, uint8_t *alarmEnable);\r
     void GetPopTimeData(int16 *hour, int16* min);\r
+    void SetPopTimeData(int16 hour, int16 min);\r
     bool GetClockListenerTime(uint32_t &alarmTime);\r
     bool GetListenClockId(uint8_t *alarmId);\r
     void GetAlarmCallId(uint8_t *alarmId);\r
@@ -104,7 +105,7 @@ public:
     void NextDayNotify(void);\r
     void ResetRingClockStatus(void);\r
     void DeactAudioInter(void);\r
-    void PushAlarmClockData(AlarmClockQueueMsg alarmClockMsg);\r
+    // void PushAlarmClockData(AlarmClockQueueMsg alarmClockMsg);\r
     void PopInterCancelMusic(void);\r
     void PopInterPlayMusic(void);\r
     void SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8 week, uint16_t alarmListener, uint16_t setListener);\r
@@ -115,19 +116,28 @@ public:
     void AlarmGetClockNum(void);\r
     int AlarmPlayerStat();\r
     int AlarmPlayerInit(void);\r
+    int AlarmPlayerInit_BY_fir_name(char *);\r
+\r
     int AlarmPlayerStart();\r
+    int testPlayerStart(char *);\r
     int AlarmPlayerStop();\r
-private:\r
+    int InitAlarmData(void);\r
+\r
+    void UpdateAlarmInfoByAppSet(void);\r
+    void CancelAlarmRing();\r
+    void DelayAlarmRing();\r
     void SetAlarmId(uint8_t id);\r
     void DeleteAlarmId(uint8_t id);\r
-    void NewFirstTime(void);\r
+\r
+private:\r
+    // void NewFirstTime(void);\r
     uint8_t GetAlarmId(void);\r
-    int32_t SaveGlobalAlarmToFile(void);\r
-    int32_t GetAlarmGlobalData(uint8 id, AlarmClockInfo *info);\r
-    int32_t InitAlarmClockData(void);\r
-    int32_t FetchedAlarmClockData(AlarmClockQueueMsg *alarmClockMsg);\r
+    // int32_t SaveGlobalAlarmToFile(void);\r
+    // int32_t GetAlarmGlobalData(uint8 id, AlarmClockInfo *info);\r
+    // int32_t InitAlarmClockData(void);\r
+    // int32_t FetchedAlarmClockData(AlarmClockQueueMsg *alarmClockMsg);\r
     int32_t GettManagement(AlarmClockManagement *management);\r
-    int InitAlarmData(void);\r
+    \r
     bool JudgeClockModel(uint16_t alarmNum);\r
     std::string uri;\r
     std::shared_ptr<PlayerCallback> playerCallback{nullptr};\r
@@ -140,7 +150,7 @@ private:
     std::shared_ptr<Player> playerCtr{nullptr};\r
     AlarmClockManagement managementAlarm;\r
     uint8_t alarmId[5]{0}; // 事件闹钟的个数是5个\r
-    uint16_t alarmSerial{0};\r
+    uint16_t alarmSerial{0};//闹钟数量\r
     uint16_t clockListener{0};\r
     uint16 preSliceId{0};\r
     uint32_t listAlarmClockNum{0};\r
@@ -152,8 +162,8 @@ private:
     List<AlarmClockQueueMsg> listAlarmClock;\r
 };\r
 \r
-extern "C" {\r
-    void PushAlarmClockDataToModel(AlarmClockQueueMsg alarmClockMsg);\r
-}\r
+// extern "C" {\r
+//     void PushAlarmClockDataToModel(AlarmClockQueueMsg alarmClockMsg);\r
+// }\r
 }\r
 #endif // ALARM_CLOCK_MODEL_H\r
diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/include/AlarmClockModelC.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/include/AlarmClockModelC.h
new file mode 100644 (file)
index 0000000..86f7782
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-09-25 16:48:17
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-10-24 14:14:08
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmClockModelC.h
+ */
+
+#ifndef ALARM_CLOCK_MODEL_C_H
+#define ALARM_CLOCK_MODEL_C_H
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C"
+{
+#endif
+#endif
+#include <stdint.h>
+
+    void delete_alarm_id(uint8_t id);
+
+    void set_alarm_id(uint8_t id);
+
+    int testPlayerStart_(char *);
+
+    int AlarmPlayerStop_(void);
+
+    void custom_timer_callback(void);
+   
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif
+#endif
\ No newline at end of file
index f995da7..c5cfb00 100644 (file)
@@ -16,6 +16,7 @@
 #include "UiConfig.h"\r
 #include "AlarmClockModel.h"\r
 #include "ChangeSliceListener.h"\r
+#include "components/ui_label_ext.h"\r
 \r
 namespace OHOS {\r
 class AlarmCloseRingView {\r
index 48c844c..3982b02 100644 (file)
@@ -19,6 +19,8 @@
 #include "common/screen.h"\r
 #include "gfx_utils/graphic_log.h"\r
 #include "AlarmClockModel.h"\r
+#include "components/ui_label_button_ext.h"\r
+#include "components/ui_label_ext.h"\r
 \r
 namespace OHOS {\r
 class AlarmConfigView {\r
@@ -29,22 +31,18 @@ public:
     static AlarmConfigView *GetInstance(void);\r
     void RefreshConfig(const uint32 time, uint8 week, uint16_t alarmNum);\r
 private:\r
-    UILabelButton *deleteImage{nullptr};\r
-    UIScrollView *configScroll{nullptr};\r
+    void InitLabel();\r
+    void InitButton();\r
     UIScrollView *group{nullptr};\r
-    UILabel *editLabel{nullptr};\r
-    UIDigitalClock *labelTime{nullptr};\r
-    UILabel *labelSetTime{nullptr};\r
-    UILabel *labelDay{nullptr};\r
-    UILabel *labelSetWeek{nullptr};\r
-    UILabel *labelChangeName{nullptr};\r
-    UILabel *labelSetName{nullptr};\r
-    UIImageView *changeIcon1{nullptr};\r
-    UIImageView *changeIcon2{nullptr};\r
-    UIImageView *changeIcon3{nullptr};\r
-    UILabel *CreateConfigLabel(const char *buttonText, int16_t labelFont, int16_t x, int16_t y, int16_t width);\r
-    void CreateConfigButton(void);\r
-    void CreateChangeIcons(void);\r
+    UIScrollView *configScroll{nullptr};\r
+    UILabelExt *editLabel{nullptr};\r
+    UILabelButtonExt* button1{nullptr};\r
+    UILabelButtonExt* button2{nullptr};\r
+    UILabelExt *labelTime{nullptr};\r
+    UILabelExt *labelSetTime{nullptr};\r
+    UILabelExt *labelDay{nullptr};\r
+    UILabelExt *labelSetWeek{nullptr};\r
+    char showtime[12]{0};\r
 };\r
 } // namespace OHOS\r
 #endif // ALARM_CONFIG_VIEW_H
\ No newline at end of file
index c5a7cd1..e13d6e6 100644 (file)
 #include "common/screen.h"\r
 #include "AlarmPresenter.h"\r
 #include "AlarmClockModel.h"\r
-\r
+#include "components/ui_label_ext.h"\r
+#include "components/ui_label_button_ext.h"\r
 namespace OHOS {\r
 class AlarmJudgeView {\r
 public:\r
     AlarmJudgeView();\r
     virtual ~AlarmJudgeView();\r
     UIScrollView *InitJudgeView();\r
-    void OnStop();\r
 private:\r
-    void CreateImage(void);\r
-    UIScrollView *container{nullptr};\r
-    UILabel *labelText{nullptr};\r
-    UIImageView *imageViewDelete{nullptr};\r
-    UIImageView *imageViewTrue{nullptr};\r
+    UIScrollView * InitDeleteScreen();\r
+    void DeinitDeleteScreen();\r
+    UIScrollView * DeleteGroup_{nullptr};\r
+    UILabelExt * DeleteTitleLabelExt_{nullptr};\r
+    UILabelExt * DeletePromptLabelExt_{nullptr};\r
+    UILabelButtonExt * DeleteCancelButton_{nullptr};\r
+    UILabelButtonExt * DeleteOKButton_{nullptr};\r
+\r
+    #define SCREEN_WIDTH (Screen::GetInstance().GetWidth())\r
+    #define SCREEN_HEIGHT (Screen::GetInstance().GetHeight())\r
 };\r
 } // namespace OHOS\r
 #endif
\ No newline at end of file
index f5798f4..fb1eef0 100644 (file)
@@ -22,6 +22,7 @@
 #include "common/screen.h"\r
 #include "AlarmPresenter.h"\r
 #include "AlarmClockModel.h"\r
+#include "components/ui_label_ext.h"\r
 \r
 namespace OHOS {\r
 void CancelScanHandle(void);\r
@@ -35,7 +36,7 @@ public:
     void AlarmMaxDelayExit(void);\r
 private:\r
     UIScrollView *container{nullptr};\r
-    UILabel *labelText{nullptr};\r
+    UILabelExt *labelText{nullptr};\r
 };\r
 } // namespace OHOS\r
 #endif
\ No newline at end of file
index ec6286a..9aac650 100644 (file)
@@ -15,6 +15,7 @@
 #include "View.h"\r
 #include "AlarmPresenter.h"\r
 #include "AlarmClockModel.h"\r
+#include "components/ui_label_button_ext.h"\r
 \r
 namespace OHOS {\r
 class AlarmNewTimeView : public UITimePicker::SelectedListener {\r
@@ -27,10 +28,9 @@ public:
 private:\r
     void CreateLabelTime(void);\r
     UIScrollView *group{nullptr};\r
-    UILabel *title{nullptr};\r
+    UILabelExt *title{nullptr};\r
     UITimePicker *picker{nullptr};\r
-    UILabelButton *labelButton{nullptr};\r
-    UILabel *GetTitleLabel(const char *titleName);\r
+    UILabelButtonExt *labelButton{nullptr};\r
 };\r
 } // namespace OHOS\r
 #endif // ALARM_SET_TIME_VIEW_H
\ No newline at end of file
index 11ba16c..c28a0c1 100644 (file)
 #include "wearable_log.h"\r
 #include "color.h"\r
 \r
+#include "common/key_code.h"\r
+#include "components/ui_label_ext.h"\r
+#include "components/ui_swipe_view.h"\r
+\r
 namespace OHOS {\r
-constexpr char* EVERY_DAY = (char *)"每天";\r
+constexpr char* EVERY_DAY = (char *)"每日";\r
 constexpr char* DO_NOT_REPEAT = (char *)"不重复";\r
 \r
 constexpr char* MON_DAY = (char *)"一 ";\r
@@ -40,6 +44,17 @@ constexpr char* FRI_DAY = (char *)"五 ";
 constexpr char* SAT_DAY = (char *)"六 ";\r
 constexpr char* SUN_DAY = (char *)"日";\r
 \r
+constexpr char* EVERY_DAY_EN = (char *)"Everyday";\r
+constexpr char* DO_NOT_REPEAT_EN = (char *)"no-repeat";\r
+\r
+constexpr char* MON_DAY_EN = (char *)"Mon ";\r
+constexpr char* TUE_DAY_EN = (char *)"Tue ";\r
+constexpr char* WED_DAY_EN = (char *)"Wed ";\r
+constexpr char* THUR_DAY_EN = (char *)"Thu ";\r
+constexpr char* FRI_DAY_EN = (char *)"Fri ";\r
+constexpr char* SAT_DAY_EN = (char *)"Sat ";\r
+constexpr char* SUN_DAY_EN = (char *)"Sun";\r
+\r
 constexpr char* SET_TIME = (char *)"settime";\r
 constexpr char* SET_WEEK = (char *)"setweek";\r
 constexpr char* ALARM_CLOCK_DELETE = (char *)"alarmclockdelete";\r
@@ -47,8 +62,9 @@ constexpr char* ALARM_NEXT = (char *)"alarmnext";
 constexpr char* ALARM_OK = (char *)"alarmok";\r
 constexpr char* JUDGE_DELETE = (char *)"judgedelete";\r
 constexpr char* JUDGE_TRUE = (char *)"judgetrue";\r
-constexpr char* ADD_BUTTON = (char *)"addbutton";\r
+constexpr char* ADD_BUTTON = (char *)"addbutton"; // 增加闹钟按钮viewId\r
 \r
+//星期设置按钮的viewId周一到周日\r
 constexpr char* MONDAY = (char *)"monday";\r
 constexpr char* TUESDAY = (char *)"tuesday";\r
 constexpr char* WEDNESDAY = (char *)"wednesday";\r
@@ -56,8 +72,9 @@ constexpr char* THURSDAY = (char *)"thursday";
 constexpr char* FRIDAY = (char *)"friday";\r
 constexpr char* SATURDAY = (char *)"saturday";\r
 constexpr char* SUNDAY = (char *)"sunday";\r
-constexpr char* ALARM_WEEK_OK = (char *)"alarmweekok";\r
+constexpr char* ALARM_WEEK_OK = (char *)"alarmweekok"; // 星期设置确认按钮viewId\r
 \r
+// 闹钟开关按钮的viewId\r
 constexpr char* ALARM_STATUS_ONE  = (char *)"alarmstatus0";\r
 constexpr char* ALARM_STATUS_TWO  = (char *)"alarmstatus1";\r
 constexpr char* ALARM_STATUS_THREE  = (char *)"alarmstatus2";\r
@@ -74,24 +91,36 @@ constexpr char* ALARM_CLOCK_SIX = (char *)"alarmclock5";
 \r
 constexpr int16_t SET_SIX = 6;\r
 \r
-constexpr char* ALARM_STATUS[6] = {ALARM_STATUS_ONE, ALARM_STATUS_TWO, ALARM_STATUS_THREE, // 闹钟按钮最大个数为6个\r
+constexpr char* ALARM_STATUS[6] = {ALARM_STATUS_ONE, ALARM_STATUS_TWO, ALARM_STATUS_THREE, // 闹钟开关按钮viewId最大个数为6个\r
     ALARM_STATUS_FOUR, ALARM_STATUS_FIVE, ALARM_STATUS_SIX};\r
 constexpr char* ALARM_CLOCK[6] = {ALARM_CLOCK_ONE, ALARM_CLOCK_TWO, ALARM_CLOCK_THREE, // 闹钟个数最大个数为6个\r
     ALARM_CLOCK_FOUR, ALARM_CLOCK_FIVE, ALARM_CLOCK_SIX};\r
-constexpr char* WEEK_CONTAINER[7] = {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; // 日期按钮最大个数为7个\r
+constexpr char* WEEK_BUTTON_VIEWID[7] = {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; // 星期按钮viewId最大个数为7个\r
+\r
+\r
+constexpr char * ALARM_ITEM_DELETE_00 = (char *)"ALARM_ITEM_DELETE_00";\r
+constexpr char * ALARM_ITEM_DELETE_01 = (char *)"ALARM_ITEM_DELETE_01";\r
+constexpr char * ALARM_ITEM_DELETE_02 = (char *)"ALARM_ITEM_DELETE_02";\r
+constexpr char * ALARM_ITEM_DELETE_03 = (char *)"ALARM_ITEM_DELETE_03";\r
+constexpr char * ALARM_ITEM_DELETE_04 = (char *)"ALARM_ITEM_DELETE_04";\r
+constexpr char * ALARM_ITEM_DELETE_05 = (char *)"ALARM_ITEM_DELETE_05";\r
+constexpr char * ALARM_ITEM_DELETE[6] = {ALARM_ITEM_DELETE_00, ALARM_ITEM_DELETE_01, ALARM_ITEM_DELETE_02, \r
+                                            ALARM_ITEM_DELETE_03, ALARM_ITEM_DELETE_04, ALARM_ITEM_DELETE_05};\r
 \r
 typedef enum {\r
-    MAIN_INTERFACE = 0,\r
-    CHANGE_INTERFACE_CONFIG,\r
-    CHANGE_INTERFACE_SET_TIME,\r
-    CHANGE_INTERFACE_SET_WEEK,\r
-    CHANGE_INTERFACE_JUDGE,\r
-    CHANGE_INTERFACE_NEW_TIME,\r
+    MAIN_INTERFACE = 0,        // 主界面\r
+    CHANGE_INTERFACE_CONFIG,   // 闹钟编辑页面[包括更改时间和更改星期]\r
+    CHANGE_INTERFACE_SET_TIME, // 时间设置页面\r
+    CHANGE_INTERFACE_SET_WEEK, //星期设置页面\r
+    CHANGE_INTERFACE_JUDGE,    // 确认删除闹钟页面\r
+    CHANGE_INTERFACE_NEW_TIME, // 新建闹钟的[时间设置]页面\r
     CHANGE_INTERFACE_MAXCLOCK,\r
 } InterfacesId;\r
 \r
-class AlarmStatusBtnChangeListener : public OHOS::UICheckBox::OnChangeListener\r
-{\r
+constexpr int16_t NEW_TIME_LISTENER = 0; // 新建闹钟的[时间设置]标志\r
+constexpr int16_t SET_TIME_LISTENER = 1; // 更新已存在闹钟的[星期设置]标志\r
+\r
+class AlarmStatusBtnChangeListener : public OHOS::UICheckBox::OnChangeListener {\r
 public:\r
     explicit AlarmStatusBtnChangeListener(UIView *uiView)\r
     {\r
@@ -112,8 +141,8 @@ private:
 };\r
 \r
 class MainAlarmView;\r
-class AlarmPresenter : public Presenter<MainAlarmView>, public UIView::OnClickListener,\r
- public UITimePicker::SelectedListener, public UIView::OnDragListener {\r
+class AlarmPresenter : public Presenter<MainAlarmView>, public UIView::OnClickListener, public RootView::OnKeyActListener, \r
+ public UITimePicker::SelectedListener, public UIView::OnDragListener, public UISwipeView::OnSwipeListener {\r
 public:\r
     AlarmPresenter();\r
     ~AlarmPresenter() override;\r
@@ -123,12 +152,15 @@ public:
     ColorType ShadowBlue(void);\r
     bool OnClick(UIView &view, const ClickEvent &event) override;\r
     bool OnDrag(UIView& view, const DragEvent& event) override;\r
+    bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件\r
+    bool OnDragEnd(UIView& view, const DragEvent& event) override;\r
+    void OnSwipe(UISwipeView &view) override;\r
     bool ClickFuncId(const char *buttonName);\r
     bool ClickFuncView(UIView &view);\r
     void OnTimePickerStoped(UITimePicker &picker) override;\r
-    void ClickBlue(UIView &view);\r
-    void ClickBlack(UIView &view);\r
-    void GetAlarmNum(uint16_t alarmNum);\r
+    // void ClickBlue(UIView &view);三个函数都没实现\r
+    // void ClickBlack(UIView &view);\r
+    // void GetAlarmNum(uint16_t alarmNum);\r
     void ClickSetTime(uint16_t alarmNum);\r
     void ClickSetWeek(uint16_t alarmNum);\r
     void ClickAlarmClockDelete(uint16_t alarmNum);\r
@@ -141,14 +173,20 @@ public:
     void ClickAlarmNext(uint16_t alarmNum);\r
     void OnTimePickerInaction(uint32_t hour, uint32_t min);\r
     uint8_t alarmWeek[7] = {1, 1, 1, 1, 1, 1, 1}; // 闹钟默认所有的日期都选中,因此初始值为1,7是指一个星期中七天\r
+\r
+    void ClickDeleteButtonAlarmClockDelete(uint16_t num);\r
+    void UpdateAlarmInfoByAppSet(void);\r
+    void RefreshAlarmStatus(int i);\r
+\r
 private:\r
     uint32_t timeHour{0};\r
     uint32_t timeMin{0};\r
-    uint16_t setListener;\r
-    uint16_t alarmListener{0};\r
+    uint16_t setListener; // 新建闹钟还是修改闹钟的标志\r
+    uint16_t alarmListener{0};//闹钟编号\r
     uint16_t clockQty{0};\r
     int16_t interListener;\r
     bool buttonStratus = true;\r
+    bool X_DRAG_FLAG{false};\r
 };\r
 }\r
 #endif
\ No newline at end of file
index 5c7486b..a21cc54 100644 (file)
@@ -16,6 +16,7 @@
 #include "AlarmPresenter.h"\r
 #include "AlarmClockModel.h"\r
 #include "wearable_log.h"\r
+#include "components/ui_label_button_ext.h"\r
 \r
 namespace OHOS {\r
 class AlarmSetTimeView {\r
@@ -27,8 +28,9 @@ public:
     void RefreshSetTime(uint32_t time);\r
 private:\r
     UIScrollView *group{nullptr};\r
-    UILabelButton *timeImage{nullptr};\r
-    UILabel *title{nullptr};\r
+    // UILabelButton *timeImage{nullptr};\r
+    UILabelButtonExt * labelButton{nullptr};\r
+    UILabelExt *title{nullptr};\r
     UITimePicker *picker{nullptr};\r
     UILabel *GetTitleLabel(const char *titleName);\r
     void SetLabelButton(void);\r
index 3f4b884..04d3719 100644 (file)
 #include "components/ui_time_picker.h"\r
 #include "AlarmPresenter.h"\r
 #include "AlarmClockModel.h"\r
+#include "components/ui_label_ext.h"\r
+#include "components/ui_label_button_ext.h"\r
+\r
+#define WEEK_NUM 7 // 星期一共有7天\r
 \r
 namespace OHOS {\r
 class AlarmSetWeekView {\r
@@ -31,14 +35,13 @@ public:
     void RefreshSetWeek2(uint8_t week);\r
 private:\r
     UIScrollView *group{nullptr};\r
-    UILabelButton *weekImage{nullptr};\r
-    UILabel *labelRespeat{nullptr};\r
-    UILabelButton *buttonWeek[7]{nullptr}; // 星期一共有7天,因此设置了七个星期的按钮\r
+    UILabelButtonExt *weekImage{nullptr};\r
+    UILabelExt *labelRespeat{nullptr};\r
+    UILabelButton *buttonWeek[WEEK_NUM]{nullptr}; // 星期一共有7天,因此设置了七个星期的按钮\r
     void CreateWeekButton1(void);\r
     void CreateWeekButton2(void);\r
     void SetLabelButton(void);\r
-    UILabelButton *CreateUILabelButton(const char *buttonText, int16_t x, int16_t y);\r
-    UIView *CreateUIView(int16_t x, int16_t y);\r
+    UILabelButtonExt *CreateUILabelButton(const char *buttonText1,const char *buttonText2, int16_t x, int16_t y);\r
 };\r
 } // namespace OHOS\r
 #endif\r
index 0982563..13ac3db 100644 (file)
 #include "AlarmNewTimeView.h"
 #include "AlarmMaxClock.h"
 #include "AlarmClockModel.h"
+#include "components/ui_swipe_view.h"
+#include "components/ui_label_button_ext.h"
 
 namespace OHOS {
-constexpr int16_t D_CLOCK_Y = 210;
-constexpr int16_t LABEL_ZERO_Y = 270;
-constexpr int16_t ALARM_INTER_ADD = 150;
+constexpr int16_t ALARM_INTER_ADD = 120; // 120;
 
 class AlarmPresenter;
 class MainAlarmView : public View<AlarmPresenter> {
@@ -42,7 +42,6 @@ public:
     void OnStart() override;
     void ChangeView(int16_t hideView, int16_t showView);
     void DropView(UIView& view);
-    void CreateImage();
     void RefreshAlarm(void);
     bool ChangeMainAlarm(int16_t thisView);
     bool ChangeConfig(int16_t thisView);
@@ -51,31 +50,43 @@ public:
     bool ChangeJudge(int16_t thisView);
     bool ChangeNewTime(int16_t thisView);
     bool ChangeMaxClock(int16_t thisView);
-    bool ClickFunc(int16_t interf);
+    bool ClickFunc(int16_t interface);
     bool GetRefreshStatus(void);
+    void RefreshAlarmStatus(uint8_t alarmEnable, int16_t num);
 private:
     void LabelGetWeek(uint8_t week, int16_t alarmNum);
-    void RefreshAlarmStatus(uint8_t alarmEnable, int16_t num);
     void NewClockCtl(int16_t alarmNum);
-    AlarmConfigView *configView{nullptr};
-    AlarmSetTimeView *setTimeView{nullptr};
-    AlarmSetWeekView *setWeekView{nullptr};
+    UIViewGroup * NewClockCtlExt(int16_t alarmNum, uint8_t index);
+    void AlarmTitleCreate(void);
+    void AlarmAddButtonCreate(void);
+    void AlarmAddButtonUpdate(uint8_t count);
+
+private:
+    AlarmConfigView *configView{nullptr}; //编辑闹钟页面【包括更改时间和更改星期】
+    AlarmSetTimeView *setTimeView{nullptr};//时间设置页面
+    AlarmSetWeekView *setWeekView{nullptr};//星期设置页面
     AlarmJudgeView *judgeView{nullptr};
     AlarmNewTimeView *newTimeView{nullptr};
     AlarmMaxClock *maxClockView{nullptr};
     UIScrollView *group{nullptr};
+    UISwipeView * SwipeView_[6]{nullptr};
+    UIViewGroup * SwipeViewItem_[6][2]{nullptr};
+    UILabelButtonExt * DeleteButton_[6]{nullptr};
     UIToggleButton *statusButton[6]{nullptr}; // 6代表界面中最多存在六个按键
-    UIImageView *addButton{nullptr};
     UIDigitalClock *dClock[6]{nullptr}; // 6代表界面中最多存在六个闹钟
-    UILabel *dLabel[6]{nullptr}; // 6代表界面中显示闹钟日期的控件个数
+    UILabelExt *dLabel[6]{nullptr}; // 6代表界面中显示闹钟日期的控件个数
     UIScrollView *container[7]{nullptr}; // 7代表容器存有主界面以及跳转的四个副界面,用于跳转后显示或隐藏界面
     uint8_t alarmHour, alarmMin;
     int8_t dClockNum{-1};
     int16_t weekStatus{-1};
-    int16_t alarmPositionY{D_CLOCK_Y};
-    int16_t labelPositionY{LABEL_ZERO_Y};
-    int16_t alarmInterval{ALARM_INTER_ADD};
+    int16_t alarmInterval{ALARM_INTER_ADD}; // 闹钟之间的间隔
     bool reflashStatus{false};
+    UILabelExt * TitleLabelExt_{nullptr}; 
+    UILabelButtonExt * AddButton_{nullptr};
+    UICheckBox::OnChangeListener *statusListener[6]{nullptr};
+    bool viewInitstatus_{false};
+
+    #define ALARM_DELETE_IMAGE "/user/res/Alarm/alarm_delete.bin"
 };
 } // namespace OHOS
 #endif // MAIN_ALARM_VIEW_Ha
\ No newline at end of file
index a5b21c0..f0e45af 100644 (file)
 #include "securec.h"
 #include "los_mux.h"
 #include "samgr_lite.h"
-#include "graphic_mutex.h"
+#include "thread_adapter.h"
 #include "UiConfig.h"
-#include "AlarmClockModel.h"
-#include "AlarmPopUpPresenter.h"
+#include "alarm/include/AlarmClockModel.h"
+#include "alarm/include/AlarmPopUpPresenter.h"
 #include "graphic_service.h"
-#include "PlayersModel.h"
-#include "PhoneService.h"
+#include "player/include/PlayersModel.h"
+#include "phoneservice/include/PhoneService.h"
 #include "ui_service.h"
+#include "notification_manager.h"
+#include "ConfigModel.h"
+#include "custom_runtime.h"
+#include "alarm/include/AlarmClockModelC.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -25,7 +29,7 @@ extern "C" {
 namespace OHOS {
 #define BUFFER_SIZE 15
 
-static GraphicMutex g_alarmClockDataMutex;
+// static MutexId g_alarmClockDataMutex;
 constexpr char *ALARM_CLOCK_DATA_PATH = (char *)"/user/res/alarm.bin";
 constexpr char *ALARM_CLOCK_DIRECTORY = (char *)"/user/res/";
 constexpr int ALARM_CLOCK_MAX = 5;
@@ -43,7 +47,8 @@ AlarmClockInfo g_alarmClockData[ALARM_CLOCK_MAX];
 
 AlarmClockModel::AlarmClockModel()
 {
-    InitAlarmData();
+    // g_alarmClockDataMutex = MUTEX_InitValue();
+    // InitAlarmData();
 }
 
 AlarmClockModel::~AlarmClockModel()
@@ -59,6 +64,7 @@ AlarmClockModel::~AlarmClockModel()
     for (uint16_t num = 0; num < CLOCK_NUM; num++) {
         alarmName[num] = nullptr;
     }
+    // g_alarmClockDataMutex = nullptr;
 }
 
 AlarmClockModel *AlarmClockModel::GetInstance(void)
@@ -67,94 +73,94 @@ AlarmClockModel *AlarmClockModel::GetInstance(void)
     return &alarmClockModel;
 }
 
-int32_t AlarmClockModel::SaveGlobalAlarmToFile(void)
-{
-    std::ofstream fd(ALARM_CLOCK_DATA_PATH);
-    if (!fd.good()) {
-        (void)mkdir(ALARM_CLOCK_DIRECTORY, S_IREAD | S_IWRITE);
-        std::ofstream fd(ALARM_CLOCK_DATA_PATH);
-        if (!fd.good()) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveGlobalAlarmToFile open fail");
-            fd.close();
-            return -1;
-        }
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "mkdir success!!");
-    }
-    fd.write((const char *)(&g_alarmClockData), sizeof(g_alarmClockData));
-    fd.close();
-    return 0;
-}
-
-int32_t AlarmClockModel::GetAlarmGlobalData(uint8 id, AlarmClockInfo *info)
-{
-    int32_t ret;
-    if (info == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetAlarmGlobalData info nullptr!!");
-        return -1;
-    }
-    if (g_alarmClockData[id].alarmClockId != id) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_alarmClockData id %u error!", id);
-        return -1;
-    }
-    ret = memcpy_s(info, sizeof(AlarmClockInfo), &g_alarmClockData[id], sizeof(AlarmClockInfo));
-    if (ret != EOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetAlarmGlobalData fail. ret=%d", ret);
-        return ret;
-    }
-    return 0;
-}
-
-void AlarmClockModel::PushAlarmClockData(AlarmClockQueueMsg alarmClockMsg)
-{
-    if (listAlarmClockNum >= LIST_ALARM_CLOCK_MAX) {
-        return;
-    }
-    g_alarmClockDataMutex.Lock();
-    listAlarmClockNum++;
-    listAlarmClock.PushBack(alarmClockMsg);
-    g_alarmClockDataMutex.Unlock();
-    SaveGlobalAlarmToFile();
-}
-
-int32_t AlarmClockModel::FetchedAlarmClockData(AlarmClockQueueMsg *alarmClockMsg)
-{
-    if (alarmClockMsg == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FetchedAlarmClockData alarmClockMsg nullptr!!");
-        return -1;
-    }
-    if (listAlarmClock.IsEmpty()) {
-        return -1;
-    } else {
-        g_alarmClockDataMutex.Lock();
-        if (listAlarmClockNum >= 1) {
-            listAlarmClockNum--;
-        } else {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FetchedAlarmClockData listAlarmClockNum invalid, num=%u",
-                listAlarmClockNum);
-            return -1;
-        }
-        *alarmClockMsg = listAlarmClock.Front();
-        listAlarmClock.PopFront();
-        g_alarmClockDataMutex.Unlock();
-    }
-    return 0;
-}
-
-int32_t AlarmClockModel::InitAlarmClockData(void)
-{
-    (void)memset_s(&g_alarmClockData, sizeof(g_alarmClockData), 0, sizeof(g_alarmClockData));
-    std::ifstream fd(ALARM_CLOCK_DATA_PATH);
-    if (!fd.good()) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitAlarmClockData open fail");
-        fd.close();
-        return -1;
-    } else {
-        fd.read((char *)(&g_alarmClockData), sizeof(g_alarmClockData));
-        fd.close();
-        return 0;
-    }
-    return 0;
-}
+// int32_t AlarmClockModel::SaveGlobalAlarmToFile(void)
+// {
+//     std::ofstream fd(ALARM_CLOCK_DATA_PATH);
+//     if (!fd.good()) {
+//         (void)mkdir(ALARM_CLOCK_DIRECTORY, S_IREAD | S_IWRITE);
+//         std::ofstream fd(ALARM_CLOCK_DATA_PATH);
+//         if (!fd.good()) {
+//             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveGlobalAlarmToFile open fail");
+//             fd.close();
+//             return -1;
+//         }
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mkdir success!!");
+//     }
+//     fd.write((const char *)(&g_alarmClockData), sizeof(g_alarmClockData));
+//     fd.close();
+//     return 0;
+// }
+
+// int32_t AlarmClockModel::GetAlarmGlobalData(uint8 id, AlarmClockInfo *info)
+// {
+//     int32_t ret;
+//     if (info == nullptr) {
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetAlarmGlobalData info nullptr!!");
+//         return -1;
+//     }
+//     if (g_alarmClockData[id].alarmClockId != id) {
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_alarmClockData id %u error!", id);
+//         return -1;
+//     }
+//     ret = memcpy_s(info, sizeof(AlarmClockInfo), &g_alarmClockData[id], sizeof(AlarmClockInfo));
+//     if (ret != EOK) {
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetAlarmGlobalData fail. ret=%d", ret);
+//         return ret;
+//     }
+//     return 0;
+// }
+
+// void AlarmClockModel::PushAlarmClockData(AlarmClockQueueMsg alarmClockMsg)
+// {
+//     if (listAlarmClockNum >= LIST_ALARM_CLOCK_MAX) {
+//         return;
+//     }
+//     MUTEX_Lock(g_alarmClockDataMutex);
+//     listAlarmClockNum++;
+//     listAlarmClock.PushBack(alarmClockMsg);
+//     MUTEX_Unlock(g_alarmClockDataMutex);
+//     SaveGlobalAlarmToFile();
+// }
+
+// int32_t AlarmClockModel::FetchedAlarmClockData(AlarmClockQueueMsg *alarmClockMsg)
+// {
+//     if (alarmClockMsg == nullptr) {
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FetchedAlarmClockData alarmClockMsg nullptr!!");
+//         return -1;
+//     }
+//     if (listAlarmClock.IsEmpty()) {
+//         return -1;
+//     } else {
+//         MUTEX_Lock(g_alarmClockDataMutex);
+//         if (listAlarmClockNum >= 1) {
+//             listAlarmClockNum--;
+//         } else {
+//             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FetchedAlarmClockData listAlarmClockNum invalid, num=%u",
+//                 listAlarmClockNum);
+//             return -1;
+//         }
+//         *alarmClockMsg = listAlarmClock.Front();
+//         listAlarmClock.PopFront();
+//         MUTEX_Unlock(g_alarmClockDataMutex);
+//     }
+//     return 0;
+// }
+
+// int32_t AlarmClockModel::InitAlarmClockData(void)
+// {
+//     (void)memset_s(&g_alarmClockData, sizeof(g_alarmClockData), 0, sizeof(g_alarmClockData));
+//     std::ifstream fd(ALARM_CLOCK_DATA_PATH);
+//     if (!fd.good()) {
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitAlarmClockData open fail");
+//         fd.close();
+//         return -1;
+//     } else {
+//         fd.read((char *)(&g_alarmClockData), sizeof(g_alarmClockData));
+//         fd.close();
+//         return 0;
+//     }
+//     return 0;
+// }
 
 int32_t AlarmClockModel::InitAlarmData(void)
 {
@@ -165,27 +171,33 @@ int32_t AlarmClockModel::InitAlarmData(void)
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::InitAlarmData get managementAlarm error!");
         return -1;
     }
-    if (managementAlarm.eventAlarmInfo[0].alarmType == TYPE_INVALID_ALARM_CLOCK) {
-        NewFirstTime();
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::InitAlarmData new first alarm");
+    // if (managementAlarm.eventAlarmInfo[0].alarmType == TYPE_INVALID_ALARM_CLOCK) {
+    //     NewFirstTime();
+    //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::InitAlarmData new first alarm");
+    // }
+    alarmSerial = 0;
+    for (num = 0; num < CLOCK_MAX; num++) {
+        delete currentAlarm[num];
+        currentAlarm[num] = nullptr;
     }
-    for (uint16_t i = 0; i < ALARM_CLOCK_MAX; i++) {
+    for (uint16_t i = 0, num = 0; i < ALARM_CLOCK_MAX; i++) {
         for (int j = 0; j < ALARM_CLOCK_MAX; j++) {
             if (managementAlarm.eventAlarmInfo[j].index == i && managementAlarm.eventAlarmInfo[j].alarmType == TYPE_EVENT_ALARM_CLOCK) {
                 currentAlarm[num] = &managementAlarm.eventAlarmInfo[j];
                 SetAlarmId(currentAlarm[num]->alarmClockId);
                 num++;
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
                     "AlarmClockModel::InitAlarmData get managementAlarm[%u], the unmber of alarm is %u!", j, alarmSerial);
-                if (i > 0) {
+                // if (i > 0) {
                     alarmSerial++;
-                }
+                // }
             }
         }
     }
     return 0;
 }
 
+//获取闹钟数量
 int32_t AlarmClockModel::GetAlarmNum(void)
 {
     return alarmSerial;
@@ -321,16 +333,21 @@ bool AlarmClockModel::JudgeClockModel(uint16_t num)
     }
 }
 
+//获取一个可用的闹钟 ID
 uint8_t AlarmClockModel::GetAlarmId(void)
 {
     for (int num = 0; num < CLOCK_MAX; num++) {
-        if (alarmId[num] == 0) {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetAlarmId alarmId[%d] = %d", num, alarmId[num]);
+    }
+    for (int num = 0; num < CLOCK_MAX; num++) {
+        if (alarmId[num] == 0) { //如果某个元素的值为 0,表示这个 ID 尚未被使用
             return num;
         }
     }
     return 0;
 }
 
+//将指定id的闹钟标记为已删除状态
 void AlarmClockModel::DeleteAlarmId(uint8_t id)
 {
     for (int num = 0; num < CLOCK_MAX; num++) {
@@ -341,6 +358,7 @@ void AlarmClockModel::DeleteAlarmId(uint8_t id)
     return;
 }
 
+//将指定id的闹钟标记为已设置状态
 void AlarmClockModel::SetAlarmId(uint8_t id)
 {
     for (int num = 0; num < CLOCK_MAX; num++) {
@@ -351,43 +369,53 @@ void AlarmClockModel::SetAlarmId(uint8_t id)
     return;
 }
 
-void AlarmClockModel::NewFirstTime(void)
-{
-    uint32_t timeTem = FIRST_CLOCK_HOUR;
-    if (currentAlarm[0] == nullptr) {
-        currentAlarm[0] = new AlarmClockInfo();
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewFirstTime new alarm_clock!");
-    }
-    currentAlarm[0]->alarmClockId = GetAlarmId();
-    currentAlarm[0]->alarmClockEnable = 0;
-    currentAlarm[0]->alarmType = 1;
-    currentAlarm[0]->nameLen = strlen(alarmName[0]);
-    currentAlarm[0]->index = 0;
-    currentAlarm[0]->delayNum = 0;
-    if (strcpy_s(currentAlarm[0]->alarmClockName, CLOCK_NAME_LENGTH, alarmName[0]) != 0) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewFirstTime copy alarmname error!");
-        return;
-    }
-    currentAlarm[0]->alarmTime = (timeTem << 16) | 0x0000; // 第一个闹钟的时间初始化为九点
-    currentAlarm[0]->repeatPeriod = 0x7F;                  // 第一个闹钟的日期设置默认为一周七天全选
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
-        "AlarmClockModel::JudgeClockModel currentAlarm[0]->alarm_time = %u, currentAlarm[0]->repeat_period =%u",
-        currentAlarm[0]->alarmTime, currentAlarm[0]->repeatPeriod);
-
-    int ret = AddAlarmClock(currentAlarm[0]);
-    if (ret != 0) {
-        if (currentAlarm[0] != nullptr) {
-            delete currentAlarm[0];
-            currentAlarm[0] = nullptr;
-        }
-        return;
-    }
-    SetAlarmId(currentAlarm[0]->alarmClockId);
-    return;
-}
-
+void set_alarm_id(uint8_t id)
+{
+    AlarmClockModel::GetInstance()->SetAlarmId(id);
+}
+
+void delete_alarm_id(uint8_t id)
+{
+    AlarmClockModel::GetInstance()->DeleteAlarmId(id);
+}
+// void AlarmClockModel::NewFirstTime(void)
+// {
+//     uint32_t timeTem = FIRST_CLOCK_HOUR;
+//     if (currentAlarm[0] == nullptr) {
+//         currentAlarm[0] = new AlarmClockInfo();
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewFirstTime new alarm_clock!");
+//     }
+//     currentAlarm[0]->alarmClockId = GetAlarmId();
+//     currentAlarm[0]->alarmClockEnable = 0;
+//     currentAlarm[0]->alarmType = 1;
+//     currentAlarm[0]->nameLen = strlen(alarmName[0]);
+//     currentAlarm[0]->index = 0;
+//     currentAlarm[0]->delayNum = 0;
+//     if (strcpy_s(currentAlarm[0]->alarmClockName, CLOCK_NAME_LENGTH, alarmName[0]) != 0) {
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewFirstTime copy alarmname error!");
+//         return;
+//     }
+//     currentAlarm[0]->alarmTime = (timeTem << 16) | 0x0000; // 第一个闹钟的时间初始化为九点
+//     currentAlarm[0]->repeatPeriod = 0x7F;                  // 第一个闹钟的日期设置默认为一周七天全选
+//     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+//         "AlarmClockModel::JudgeClockModel currentAlarm[0]->alarm_time = %u, currentAlarm[0]->repeat_period =%u",
+//         currentAlarm[0]->alarmTime, currentAlarm[0]->repeatPeriod);
+
+//     int ret = AddAlarmClock(currentAlarm[0]);
+//     if (ret != 0) {
+//         if (currentAlarm[0] != nullptr) {
+//             delete currentAlarm[0];
+//             currentAlarm[0] = nullptr;
+//         }
+//         return;
+//     }
+//     SetAlarmId(currentAlarm[0]->alarmClockId);
+//     return;
+// }
+#if 1
 void AlarmClockModel::DeleteClockModel(uint16_t num)
 {
+    // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel num=%d", num);
     if (num >= CLOCK_MAX || currentAlarm[num] == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel delete clock error!");
         return;
@@ -402,28 +430,98 @@ void AlarmClockModel::DeleteClockModel(uint16_t num)
         "AlarmClockModel::DeleteAlarmClock = %d, currentAlarm[alarmListener] = %p, id = %u!", status, currentAlarm[num],
         currentAlarm[num]->alarmClockId);
     DeleteAlarmId(clockId);
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel alarmSerial = %u!", alarmSerial);
-    for (; num < alarmSerial; num++) {
-        AlarmClockInfo *tempAlarm = currentAlarm[num];
-        tempAlarm->index = currentAlarm[num]->index;
-        currentAlarm[num] = currentAlarm[num + 1];
-        currentAlarm[num]->index = num;
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::UpdataAlarmClock index = %u!",
-            currentAlarm[num]->index);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel alarmSerial = %u!", alarmSerial);
+
+    for (; num < alarmSerial - 1; num ++) {
         if (currentAlarm[num + 1] == nullptr || currentAlarm[num + 1]->alarmType == TYPE_INVALID_ALARM_CLOCK) {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel fail");
-            currentAlarm[num] = tempAlarm;
-            return;
+            break;
         }
+        AlarmClockInfo *tempAlarm = currentAlarm[num];
+        currentAlarm[num] = currentAlarm[num + 1];
+        currentAlarm[num]->index = num;
+
         int ret = UpdataAlarmClock(currentAlarm[num]);
-        if (ret != 0) {
+        if (ret != 0)
+        {
             currentAlarm[num] = tempAlarm;
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel [%d]", __LINE__);
             return;
         }
     }
-    currentAlarm[alarmSerial] = nullptr;
+    currentAlarm[alarmSerial - 1] = nullptr;
 }
+#else
+
+//删除闹钟信息
+void AlarmClockModel::DeleteClockModel(uint16_t id)
+{
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel id=%d", id);
+    if (id >= CLOCK_MAX || currentAlarm[id] == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel delete clock error!");
+        return;
+    }
+    uint8_t clockId = currentAlarm[id]->alarmClockId;
+    int status = DeleteAlarmClock(currentAlarm[id]);
+    if (status!= 0) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteAlarmClock delete clock error!");
+        return;
+    }
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AlarmClockModel::DeleteAlarmClock = %d, currentAlarm[alarmListener] = %p, alarmClockId = %u!", status, currentAlarm[id],currentAlarm[id]->alarmClockId);
+    DeleteAlarmId(clockId);
+    int alarmNum = GetAlarmNum();
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel alarmNum = %u!", alarmNum);
+
+    bool isFirstAlarm = (alarmNum == 0);
+    if (isFirstAlarm) {
+        // 如果是第一个闹钟,直接处理删除,无需检查下一个闹钟状态
+        if (alarmNum > 1) {
+            // 如果有多个闹钟,将第二个闹钟赋给第一个位置,并更新索引
+            currentAlarm[0] = currentAlarm[1];
+            currentAlarm[0]->index = 0;
+            int ret = UpdataAlarmClock(currentAlarm[0]);
+            if (ret!= 0) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel update first alarm failed!");
+                return;
+            }
+        } else {
+            // 如果只有一个闹钟,直接将其置为 nullptr
+            currentAlarm[0] = nullptr;
+        }
+    } else {
+        // 如果不是第一个闹钟,按照原逻辑处理
+        for (; id < alarmNum; id++)
+        {
+            AlarmClockInfo *tempAlarm = currentAlarm[id];
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel. current_index = %u!", currentAlarm[id]->index);
+            // 判断是否到达最后一个闹钟或者下一个闹钟为 nullptr 或无效类型
+            if ((id + 1) == alarmNum || currentAlarm[id + 1] == nullptr || currentAlarm[id + 1]->alarmType == TYPE_INVALID_ALARM_CLOCK)
+            {
+                // 如果是最后一个闹钟,直接置为 nullptr
+                if ((id + 1) == alarmNum) {
+                    currentAlarm[id] = nullptr;
+                } else {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel fail");
+                    currentAlarm[id] = tempAlarm;
+                    return;
+                }
+                break;
+            }
+            currentAlarm[id] = currentAlarm[id + 1];
+            currentAlarm[id]->index = id;
 
+            int ret = UpdataAlarmClock(currentAlarm[id]);
+            if (ret!= 0)
+            {
+                currentAlarm[id] = tempAlarm;
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel [%d]", __LINE__);
+                return;
+            }
+        }
+    }
+}
+#endif
+//切换特定闹钟的启用状态
 bool AlarmClockModel::ButtonStatusRing(int16_t num, bool alarmStatus)
 {
     if (num >= CLOCK_MAX || currentAlarm[num] == nullptr) {
@@ -437,8 +535,7 @@ bool AlarmClockModel::ButtonStatusRing(int16_t num, bool alarmStatus)
     } else if (!alarmStatus) {
         currentAlarm[num]->alarmClockEnable = 0;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing alarm[%d] status is %u", num,
-        currentAlarm[num]->alarmClockEnable);
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing alarm[%d] status is %u", num, currentAlarm[num]->alarmClockEnable);
     int ret = UpdataAlarmClock(currentAlarm[num]);
     if (ret != 0) {
         currentAlarm[num]->alarmClockEnable = tempAlarmEnable;
@@ -447,6 +544,7 @@ bool AlarmClockModel::ButtonStatusRing(int16_t num, bool alarmStatus)
     return true;
 }
 
+//延迟某个闹钟
 void AlarmClockModel::SetDelayAlarm(uint8_t alarm)
 {
     AlarmClockQueueMsg *clockQueueMsg = new AlarmClockQueueMsg();
@@ -456,13 +554,13 @@ void AlarmClockModel::SetDelayAlarm(uint8_t alarm)
     }
     currentAlarm[clockListener]->delayNum++;
     clockQueueMsg->eventType = EVENT_ALARM_RING_DELAY;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing clockQueueMsg->eventType is %u",
-        clockQueueMsg->eventType);
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing clockQueueMsg->eventType is %u",clockQueueMsg->eventType);
     (clockQueueMsg->data).value = alarm;
     AlmmgrAlarmClockEventProcess(clockQueueMsg);
     return;
 }
 
+//取消某个闹钟
 void AlarmClockModel::SetCancelAlarm(uint8_t alarm)
 {
     AlarmClockQueueMsg *clockQueueMsg = new AlarmClockQueueMsg();
@@ -471,13 +569,13 @@ void AlarmClockModel::SetCancelAlarm(uint8_t alarm)
         return;
     }
     clockQueueMsg->eventType = EVENT_ALARM_RING_CANCEL;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing clockQueueMsg->eventType is %u",
-        clockQueueMsg->eventType);
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing clockQueueMsg->eventType is %u",clockQueueMsg->eventType);
     (clockQueueMsg->data).value = alarm;
     AlmmgrAlarmClockEventProcess(clockQueueMsg);
     return;
 }
 
+//设置闹钟时间
 void AlarmClockModel::SetAlarmTime(uint32_t time_hour, uint32_t time_min, int16_t num)
 {
     if (num >= CLOCK_MAX || currentAlarm[num] == nullptr) {
@@ -495,6 +593,7 @@ void AlarmClockModel::SetAlarmTime(uint32_t time_hour, uint32_t time_min, int16_
         currentAlarm[num]->alarmTime);
 }
 
+//设置闹钟星期
 void AlarmClockModel::SetAlarmWeek(uint8_t week, int16_t num)
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek set week!");
@@ -515,7 +614,7 @@ void AlarmClockModel::SetAlarmWeek(uint8_t week, int16_t num)
 
 void AlarmClockModel::DelAlarmDelay(int16_t num)
 {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek set week!");
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DelAlarmDelay set week!");
     if (num >= CLOCK_MAX || currentAlarm[num] == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClcokModel::SetAlarmTime new alarm_clock! num = %d", num);
         return;
@@ -527,23 +626,47 @@ void AlarmClockModel::DelAlarmDelay(int16_t num)
         currentAlarm[num]->delayNum = tempAlarmDelay;
         return;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek currentAlarm[num]->delayNum = %u",
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DelAlarmDelay currentAlarm[num]->delayNum = %u",
         currentAlarm[num]->delayNum);
 }
 
-void AlarmClockModel::SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8_t week, uint16_t alarmListener,
-    uint16_t setListener)
+/*
+ * @brief 设置闹钟信息 
+ * @param 1 闹钟的小时数
+ * @param 2 闹钟的分钟数
+ * @param 3 表示闹钟的重复周期,按位表示一周中哪些天重复的数值
+ * @param 4 标识特定闹钟的索引
+ * @param 5 区分是新建闹钟还是修改闹钟的标志
+ */
+void AlarmClockModel::SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8_t week, uint16_t alarmListener,uint16_t setListener)
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmInfo!");
+    // 检查时间参数是否合法
+    if (time_hour < 0 || time_hour > 23 || time_min < 0 || time_min > 59)
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Invalid time parameters!");
+        return;
+    }
+    // 检查 alarmListener 是否在合理范围内
+    if (alarmListener >= ALARM_CLOCK_MAX || alarmListener < 0)
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Invalid alarmListener value!");
+        return;
+    }
+    // 检查 setListener 是否合法
+    if (setListener!= NEW_TIME_LISTENER && setListener!= SET_TIME_LISTENER) // NEW_TIME_LISTENER:0 表示新建闹钟,SET_TIME_LISTENER:1 表示修改闹钟
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Invalid setListener value!");
+        return;
+    }
     if (currentAlarm[alarmListener] == nullptr || (currentAlarm[alarmListener]->alarmType == TYPE_INVALID_ALARM_CLOCK &&
         currentAlarm[alarmListener] != nullptr)) {
         currentAlarm[alarmListener] = new AlarmClockInfo();
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClcokModel::SetAlarmTime new alarm!");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClcokModel::SetAlarmTime new alarm!");
     }
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "hour = %u, minute = %u", time_hour, time_min);
-    currentAlarm[alarmListener]->alarmTime = ((time_hour << 16) | time_min); // 闹钟时间数据的小时位右边16位
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewAlarmTime currentAlarm[alarmListener]->alarm_time = %u",
-        currentAlarm[alarmListener]->alarmTime);
+    currentAlarm[alarmListener]->alarmTime = ((time_hour << 16) | time_min); // 闹钟时间数据:小时存储在高 16 位,分钟存储在低 16 位
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewAlarmTime currentAlarm[alarmListener]->alarm_time = %u",currentAlarm[alarmListener]->alarmTime);
     currentAlarm[alarmListener]->alarmClockId = GetAlarmId();
     currentAlarm[alarmListener]->alarmClockEnable = 1;
     currentAlarm[alarmListener]->alarmType = 1;
@@ -558,8 +681,8 @@ void AlarmClockModel::SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8_
     }
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewAlarmTime clock name = %s, id = %u",
         currentAlarm[alarmListener]->alarmClockName, currentAlarm[alarmListener]->alarmClockId);
-    if (setListener == 0) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek new time!");
+    if (setListener == NEW_TIME_LISTENER) { //表示新建闹钟
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek new time!");
         int ret = AddAlarmClock(currentAlarm[alarmListener]);
         if (ret != 0) {
             if (currentAlarm[alarmListener] != nullptr) {
@@ -569,8 +692,8 @@ void AlarmClockModel::SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8_
             return;
         }
         SetAlarmId(currentAlarm[alarmListener]->alarmClockId);
-    } else {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek modify time!");
+    } else { //表示修改闹钟
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek modify time!");
         UpdataAlarmClock(currentAlarm[alarmListener]);
     }
 }
@@ -605,7 +728,7 @@ void AlarmClockModel::ResetRingClockStatus()
     }
     if (currentAlarm[clockListener]->repeatPeriod == 0) {
         currentAlarm[clockListener]->alarmClockEnable = 0;
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ResetRingClockStatus");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ResetRingClockStatus clockListener = %d",clockListener);
     }
 }
 
@@ -614,7 +737,11 @@ void AlarmClockModel::GetPopTimeData(int16 *hour, int16 *min)
     *hour = popHour;
     *min = popMin;
 }
-
+void AlarmClockModel::SetPopTimeData(int16 hour, int16 min)
+{
+    popHour = hour;
+    popMin = min;
+}
 void AlarmClockModel::AlarmGetClockNum()
 {
     struct tm curTime;
@@ -639,7 +766,7 @@ void AlarmClockModel::AlarmGetClockNum()
                 currentAlarm[num]->alarmTime >> TWO_BYTES_BITS, currentAlarm[num]->alarmTime & AND_FOR_LOW_TWO_BYTES);
             popHour = hour;
             popMin = min;
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmGetClockNum %d:%d!", popHour, popMin);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmGetClockNum %d:%d!", popHour, popMin);
             clockListener = num;
             return;
         }
@@ -658,11 +785,11 @@ void AlarmClockModel::GetAlarmCallId(uint8_t *alarm)
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerCallback AlarmGetCurrentTimeInfo failed!!");
         return;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmGetClockNum, hour:%u, min:%u", curTime.tm_hour, curTime.tm_min);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GetAlarmCallId, hour:%u, min:%u", curTime.tm_hour, curTime.tm_min);
 
     for (uint16_t num = 0; num < CLOCK_MAX; num++) {
         if (currentAlarm[num] == nullptr || currentAlarm[num]->alarmType == TYPE_INVALID_ALARM_CLOCK) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmGetClockNum get num fail!");
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetAlarmCallId get num fail!");
             return;
         }
         int32_t hour = currentAlarm[num]->alarmTime >> TWO_BYTES_BITS;
@@ -670,7 +797,7 @@ void AlarmClockModel::GetAlarmCallId(uint8_t *alarm)
         hour = (hour + min / ONE_HOUR_MIN) % TWENTY_FOUR_HOUR;
         min = min % ONE_HOUR_MIN;
         if (curTime.tm_hour == hour && curTime.tm_min == min) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmGetClockNum %d:%d!",
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetAlarmCallId %d:%d!",
                 currentAlarm[num]->alarmTime >> TWO_BYTES_BITS, currentAlarm[num]->alarmTime & AND_FOR_LOW_TWO_BYTES);
             *alarm = currentAlarm[num]->alarmClockId;
             return;
@@ -687,7 +814,14 @@ void AlarmClockModel::PopInterCancelMusic()
 
 void AlarmClockModel::PopInterPlayMusic()
 {
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::PopInterPlayMusic");
+    if(true == ConfigModel::GetInstance()->GetDnotdisturb() || (uapi_sleep_mode_flag_get()))
+    {
+        return;
+    }
+
     ScreenTurnOn(-1);
+
     GraphicService::GetInstance()->PostGraphicEvent(
         std::bind(&AlarmClockModel::AlarmPlayerStart, AlarmClockModel::GetInstance()));
 }
@@ -705,13 +839,18 @@ uint16 AlarmClockModel::GetSliceId()
 int AlarmClockModel::AlarmPlayerStat()
 {
     int32_t ret;
+    // if(NotificationManager::GetInstance()->GetWatchCallStatus())
+    // {
+    //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetWatchCallStatus");
+    //     return 0;
+    // }
 
     // 设置回调函数
     if (playerCtr.get() == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmPlayerStat playerCtr nullptr");
         return OHOS_FAILURE;
     }
-    playerCtr->SetPlayerCallback(playerCallback);
+    //playerCtr->SetPlayerCallback(playerCallback);
     // 申请资源
     source = std::make_shared<Source>(uri, header);
     if (source.get() == nullptr) {
@@ -720,7 +859,7 @@ int AlarmClockModel::AlarmPlayerStat()
     }
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPlayer uri %s.", uri.c_str());
     playerCtr->SetSource(*source);
-    playerCtr->SetAudioStreamType(AUDIO_STREAM_ALARM_CLOCK);
+    playerCtr->SetAudioStreamType(AUDIO_STREAM_RING);
     playerCtr->Prepare();
 
     // 申请焦点
@@ -736,15 +875,25 @@ int AlarmClockModel::AlarmPlayerStat()
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerInterruptListener new fail");
         return OHOS_FAILURE;
     }
-    interrupt = { AUDIO_STREAM_ALARM_CLOCK, sessionId, playerInterruptListener };
+    interrupt = { AUDIO_STREAM_RING, sessionId, playerInterruptListener };
     // 激活音频中断 5s超时
     if (amIntance.ActivateAudioInterrupt(interrupt) == INTERRUPT_FAILED) {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivateAudioInterrupt faild");
         return OHOS_FAILURE;
     }
     playerCtr->SetAudioSessionId(sessionId);
+    playerCtr->SetVolume(amIntance.GetMaxVolume(AUDIO_STREAM_MUSIC),amIntance.GetMaxVolume(AUDIO_STREAM_MUSIC));
+    playerCtr->EnableSingleLooping(true);
     // 播放
-    playerCtr->Play();
+   // playerCtr->Play();
+
+     ret = playerCtr->Play();
+    if (ret != 0) {
+        playerCtr->Stop(); // 暂停
+        playerCtr->Reset(); // 初始化
+
+        AudioManager::GetInstance().DeactivateAudioInterrupt(interrupt);
+    }
     return OHOS_SUCCESS;
 }
 
@@ -757,7 +906,12 @@ int AlarmClockModel::AlarmPlayerInit(void)
     std::string strSongName = sliceId;
     std::string pureName = strSongName.substr(0, strSongName.rfind(".")); // 播放音乐的路径需要引用.号
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerInit, url:%s ", sliceId);
-    std::string strSrcMusic(APP_MUSIC_PATH);
+    //std::string strSrcMusic(APP_MUSIC_PATH);
+ #ifdef SINGLE_USER_PARTITION   
+    std::string strSrcMusic("/user/music/ring");
+ #else
+    std::string strSrcMusic("/music/ring");
+ #endif
     std::string tempStr("/");
     std::string strName = sliceId;
     uri = strSrcMusic + tempStr + strName;
@@ -777,6 +931,31 @@ int AlarmClockModel::AlarmPlayerInit(void)
     return OHOS_SUCCESS;
 }
 
+
+int AlarmClockModel::AlarmPlayerInit_BY_fir_name(char *str)
+{
+    // 本地播放文件路径和状态
+    sliceId = str; // 播放音乐的文件名
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerInit start!");
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerInit, url:%s ", sliceId);
+    std::string strName = sliceId;
+    uri =strName;
+    // 创建 AM
+
+    playerCtr = std::make_shared<Player>();
+    if (playerCtr.get() == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerCtr new fail");
+        return OHOS_FAILURE;
+    }
+    playerCallback = std::make_shared<AlarmPlayerCallbackImpl>();
+    if (playerCallback.get() == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerCallback new fail");
+        return OHOS_FAILURE;
+    }
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerInit end!");
+    return OHOS_SUCCESS;
+}
+
 int AlarmClockModel::AlarmPlayerStop(void)
 {
     int32_t ret = 0;
@@ -785,12 +964,14 @@ int AlarmClockModel::AlarmPlayerStop(void)
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmPlayerStop playerCtr nullptr");
         return OHOS_FAILURE;
     }
-
-    ret = playerCtr->Stop();
-    playerCtr->Reset();
-    playerCtr->Release();
-    if (amIntance.DeactivateAudioInterrupt(interrupt) != 0) {
-        return OHOS_FAILURE;
+    if(playerCtr->IsPlaying())
+    {
+        ret = playerCtr->Stop();
+        playerCtr->Reset();
+        playerCtr->Release();
+        if (amIntance.DeactivateAudioInterrupt(interrupt) != 0) {
+            return OHOS_FAILURE;
+        }
     }
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);
     return OHOS_SUCCESS;
@@ -803,6 +984,25 @@ int AlarmClockModel::AlarmPlayerStart(void)
     return OHOS_SUCCESS;
 }
 
+int testPlayerStart_(char *str)
+{
+    AlarmClockModel::GetInstance()->testPlayerStart(str);
+    return OHOS_SUCCESS;
+}
+
+int AlarmPlayerStop_(void)
+{
+    AlarmClockModel::GetInstance()->AlarmPlayerStop();
+    return OHOS_SUCCESS;
+}
+
+int AlarmClockModel::testPlayerStart(char *str)
+{
+    AlarmPlayerInit_BY_fir_name(str);
+    AlarmPlayerStat();
+    return OHOS_SUCCESS;
+}
+
 void AlarmPlayerCallbackImpl::OnPlaybackComplete()
 {
     GraphicService::GetInstance()->PostGraphicEvent(
@@ -814,7 +1014,7 @@ uint16_t AlarmClockModel::JudgePreSlice(void)
     uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
     if (preSlice == VIEW_ALARM_POP_UP || preSlice < VIEW_SETTING) {
         preSlice = VIEW_MAIN;
-    } else if ((preSlice == VIEW_MAEKPHONE_SAMPLE) &&
+    } else if ((preSlice == VIEW_INCOMING_CALL) &&
         (GetCurrCallNum() == 0 || GetScoConnectState() != HFP_SCO_STATE_CONNECTED)) {
         int num;
         PhoneCallInfo callList[MULTI_CALL_MAX_NUME]{};
@@ -909,6 +1109,43 @@ uint16 AlarmClockModel::GetSmartAlarmCnt(void)
     return AlmmgrGetSmartAlarmCnt();
 }
 
+void AlarmClockModel::UpdateAlarmInfoByAppSet(void)
+{
+    if(nullptr != OHOS::AlarmPresenter::GetInstance())
+    {
+        OHOS::AlarmPresenter::GetInstance()->UpdateAlarmInfoByAppSet();
+    }
+}
+
+void AlarmClockModel::CancelAlarmRing()
+{
+    bool alarmStatus;
+    uint8_t alarm = 0;
+    alarmStatus = AlarmClockModel::GetInstance()->GetListenClockId(&alarm);
+    if (!alarmStatus) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpPresenter::CancelAlarmRing get alarm Id false!");
+        return;
+    }
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CancelAlarmRing alarm = %d",alarm);
+    AlarmClockModel::GetInstance()->ResetRingClockStatus();
+    AlarmClockModel::GetInstance()->SetCancelAlarm(alarm);
+    if(AlarmPresenter::GetInstance()) {
+        AlarmPresenter::GetInstance()->RefreshAlarmStatus(clockListener);
+    }
+}
+
+void AlarmClockModel::DelayAlarmRing()
+{
+    uint8_t alarmId = 0;
+    bool alarmStatus;
+    alarmStatus = AlarmClockModel::GetInstance()->GetListenClockId(&alarmId);
+    if (!alarmStatus) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DelayAlarmRing get alarm Id false!");
+        return;
+    }
+    AlarmClockModel::GetInstance()->SetDelayAlarm(alarmId);
+}
+
 bool AlarmPlayerListener::IsPaused()
 {
     return isPaused_;
@@ -968,10 +1205,10 @@ void AlarmPlayerListener::OnInterrupt(int32_t type, int32_t hint)
 }
 }
 
-void PushAlarmClockDataToModel(AlarmClockQueueMsg alarmClockMsg)
-{
-    OHOS::AlarmClockModel::GetInstance()->PushAlarmClockData(alarmClockMsg);
-}
+// void PushAlarmClockDataToModel(AlarmClockQueueMsg alarmClockMsg)
+// {
+//     OHOS::AlarmClockModel::GetInstance()->PushAlarmClockData(alarmClockMsg);
+// }
 
 ////////////////////////////////////////////////////////////////////////////
 
index 171caef..320be47 100644 (file)
 #include "AlarmPresenter.h"\r
 #include <sstream>\r
 #include "color.h"\r
-\r
-namespace OHOS {\r
+#include "ConfigModel.h"\r
+#include "ui_resource_string.h"\r
+#include "languagecode/LanguageInit.h"\r
+namespace OHOS\r
+{\r
 #define SET_ALARM "编辑闹钟"\r
 #define TIME "9:00:00"\r
 #define SET_THIS_TIME "更改时间"\r
@@ -24,302 +27,395 @@ namespace OHOS {
 #define EVERY_DAY "每天"\r
 #define DO_NOT_REPEAT "不重复"\r
 \r
-static AlarmConfigView *g_pAlarmConfigView = nullptr;\r
-constexpr int16_t CONTAINER_X = 0;\r
-constexpr int16_t CONTAINER_Y = 0;\r
-constexpr int16_t SET_ONE = 1;\r
-constexpr int16_t SET_FOUR = 4;\r
-constexpr int16_t TITLE_X_LEN = 100;\r
-constexpr int16_t MAX_TITLE_X_LEN = 160;\r
-constexpr int16_t MAX_TITLE_Y_LEN = 45;\r
-constexpr int16_t MAX_DATA_X = 65;\r
-constexpr int16_t CLOCK_X = 165;\r
-constexpr int16_t LABEL_WID = 250;\r
-constexpr int16_t MAX_LABEL_H_LEN = 80;\r
-constexpr int16_t MAX_DATA_W_LEN = 275;\r
-constexpr int16_t DIGITAL_CLOCK_FONT = 45;\r
-constexpr int16_t MAX_LABEL_TIME_Y_LEN = 195;\r
-constexpr int16_t LABEL_SET_TIME_Y = 245;\r
-constexpr int16_t MAX_LABEL_DAY_Y_LEN = 320;\r
-constexpr int16_t MAX_LABEL_SET_WEEK_Y_LEN = 380;\r
-constexpr int16_t MAX_LABEL_LABEL_CHANGE_NAME_Y_LEN = 460;\r
-constexpr int16_t MAX_LABEL_SET_NAME_Y_LEN = 505;\r
-constexpr int16_t MAX_DEFAULT_FONT_LEN = 34;\r
-constexpr int16_t LITTLE_LABEL_FONT = 30;\r
-constexpr int16_t MAX_DEFAULT_FONT_2_LEN = 35;\r
-constexpr int16_t MAX_DEFAULT_LIT_FONT2_LEN = 40;\r
-constexpr int16_t MAX_BACK_BUTTON_HEIGHT_LEN = 64;\r
-constexpr int16_t MAX_FONT_DEFAULT_SIZE_LEN = 24;\r
-constexpr int16_t MAX_DELETE_BUTTON_W_LEN = 320;\r
-constexpr int16_t LABEL_DAY_WIDTH = 320;\r
-constexpr int16_t MAX_DELETE_BUTTON_H_LEN = 100;\r
-constexpr int16_t MAX_DELETE_BUTTON_X_LEN = 63;\r
-constexpr int16_t MAX_DELETE_BUTTON_Y_LEN = 365;\r
-constexpr int16_t MAX_IMAGE_CHANGE_X_LEN = 370;\r
-constexpr int16_t MAX_IMAGE_CHANGE1_Y_LEN = 210;\r
-constexpr int16_t MAX_IMAGE_CHANGE2_Y_LEN = 350;\r
-constexpr int16_t MAX_IMAGE_CHANGE3_Y_LEN = 470;\r
-constexpr int16_t MAX_IMAGE_CHANGE_WIDTH = 50;\r
-constexpr int16_t MAX_IMAGE_CHANGE_HEIGHT = 60;\r
-constexpr int16_t CONFIG_SCROLL_SIZE = 50;\r
-constexpr int16_t LABEL_SEMITRANSPARENT = 168;\r
-\r
-AlarmConfigView::AlarmConfigView()\r
-{\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::AlarmConfigView");\r
-    g_pAlarmConfigView = this;\r
-}\r
-\r
-AlarmConfigView::~AlarmConfigView()\r
-{\r
-    group->RemoveAll();\r
-    configScroll->RemoveAll();\r
-    delete editLabel;\r
-    editLabel = nullptr;\r
-    delete deleteImage;\r
-    deleteImage = nullptr;\r
-    delete configScroll;\r
-    configScroll = nullptr;\r
-    delete labelTime;\r
-    labelTime = nullptr;\r
-    delete labelSetTime;\r
-    labelSetTime = nullptr;\r
-    delete labelDay;\r
-    labelDay = nullptr;\r
-    delete labelSetWeek;\r
-    labelSetWeek = nullptr;\r
-    delete labelChangeName;\r
-    labelChangeName = nullptr;\r
-    delete labelSetName;\r
-    labelSetName = nullptr;\r
-    delete changeIcon1;\r
-    changeIcon1 = nullptr;\r
-    delete changeIcon2;\r
-    changeIcon2 = nullptr;\r
-    delete changeIcon3;\r
-    changeIcon3 = nullptr;\r
-    delete group;\r
-    group = nullptr;\r
-    g_pAlarmConfigView = nullptr;\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::~AlarmConfigView");\r
-}\r
+    static AlarmConfigView *g_pAlarmConfigView = nullptr;\r
+    constexpr int16_t CONTAINER_X = 0;\r
+    constexpr int16_t CONTAINER_Y = 0;\r
+    constexpr int16_t SET_ONE = 1;\r
+    constexpr int16_t SET_FOUR = 4;\r
+    constexpr int16_t TITLE_X_LEN = 100;\r
+    constexpr int16_t MAX_TITLE_X_LEN = 160;\r
+    constexpr int16_t MAX_TITLE_Y_LEN = 45;\r
+    constexpr int16_t MAX_DATA_X = 65;\r
+    constexpr int16_t CLOCK_X = 165;\r
+    constexpr int16_t LABEL_WID = 250;\r
+    constexpr int16_t MAX_LABEL_H_LEN = 80;\r
+    constexpr int16_t MAX_DATA_W_LEN = 275;\r
+    constexpr int16_t DIGITAL_CLOCK_FONT = 45;\r
+    constexpr int16_t MAX_LABEL_TIME_Y_LEN = 195 - 25;\r
+    constexpr int16_t LABEL_SET_TIME_Y = 245 - 25;\r
+    constexpr int16_t MAX_LABEL_DAY_Y_LEN = 320 - 30;\r
+    constexpr int16_t MAX_LABEL_SET_WEEK_Y_LEN = 380 - 30;\r
+    constexpr int16_t MAX_LABEL_LABEL_CHANGE_NAME_Y_LEN = 460;\r
+    constexpr int16_t MAX_LABEL_SET_NAME_Y_LEN = 505;\r
+    constexpr int16_t MAX_DEFAULT_FONT_LEN = 34;\r
+    constexpr int16_t LITTLE_LABEL_FONT = 30;\r
+    constexpr int16_t MAX_DEFAULT_FONT_2_LEN = 35;\r
+    constexpr int16_t MAX_DEFAULT_LIT_FONT2_LEN = 40;\r
+    constexpr int16_t MAX_BACK_BUTTON_HEIGHT_LEN = 64;\r
+    constexpr int16_t MAX_FONT_DEFAULT_SIZE_LEN = 24;\r
+    constexpr int16_t MAX_DELETE_BUTTON_W_LEN = 320;\r
+    constexpr int16_t LABEL_DAY_WIDTH = 320;\r
+    constexpr int16_t MAX_DELETE_BUTTON_H_LEN = 100;\r
+    constexpr int16_t MAX_DELETE_BUTTON_X_LEN = 63;\r
+    constexpr int16_t MAX_DELETE_BUTTON_Y_LEN = 365;\r
+    constexpr int16_t MAX_IMAGE_CHANGE_X_LEN = 370;\r
+    constexpr int16_t MAX_IMAGE_CHANGE1_Y_LEN = 210 - 25;\r
+    constexpr int16_t MAX_IMAGE_CHANGE2_Y_LEN = 350 - 30;\r
+    constexpr int16_t MAX_IMAGE_CHANGE3_Y_LEN = 470;\r
+    constexpr int16_t MAX_IMAGE_CHANGE_WIDTH = 50;\r
+    constexpr int16_t MAX_IMAGE_CHANGE_HEIGHT = 60;\r
+    constexpr int16_t CONFIG_SCROLL_SIZE = 50;\r
+    constexpr int16_t LABEL_SEMITRANSPARENT = 168;\r
 \r
-AlarmConfigView *AlarmConfigView::GetInstance(void)\r
-{\r
-    return g_pAlarmConfigView;\r
-}\r
-\r
-UILabel *AlarmConfigView::CreateConfigLabel(const char *buttonText, int16_t labelFont, int16_t x, int16_t y, int16_t width)\r
-{\r
-    if (buttonText == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: buttonText nullptr!");\r
-        return nullptr;\r
+    AlarmConfigView::AlarmConfigView()\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::AlarmConfigView");\r
+        g_pAlarmConfigView = this;\r
     }\r
-    UILabel *label = nullptr;\r
-    label = new UILabel();\r
-    if (label == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: CreateConfigLabel return nullptr");\r
-        return nullptr;\r
-    }\r
-    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelFont);\r
-    label->SetText(buttonText);\r
-    label->SetPosition(x, y, width, MAX_LABEL_H_LEN);\r
-    return label;\r
-}\r
 \r
-void AlarmConfigView::CreateChangeIcons(void)\r
-{\r
-    changeIcon1 = new UIImageView();\r
-    if (changeIcon1 == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new changeIcon1 fail");\r
-        return;\r
-    }\r
-    changeIcon1->SetPosition(MAX_IMAGE_CHANGE_X_LEN, MAX_IMAGE_CHANGE1_Y_LEN, MAX_IMAGE_CHANGE_WIDTH, MAX_IMAGE_CHANGE_HEIGHT);\r
-    changeIcon1->SetSrc(PNG_SETTTING_BUTTON_IMAGE);\r
-    configScroll->Add(changeIcon1);\r
-\r
-    changeIcon2 = new UIImageView();\r
-    if (changeIcon2 == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new changeIcon2 fail");\r
-        return;\r
-    }\r
-    changeIcon2->SetPosition(MAX_IMAGE_CHANGE_X_LEN, MAX_IMAGE_CHANGE2_Y_LEN, MAX_IMAGE_CHANGE_WIDTH, MAX_IMAGE_CHANGE_HEIGHT);\r
-    changeIcon2->SetSrc(PNG_SETTTING_BUTTON_IMAGE);\r
-    configScroll->Add(changeIcon2);\r
-\r
-    changeIcon3 = new UIImageView();\r
-    if (changeIcon3 == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new changeIcon3 fail");\r
-        return;\r
-    }\r
-    changeIcon3->SetPosition(MAX_IMAGE_CHANGE_X_LEN, MAX_IMAGE_CHANGE3_Y_LEN, MAX_IMAGE_CHANGE_WIDTH, MAX_IMAGE_CHANGE_HEIGHT);\r
-    changeIcon3->SetSrc(PNG_SETTTING_BUTTON_IMAGE);\r
-    configScroll->Add(changeIcon3);\r
-\r
-    UIView::OnDragListener *configDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();\r
-    if (configDragListener == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new configDragListener fail");\r
-        return;\r
-    }\r
-    group->SetOnDragListener(configDragListener);\r
-}\r
-\r
-void AlarmConfigView::CreateConfigButton(void)\r
-{\r
-    editLabel = CreateConfigLabel(SET_ALARM, MAX_DEFAULT_FONT_LEN, TITLE_X_LEN, MAX_TITLE_Y_LEN, LABEL_WID);\r
-    if (editLabel == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new editLabel fail");\r
-        return;\r
-    }\r
-    editLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
-    configScroll->Add(editLabel);\r
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
-    if (clickListener == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::OnStart clickListener nullptr");\r
-        return;\r
-    }\r
-    labelTime = new UIDigitalClock();\r
-    if (labelTime == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelTime fail");\r
-        return;\r
+    AlarmConfigView::~AlarmConfigView()\r
+    {\r
+        if (nullptr != group)\r
+        {\r
+            group->RemoveAll();\r
+            if (nullptr != configScroll)\r
+            {\r
+                configScroll->RemoveAll();\r
+                if (nullptr != editLabel)\r
+                {\r
+                    delete editLabel;\r
+                    editLabel = nullptr;\r
+                }\r
+                if (nullptr != labelTime)\r
+                {\r
+                    delete labelTime;\r
+                    labelTime = nullptr;\r
+                }\r
+                if (nullptr != labelSetTime)\r
+                {\r
+                    delete labelSetTime;\r
+                    labelSetTime = nullptr;\r
+                }\r
+                if (nullptr != labelDay)\r
+                {\r
+                    delete labelDay;\r
+                    labelDay = nullptr;\r
+                }\r
+                if (nullptr != labelSetWeek)\r
+                {\r
+                    delete labelSetWeek;\r
+                    labelSetWeek = nullptr;\r
+                }\r
+                if (nullptr != button1)\r
+                {\r
+                    delete button1;\r
+                    button1 = nullptr;\r
+                }\r
+                if (nullptr != button2)\r
+                {\r
+                    delete button2;\r
+                    button2 = nullptr;\r
+                }\r
+                delete configScroll;\r
+                configScroll = nullptr;\r
+            }\r
+            delete group;\r
+            group = nullptr;\r
+        }\r
+        g_pAlarmConfigView = nullptr;\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::~AlarmConfigView");\r
     }\r
-    labelTime->SetViewId(SET_TIME);\r
-    labelTime->SetPosition(CLOCK_X, MAX_LABEL_TIME_Y_LEN, LABEL_WID, MAX_LABEL_H_LEN);\r
-    labelTime->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DIGITAL_CLOCK_FONT);\r
-    labelTime->SetTouchable(true);\r
-    labelTime->SetDisplayMode(UIDigitalClock::DISPLAY_24_HOUR_NO_SECONDS);\r
-    labelTime->SetOnClickListener(clickListener);\r
-    configScroll->Add(labelTime);\r
 \r
-    labelSetTime = CreateConfigLabel(SET_THIS_TIME, LITTLE_LABEL_FONT, MAX_TITLE_X_LEN, LABEL_SET_TIME_Y, LABEL_WID);\r
-    if (labelSetTime == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelSetTime fail");\r
-        return;\r
-    }\r
-    labelSetTime->SetStyle(STYLE_TEXT_OPA, LABEL_SEMITRANSPARENT);\r
-    configScroll->Add(labelSetTime);\r
-    labelDay = CreateConfigLabel(WEEK_MON_TUE, MAX_DEFAULT_FONT_LEN, MAX_DATA_X, MAX_LABEL_DAY_Y_LEN, LABEL_DAY_WIDTH);\r
-    if (labelDay == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelDay fail");\r
-        return;\r
+    AlarmConfigView *AlarmConfigView::GetInstance(void)\r
+    {\r
+        return g_pAlarmConfigView;\r
     }\r
-    labelDay->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
-    configScroll->Add(labelDay);\r
-    labelDay->SetViewId(SET_WEEK);\r
-    labelDay->SetTouchable(true);\r
-    labelDay->SetOnClickListener(clickListener);\r
-    labelSetWeek = CreateConfigLabel(SET_DATA, LITTLE_LABEL_FONT, MAX_TITLE_X_LEN, MAX_LABEL_SET_WEEK_Y_LEN, LABEL_WID);\r
-    if (labelSetWeek == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelSetWeek fail");\r
-        return;\r
+    void AlarmConfigView::InitLabel()\r
+    {\r
+        if (editLabel == nullptr)\r
+        {\r
+            editLabel = new UILabelExt();\r
+            if (editLabel == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new editLabel fail");\r
+                return;\r
+            }\r
+        }\r
+        editLabel->SetPosition(83, 50, 300, 35);\r
+        // editLabel->SetText("编辑闹钟");\r
+        editLabel->SetTextId(STR_ALARM);\r
+        editLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
+        editLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        editLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        editLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        editLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+        editLabel->SetRollSpeed(23);\r
+        /* -------------------------------------------------------------------------- */\r
+        // if (labelTime == nullptr)\r
+        // {\r
+        //     labelTime = new UIDigitalClock();\r
+        //     if (labelTime == nullptr)\r
+        //     {\r
+        //         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelTime fail");\r
+        //         return;\r
+        //     }\r
+        // }\r
+        // labelTime->SetPosition(93, (120 - 80) / 2, 150, 45);\r
+        // labelTime->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 45);\r
+        // labelTime->SetTouchable(true);\r
+        // labelTime->SetDisplayMode(UIDigitalClock::DISPLAY_24_HOUR_NO_SECONDS);\r
+        if (labelTime == nullptr)\r
+        {\r
+            labelTime = new UILabelExt();\r
+            if (labelTime == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new labelSetTime fail");\r
+                return;\r
+            }\r
+        }\r
+        labelTime->SetPosition(93, 120 + 12, 250, 45);\r
+        labelTime->SetStyle(STYLE_TEXT_FONT, 40);\r
+        labelTime->SetStyle(STYLE_LINE_HEIGHT, 45);\r
+        labelTime->SetFont(DEFAULT_VECTOR_FONT_FILENAME_EN, 40);\r
+        labelTime->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+        labelTime->SetRollSpeed(23);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (labelSetTime == nullptr)\r
+        {\r
+            labelSetTime = new UILabelExt();\r
+            if (labelSetTime == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new labelSetTime fail");\r
+                return;\r
+            }\r
+        }\r
+        labelSetTime->SetPosition(93, labelTime->GetY() + labelTime->GetHeight(), 250, 35);\r
+        // labelSetTime->SetText("更改时间");\r
+        labelSetTime->SetTextId(STR_ALARM_TIME_CHANGE);\r
+        labelSetTime->SetStyle(STYLE_TEXT_FONT, 30);\r
+        labelSetTime->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        labelSetTime->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
+        labelSetTime->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        labelSetTime->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+        labelSetTime->SetRollSpeed(23);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (labelDay == nullptr)\r
+        {\r
+            labelDay = new UILabelExt();\r
+            if (labelDay == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new labelDay fail");\r
+                return;\r
+            }\r
+        }\r
+        labelDay->SetPosition(93, 240 + 12, 250, 45);\r
+        labelDay->SetStyle(STYLE_TEXT_FONT, 40);\r
+        labelDay->SetStyle(STYLE_LINE_HEIGHT, 45);\r
+        labelDay->SetFont(DEFAULT_VECTOR_FONT_FILENAME_EN, 40);\r
+        labelDay->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+        labelDay->SetRollSpeed(23);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (labelSetWeek == nullptr)\r
+        {\r
+            labelSetWeek = new UILabelExt();\r
+            if (labelSetWeek == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new labelSetWeek fail");\r
+                return;\r
+            }\r
+        }\r
+        labelSetWeek->SetPosition(93, labelDay->GetY() + labelDay->GetHeight(), 250, 35);\r
+        // labelSetWeek->SetText("更改星期");\r
+        labelSetWeek->SetTextId(STR_ALARM_WEEK_CHANGE);\r
+        labelSetWeek->SetStyle(STYLE_TEXT_FONT, 30);\r
+        labelSetWeek->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        labelSetWeek->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
+        labelSetWeek->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        labelSetWeek->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+        labelSetWeek->SetRollSpeed(23);\r
     }\r
-    labelSetWeek->SetStyle(STYLE_TEXT_OPA, LABEL_SEMITRANSPARENT);\r
-    configScroll->Add(labelSetWeek);\r
-}\r
 \r
-UIScrollView *AlarmConfigView::InitConfigView(void)\r
-{\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::OnStart");\r
-    group = new UIScrollView();\r
-    if (group == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new group fail");\r
-        return nullptr;\r
+    void AlarmConfigView::InitButton()\r
+    {\r
+        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
+        if (clickListener == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::OnStart clickListener nullptr");\r
+            return;\r
+        }\r
+        if (nullptr == button1)\r
+        {\r
+            button1 = new UILabelButtonExt();\r
+            if (nullptr == button1)\r
+            {\r
+                return;\r
+            }\r
+        }\r
+        button1->SetPosition(43, 120, 380, 100);\r
+        button1->SetViewId(SET_TIME); // 设置时间\r
+        button1->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+        button1->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        button1->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        button1->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff000000, UIButton::PRESSED);\r
+        button1->SetAlign(TEXT_ALIGNMENT_LEFT);\r
+        button1->SetLabelPosition(115, 0);\r
+        button1->SetImagePosition(326, 37);\r
+        button1->SetImageSrc(PNG_SETTING_NEXT_IMAGE, PNG_SETTING_NEXT_IMAGE);\r
+        button1->SetOnClickListener(clickListener);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (nullptr == button2)\r
+        {\r
+            button2 = new UILabelButtonExt();\r
+            if (nullptr == button2)\r
+            {\r
+                return;\r
+            }\r
+        }\r
+        button2->SetPosition(43, 240, 380, 100);\r
+        button2->SetViewId(SET_WEEK); // 设置星期\r
+        button2->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+        button2->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        button2->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        button2->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff000000, UIButton::PRESSED);\r
+        button2->SetAlign(TEXT_ALIGNMENT_LEFT);\r
+        button2->SetLabelPosition(115, 0);\r
+        button2->SetImagePosition(326, 37);\r
+        button2->SetImageSrc(PNG_SETTING_NEXT_IMAGE, PNG_SETTING_NEXT_IMAGE);\r
+        button2->SetOnClickListener(clickListener);\r
     }\r
-    group->SetPosition(CONTAINER_X, CONTAINER_Y, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
 \r
-    configScroll = new UIScrollView();\r
-    if (configScroll == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new configScroll fail");\r
-        return nullptr;\r
-    }\r
-    configScroll->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION - MAX_BACK_BUTTON_HEIGHT_LEN);\r
-    configScroll->SetReboundSize(CONFIG_SCROLL_SIZE);\r
-    configScroll->SetHorizontalScrollState(false);\r
-    CreateConfigButton();\r
-    labelChangeName = CreateConfigLabel(CHANGE_NAME, MAX_DEFAULT_FONT_LEN, MAX_TITLE_X_LEN,\r
-    MAX_LABEL_LABEL_CHANGE_NAME_Y_LEN, LABEL_WID);\r
-    if (labelChangeName == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelChangeName fail");\r
-        return nullptr;\r
-    }\r
-    configScroll->Add(labelChangeName);\r
-    labelSetName = CreateConfigLabel(SET_NAME, LITTLE_LABEL_FONT, MAX_TITLE_X_LEN, MAX_LABEL_SET_NAME_Y_LEN, LABEL_WID);\r
-    if (labelSetName == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelSetName fail");\r
-        return nullptr;\r
-    }\r
-    labelSetName->SetStyle(STYLE_TEXT_OPA, LABEL_SEMITRANSPARENT);\r
-    configScroll->Add(labelSetName);\r
-    deleteImage = new UILabelButton();\r
-    if (deleteImage == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new deleteImage fail");\r
-        return nullptr;\r
+    UIScrollView *AlarmConfigView::InitConfigView(void)\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::OnStart");\r
+        if (group == nullptr)\r
+        {\r
+            group = new UIScrollView();\r
+            if (group == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new group fail");\r
+                return nullptr;\r
+            }\r
+            group->SetPosition(CONTAINER_X, CONTAINER_Y, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+            UIView::OnDragListener *configDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();\r
+            if (configDragListener == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new configDragListener fail");\r
+                return nullptr;\r
+            }\r
+            group->SetOnDragListener(configDragListener);\r
+            /* -------------------------------------------------------------------------- */\r
+            if (configScroll == nullptr)\r
+            {\r
+                configScroll = new UIScrollView();\r
+                if (configScroll == nullptr)\r
+                {\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new configScroll fail");\r
+                    return nullptr;\r
+                }\r
+            }\r
+            configScroll->SetPosition(CONTAINER_X, CONTAINER_Y, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+            configScroll->SetReboundSize(CONFIG_SCROLL_SIZE);\r
+            configScroll->SetHorizontalScrollState(false);\r
+            InitButton();\r
+            InitLabel();\r
+            /* ----------------------------------- Add ---------------------------------- */\r
+            configScroll->Add(button1);\r
+            configScroll->Add(button2);\r
+            configScroll->Add(editLabel);\r
+            configScroll->Add(labelTime);\r
+            configScroll->Add(labelSetTime);\r
+            configScroll->Add(labelDay);\r
+            configScroll->Add(labelSetWeek);\r
+            group->Add(configScroll);\r
+        }\r
+        return group;\r
     }\r
-    deleteImage->SetPosition(MAX_DELETE_BUTTON_X_LEN, MAX_DELETE_BUTTON_Y_LEN, MAX_DELETE_BUTTON_W_LEN, MAX_DELETE_BUTTON_H_LEN);\r
-    deleteImage->SetText(DELETE_INTERFACES);\r
-    deleteImage->SetTouchable(true);\r
-    deleteImage->SetViewId(ALARM_CLOCK_DELETE);\r
-    deleteImage->SetTextColor(Color::Red());\r
-    deleteImage->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MAX_DEFAULT_LIT_FONT2_LEN);\r
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
-    deleteImage->SetOnClickListener(clickListener);\r
-    deleteImage->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
-    \r
-    CreateChangeIcons();\r
-    group->Add(configScroll);\r
-    group->Add(deleteImage);\r
-    return group;\r
-}\r
 \r
-void AlarmConfigView::RefreshConfig(const uint32_t time, uint8_t week, uint16_t alarmNum)\r
-{\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep");\r
-    uint8_t hour = time >> 16; // 闹钟存储小时位需右移16位\r
-    uint8_t min = time & 0x00FF; // 闹钟存储分钟的位数右边16位需要全部置0\r
-    uint16_t ret;\r
-    std::string weekStr;\r
-    if (hour > 24) { // 小时数最大为24,加入判断若小时的参数超过24则错误\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep hour > 24 error!");\r
-        return;\r
-    }\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::week = %u!", week);\r
-    if ((week & 0x7f) == 0x7f) { // 判断0~6位是否都为1,如若都为1,则一周7天闹钟都响应\r
-        weekStr = EVERY_DAY;\r
-    } else if (week == 0) { // 判断0~6位是否都为0,如若都为0,则一周7天都不响应,闹钟为不重复开启\r
-        weekStr = DO_NOT_REPEAT;\r
-    } else {\r
-        if ((week & 0x02) == 0x02) { // 判断第1位是否为1,如若为1,则星期一响应\r
-            weekStr += MON_DAY;\r
+    void AlarmConfigView::RefreshConfig(const uint32_t time, uint8_t week, uint16_t alarmNum)\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep");\r
+        uint8_t hour = time >> 16;   // 闹钟存储小时位需右移16位\r
+        uint8_t min = time & 0x00FF; // 闹钟存储分钟的位数右边16位需要全部置0\r
+        uint16_t ret;\r
+        std::string weekStr;\r
+        std::string weekStr_en;\r
+        if (hour > 24)\r
+        { // 小时数最大为24,加入判断若小时的参数超过24则错误\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep hour > 24 error!");\r
+            return;\r
         }\r
-        if ((week & 0x04) == 0x04) { // 判断第2位是否为1,如若为1,则星期二响应\r
-            weekStr += TUE_DAY;\r
+        // 检查分钟是否在有效范围\r
+        if (min > 59)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep min > 59 error!");\r
+            return;\r
         }\r
-        if ((week & 0x08) == 0x08) { // 判断第3位是否为1,如若为1,则星期三响应\r
-            weekStr += WED_DAY;\r
+        // 检查 week 是否在有效范围\r
+        if (week > 127)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep week out of range!");\r
+            return;\r
         }\r
-        if ((week & 0x10) == 0x10) { // 判断第4位是否为1,如若为1,则星期四响应\r
-            weekStr += THUR_DAY;\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::week = %u!", week);\r
+        if ((week & 0x7f) == 0x7f)\r
+        { // 判断0~6位是否都为1,如若都为1,则一周7天闹钟都响应\r
+            weekStr = EVERY_DAY;\r
+            weekStr_en = EVERY_DAY_EN;\r
         }\r
-        if ((week & 0x20) == 0x20) { // 判断第5位是否为1,如若为1,则星期五响应\r
-            weekStr += FRI_DAY;\r
+        else if (week == 0)\r
+        { // 判断0~6位是否都为0,如若都为0,则一周7天都不响应,闹钟为不重复开启\r
+            weekStr = DO_NOT_REPEAT;\r
+            weekStr_en = DO_NOT_REPEAT_EN;\r
         }\r
-        if ((week & 0x40) == 0x40) { // 判断第6位是否为1,如若为1,则星期六响应\r
-            weekStr += SAT_DAY;\r
+        else\r
+        {\r
+            if ((week & 0x02) == 0x02)\r
+            { // 判断第1位是否为1,如若为1,则星期一响应\r
+                weekStr += MON_DAY;\r
+                weekStr_en += MON_DAY_EN;\r
+            }\r
+            if ((week & 0x04) == 0x04)\r
+            { // 判断第2位是否为1,如若为1,则星期二响应\r
+                weekStr += TUE_DAY;\r
+                weekStr_en += TUE_DAY_EN;\r
+            }\r
+            if ((week & 0x08) == 0x08)\r
+            { // 判断第3位是否为1,如若为1,则星期三响应\r
+                weekStr += WED_DAY;\r
+                weekStr_en += WED_DAY_EN;\r
+            }\r
+            if ((week & 0x10) == 0x10)\r
+            { // 判断第4位是否为1,如若为1,则星期四响应\r
+                weekStr += THUR_DAY;\r
+                weekStr_en += THUR_DAY_EN;\r
+            }\r
+            if ((week & 0x20) == 0x20)\r
+            { // 判断第5位是否为1,如若为1,则星期五响应\r
+                weekStr += FRI_DAY;\r
+                weekStr_en += FRI_DAY_EN;\r
+            }\r
+            if ((week & 0x40) == 0x40)\r
+            { // 判断第6位是否为1,如若为1,则星期六响应\r
+                weekStr += SAT_DAY;\r
+                weekStr_en += SAT_DAY_EN;\r
+            }\r
+            if ((week & 0x01) == 0x01)\r
+            { // 判断第0位是否为1,如若为1,则星期日响应\r
+                weekStr += SUN_DAY;\r
+                weekStr_en += SUN_DAY_EN;\r
+            }\r
         }\r
-        if ((week & 0x01) == 0x01) { // 判断第0位是否为1,如若为1,则星期日响应\r
-            weekStr += SUN_DAY;\r
+        if (labelTime == nullptr || labelDay == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep labelTime or labelDay error!");\r
+            return;\r
         }\r
+        memset(showtime, 0, sizeof(showtime));\r
+        snprintf(showtime, sizeof(showtime), "%02d:%02d", hour, min); // 使用更安全的 snprintf 函数\r
+        labelTime->SetText(showtime);\r
+        if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN)\r
+            labelDay->SetText(weekStr.c_str());\r
+        else\r
+            labelDay->SetText(weekStr_en.c_str());\r
     }\r
-    if (labelTime == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep labelTime error!");\r
-        return;\r
-    }\r
-    if (alarmNum == 0) {\r
-        deleteImage->SetVisible(false);\r
-    } else if (alarmNum >= SET_ONE && alarmNum <= SET_FOUR) {\r
-        deleteImage->SetVisible(true);\r
-    }\r
-    labelTime->SetTime24Hour(hour, min, 0);\r
-    labelDay->SetText(weekStr.c_str());\r
-}\r
 }
\ No newline at end of file
index 9e6c2ea..b45d224 100644 (file)
@@ -5,29 +5,14 @@
  * Create: 2021-09-11\r
  */\r
 \r
-#include "AlarmJudgeView.h"\r
+#include "alarm/include/AlarmJudgeView.h"\r
 #include "UiConfig.h"\r
 #include <string>\r
-#include "AlarmPresenter.h"\r
+#include "alarm/include/AlarmPresenter.h"\r
+#include "ui_resource_string.h"\r
 \r
 namespace OHOS {\r
-#define DELETE_INETERFACES "是否删除此闹钟?"\r
-\r
 static AlarmJudgeView *g_JudgeView = nullptr;\r
-constexpr int16_t CONTAINER_X = 0;\r
-constexpr int16_t CONTAINER_Y = 0;\r
-constexpr int16_t MAX_LABEL_X_LEN = 120;\r
-constexpr int16_t MAX_LABEL_Y_LEN = 160;\r
-constexpr int16_t MAX_LABEL_LENGTH_LEN = 400;\r
-constexpr int16_t MAX_LABEL_WIDTH_LEN = 50;\r
-constexpr int16_t MAX_LABEL_FONT_LEN = 30;\r
-constexpr int16_t MAX_IMAGE_DELETE_X_LEN = 90;\r
-constexpr int16_t MAX_IMAGE_DELETE_Y_LEN = 300;\r
-constexpr int16_t MAX_IMAGE_TRUE_X_LEN = 270;\r
-constexpr int16_t MAX_IMAGE_TRUE_Y_LEN = 300;\r
-constexpr int16_t MAX_IMAGE_DELETE_WIDTH_LEN = 91;\r
-constexpr int16_t MAX_IMAGE_TRUE_WIDTH_LEN = 91;\r
-\r
 AlarmJudgeView::AlarmJudgeView()\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView::AlarmJudgeView");\r
@@ -36,73 +21,138 @@ AlarmJudgeView::AlarmJudgeView()
 \r
 AlarmJudgeView::~AlarmJudgeView()\r
 {\r
-    container->RemoveAll();\r
-    delete labelText;\r
-    labelText = nullptr;\r
-    delete imageViewDelete;\r
-    imageViewDelete = nullptr;\r
-    delete container;\r
-    container = nullptr;\r
+    DeinitDeleteScreen();\r
     g_JudgeView = nullptr;\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView::~AlarmJudgeView");\r
 }\r
 \r
-void AlarmJudgeView::CreateImage(void)\r
+UIScrollView *AlarmJudgeView::InitJudgeView(void)\r
 {\r
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
-    if (clickListener == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView:: new OnClickListener fail");\r
-        return;\r
-    }\r
-    imageViewDelete = new UIImageView();\r
-    if (imageViewDelete == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView:: new imageViewDelete fail");\r
-        return;\r
-    }\r
-    imageViewDelete->SetPosition(MAX_IMAGE_DELETE_X_LEN, MAX_IMAGE_DELETE_Y_LEN);\r
-    imageViewDelete->SetSrc(ALARM_DELETE_ADD_PATH);\r
-    imageViewDelete->SetViewId(JUDGE_DELETE);\r
-    imageViewDelete->SetWidth(MAX_IMAGE_DELETE_WIDTH_LEN);\r
-    imageViewDelete->SetTouchable(true);\r
-    imageViewDelete->SetOnClickListener(clickListener);\r
-    container->Add(imageViewDelete);\r
-\r
-    imageViewTrue = new UIImageView();\r
-    if (imageViewTrue == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView:: new imageViewTrue fail");\r
-        return;\r
-    }\r
-    imageViewTrue->SetPosition(MAX_IMAGE_TRUE_X_LEN, MAX_IMAGE_TRUE_Y_LEN); // 50 : size\r
-    imageViewTrue->SetSrc(ALARM_TRUE_ADD_PATH);\r
-    imageViewTrue->SetViewId(JUDGE_TRUE);\r
-    imageViewTrue->SetWidth(MAX_IMAGE_TRUE_WIDTH_LEN);\r
-    imageViewTrue->SetTouchable(true);\r
-    imageViewTrue->SetOnClickListener(clickListener);\r
-    container->Add(imageViewTrue);\r
+    return InitDeleteScreen();\r
 }\r
 \r
-UIScrollView *AlarmJudgeView::InitJudgeView(void)\r
+\r
+void AlarmJudgeView::DeinitDeleteScreen()\r
 {\r
-    container = new UIScrollView();\r
-    if (container == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView:: new container fail");\r
-        return nullptr;\r
+    if(nullptr != DeleteGroup_)\r
+    {\r
+        DeleteGroup_->RemoveAll();\r
+        if(nullptr != DeleteTitleLabelExt_)\r
+        {\r
+            delete DeleteTitleLabelExt_;\r
+            DeleteTitleLabelExt_ = nullptr;\r
+        }\r
+        if(nullptr != DeletePromptLabelExt_)\r
+        {\r
+            delete DeletePromptLabelExt_;\r
+            DeletePromptLabelExt_ = nullptr;\r
+        }\r
+        if(nullptr != DeleteCancelButton_)\r
+        {\r
+            delete DeleteCancelButton_;\r
+            DeleteCancelButton_ = nullptr;\r
+        }\r
+        if(nullptr != DeleteOKButton_)\r
+        {\r
+            delete DeleteOKButton_;\r
+            DeleteOKButton_ = nullptr;\r
+        }\r
+        \r
+        delete DeleteGroup_;\r
+        DeleteGroup_ = nullptr;\r
     }\r
-    container->SetPosition(CONTAINER_X, CONTAINER_Y);\r
-    container->SetWidth(HORIZONTAL_RESOLUTION);\r
-    container->SetHeight(VERTICAL_RESOLUTION);\r
-\r
-    labelText = new UILabel();\r
-    if (container == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView:: new labelText fail");\r
-        return nullptr;\r
+}\r
+\r
+UIScrollView * AlarmJudgeView::InitDeleteScreen()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]", __LINE__);\r
+    if(nullptr == DeleteGroup_)\r
+    {\r
+        DeleteGroup_ = new UIScrollView();\r
+        if(nullptr == DeleteGroup_)\r
+            return nullptr;\r
+\r
+        DeleteGroup_->SetPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);\r
+        DeleteGroup_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+        DeleteGroup_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+\r
+        if(nullptr == DeleteTitleLabelExt_)\r
+        {\r
+            DeleteTitleLabelExt_ = new UILabelExt();\r
+            if(nullptr == DeleteTitleLabelExt_)\r
+                return nullptr;\r
+\r
+            DeleteTitleLabelExt_->SetPosition(83, 50, 300, 35);\r
+            DeleteTitleLabelExt_->SetStyle(STYLE_TEXT_FONT, 30);\r
+            DeleteTitleLabelExt_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+            DeleteTitleLabelExt_->SetTextId(STR_DELETE);\r
+            DeleteTitleLabelExt_->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+            DeleteTitleLabelExt_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+            DeleteTitleLabelExt_->SetRollSpeed(23);\r
+            DeleteTitleLabelExt_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+            DeleteTitleLabelExt_->SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
+        }\r
+\r
+        if(nullptr == DeletePromptLabelExt_)\r
+        {\r
+            DeletePromptLabelExt_ = new UILabelExt();\r
+            if(nullptr == DeletePromptLabelExt_)\r
+                return nullptr;\r
+\r
+            DeletePromptLabelExt_->SetPosition(83, 187, 300, 35);\r
+            DeletePromptLabelExt_->SetStyle(STYLE_TEXT_FONT, 30);\r
+            DeletePromptLabelExt_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+            DeletePromptLabelExt_->SetTextId(STR_ALARM_DELETE_NOTE);\r
+            DeletePromptLabelExt_->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+            DeletePromptLabelExt_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+            DeletePromptLabelExt_->SetRollSpeed(23);\r
+            DeletePromptLabelExt_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+            DeletePromptLabelExt_->SetStyle(STYLE_TEXT_COLOR, 0xff999999);\r
+        }\r
+\r
+        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
+        if(nullptr == DeleteCancelButton_)\r
+        {\r
+            DeleteCancelButton_ = new UILabelButtonExt();\r
+            if(nullptr == DeleteCancelButton_)\r
+                return nullptr;\r
+\r
+            DeleteCancelButton_->SetPosition(111, 299, 100, 100);\r
+            DeleteCancelButton_->SetViewId(JUDGE_DELETE);\r
+            DeleteCancelButton_->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+            DeleteCancelButton_->SetStyle(STYLE_BACKGROUND_OPA, 25); // 10%\r
+            DeleteCancelButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);\r
+            DeleteCancelButton_->SetStyleForState(STYLE_BACKGROUND_OPA, 25, UIButton::PRESSED);\r
+            DeleteCancelButton_->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+            DeleteCancelButton_->SetImagePosition(0, 0);\r
+            DeleteCancelButton_->SetImageSrc(PNG_SYSTEM_CHECK_OFF_IMAGE, PNG_SYSTEM_CHECK_OFF_IMAGE);\r
+            DeleteCancelButton_->SetOnClickListener(clickListener);\r
+        }\r
+\r
+        if(nullptr == DeleteOKButton_)\r
+        {\r
+            DeleteOKButton_ = new UILabelButtonExt();\r
+            if(nullptr == DeleteOKButton_)\r
+                return nullptr;\r
+\r
+            DeleteOKButton_->SetPosition(256, 299, 100, 100);\r
+            DeleteOKButton_->SetViewId(JUDGE_TRUE);\r
+            DeleteOKButton_->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+            DeleteOKButton_->SetStyle(STYLE_BACKGROUND_OPA, 25); // 10%\r
+            DeleteOKButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);\r
+            DeleteOKButton_->SetStyleForState(STYLE_BACKGROUND_OPA, 25, UIButton::PRESSED);\r
+            DeleteOKButton_->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+            DeleteOKButton_->SetImagePosition(0, 0);\r
+            DeleteOKButton_->SetImageSrc(PNG_SYSTEM_CHECK_ON_IMAGE, PNG_SYSTEM_CHECK_ON_IMAGE);\r
+            DeleteOKButton_->SetOnClickListener(clickListener);\r
+        }\r
+\r
+        DeleteGroup_->Add(DeleteTitleLabelExt_);\r
+        DeleteGroup_->Add(DeletePromptLabelExt_);\r
+        DeleteGroup_->Add(DeleteCancelButton_);\r
+        DeleteGroup_->Add(DeleteOKButton_);\r
     }\r
-    labelText->SetPosition(MAX_LABEL_X_LEN, MAX_LABEL_Y_LEN, MAX_LABEL_LENGTH_LEN, MAX_LABEL_WIDTH_LEN);\r
-    labelText->SetText(DELETE_INETERFACES);\r
-    labelText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MAX_LABEL_FONT_LEN);\r
-    container->Add(labelText);\r
 \r
-    CreateImage();\r
-    return container;\r
+    return DeleteGroup_;\r
 }\r
 }
\ No newline at end of file
index ed0e5ae..570da74 100644 (file)
@@ -13,6 +13,7 @@
 \r
 #include "AlarmPresenter.h"\r
 #include "MainAlarmView.h"\r
+#include "ui_resource_string.h"\r
 \r
 namespace OHOS {\r
 #define MAX_INETERFACES "当前闹钟个数已达上限"\r
@@ -20,7 +21,7 @@ namespace OHOS {
 \r
 GraphicTimer* g_stopAlarmMaxHandle = nullptr;\r
 static AlarmMaxClock *g_AlarmMaxClock = nullptr;\r
-static constexpr uint64_t MS_THREE_SECONDS = 3000;\r
+static constexpr uint64_t MS_THREE_SECONDS = 10*1000; //10s钟无操作关闭该视图;\r
 void ScanTimerCallback(void* data);\r
 void EndScanHandle(void);\r
 \r
@@ -47,11 +48,17 @@ AlarmMaxClock::AlarmMaxClock()
 \r
 AlarmMaxClock::~AlarmMaxClock()\r
 {\r
-    container->RemoveAll();\r
-    delete labelText;\r
-    labelText = nullptr;\r
-    delete container;\r
-    container = nullptr;\r
+    if(container)\r
+    {\r
+        container->RemoveAll();\r
+        if(labelText)\r
+        {\r
+            delete labelText;\r
+            labelText = nullptr;\r
+        }\r
+        delete container;\r
+        container = nullptr;\r
+    }\r
     g_AlarmMaxClock = nullptr;\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::~AlarmMaxClock");\r
 }\r
@@ -63,34 +70,43 @@ AlarmMaxClock *AlarmMaxClock::GetInstance(void)
 \r
 UIScrollView *AlarmMaxClock::InitAlarmMax(void)\r
 {\r
-    container = new UIScrollView();\r
     if (container == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock:: new container fail");\r
-        return container;\r
-    }\r
-    container->SetPosition(CONTAINER_X, CONTAINER_Y);\r
-    container->SetWidth(HORIZONTAL_RESOLUTION);\r
-    container->SetHeight(VERTICAL_RESOLUTION);\r
-\r
-    labelText = new UILabel();\r
-    if (labelText == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock:: new labelText fail");\r
-        return container;\r
-    }\r
-    labelText->SetPosition(MAX_LABEL_X_LEN, MAX_LABEL_Y_LEN, MAX_LABEL_LENGTH_LEN, MAX_LABEL_WIDTH_LEN);\r
-    labelText->SetText(MAX_INETERFACES);\r
-    labelText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MAX_LABEL_FONT_LEN);\r
-\r
-    container->SetTouchable(true);\r
-    container->SetDraggable(true);\r
-    UIView::OnDragListener *maxClockDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();\r
-    if (maxClockDragListener == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock:: maxClockDragListener is nullptr");\r
-        return container;\r
+        container = new UIScrollView();\r
+        if (container == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock:: new container fail");\r
+            return container;\r
+        }\r
+        container->SetPosition(CONTAINER_X, CONTAINER_Y);\r
+        container->SetWidth(HORIZONTAL_RESOLUTION);\r
+        container->SetHeight(VERTICAL_RESOLUTION);\r
+        container->SetTouchable(true);\r
+        container->SetDraggable(true);\r
+        UIView::OnDragListener *maxClockDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();\r
+        if (maxClockDragListener == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock:: maxClockDragListener is nullptr");\r
+            return container;\r
+        }\r
+        container->SetOnDragListener(maxClockDragListener);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (labelText == nullptr)\r
+        {\r
+            labelText = new UILabelExt();\r
+            if (labelText == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitAlarmMax labelText is nullptr");\r
+                return nullptr;\r
+            }\r
+        }\r
+        labelText->SetPosition(83, 236, 360, 35);\r
+        labelText->SetTextId(STR_ALARM_ADD_LIMIT_NOTE);//当前闹钟个数已达上限\r
+        labelText->SetStyle(STYLE_TEXT_FONT, 30);\r
+        labelText->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        labelText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        labelText->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+        labelText->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        container->Add(labelText);\r
+        labelText->LayoutCenterOfParent();\r
     }\r
-    container->SetOnDragListener(maxClockDragListener);\r
-    container->Add(labelText);\r
-\r
     return container;\r
 }\r
 \r
index 93a205b..e514488 100644 (file)
 #include <string>\r
 #include <iostream>\r
 #include <sstream>\r
-\r
+#include "components/ui_label_ext.h"\r
+#include "ui_resource_string.h"\r
 namespace OHOS {\r
 #ifndef NEW_TIME\r
-#define NEW_TIME "设置时间"\r
+#define NEW_TIME "时间"\r
 #endif\r
 #define NEXT "下一步"\r
 \r
-static AlarmNewTimeView *g_pAlarmNewTimeView = nullptr;\r
-constexpr int16_t CONTAINER_X = 0;\r
-constexpr int16_t CONTAINER_Y = 0;\r
-constexpr int16_t TITLE_X = 153;\r
-constexpr int16_t TITLE_Y = 30;\r
-constexpr int16_t TIME_PICKER_X = 75;\r
-constexpr int16_t TIME_PICKER_WIDTH = 250;\r
-constexpr int16_t TIME_ITEM_HEIGHT = 80;\r
-constexpr int16_t TIME_LABEL_BUTTON_X = 63;\r
-constexpr int16_t TIME_LABEL_BUTTON_Y = 360;\r
-constexpr int16_t LABEL_X = 0;\r
-constexpr int16_t LABEL_Y = 45;\r
-constexpr int16_t LABEL_BLANK = 38;\r
-constexpr int16_t LIST_W = 300;\r
-constexpr int16_t LIST_H = 260;\r
-constexpr int16_t TITLE_LABEL_DEFAULT_HEIGHT = 50;\r
-constexpr int16_t BUTTON_WIDHT3 = 324;\r
-constexpr int16_t BUTTON_HEIGHT3 = 101;\r
-constexpr int16_t PICKER_FONT_SIZE = 25;\r
-constexpr uint8_t BACKGROUND_FONT = 40;\r
-constexpr uint8_t HIGHTLIGHT_FONT = 50;\r
-constexpr uint16_t LABEL_FONT = 40;\r
-\r
-AlarmNewTimeView::AlarmNewTimeView()\r
-{\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::AlarmNewTimeView");\r
-    g_pAlarmNewTimeView = this;\r
-}\r
-\r
-AlarmNewTimeView::~AlarmNewTimeView()\r
-{\r
-    group->RemoveAll();\r
-    delete labelButton;\r
-    labelButton = nullptr;\r
-    delete picker;\r
-    picker = nullptr;\r
-    delete title;\r
-    title = nullptr;\r
-    delete group;\r
-    group = nullptr;\r
-    g_pAlarmNewTimeView = nullptr;\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::~AlarmNewTimeView");\r
-}\r
+    static AlarmNewTimeView *g_pAlarmNewTimeView = nullptr;\r
+    constexpr int16_t CONTAINER_X = 0;\r
+    constexpr int16_t CONTAINER_Y = 0;\r
+    constexpr int16_t TITLE_X = 153;\r
+    constexpr int16_t TITLE_Y = 30;\r
+    constexpr int16_t TIME_PICKER_X = 75;\r
+    constexpr int16_t TIME_PICKER_WIDTH = 250;\r
+    constexpr int16_t TIME_ITEM_HEIGHT = 80;\r
+    constexpr int16_t TIME_LABEL_BUTTON_X = 63;\r
+    constexpr int16_t TIME_LABEL_BUTTON_Y = 360;\r
+    constexpr int16_t LABEL_X = 0;\r
+    constexpr int16_t LABEL_Y = 45;\r
+    constexpr int16_t LABEL_BLANK = 38;\r
+    constexpr int16_t LIST_W = 300;\r
+    constexpr int16_t LIST_H = 260;\r
+    constexpr int16_t TITLE_LABEL_DEFAULT_HEIGHT = 50;\r
+    constexpr int16_t BUTTON_WIDHT3 = 324;\r
+    constexpr int16_t BUTTON_HEIGHT3 = 101;\r
+    constexpr int16_t PICKER_FONT_SIZE = 25;\r
+    constexpr uint8_t BACKGROUND_FONT = 40;\r
+    constexpr uint8_t HIGHTLIGHT_FONT = 50;\r
+    constexpr uint16_t LABEL_FONT = 40;\r
 \r
-AlarmNewTimeView *AlarmNewTimeView::GetInstance(void)\r
-{\r
-    return g_pAlarmNewTimeView;\r
-}\r
-\r
-UILabel *AlarmNewTimeView::GetTitleLabel(const char *titleName)\r
-{\r
-    if (titleName == nullptr) {\r
-        return nullptr;\r
-    }\r
-    UILabel *label = new UILabel();\r
-    if (label == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new label fail");\r
-        return nullptr;\r
+    AlarmNewTimeView::AlarmNewTimeView()\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::AlarmNewTimeView");\r
+        g_pAlarmNewTimeView = this;\r
     }\r
-    // 2: half of screen width\r
-    label->SetPosition(LABEL_X, LABEL_Y, HORIZONTAL_RESOLUTION / 2, TITLE_LABEL_DEFAULT_HEIGHT);\r
-    label->SetText(titleName);\r
-    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);\r
-    return label;\r
-}\r
 \r
-void AlarmNewTimeView::CreateLabelTime(void)\r
-{\r
-    title = GetTitleLabel(NEW_TIME);\r
-    if (title == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateLabelTime Set title fail");\r
-        return;\r
-    }\r
-    group->Add(title);\r
-    title->SetPosition(TITLE_X, TITLE_Y); // 672: x-coordinate\r
-    title->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
-    picker = new UITimePicker();\r
-    if (picker == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateLabelTime:: new picker fail");\r
-        return;\r
+    AlarmNewTimeView::~AlarmNewTimeView()\r
+    {\r
+        if (group)\r
+        {\r
+            group->RemoveAll();\r
+            if (labelButton)\r
+            {\r
+                delete labelButton;\r
+                labelButton = nullptr;\r
+            }\r
+            if (picker)\r
+            {\r
+                delete picker;\r
+                picker = nullptr;\r
+            }\r
+            if (title)\r
+            {\r
+                delete title;\r
+                title = nullptr;\r
+            }\r
+            delete group;\r
+            group = nullptr;\r
+        }\r
+        g_pAlarmNewTimeView = nullptr;\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::~AlarmNewTimeView");\r
     }\r
 \r
-    UITimePicker::SelectedListener *selectedListener =\r
-        (UITimePicker::SelectedListener *)OHOS::AlarmPresenter::GetInstance();\r
-    if (selectedListener == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateLabelTime:: selectedListener is nullptr");\r
-        return;\r
+    AlarmNewTimeView *AlarmNewTimeView::GetInstance(void)\r
+    {\r
+        return g_pAlarmNewTimeView;\r
     }\r
-    picker->EnableSecond(false);\r
-    picker->SetPosition(TIME_PICKER_X, LABEL_Y + LABEL_BLANK, LIST_W, LIST_H); // 652: x-coordinate\r
-    picker->SetItemHeight(TIME_ITEM_HEIGHT);\r
-    picker->SetLoopState(0, true);\r
-    picker->SetLoopState(1, true);\r
-    picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT);\r
-    picker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT);\r
-    picker->RegisterSelectedListener(selectedListener);\r
-    group->Add(picker);\r
-}\r
 \r
-UIScrollView *AlarmNewTimeView::InitNewTimeView(void)\r
-{\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::OnStart");\r
-    group = new UIScrollView();\r
-    if (group == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new group fail");\r
-        return nullptr;\r
+    void AlarmNewTimeView::CreateLabelTime(void)\r
+    {\r
+        if (title == nullptr)\r
+        {\r
+            title = new UILabelExt();\r
+            if (title == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new title fail");\r
+                return;\r
+            }\r
+        }\r
+        title->SetPosition(83, 50, 300, 35);\r
+        title->SetTextId(STR_TIME);\r
+        title->SetStyle(STYLE_TEXT_FONT, 30);\r
+        title->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        title->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+        title->SetRollSpeed(23);\r
+        group->Add(title);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (picker == nullptr)\r
+        {\r
+            picker = new UITimePicker();\r
+            if (picker == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateLabelTime:: new picker fail");\r
+                return;\r
+            }\r
+        }\r
+        picker->EnableSecond(false);\r
+        picker->SetPosition(TIME_PICKER_X, LABEL_Y + LABEL_Y, LIST_W, LIST_H);\r
+        picker->SetItemHeight(TIME_ITEM_HEIGHT);\r
+        picker->SetLoopState(0, true);\r
+        picker->SetLoopState(1, true);\r
+        // picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT);\r
+        // picker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT);\r
+        picker->SetHighlightFont(GILROY_BOLD_FONT, 65); // 设置突出显示文本的字体名称和大小。\r
+        picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, 50);\r
+        picker->SetTextColor(Color::GetColorFromRGBA(0xcc, 0xcc, 0xcc, 0xff), Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));\r
+        UITimePicker::SelectedListener *selectedListener = (UITimePicker::SelectedListener *)OHOS::AlarmPresenter::GetInstance();\r
+        if (selectedListener == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateLabelTime:: selectedListener is nullptr");\r
+            return;\r
+        }\r
+        picker->RegisterSelectedListener(selectedListener);\r
+        group->Add(picker);\r
     }\r
-    group->SetPosition(CONTAINER_X, CONTAINER_Y);\r
-    group->SetWidth(HORIZONTAL_RESOLUTION);\r
-    group->SetHeight(VERTICAL_RESOLUTION);\r
 \r
-    CreateLabelTime();\r
+    UIScrollView *AlarmNewTimeView::InitNewTimeView(void)\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::InitNewTimeView");\r
+        if (group == nullptr)\r
+        {\r
+            group = new UIScrollView();\r
+            if (group == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new group fail");\r
+                return nullptr;\r
+            }\r
+        }\r
+        group->SetPosition(CONTAINER_X, CONTAINER_Y, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        UIView::OnDragListener *newTimeDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();\r
+        if (newTimeDragListener == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new newTimeDragListener fail");\r
+            return group;\r
+        }\r
+        group->SetOnDragListener(newTimeDragListener);\r
+        /* -------------------------------------------------------------------------- */\r
+        CreateLabelTime();\r
+        if (labelButton == nullptr)\r
+        {\r
+            labelButton = new UILabelButtonExt();\r
+            if (labelButton == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new labelButton fail");\r
+                return group;\r
+            }\r
+        }\r
+        labelButton->SetPosition(0, 366, 466, 100);\r
+        labelButton->SetViewId(ALARM_NEXT);\r
+        labelButton->SetTextId(STR_NEXT_STEP); // 下一步\r
+        labelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        labelButton->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));\r
+        labelButton->SetImageSrc(PNG_BUTTON_466x100_IMAGE, PNG_BUTTON_466x100_IMAGE);\r
+        labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0x00, UIButton::PRESSED);\r
+        labelButton->SetTouchable(true);\r
+        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
+        if (clickListener == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new newTimeDragListener fail");\r
+            return group;\r
+        }\r
+        labelButton->SetOnClickListener(clickListener);\r
+        group->Add(labelButton);\r
 \r
-    labelButton = new UILabelButton();\r
-    if (labelButton == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new labelButton fail");\r
         return group;\r
     }\r
-    labelButton->Resize(BUTTON_WIDHT3, BUTTON_HEIGHT3);\r
-    labelButton->SetPosition(TIME_LABEL_BUTTON_X, TIME_LABEL_BUTTON_Y);\r
-    labelButton->SetText(NEXT);\r
-    labelButton->SetViewId(ALARM_NEXT);\r
-    labelButton->SetTouchable(true);\r
-    labelButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
-    labelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);\r
-    if (OHOS::AlarmPresenter::GetInstance() == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new ShadowBlue fail");\r
-        return group;\r
-    }\r
-    labelButton->SetTextColor(OHOS::AlarmPresenter::GetInstance()->ShadowBlue());\r
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
-    labelButton->SetOnClickListener(clickListener);\r
-    group->Add(labelButton);\r
-\r
-    UIView::OnDragListener *newTimeDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();\r
-    if (newTimeDragListener == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new newTimeDragListener fail");\r
-        return group;\r
-    }\r
-    group->SetOnDragListener(newTimeDragListener);\r
-\r
-    return group;\r
-}\r
 \r
-void AlarmNewTimeView::RefreshNewTime(void)\r
-{\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::RefreshStep");\r
-    struct tm local_time;\r
-    time_t seconds = time(nullptr);\r
-    if (localtime_r(&seconds, &local_time) == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmGetClockNum get localtime error!");\r
-        return;\r
+    void AlarmNewTimeView::RefreshNewTime(void)\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::RefreshNewTime");\r
+        struct tm local_time;\r
+        time_t seconds = time(nullptr);\r
+        if (localtime_r(&seconds, &local_time) == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::RefreshNewTime get localtime error!");\r
+            return;\r
+        }\r
+        std::ostringstream ostrHour;\r
+        std::ostringstream ostMin;\r
+        ostrHour << local_time.tm_hour;\r
+        ostMin << local_time.tm_min;\r
+        std::string timeStr = ostrHour.str() + ":" + ostMin.str();\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "time = %s!", timeStr.c_str());\r
+        picker->SetSelected(timeStr.c_str());\r
+        uint32_t timeHour = stoi(ostrHour.str());\r
+        uint32_t timeMin = stoi(ostMin.str());\r
+        AlarmPresenter::GetInstance()->OnTimePickerInaction(timeHour, timeMin);\r
     }\r
-    std::ostringstream ostrHour;\r
-    std::ostringstream ostMin;\r
-    ostrHour << local_time.tm_hour;\r
-    ostMin << local_time.tm_min;\r
-    std::string weekStr = ostrHour.str() + ":" + ostMin.str();\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "time = %s!", weekStr.c_str());\r
-    picker->SetSelected(weekStr.c_str()); // 添加的时间默认初始时间为0点\r
-    uint32_t timeHour = stoi(ostrHour.str());\r
-    uint32_t timeMin = stoi(ostMin.str());\r
-    AlarmPresenter::GetInstance()->OnTimePickerInaction(timeHour, timeMin);\r
-}\r
 } // namespace OHOS\r
index 29b88dd..b56aebc 100644 (file)
@@ -6,13 +6,15 @@
  */\r
 \r
 \r
-#include "AlarmPresenter.h"\r
-#include "MainAlarmView.h"\r
+// #include "AlarmPresenter.h"\r
+#include "alarm/include/AlarmPresenter.h"\r
+#include "alarm/include/MainAlarmView.h"\r
 #include "NativeRegisterManager.h"\r
 #include "ChangeSliceListener.h"\r
 #include "string"\r
 #include "iostream"\r
 #include "sstream"\r
+#include <custom_utils.h>\r
 \r
 namespace OHOS {\r
 \r
@@ -23,8 +25,6 @@ static AlarmPresenter *g_pAlarmPresenter = nullptr;
 constexpr int16_t CLOSE_SWITCHES = 0;\r
 constexpr int16_t OPEN_SWITCHES = 1;\r
 constexpr int16_t SET_ZERO = 0;\r
-constexpr int16_t NEW_TIME_LISTENER = 0;\r
-constexpr int16_t SET_TIME_LISTENER = 1;\r
 constexpr uint16_t THE_FIRST_ALARM = 0;\r
 constexpr uint16_t SECOND_ALARM = 1;\r
 constexpr uint16_t THIRD_ALARM = 2;\r
@@ -40,8 +40,8 @@ constexpr uint8_t WEEK_BIT3 = 3;
 constexpr uint8_t WEEK_BIT2 = 2;\r
 constexpr uint8_t WEEK_BIT1 = 1;\r
 constexpr uint8_t WEEK_BIT0 = 0;\r
-constexpr uint16_t ALARM_MAX_NUM = 4;\r
-constexpr int32_t BUTTON_MAX_NUM = 7;\r
+constexpr uint16_t ALARM_MAX_NUM = 5; // 最大闹钟数\r
+constexpr int32_t WEEK_BUTTON_MAX_NUM = 7; // 星期按钮的最大个数\r
 constexpr uint16_t CLOCK_NUM = 5;\r
 constexpr uint8_t CANCEL_DATA = 0;\r
 constexpr uint8_t SELECT_DATA = 1;\r
@@ -50,6 +50,7 @@ constexpr uint8_t SLIDING_LENGTH = 30;
 AlarmPresenter::AlarmPresenter()\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter new");\r
+    OHOS::AlarmClockModel::GetInstance()->InitAlarmData();\r
     g_pAlarmPresenter = this;\r
 }\r
 \r
@@ -168,22 +169,34 @@ void AlarmPresenter::ClickJudgeTrue(uint16_t num)
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter JUDGE_DELETE");\r
     UNUSED(num);\r
     uint32_t clockTime;\r
+    // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[@CHENG][%d]:%d,%d", __LINE__, alarmListener, clockQty);\r
     AlarmClockModel::GetInstance()->DeleteClockModel(alarmListener);\r
     if (MainAlarmView::GetInstance() == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickJudgeTrue new MainAlarmView::GetInstance() error");\r
         return;\r
     }\r
-    MainAlarmView::GetInstance()->RefreshAlarm();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "clockQty = %d", clockQty);\r
     clockQty--;\r
-    for (uint16_t alarmNum = 0; alarmNum < clockQty; alarmNum++) {\r
-        if (!(AlarmClockModel::GetInstance()->GetClockTime(alarmNum, &clockTime))) {\r
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickJudgeTrue error");\r
-            return;\r
-        }\r
-        MainAlarmView::GetInstance()->RefreshAlarm();\r
-    }\r
     AlarmClockModel::GetInstance()->SetSerialRdc();\r
-    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_JUDGE, MAIN_INTERFACE);\r
+    MainAlarmView::GetInstance()->RefreshAlarm();\r
+    // MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_JUDGE, MAIN_INTERFACE);\r
+    NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN_ALARM);\r
+\r
+\r
+\r
+    // MainAlarmView::GetInstance()->RefreshAlarm();\r
+    // clockQty--;\r
+    // for (uint16_t alarmNum = 0; alarmNum < clockQty; alarmNum++) {\r
+    //     // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[@CHENG][%d]:%d", __LINE__, alarmNum);\r
+\r
+    //     if (!(AlarmClockModel::GetInstance()->GetClockTime(alarmNum, &clockTime))) {\r
+    //         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickJudgeTrue error");\r
+    //         return;\r
+    //     }\r
+    //     MainAlarmView::GetInstance()->RefreshAlarm();\r
+    // }\r
+    // AlarmClockModel::GetInstance()->SetSerialRdc();\r
+    // MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_JUDGE, MAIN_INTERFACE);\r
 }\r
 \r
 void AlarmPresenter::ClickAlarmTimeOk(uint16_t num)\r
@@ -244,6 +257,7 @@ void AlarmPresenter::ClickAlarmClock(uint16_t num)
     AlarmConfigView::GetInstance()->RefreshConfig(clockTime, clockWeek, num);\r
 }\r
 \r
+// 处理闹钟星期设置确认按钮的点击事件\r
 void AlarmPresenter::ClickAlarmWeekOk(uint16_t num)\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ALARM_WEEK_OK");\r
@@ -256,7 +270,7 @@ void AlarmPresenter::ClickAlarmWeekOk(uint16_t num)
     if (setListener == SET_TIME_LISTENER) {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk set time!");\r
         if (!(AlarmClockModel::GetInstance()->GetClockTime(alarmListener, &clockTime))) {\r
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickAlarmWeekOk error");\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickAlarmWeekOk error");\r
             return;\r
         }\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk  time = %d", clockTime);\r
@@ -269,11 +283,11 @@ void AlarmPresenter::ClickAlarmWeekOk(uint16_t num)
         }\r
         AlarmClockModel::GetInstance()->ButtonStatusRing(alarmListener, true);\r
         MainAlarmView::GetInstance()->RefreshAlarm();\r
-        MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_SET_WEEK, CHANGE_INTERFACE_CONFIG);\r
+        MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_SET_WEEK, CHANGE_INTERFACE_CONFIG); // 跳转到闹钟配置界面\r
     } else if (setListener == NEW_TIME_LISTENER) {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk new time!");\r
-        clockQty++;\r
         alarmListener = clockQty;\r
+        clockQty++;\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "******************ClickAlarmWeekOk  alarmListener = %d***************", alarmListener);\r
         AlarmClockModel::GetInstance()->SetSerialAdd();\r
         AlarmClockModel::GetInstance()->SetAlarmInfo(timeHour, timeMin, clockWeek, alarmListener, setListener);\r
@@ -288,13 +302,18 @@ void AlarmPresenter::ClickAlarmWeekOk(uint16_t num)
             return;\r
         }\r
         MainAlarmView::GetInstance()->RefreshAlarm();\r
-        MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_SET_WEEK, MAIN_INTERFACE);\r
+        MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_SET_WEEK, MAIN_INTERFACE); // 跳转到闹钟主界面\r
     }\r
 }\r
 \r
+// 处理闹钟新建按钮的点击事件\r
 void AlarmPresenter::ClickAlarmNewTime(uint16_t num)\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ALARM_NEW_TIME");\r
+    if (MainAlarmView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmNewTime new MainAlarmView::GetInstance() error");\r
+        return;\r
+    }\r
     clockQty = AlarmClockModel::GetInstance()->GetAlarmNum();\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter alarmNumbel = %u", clockQty);\r
     UNUSED(num);\r
@@ -318,11 +337,13 @@ void AlarmPresenter::ClickAlarmNewTime(uint16_t num)
     AlarmNewTimeView::GetInstance()->RefreshNewTime();\r
 }\r
 \r
+// 新建闹钟时:时间设置页面的下一步按钮点击事件处理函数\r
+\r
 void AlarmPresenter::ClickAlarmNext(uint16_t num)\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ALARM_NEXT");\r
     UNUSED(num);\r
-    for (int i = 0; i < BUTTON_MAX_NUM; i++) {\r
+    for (int i = 0; i < WEEK_BUTTON_MAX_NUM; i++) {\r
         alarmWeek[i] = 0;\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "alarmWeek[%d] = %u", i, alarmWeek[i]);\r
     }\r
@@ -331,7 +352,7 @@ void AlarmPresenter::ClickAlarmNext(uint16_t num)
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmNext new MainAlarmView::GetInstance() error");\r
         return;\r
     }\r
-    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_NEW_TIME, CHANGE_INTERFACE_SET_WEEK);\r
+    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_NEW_TIME, CHANGE_INTERFACE_SET_WEEK);// 跳转到星期设置界面\r
     if (AlarmNewTimeView::GetInstance() == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmNext new AlarmNewTimeView::GetInstance() error");\r
         return;\r
@@ -351,12 +372,24 @@ bool AlarmPresenter::OnDrag(UIView& view, const DragEvent& event)
         deltaX = event.GetDeltaX();\r
         deltaY = event.GetDeltaY();\r
         if (MATH_ABS(deltaX) >= MATH_ABS(deltaY) && MATH_ABS(deltaX) > SLIDING_LENGTH) {\r
-            MainAlarmView::GetInstance()->DropView(view);\r
+            // MainAlarmView::GetInstance()->DropView(view);\r
+            X_DRAG_FLAG = true;\r
         }\r
     }\r
     return true;\r
 }\r
 \r
+bool AlarmPresenter::OnDragEnd(UIView& view, const DragEvent& event)\r
+{\r
+    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && X_DRAG_FLAG) \r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnDragEnd %p",&view);\r
+        MainAlarmView::GetInstance()->DropView(view);\r
+        X_DRAG_FLAG = false;\r
+    }\r
+    return true;\r
+}\r
+\r
 struct AlarmPresentMapper1 {\r
     const char *viewId;\r
     void (AlarmPresenter::*func)(uint16_t);\r
@@ -401,19 +434,19 @@ bool AlarmPresenter::ClickFuncId(const char *buttonName)
 bool AlarmPresenter::ClickFuncView(UIView &view)\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickFuncView view = %s", view.GetViewId());\r
-    for (int num = 0; num < BUTTON_MAX_NUM; num++) {\r
-        if (strcmp(view.GetViewId(), WEEK_CONTAINER[num]) == 0) {\r
+    for (int num = 0; num < WEEK_BUTTON_MAX_NUM; num++) {\r
+        if (strcmp(view.GetViewId(), WEEK_BUTTON_VIEWID[num]) == 0) {\r
             alarmWeek[num] = alarmWeek[num] ? CANCEL_DATA: SELECT_DATA;\r
-            if (alarmWeek[num] == CANCEL_DATA) {\r
+            if (alarmWeek[num] == CANCEL_DATA) { // 取消选中\r
                 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "alarmWeek[num] = %u", alarmWeek[num]);\r
-                view.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+                view.SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x19, 0x19, 0x19).full);\r
                 dynamic_cast<UIButton &>(view).SetStyleForState(STYLE_BACKGROUND_COLOR,\r
-                                                                Color::Black().full, UIButton::PRESSED);\r
-            } else if (alarmWeek[num] == SELECT_DATA) {\r
+                                                                Color::GetColorFromRGB(0x19, 0x19, 0x19).full, UIButton::PRESSED);                \r
+            } else if (alarmWeek[num] == SELECT_DATA) { // 选中\r
                 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "alarmWeek[num] = %u", alarmWeek[num]);\r
-                view.SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+                view.SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x4f, 0xc3, 0x4c).full);\r
                 dynamic_cast<UIButton &>(view).SetStyleForState(STYLE_BACKGROUND_COLOR,\r
-                                                                Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full, UIButton::PRESSED);\r
+                                                                Color::GetColorFromRGB(0x4f, 0xc3, 0x4c).full, UIButton::PRESSED);                                    \r
             }\r
         }\r
     }\r
@@ -421,9 +454,57 @@ bool AlarmPresenter::ClickFuncView(UIView &view)
     return true;\r
 }\r
 \r
+bool AlarmPresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
+{\r
+    UNUSED(view);\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::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 == 1 && uapi_get_screen_state() == 0)\r
+    {\r
+        NativeAbility::GetInstance().Back();\r
+    }\r
+    return true;\r
+}\r
+\r
+void AlarmPresenter::ClickDeleteButtonAlarmClockDelete(uint16_t num)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[@CHENG][%d]:%d", __LINE__, num);\r
+    if (MainAlarmView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickDeleteButtonAlarmClockDelete error");\r
+        return;\r
+    }\r
+    UNUSED(num);\r
+    alarmListener = num;\r
+    MainAlarmView::GetInstance()->ChangeView(MAIN_INTERFACE, CHANGE_INTERFACE_JUDGE);\r
+}\r
+\r
+static const AlarmPresentMapper1 DeleteButtonPresentMapper[] = \r
+{\r
+    {ALARM_ITEM_DELETE[THE_FIRST_ALARM], &AlarmPresenter::ClickDeleteButtonAlarmClockDelete},\r
+    {ALARM_ITEM_DELETE[SECOND_ALARM], &AlarmPresenter::ClickDeleteButtonAlarmClockDelete},\r
+    {ALARM_ITEM_DELETE[THIRD_ALARM], &AlarmPresenter::ClickDeleteButtonAlarmClockDelete},\r
+    {ALARM_ITEM_DELETE[FOURTH_ALARM], &AlarmPresenter::ClickDeleteButtonAlarmClockDelete},\r
+    {ALARM_ITEM_DELETE[FIVE_ALARM], &AlarmPresenter::ClickDeleteButtonAlarmClockDelete},\r
+    {ALARM_ITEM_DELETE[SIX_ALARM], &AlarmPresenter::ClickDeleteButtonAlarmClockDelete},\r
+};\r
+\r
 bool AlarmPresenter::OnClick(UIView &view, const ClickEvent &event)\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::OnClick ");\r
+\r
+    uint16_t num;\r
+    for (num = 0; num < CLOCK_NUM; num++)\r
+    {\r
+        if (0 == strcmp(view.GetViewId(), ALARM_ITEM_DELETE[num])) // 闹钟删除按钮\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[@CHENG][%d]:%d", __LINE__, num);\r
+            (this->*(DeleteButtonPresentMapper[num].func))(num);\r
+            return true;\r
+        }\r
+    }\r
+\r
     bool jug = ClickFuncId(view.GetViewId());\r
     if (!jug) {\r
         ClickFuncView(view);\r
@@ -452,4 +533,30 @@ bool AlarmStatusBtnChangeListener::OnChange(UICheckBox::UICheckBoxState state)
     return true;\r
 }\r
 \r
+void AlarmPresenter::OnSwipe(UISwipeView &view)\r
+{\r
+    UNUSED(view);\r
+    \r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::OnSwipe ");\r
+    view.SetIntercept((0 == view.GetCurrentPage()) ? false : true);\r
+}\r
+\r
+void AlarmPresenter::UpdateAlarmInfoByAppSet(void)\r
+{\r
+    NativeAbility::GetInstance().Back();\r
+}\r
+\r
+void AlarmPresenter::RefreshAlarmStatus(int i)\r
+{\r
+    uint8_t alarmEnable = 0;\r
+    bool alarmStatus;\r
+    alarmStatus = AlarmClockModel::GetInstance()->GetClockStatus(i, &alarmEnable);\r
+    if (!alarmStatus) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter:: GetClockStatus fail! i = %d", i);\r
+    }\r
+    if( MainAlarmView::GetInstance())\r
+    {\r
+        MainAlarmView::GetInstance()->RefreshAlarmStatus(alarmEnable, i);\r
+    }\r
+}\r
 }
\ No newline at end of file
index 6d04e32..90923c1 100644 (file)
@@ -10,7 +10,8 @@
 #include "components/ui_label.h"\r
 #include "components/ui_label_button.h"\r
 #include <string>\r
-\r
+#include "components/ui_label_ext.h"\r
+#include "ui_resource_string.h"\r
 namespace OHOS {\r
 #define SET_THIS_TIME "设置时间"\r
 #define SURE "确认"\r
@@ -21,7 +22,7 @@ constexpr int16_t CONTAINER_Y = 0;
 constexpr int16_t TITLE_X = 153;\r
 constexpr int16_t TITLE_Y = 30;\r
 constexpr int16_t LABEL_X = 0;\r
-constexpr int16_t LABEL_Y = 30;\r
+constexpr int16_t LABEL_Y = 45; // 30;\r
 constexpr int16_t LABEL_FONT = 40;\r
 constexpr int16_t TIME_PICKER_X = 75;\r
 constexpr int16_t TIME_PICKER_WIDTH = 250;\r
@@ -30,7 +31,7 @@ constexpr int16_t TIME_LABEL_BUTTON_X = 63;
 constexpr int16_t TIME_LABEL_BUTTON_Y = 360;\r
 constexpr int16_t LABEL_BLANK = 38;\r
 constexpr int16_t LIST_W = 300;\r
-constexpr int16_t LIST_H = 250;\r
+constexpr int16_t LIST_H = 260; // 250;\r
 constexpr int16_t TITLE_LABEL_DEFAULT_HEIGHT = 50;\r
 constexpr int16_t BUTTON_WIDHT3 = 320;\r
 constexpr int16_t BUTTON_HEIGHT3 = 101;\r
@@ -47,15 +48,28 @@ AlarmSetTimeView::AlarmSetTimeView()
 \r
 AlarmSetTimeView::~AlarmSetTimeView()\r
 {\r
-    group->RemoveAll();\r
-    delete timeImage;\r
-    timeImage = nullptr;\r
-    delete picker;\r
-    picker = nullptr;\r
-    delete title;\r
-    title = nullptr;\r
-    delete group;\r
-    group = nullptr;\r
+    if(nullptr != group)\r
+    {\r
+        group->RemoveAll();\r
+        if(nullptr != labelButton)\r
+        {\r
+            delete labelButton;\r
+            labelButton = nullptr;\r
+        }\r
+        if(nullptr != picker)\r
+        {\r
+            delete picker;\r
+            picker = nullptr;\r
+        }\r
+        if(nullptr != title)\r
+        {\r
+            delete title;\r
+            title = nullptr;\r
+        }\r
+\r
+        delete group;\r
+        group = nullptr;\r
+    }\r
     g_pAlarmSetTimeView = nullptr;\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::~AlarmSetTimeView");\r
 }\r
@@ -84,50 +98,92 @@ UILabel *AlarmSetTimeView::GetTitleLabel(const char *titleName)
 \r
 void AlarmSetTimeView::SetLabelButton(void)\r
 {\r
-    timeImage = new UILabelButton();\r
-    if (timeImage == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new timeImage fail");\r
-        return;\r
-    }\r
-    timeImage->SetPosition(TIME_LABEL_BUTTON_X, TIME_LABEL_BUTTON_Y, BUTTON_WIDHT3, BUTTON_HEIGHT3);\r
-    timeImage->SetText(SURE);\r
-    timeImage->SetTouchable(true);\r
-    timeImage->SetViewId(ALARM_OK);\r
-    if (OHOS::AlarmPresenter::GetInstance() == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new ShadowBlue fail");\r
-        return;\r
+    // timeImage = new UILabelButton();\r
+    // if (timeImage == nullptr) {\r
+    //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new timeImage fail");\r
+    //     return;\r
+    // }\r
+    // timeImage->SetPosition(TIME_LABEL_BUTTON_X, TIME_LABEL_BUTTON_Y, BUTTON_WIDHT3, BUTTON_HEIGHT3);\r
+    // timeImage->SetText(SURE);\r
+    // timeImage->SetTouchable(true);\r
+    // timeImage->SetViewId(ALARM_OK);\r
+    // if (OHOS::AlarmPresenter::GetInstance() == nullptr) {\r
+    //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new ShadowBlue fail");\r
+    //     return;\r
+    // }\r
+    // timeImage->SetTextColor(OHOS::AlarmPresenter::GetInstance()->ShadowBlue());\r
+    // timeImage->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_TIME_FONT);\r
+    // UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
+    // timeImage->SetOnClickListener(clickListener);\r
+    // timeImage->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+    // group->Add(timeImage);\r
+\r
+    if (labelButton == nullptr) {\r
+        labelButton = new UILabelButtonExt();\r
+        if (labelButton == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::SetLabelButton");\r
+            return ;\r
+        }\r
     }\r
-    timeImage->SetTextColor(OHOS::AlarmPresenter::GetInstance()->ShadowBlue());\r
-    timeImage->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_TIME_FONT);\r
+    labelButton->SetPosition(0, 366, 466, 100);\r
+    labelButton->SetViewId(ALARM_OK);\r
+    // labelButton->SetText(SURE);\r
+    labelButton->SetTextId(STR_OK);//确定\r
+    labelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+    labelButton->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));\r
+    labelButton->SetImageSrc(PNG_BUTTON_466x100_IMAGE, PNG_BUTTON_466x100_IMAGE);\r
+    labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0x00, UIButton::PRESSED);\r
+    labelButton->SetTouchable(true);\r
     UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
-    timeImage->SetOnClickListener(clickListener);\r
-    timeImage->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
-    group->Add(timeImage);\r
+    labelButton->SetOnClickListener(clickListener);\r
+    group->Add(labelButton);\r
 }\r
 \r
 UIScrollView *AlarmSetTimeView::InitSetTimeView(void)\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::OnStart");\r
-    group = new UIScrollView();\r
     if (group == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: new group fail");\r
-        return nullptr;\r
+        group = new UIScrollView();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: new group fail");\r
+            return nullptr;\r
+        }\r
     }\r
-    group->SetPosition(CONTAINER_X, CONTAINER_Y);\r
-    group->SetWidth(HORIZONTAL_RESOLUTION);\r
-    group->SetHeight(VERTICAL_RESOLUTION);\r
-\r
-    title = GetTitleLabel(SET_THIS_TIME);\r
-    if (title == nullptr) {\r
-        return nullptr;\r
+    group->SetPosition(CONTAINER_X, CONTAINER_Y,Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+    group->SetTouchable(true);\r
+    group->SetDraggable(true);\r
+    UIView::OnDragListener *setTimeDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();\r
+    if (setTimeDragListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: setTimeDragListener is nullptr");\r
+        return group;\r
+    }\r
+    group->SetOnDragListener(setTimeDragListener);\r
+    /* -------------------------------------------------------------------------- */\r
+    if (title == nullptr)\r
+    {\r
+        title = new UILabelExt();\r
+        if (title == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new title fail");\r
+            return group;\r
+        }\r
     }\r
+    title->SetPosition(83, 50, 300, 35);\r
+    title->SetTextId(STR_TIME);\r
+    title->SetStyle(STYLE_TEXT_FONT, 30);\r
+    title->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+    title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+    title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+    title->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+    title->SetRollSpeed(23);\r
     group->Add(title);\r
-    title->SetPosition(TITLE_X, TITLE_Y); // 672: x-coordinate\r
-    title->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
-    picker = new UITimePicker();\r
+    /* -------------------------------------------------------------------------- */\r
     if (picker == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: new picker fail");\r
-        return nullptr;\r
+        picker = new UITimePicker();\r
+        if (picker == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: new picker fail");\r
+            return nullptr;\r
+        }\r
     }\r
     UITimePicker::SelectedListener *selectedListener =\r
         (UITimePicker::SelectedListener *)OHOS::AlarmPresenter::GetInstance();\r
@@ -136,10 +192,13 @@ UIScrollView *AlarmSetTimeView::InitSetTimeView(void)
         return nullptr;\r
     }\r
     picker->EnableSecond(false);\r
-    picker->SetPosition(TIME_PICKER_X, LABEL_Y + LABEL_BLANK, LIST_W, LIST_H); // 652: x-coordinate\r
+    picker->SetPosition(TIME_PICKER_X, LABEL_Y + LABEL_Y, LIST_W, LIST_H); // 652: x-coordinate\r
     picker->SetItemHeight(TIME_ITEM_HEIGHT);\r
-    picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT);\r
-    picker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT);\r
+    // picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT);\r
+    // picker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT);\r
+    picker->SetHighlightFont(GILROY_BOLD_FONT, 65);                    // 设置突出显示文本的字体名称和大小。\r
+    picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, 50); \r
+    picker->SetTextColor(Color::GetColorFromRGBA(0xcc, 0xcc, 0xcc, 0xff), Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));\r
     picker->SetLoopState(0, true);\r
     picker->SetLoopState(1, true);\r
     picker->SetTouchable(true);\r
@@ -148,14 +207,6 @@ UIScrollView *AlarmSetTimeView::InitSetTimeView(void)
 \r
     SetLabelButton();\r
 \r
-    group->SetTouchable(true);\r
-    group->SetDraggable(true);\r
-    UIView::OnDragListener *setTimeDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();\r
-    if (setTimeDragListener == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: setTimeDragListener is nullptr");\r
-        return group;\r
-    }\r
-    group->SetOnDragListener(setTimeDragListener);\r
     return group;\r
 }\r
 \r
index 397430b..2843658 100644 (file)
@@ -8,55 +8,21 @@
 #include "AlarmSetWeekView.h"\r
 #include "common/screen.h"\r
 #include "components/ui_digital_clock.h"\r
-\r
+#include "ui_resource_string.h"\r
+#include "ConfigModel.h"\r
 namespace OHOS {\r
-#define MON "星期一"\r
-#define TUE "星期二"\r
-#define WED "星期三"\r
-#define THUR "星期四"\r
-#define FRI "星期五"\r
-#define SAT "星期六"\r
-#define SUN "星期天"\r
-#define RESPEAT "重复"\r
-#define SURE "确认"\r
-\r
-#define MONDAY "monday"\r
-#define TUESDAY "tuesday"\r
-#define WEDNESDAY "wednesday"\r
-#define THURSDAY "thursday"\r
-#define FRIDAY "friday"\r
-#define SATURDAY "saturday"\r
-#define SUNDAY "sunday"\r
-\r
 static AlarmSetWeekView *g_pAlarmSetWeekView = nullptr;\r
 constexpr int16_t CONTAINER_X = 0;\r
 constexpr int16_t CONTAINER_Y = 0;\r
-constexpr int16_t DEFAULT_FONT = 40;\r
-constexpr int16_t REBOUND_SIZE = 50;\r
-constexpr int16_t BORDER_WIDTH = 20;\r
-constexpr int16_t SET_ZERO = 0;\r
-constexpr int16_t TITLE_X = 185;\r
-constexpr int16_t TITLE_Y = 30;\r
-constexpr int16_t LABEL_POSITION_SIZE = 150;\r
 constexpr int16_t VIEW_BORDER_SIZE = 2;\r
-constexpr int16_t BORDER_RADIUS_SIZE = 200;\r
-constexpr int16_t VIEW_BUTTON_X = 100;\r
-constexpr int16_t VIEW_BUTTON_Y = 70;\r
-constexpr int16_t BUTTON_FONT_SIZE = 18;\r
-constexpr int16_t TIME_LABEL_BUTTON_X = 63;\r
-constexpr int16_t TIME_LABEL_BUTTON_Y = 360;\r
-constexpr int16_t BUTTON_WIDHT3 = 320;\r
-constexpr int16_t BUTTON_HEIGHT3 = 101;\r
-constexpr int16_t LABEL_WEEK_FONT = 40;\r
-constexpr int16_t BUTTON_WIDHT = 100;\r
-constexpr int16_t BUTTON_HEIGHT = 60;\r
-constexpr int16_t BUTTON_FONT = 20;\r
-constexpr int16_t VIEW_POSITION_X = 60;\r
-constexpr int16_t VIEW_POSITION_X2 = 12;\r
-constexpr int16_t WEEK_Y1 = 130;\r
-constexpr int16_t WEEK_Y2 = 210;\r
-constexpr int16_t WEEK_GAP_X = 112;\r
-constexpr int16_t BUTTON_STYLE_BORDER_RADIUS_VALUE = 30;\r
+constexpr int16_t BUTTON_WIDHT = 80; // 80\r
+constexpr int16_t BUTTON_HEIGHT = 80; // 80\r
+constexpr int16_t VIEW_POSITION_X = 27; //27\r
+constexpr int16_t VIEW_POSITION_X2 = 83;// 83\r
+constexpr int16_t WEEK_Y1 = 135;\r
+constexpr int16_t WEEK_Y2 = 245;\r
+constexpr int16_t WEEK_GAP_X = 110;// 星期按钮间的间隔 \r
+constexpr int16_t BUTTON_STYLE_BORDER_RADIUS_VALUE = 100; \r
 constexpr int16_t FONT_DEFAULT_SIZE = 30;\r
 constexpr int16_t WEEK_MON = 1;\r
 constexpr int16_t WEEK_TUE = 2;\r
@@ -66,6 +32,10 @@ constexpr int16_t WEEK_FRI = 5;
 constexpr int16_t WEEK_SAT = 6;\r
 constexpr int16_t WEEK_SUN = 0;\r
 \r
+#define DEFAULT_BG_COLOR (Color::GetColorFromRGB(0x19, 0x19, 0x19))  // 默认背景色\r
+#define SELECTED_BG_COLOR (Color::GetColorFromRGB(0x4f, 0xc3, 0x4c)) // 选中背景色\r
+\r
+\r
 AlarmSetWeekView::AlarmSetWeekView()\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::AlarmSetWeekView");\r
@@ -74,17 +44,29 @@ AlarmSetWeekView::AlarmSetWeekView()
 \r
 AlarmSetWeekView::~AlarmSetWeekView()\r
 {\r
-    group->RemoveAll();\r
-    delete labelRespeat;\r
-    labelRespeat = nullptr;\r
-    delete weekImage;\r
-    weekImage = nullptr;\r
-    for (int16_t alarmNum = 0; alarmNum < 7; alarmNum++) {\r
-        delete buttonWeek[alarmNum];\r
-        buttonWeek[alarmNum] = nullptr;\r
-    }\r
-    delete group;\r
-    group = nullptr;\r
+    if(group)\r
+    {\r
+        group->RemoveAll();\r
+        if(labelRespeat) \r
+        {\r
+            delete labelRespeat;\r
+            labelRespeat = nullptr;\r
+        }\r
+        if(weekImage)\r
+        {\r
+            delete weekImage;\r
+            weekImage = nullptr;\r
+        }\r
+        for (int16_t alarmNum = 0; alarmNum < WEEK_NUM; alarmNum++) {\r
+            if(buttonWeek[alarmNum])\r
+            {\r
+                delete buttonWeek[alarmNum];\r
+                buttonWeek[alarmNum] = nullptr;\r
+            }\r
+        }\r
+        delete group;\r
+        group = nullptr;\r
+    }\r
     g_pAlarmSetWeekView = nullptr;\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::~AlarmSetWeekView");\r
 }\r
@@ -94,37 +76,44 @@ AlarmSetWeekView *AlarmSetWeekView::GetInstance(void)
     return g_pAlarmSetWeekView;\r
 }\r
 \r
-UILabelButton *AlarmSetWeekView::CreateUILabelButton(const char *buttonText, int16_t x, int16_t y)\r
+UILabelButtonExt *AlarmSetWeekView::CreateUILabelButton(const char *buttonText1,const char *buttonText2, int16_t x, int16_t y)\r
 {\r
-    if (buttonText == nullptr) {\r
+    if (buttonText1 == nullptr || buttonText2 == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: buttonText1 or buttonText2 is null");\r
         return nullptr;\r
     }\r
 \r
-    UILabelButton *labelButton = new UILabelButton();\r
+    UILabelButtonExt *labelButton = new UILabelButtonExt();\r
     if (labelButton == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new labelButton fail");\r
         return nullptr;\r
     }\r
-\r
+    int language = ConfigModel::GetInstance()->GetLanguage();\r
+    if(language == 0) // 中文\r
+    {\r
+        labelButton->SetText(buttonText1);\r
+    }\r
+    else \r
+    {\r
+        labelButton->SetText(buttonText2);\r
+    }\r
     labelButton->SetPosition(x, y);\r
-    labelButton->SetText(buttonText);\r
-    labelButton->SetViewId(buttonText);\r
-    labelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);\r
+    labelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME_EN, FONT_DEFAULT_SIZE);\r
     labelButton->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);\r
     labelButton->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::INACTIVE);\r
     labelButton->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED);\r
-    labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::RELEASED);\r
-    labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
-    labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::INACTIVE);\r
+    labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full, UIButton::RELEASED);\r
+    labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full, UIButton::PRESSED);\r
+    labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full, UIButton::INACTIVE);\r
     labelButton->SetStyleForState(STYLE_BORDER_WIDTH, VIEW_BORDER_SIZE, UIButton::RELEASED);\r
     labelButton->SetStyleForState(STYLE_BORDER_WIDTH, VIEW_BORDER_SIZE, UIButton::PRESSED);\r
     labelButton->SetStyleForState(STYLE_BORDER_WIDTH, VIEW_BORDER_SIZE, UIButton::INACTIVE);\r
-    labelButton->SetStyleForState(STYLE_BORDER_COLOR, Color::White().full, UIButton::RELEASED);\r
-    labelButton->SetStyleForState(STYLE_BORDER_COLOR, Color::White().full, UIButton::PRESSED);\r
-    labelButton->SetStyleForState(STYLE_BORDER_COLOR, Color::White().full, UIButton::INACTIVE);\r
-    labelButton->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+    labelButton->SetStyleForState(STYLE_BORDER_COLOR, Color::Black().full, UIButton::RELEASED);\r
+    labelButton->SetStyleForState(STYLE_BORDER_COLOR, Color::Black().full, UIButton::PRESSED);\r
+    labelButton->SetStyleForState(STYLE_BORDER_COLOR, Color::Black().full, UIButton::INACTIVE);\r
+    labelButton->SetStyle(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full);\r
     labelButton->SetStyle(STYLE_BORDER_WIDTH, VIEW_BORDER_SIZE);\r
-    labelButton->SetStyle(STYLE_BORDER_COLOR, Color::White().full);\r
+    labelButton->SetStyle(STYLE_BORDER_COLOR, Color::Black().full);\r
     labelButton->Resize(BUTTON_WIDHT, BUTTON_HEIGHT);\r
 \r
     return labelButton;\r
@@ -132,9 +121,20 @@ UILabelButton *AlarmSetWeekView::CreateUILabelButton(const char *buttonText, int
 \r
 void AlarmSetWeekView::CreateWeekButton1(void)\r
 {\r
-    int viewPositionX = VIEW_POSITION_X;   // 60 150\r
+    int viewPositionX = VIEW_POSITION_X;\r
     UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
-    buttonWeek[WEEK_MON] = CreateUILabelButton(MON, viewPositionX, WEEK_Y1);\r
+\r
+    buttonWeek[WEEK_SUN] = CreateUILabelButton(SUN_DAY,SUN_DAY_EN, viewPositionX, WEEK_Y1);\r
+    if (buttonWeek[WEEK_SUN] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonSun fail");\r
+        return;\r
+    }\r
+    group->Add(buttonWeek[WEEK_SUN]);\r
+    buttonWeek[WEEK_SUN]->SetOnClickListener(clickListener);\r
+    buttonWeek[WEEK_SUN]->SetViewId(SUNDAY);\r
+    viewPositionX += WEEK_GAP_X;\r
+\r
+    buttonWeek[WEEK_MON] = CreateUILabelButton(MON_DAY,MON_DAY_EN, viewPositionX, WEEK_Y1);\r
     if (buttonWeek[WEEK_MON] == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonMon fail");\r
         return;\r
@@ -144,7 +144,7 @@ void AlarmSetWeekView::CreateWeekButton1(void)
     buttonWeek[WEEK_MON]->SetViewId(MONDAY);\r
     viewPositionX += WEEK_GAP_X;\r
 \r
-    buttonWeek[WEEK_TUE] = CreateUILabelButton(TUE, viewPositionX, WEEK_Y1);\r
+    buttonWeek[WEEK_TUE] = CreateUILabelButton(TUE_DAY,TUE_DAY_EN, viewPositionX, WEEK_Y1);\r
     if (buttonWeek[WEEK_TUE] == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonTue fail");\r
         return;\r
@@ -154,7 +154,7 @@ void AlarmSetWeekView::CreateWeekButton1(void)
     buttonWeek[WEEK_TUE]->SetViewId(TUESDAY);\r
     viewPositionX += WEEK_GAP_X;\r
 \r
-    buttonWeek[WEEK_WED] = CreateUILabelButton(WED, viewPositionX, WEEK_Y1);\r
+    buttonWeek[WEEK_WED] = CreateUILabelButton(WED_DAY,WED_DAY_EN, viewPositionX, WEEK_Y1);\r
     if (buttonWeek[WEEK_WED] == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonWed fail");\r
         return;\r
@@ -166,10 +166,10 @@ void AlarmSetWeekView::CreateWeekButton1(void)
 \r
 void AlarmSetWeekView::CreateWeekButton2(void)\r
 {\r
-    int viewPositionX2 = VIEW_POSITION_X2; // 12 210\r
+    int viewPositionX2 = VIEW_POSITION_X2;\r
     UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
 \r
-    buttonWeek[WEEK_THUR] = CreateUILabelButton(THUR, viewPositionX2, WEEK_Y2);\r
+    buttonWeek[WEEK_THUR] = CreateUILabelButton(THUR_DAY,THUR_DAY_EN, viewPositionX2, WEEK_Y2);\r
     if (buttonWeek[WEEK_THUR] == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonThur fail");\r
         return;\r
@@ -179,7 +179,7 @@ void AlarmSetWeekView::CreateWeekButton2(void)
     buttonWeek[WEEK_THUR]->SetViewId(THURSDAY);\r
     viewPositionX2 += WEEK_GAP_X;\r
 \r
-    buttonWeek[WEEK_FRI] = CreateUILabelButton(FRI, viewPositionX2, WEEK_Y2);\r
+    buttonWeek[WEEK_FRI] = CreateUILabelButton(FRI_DAY,FRI_DAY_EN, viewPositionX2, WEEK_Y2);\r
     if (buttonWeek[WEEK_FRI] == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonFri fail");\r
         return;\r
@@ -189,7 +189,7 @@ void AlarmSetWeekView::CreateWeekButton2(void)
     buttonWeek[WEEK_FRI]->SetViewId(FRIDAY);\r
     viewPositionX2 += WEEK_GAP_X;\r
 \r
-    buttonWeek[WEEK_SAT] = CreateUILabelButton(SAT, viewPositionX2, WEEK_Y2);\r
+    buttonWeek[WEEK_SAT] = CreateUILabelButton(SAT_DAY,SAT_DAY_EN, viewPositionX2, WEEK_Y2);\r
     if (buttonWeek[WEEK_SAT] == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonSat fail");\r
         return;\r
@@ -199,14 +199,6 @@ void AlarmSetWeekView::CreateWeekButton2(void)
     buttonWeek[WEEK_SAT]->SetViewId(SATURDAY);\r
     viewPositionX2 += WEEK_GAP_X;\r
 \r
-    buttonWeek[WEEK_SUN] = CreateUILabelButton(SUN, viewPositionX2, WEEK_Y2);\r
-    if (buttonWeek[WEEK_SUN] == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonSun fail");\r
-        return;\r
-    }\r
-    group->Add(buttonWeek[WEEK_SUN]);\r
-    buttonWeek[WEEK_SUN]->SetOnClickListener(clickListener);\r
-    buttonWeek[WEEK_SUN]->SetViewId(SUNDAY);\r
 }\r
 \r
 void AlarmSetWeekView::SetLabelButton(void)\r
@@ -216,62 +208,63 @@ void AlarmSetWeekView::SetLabelButton(void)
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new clickListener fail");\r
         return;\r
     }\r
-    weekImage = new UILabelButton();\r
+    weekImage = new UILabelButtonExt();\r
     if (weekImage == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new weekImage fail");\r
         return;\r
     }\r
-    weekImage->SetPosition(TIME_LABEL_BUTTON_X, TIME_LABEL_BUTTON_Y, BUTTON_WIDHT3, BUTTON_HEIGHT3);\r
-    weekImage->SetText(SURE);\r
-    weekImage->SetTouchable(true);\r
+    weekImage->SetPosition(0, 366, 466, 100);\r
     weekImage->SetViewId(ALARM_WEEK_OK);\r
-    weekImage->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_WEEK_FONT);\r
-    if (OHOS::AlarmPresenter::GetInstance() == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new ShadowBlue fail");\r
-        return;\r
-    }\r
-    weekImage->SetTextColor(OHOS::AlarmPresenter::GetInstance()->ShadowBlue());\r
+    weekImage->SetTextId(STR_OK);//确定\r
+    weekImage->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+    weekImage->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));\r
+    weekImage->SetImageSrc(PNG_BUTTON_466x100_IMAGE, PNG_BUTTON_466x100_IMAGE);\r
+    weekImage->SetStyleForState(STYLE_BACKGROUND_COLOR, 0x00, UIButton::PRESSED);\r
+    weekImage->SetTouchable(true);\r
     weekImage->SetOnClickListener(clickListener);\r
-    weekImage->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
     group->Add(weekImage);\r
 }\r
 \r
 UIScrollView *AlarmSetWeekView::InitSetWeekView()\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::InitSetWeekView");\r
-\r
     group = new UIScrollView();\r
     if (group == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new group fail");\r
         return group;\r
     }\r
-\r
     group->SetPosition(CONTAINER_X, CONTAINER_Y, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
-    labelRespeat = new UILabel();\r
+    group->SetTouchable(true);\r
+    group->SetDraggable(true);\r
+    UIView::OnDragListener *setWeekDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();\r
+    if (setWeekDragListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new setWeekDragListener fail");\r
+        return group;\r
+    }\r
+    group->SetOnDragListener(setWeekDragListener);\r
+    /* -------------------------------------------------------------------------- */\r
+    labelRespeat = new UILabelExt();\r
     if (labelRespeat == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new labelRespeat fail");\r
         return group;\r
     }\r
+    labelRespeat->SetTextId(STR_ALARM_REPEAT);//重复\r
+    labelRespeat->SetPosition(83, 50, 300, 35);\r
+    labelRespeat->SetStyle(STYLE_TEXT_FONT, 30);\r
+    labelRespeat->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+    labelRespeat->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+    labelRespeat->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
     group->Add(labelRespeat);\r
-    labelRespeat->SetText(RESPEAT);\r
-    labelRespeat->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DEFAULT_FONT);\r
-    labelRespeat->SetPosition(TITLE_X, TITLE_Y, HORIZONTAL_RESOLUTION / 2, LABEL_POSITION_SIZE);\r
 \r
     CreateWeekButton1();\r
     CreateWeekButton2();\r
     SetLabelButton();\r
 \r
-    group->SetTouchable(true);\r
-    group->SetDraggable(true);\r
-    UIView::OnDragListener *setWeekDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();\r
-    if (setWeekDragListener == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new setWeekDragListener fail");\r
-        return group;\r
-    }\r
-    group->SetOnDragListener(setWeekDragListener);\r
+   \r
     return group;\r
 }\r
 \r
+//该函数用于设置AlarmSetWeekView中周一到周日按钮的背景颜色\r
 void AlarmSetWeekView::RefreshSetWeek1(void)\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1");\r
@@ -279,81 +272,83 @@ void AlarmSetWeekView::RefreshSetWeek1(void)
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonMon nullptr error!");\r
         return;\r
     }\r
-    buttonWeek[WEEK_MON]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
-    buttonWeek[WEEK_MON]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
+    buttonWeek[WEEK_MON]->SetStyle(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full);\r
+    buttonWeek[WEEK_MON]->SetStyleForState(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full, UIButton::PRESSED);\r
     if (buttonWeek[WEEK_TUE] == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonTue nullptr error!");\r
         return;\r
     }\r
-    buttonWeek[WEEK_TUE]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
-    buttonWeek[WEEK_TUE]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
+    buttonWeek[WEEK_TUE]->SetStyle(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full);\r
+    buttonWeek[WEEK_TUE]->SetStyleForState(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full, UIButton::PRESSED);\r
     if (buttonWeek[WEEK_WED] == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonWed nullptr error!");\r
         return;\r
     }\r
-    buttonWeek[WEEK_WED]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
-    buttonWeek[WEEK_WED]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
+    buttonWeek[WEEK_WED]->SetStyle(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full);\r
+    buttonWeek[WEEK_WED]->SetStyleForState(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full, UIButton::PRESSED);\r
     if (buttonWeek[WEEK_THUR] == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonThur nullptr error!");\r
         return;\r
     }\r
-    buttonWeek[WEEK_THUR]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
-    buttonWeek[WEEK_THUR]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
+    buttonWeek[WEEK_THUR]->SetStyle(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full);\r
+    buttonWeek[WEEK_THUR]->SetStyleForState(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full, UIButton::PRESSED);\r
     if (buttonWeek[WEEK_FRI] == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonFri nullptr error!");\r
         return;\r
     }\r
-    buttonWeek[WEEK_FRI]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
-    buttonWeek[WEEK_FRI]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
+    buttonWeek[WEEK_FRI]->SetStyle(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full);\r
+    buttonWeek[WEEK_FRI]->SetStyleForState(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full, UIButton::PRESSED);\r
     if (buttonWeek[WEEK_SAT] == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonSat nullptr error!");\r
         return;\r
     }\r
-    buttonWeek[WEEK_SAT]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
-    buttonWeek[WEEK_SAT]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
+    buttonWeek[WEEK_SAT]->SetStyle(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full);\r
+    buttonWeek[WEEK_SAT]->SetStyleForState(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full, UIButton::PRESSED);\r
     if (buttonWeek[WEEK_SUN] == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonSun nullptr error!");\r
         return;\r
     }\r
-    buttonWeek[WEEK_SUN]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
-    buttonWeek[WEEK_SUN]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
+    buttonWeek[WEEK_SUN]->SetStyle(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full);\r
+    buttonWeek[WEEK_SUN]->SetStyleForState(STYLE_BACKGROUND_COLOR, DEFAULT_BG_COLOR.full, UIButton::PRESSED);\r
 }\r
 \r
+//该函数用于设置AlarmSetWeekView中周一到周日按钮的背景颜色\r
 void AlarmSetWeekView::RefreshSetWeek2(uint8_t week)\r
 {\r
-    for (int16_t alarmNum = 0; alarmNum < 7; alarmNum++) {\r
+    for (int16_t alarmNum = 0; alarmNum < WEEK_NUM; alarmNum++) {\r
         if (buttonWeek[alarmNum] == nullptr) {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep2 week[%d] nullptr error!", alarmNum);\r
             return;\r
         }\r
     }\r
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: week = %u", week);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: week = %u", week);\r
     if ((week & 0x01) == 1) { // 判断星期天的位数是否为1\r
-        buttonWeek[WEEK_SUN]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+        // buttonWeek[WEEK_SUN]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);        buttonWeek[WEEK_SUN]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+        buttonWeek[WEEK_SUN]->SetStyle(STYLE_BACKGROUND_COLOR, SELECTED_BG_COLOR.full);\r
         AlarmPresenter::GetInstance()->alarmWeek[WEEK_SUN] = 1;\r
     }\r
     if ((week & 0x02) == 0x02) { // 判断星期一的位数是否为1\r
-        buttonWeek[WEEK_MON]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+        buttonWeek[WEEK_MON]->SetStyle(STYLE_BACKGROUND_COLOR, SELECTED_BG_COLOR.full);\r
         AlarmPresenter::GetInstance()->alarmWeek[WEEK_MON] = 1;\r
     }\r
     if ((week & 0x04) == 0x04) { // 判断星期二的位数是否为1\r
-        buttonWeek[WEEK_TUE]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+        buttonWeek[WEEK_TUE]->SetStyle(STYLE_BACKGROUND_COLOR, SELECTED_BG_COLOR.full);\r
         AlarmPresenter::GetInstance()->alarmWeek[WEEK_TUE] = 1;\r
     }\r
     if ((week & 0x08) == 0x08) { // 判断星期三的位数是否为1\r
-        buttonWeek[WEEK_WED]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+        buttonWeek[WEEK_WED]->SetStyle(STYLE_BACKGROUND_COLOR, SELECTED_BG_COLOR.full);\r
         AlarmPresenter::GetInstance()->alarmWeek[WEEK_WED] = 1;\r
     }\r
     if ((week & 0x10) == 0x10) { // 判断星期四的位数是否为1\r
-        buttonWeek[WEEK_THUR]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+        buttonWeek[WEEK_THUR]->SetStyle(STYLE_BACKGROUND_COLOR, SELECTED_BG_COLOR.full);\r
         AlarmPresenter::GetInstance()->alarmWeek[WEEK_THUR] = 1;\r
     }\r
     if ((week & 0x20) == 0x20) { // 判断星期五的位数是否为1\r
-        buttonWeek[WEEK_FRI]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+        buttonWeek[WEEK_FRI]->SetStyle(STYLE_BACKGROUND_COLOR, SELECTED_BG_COLOR.full);\r
         AlarmPresenter::GetInstance()->alarmWeek[WEEK_FRI] = 1;\r
     }\r
     if ((week & 0x40) == 0x40) { // 判断星期六的位数是否为1\r
-        buttonWeek[WEEK_SAT]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+        buttonWeek[WEEK_SAT]->SetStyle(STYLE_BACKGROUND_COLOR, SELECTED_BG_COLOR.full);\r
         AlarmPresenter::GetInstance()->alarmWeek[WEEK_SAT] = 1;\r
     }\r
 }\r
index 430334b..e836e06 100644 (file)
@@ -5,10 +5,13 @@
  * Create: 2021-09-11
  */
 
-#include "MainAlarmView.h"
+#include "alarm/include/MainAlarmView.h"
 #include "UiConfig.h"
 #include "ui_label_button.h"
 #include "PhoneService.h"
+#include "ui_resource_string.h"
+#include "ConfigModel.h"
+#include "languagecode/LanguageInit.h"
 
 namespace OHOS {
 static MainAlarmView *g_MainAlarmView = nullptr;
@@ -43,8 +46,8 @@ constexpr int16_t STATUS_BUTTON_Y = 210;
 constexpr int16_t STATUS_BUTTON_W = 90;
 constexpr int16_t STATUS_BUTTON_H = 90;
 constexpr int16_t D_CLOCK_X = 80;
-constexpr int16_t D_CLOCK_FONT_SIZE = 55;
-constexpr int16_t D_CLOCK_LABEL_FONT = 25;
+constexpr int16_t D_CLOCK_FONT_SIZE = 40; // 55;
+constexpr int16_t D_CLOCK_LABEL_FONT = 30; // 25;
 constexpr int16_t POSITION_ADD_Y = 110;
 constexpr int16_t POSITION_BUTTON_ADD_Y = 85;
 constexpr int16_t LABEL_SEMITRANSPARENT = 128;
@@ -65,33 +68,100 @@ MainAlarmView::~MainAlarmView()
     alarmMin = 0;
     dClockNum = 0;
     weekStatus = 0;
-    group->RemoveAll();
-    delete addButton;
-    addButton = nullptr;
-    delete group;
-    group = nullptr;
-    delete configView;
-    configView = nullptr;
-    delete setTimeView;
-    setTimeView = nullptr;
-    delete setWeekView;
-    setWeekView = nullptr;
-    delete judgeView;
-    judgeView = nullptr;
-    delete newTimeView;
-    newTimeView = nullptr;
-    for (int alarmNum = SET_ZERO; alarmNum <= SET_FIVE; alarmNum++) {
-        if (dClock[alarmNum] != nullptr) {
-            delete dClock[alarmNum];
-            dClock[alarmNum] = nullptr;
-        }
-        if (statusButton[alarmNum] != nullptr) {
-            delete statusButton[alarmNum];
-            statusButton[alarmNum] = nullptr;
-        }
-        if (dLabel[alarmNum] != nullptr) {
-            delete dLabel[alarmNum];
-            dLabel[alarmNum] = nullptr;
+    if(group)
+    {
+        group->RemoveAll();
+        delete group;
+        group = nullptr;
+    }
+    if(configView)
+    {
+        delete configView;
+        configView = nullptr;
+    }
+    if(setTimeView)
+    {
+        delete setTimeView;
+        setTimeView = nullptr;
+    }
+    if(setWeekView)
+    {
+        delete setWeekView;
+        setWeekView = nullptr;
+    }
+    if(judgeView)
+    {
+        delete judgeView;
+        judgeView = nullptr;
+    }
+    if(newTimeView)
+    {
+        delete newTimeView;
+        newTimeView = nullptr;
+    }
+    if(maxClockView)
+    {
+        delete maxClockView;
+        maxClockView = nullptr;
+    }
+    if(nullptr != TitleLabelExt_)
+    {
+        delete TitleLabelExt_;
+        TitleLabelExt_ = nullptr;
+    }
+    if(nullptr != AddButton_)
+    {
+        delete AddButton_;
+        AddButton_ = nullptr;
+    }
+    for (int alarmNum = SET_ZERO; alarmNum <= SET_FIVE; alarmNum++)
+    {
+        if(nullptr != SwipeView_[alarmNum])
+        {
+            SwipeView_[alarmNum]->RemoveAll();
+
+            if(nullptr != SwipeViewItem_[alarmNum][0])
+            {
+                SwipeViewItem_[alarmNum][0]->RemoveAll();
+
+                if (dClock[alarmNum] != nullptr) {
+                    delete dClock[alarmNum];
+                    dClock[alarmNum] = nullptr;
+                }
+                if (statusButton[alarmNum] != nullptr) {
+                    delete statusButton[alarmNum];
+                    statusButton[alarmNum] = nullptr;
+                }
+                if (dLabel[alarmNum] != nullptr) {
+                    delete dLabel[alarmNum];
+                    dLabel[alarmNum] = nullptr;
+                }
+                if(statusListener[alarmNum] != nullptr)
+                {
+                    delete statusListener[alarmNum];
+                    statusListener[alarmNum] = nullptr;
+                }
+
+                delete SwipeViewItem_[alarmNum][0];
+                SwipeViewItem_[alarmNum][0] = nullptr;
+            }
+
+            if(nullptr != SwipeViewItem_[alarmNum][1])
+            {
+                SwipeViewItem_[alarmNum][1]->RemoveAll();
+
+                if (nullptr != DeleteButton_[alarmNum])
+                {
+                    delete DeleteButton_[alarmNum];
+                    DeleteButton_[alarmNum] = nullptr;
+                }
+
+                delete SwipeViewItem_[alarmNum][1];
+                SwipeViewItem_[alarmNum][1] = nullptr;
+            }
+
+            delete SwipeView_[alarmNum];
+            SwipeView_[alarmNum] = nullptr;
         }
         container[alarmNum] = nullptr;
     }
@@ -104,113 +174,261 @@ MainAlarmView *MainAlarmView::GetInstance(void)
     return g_MainAlarmView;
 }
 
-void MainAlarmView::CreateImage(void)
+void MainAlarmView::AlarmTitleCreate(void)
 {
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();
+    if(nullptr == TitleLabelExt_)
+    {
+        TitleLabelExt_ = new UILabelExt();
+        if(nullptr == TitleLabelExt_)
+            return;
 
-    addButton = new UIImageView();
-    if (addButton == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new addButton fail");
-        return;
+        TitleLabelExt_->SetPosition(83, 50, 300, 35);
+        TitleLabelExt_->SetStyle(STYLE_TEXT_FONT, 30);
+        TitleLabelExt_->SetStyle(STYLE_LINE_HEIGHT, 35);
+        TitleLabelExt_->SetTextId(STR_ALARM);
+        TitleLabelExt_->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
+        TitleLabelExt_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        TitleLabelExt_->SetRollSpeed(23);
+        TitleLabelExt_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+        group->Add(TitleLabelExt_);
     }
-    addButton->SetPosition(ADD_BUTTON_X, ADD_BUTTON_Y);
-    addButton->SetWidth(ADD_BUTTON_W);
-    addButton->SetHeight(ADD_BUTTON_H);
-    addButton->SetSrc(ALARM_ADD_BUTTON_PATH);
-    addButton->SetViewId(ADD_BUTTON);
-    addButton->SetTouchable(true);
-    addButton->SetOnClickListener(clickListener);
-    group->Add(addButton);
 }
 
-void MainAlarmView::NewClockCtl(int16_t alarmNum)
+void MainAlarmView::AlarmAddButtonCreate(void)
 {
-    UIView::OnClickListener *clockListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();
-    dClock[alarmNum] = new UIDigitalClock();
-    if (dClock[alarmNum] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new dClock fail");
-        return;
-    }
-    dClock[alarmNum]->SetViewId(ALARM_CLOCK[alarmNum]);
-    dClock[alarmNum]->SetTouchable(true);
-    dClock[alarmNum]->SetOnClickListener(clockListener);
-    if (alarmNum == 0) {
-        dClock[0]->SetPosition(D_CLOCK_X, alarmPositionY, ALARM_CLOCK_WIDTH, ALARM_CLOCK_HEIGHT);
-    } else {
-        dClock[alarmNum]->SetPosition(D_CLOCK_X, dClock[0]->GetY() + (alarmInterval * alarmNum), ALARM_CLOCK_WIDTH, ALARM_CLOCK_HEIGHT);
+    if(nullptr == AddButton_)
+    {
+        AddButton_ = new UILabelButtonExt();
+        if(nullptr == AddButton_)
+            return; 
+
+        AddButton_->SetPosition(43, 0, 380, 100);
+        AddButton_->SetViewId(ADD_BUTTON);
+        AddButton_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);
+        AddButton_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+        AddButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff191919, UIButton::PRESSED);
+        AddButton_->SetStyleForState(STYLE_BACKGROUND_OPA, OPA_OPAQUE, UIButton::PRESSED);
+        AddButton_->SetStyle(STYLE_BORDER_RADIUS, 100);
+        AddButton_->SetStyle(STYLE_TEXT_FONT, 30);
+        AddButton_->SetStyle(STYLE_LINE_HEIGHT, 35);
+        AddButton_->SetTextId(STR_ADD_A_NEW_ALARM);
+        // AddButton_->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
+        // AddButton_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        // AddButton_->SetRollSpeed(23);
+        AddButton_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();
+        AddButton_->SetOnClickListener(clickListener);
+
+        group->Add(AddButton_);
     }
-    dClock[alarmNum]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, D_CLOCK_FONT_SIZE);
-    dClock[alarmNum]->SetDisplayMode(UIDigitalClock::DISPLAY_24_HOUR_NO_SECONDS);
-    group->Add(dClock[alarmNum]);
+}
 
-    dLabel[alarmNum] = new UILabel();
-    if (dLabel[alarmNum] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new dLabel fail");
-        return;
+//更新闹钟添加按钮的位置
+//更新闹钟添加按钮的位置
+void MainAlarmView::AlarmAddButtonUpdate(uint8_t count)
+{
+    if(nullptr == AddButton_ || TitleLabelExt_ == nullptr)
+        return; 
+    int bef_y = 0;
+    int aft_y = 0;
+    // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]: 0_y=%d", __LINE__, Screen::GetInstance().GetHeight() / 2);
+    // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]: 0_y=%d", __LINE__, TitleLabelExt_->GetHeight());
+    bef_y = AddButton_->GetY();
+    if((0 == count))
+    {
+        TitleLabelExt_->SetY(50);
+        AddButton_->SetY(120);
     }
-    if (alarmNum == 0) {
-        dLabel[0]->SetPosition(D_CLOCK_X, labelPositionY, ALARM_CLOCK_WIDTH, WEEK_LABEL_HEIGHT);
-    } else {
-        dLabel[alarmNum]->SetPosition(D_CLOCK_X, dLabel[0]->GetY() + (alarmInterval * alarmNum), ALARM_CLOCK_WIDTH, WEEK_LABEL_HEIGHT);
+    else
+    {
+        if(SwipeView_[0]) {
+            AddButton_->SetY(SwipeView_[0]->GetY() + (alarmInterval * count));
+        }
+    }
+    aft_y = AddButton_->GetY();
+    bool is_up_drag = bef_y- aft_y > 0 ? false:true;
+    if(group) {
+        if(viewInitstatus_)
+            group->ScrollBy(0, is_up_drag ? - 120 : 120);
     }
-    group->Add(dLabel[alarmNum]);
+    RootView::GetInstance()->Invalidate();
+}
 
-    statusButton[alarmNum] = new UIToggleButton();
-    if (statusButton[alarmNum] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new statusButton[alarmNum] fail");
-        return;
+UIViewGroup * MainAlarmView::NewClockCtlExt(int16_t alarmNum, uint8_t index)
+{
+    UIViewGroup * TempGroup_ = new UIViewGroup();
+    if(nullptr == TempGroup_)
+        return nullptr;
+
+    if(0 == index)
+    {
+        TempGroup_->SetPosition(0, 0, 380, 100);
+        TempGroup_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);
+        TempGroup_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+        TempGroup_->SetStyle(STYLE_BORDER_RADIUS, 100);
+
+        dClock[alarmNum] = new UIDigitalClock();
+        if (dClock[alarmNum] == nullptr) {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new dClock fail");
+            return nullptr;
+        }
+        dClock[alarmNum]->SetViewId(ALARM_CLOCK[alarmNum]);
+        dClock[alarmNum]->SetTouchable(true);
+        UIView::OnClickListener *clockListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();
+        dClock[alarmNum]->SetOnClickListener(clockListener);
+        dClock[alarmNum]->SetPosition(50, 10, 200, 76);
+        dClock[alarmNum]->SetFont(DEFAULT_VECTOR_FONT_FILENAME_EN, D_CLOCK_FONT_SIZE);
+        dClock[alarmNum]->SetDisplayMode(UIDigitalClock::DISPLAY_24_HOUR_NO_SECONDS);
+        /* -------------------------------------------------------------------------- */
+        dLabel[alarmNum] = new UILabelExt();
+        if (dLabel[alarmNum] == nullptr) {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new dLabel fail");
+            return nullptr;
+        }
+        dLabel[alarmNum]->SetPosition(50, 60, 200, 35);
+        dLabel[alarmNum]->SetStyle(STYLE_TEXT_FONT, 30);
+        dLabel[alarmNum]->SetStyle(STYLE_LINE_HEIGHT, 35);
+        dLabel[alarmNum]->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));
+        dLabel[alarmNum]->SetFont(DEFAULT_VECTOR_FONT_FILENAME_EN, D_CLOCK_LABEL_FONT);
+        dLabel[alarmNum]->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
+        dLabel[alarmNum]->SetRollSpeed(23);
+        /* -------------------------------------------------------------------------- */
+        statusButton[alarmNum] = new UIToggleButton();
+        if (statusButton[alarmNum] == nullptr) {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new statusButton[alarmNum] fail");
+            return nullptr;
+        }
+        statusButton[alarmNum]->SetViewId(ALARM_STATUS[alarmNum]);
+        statusButton[alarmNum]->SetPosition(250, 15, 120, 70);
+        statusButton[alarmNum]->SetImages(PNG_TOGGLEBUTTON_ON_IMAGE, PNG_TOGGLEBUTTON_OFF_IMAGE);
+        // statusButton[alarmNum]->SetStyle(STYLE_BACKGROUND_OPA, alarmNum);
+        // statusButton[alarmNum]->SetStyle(STYLE_BACKGROUND_COLOR, 0xff29b862);
+        // statusButton[alarmNum]->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+        if(statusListener[alarmNum] == nullptr){
+            statusListener[alarmNum] = new AlarmStatusBtnChangeListener(reinterpret_cast<UIView*>(statusButton[alarmNum]));
+            if (statusListener == nullptr) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView::NewStatusButton statusListener nullptr!");
+                return nullptr;
+            }
+        }
+        statusButton[alarmNum]->SetOnChangeListener((UICheckBox::OnChangeListener *)statusListener[alarmNum]);
+        /* ----------------------------------- Add ---------------------------------- */
+        TempGroup_->Add(dClock[alarmNum]);
+        TempGroup_->Add(dLabel[alarmNum]);
+        TempGroup_->Add(statusButton[alarmNum]);
     }
-    statusButton[alarmNum]->SetViewId(ALARM_STATUS[alarmNum]);
-    if (alarmNum == 0) {
-        statusButton[0]->SetPosition(STATUS_BUTTON_X, alarmPositionY, STATUS_BUTTON_W, STATUS_BUTTON_H);
-    } else {
-        statusButton[alarmNum]->SetPosition(STATUS_BUTTON_X, statusButton[0]->GetY() + (alarmInterval * alarmNum), STATUS_BUTTON_W, STATUS_BUTTON_H);
+    else
+    {
+        TempGroup_->SetPosition(0, 0, 100 + 15, 100);
+        TempGroup_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
+        TempGroup_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+        TempGroup_->SetStyle(STYLE_BORDER_RADIUS, 100);
+
+        DeleteButton_[alarmNum] = new UILabelButtonExt();
+        if(nullptr == DeleteButton_[alarmNum])
+            return nullptr;
+
+        DeleteButton_[alarmNum]->SetPosition(15, 0, 100, 100);
+        DeleteButton_[alarmNum]->SetViewId(ALARM_ITEM_DELETE[alarmNum]);
+        DeleteButton_[alarmNum]->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
+        DeleteButton_[alarmNum]->SetStyle(STYLE_BACKGROUND_OPA, 25); // 10%
+        DeleteButton_[alarmNum]->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);
+        DeleteButton_[alarmNum]->SetStyleForState(STYLE_BACKGROUND_OPA, 25, UIButton::PRESSED);
+        DeleteButton_[alarmNum]->SetStyle(STYLE_BORDER_RADIUS, 100);
+        DeleteButton_[alarmNum]->SetImagePosition(0, 0);
+        DeleteButton_[alarmNum]->SetImageSrc(ALARM_DELETE_IMAGE, ALARM_DELETE_IMAGE);
+        DeleteButton_[alarmNum]->SetOnClickListener(presenter_);
+        
+        TempGroup_->Add(DeleteButton_[alarmNum]);    
     }
-    statusButton[alarmNum]->SetStyle(STYLE_BACKGROUND_OPA, alarmNum);
-    UICheckBox::OnChangeListener *statusListener{nullptr};
-    statusListener = new AlarmStatusBtnChangeListener(reinterpret_cast<UIView*>(statusButton[alarmNum]));
-    if (statusListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView::NewStatusButton statusListener nullptr!");
-        return;
+
+    return TempGroup_;
+}
+
+void MainAlarmView::NewClockCtl(int16_t alarmNum)
+{
+    SwipeView_[alarmNum] = new UISwipeView(UISwipeView::HORIZONTAL);
+    if (0 == alarmNum) 
+    {
+        SwipeView_[alarmNum]->SetPosition(43, 120, 380, 100);
+    } else 
+    {
+        SwipeView_[alarmNum]->SetPosition(43, SwipeView_[0]->GetY() + (alarmInterval * alarmNum), 380, 100);
     }
-    statusButton[alarmNum]->SetOnChangeListener((UICheckBox::OnChangeListener *)statusListener);
-    group->Add(statusButton[alarmNum]);
+    // SwipeView_[alarmNum]->SetViewId(ITEM_SWIPE[alarmNum]);
+    SwipeView_[alarmNum]->SetTouchable(true);
+    // SwipeView_[alarmNum]->SetThrowDrag(true);
+    SwipeView_[alarmNum]->SetOnSwipeListener(presenter_);
+    SwipeView_[alarmNum]->SetAnimatorTime(50);           // 200:animator drag time(ms)
+    // SwipeView_[alarmNum]->SetOnDragListener(presenter_);
+    SwipeView_[alarmNum]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
+    SwipeView_[alarmNum]->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+    SwipeView_[alarmNum]->SetStyle(STYLE_BORDER_RADIUS, 100);
+    SwipeView_[alarmNum]->SetBlankSize(0);
+    // SwipeView_[alarmNum]->SetBlankSize(0);
+    // SwipeView_[alarmNum]->SetReboundSize(30); // 200: rebound size
+    // SwipeView_[alarmNum]->SetElastic(true);
+
+    SwipeViewItem_[alarmNum][0] = NewClockCtlExt(alarmNum, 0);
+    SwipeView_[alarmNum]->Add(SwipeViewItem_[alarmNum][0]);
+
+    SwipeViewItem_[alarmNum][1] = NewClockCtlExt(alarmNum, 1);
+    SwipeView_[alarmNum]->Add(SwipeViewItem_[alarmNum][1]);
+
+    SwipeView_[alarmNum]->SetCurrentPage(0);
+    SwipeView_[alarmNum]->SetIntercept(false);
+    SwipeView_[alarmNum]->SetLoopState(false);
+
+    group->Add(SwipeView_[alarmNum]);
 }
 
 void MainAlarmView::LabelGetWeek(uint8_t week, int16_t alarmNum)
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView::week = %u!", week);
     std::string weekStr;
+    std::string weekStr_en;
     if ((week & 0x7f) == 0x7f) { // 判断0~6位是否都为1,如若都为1,则一周7天闹钟都响应
         weekStr = EVERY_DAY;
+        weekStr_en = EVERY_DAY_EN;
     } else if (week == 0) { // 判断0~6位是否都为0,如若都为0,则一周7天都不响应,闹钟为不重复开启
         weekStr = DO_NOT_REPEAT;
+        weekStr_en = DO_NOT_REPEAT_EN;
     } else {
         if ((week & 0x02) == 0x02) { // 判断第1位是否为1,如若为1,则星期一响应
             weekStr += MON_DAY;
+            weekStr_en += MON_DAY_EN;
         }
         if ((week & 0x04) == 0x04) { // 判断第2位是否为1,如若为1,则星期二响应
             weekStr += TUE_DAY;
+            weekStr_en += TUE_DAY_EN;
         }
         if ((week & 0x08) == 0x08) { // 判断第3位是否为1,如若为1,则星期三响应
             weekStr += WED_DAY;
+            weekStr_en += WED_DAY_EN;
         }
         if ((week & 0x10) == 0x10) { // 判断第4位是否为1,如若为1,则星期四响应
             weekStr += THUR_DAY;
+            weekStr_en += THUR_DAY_EN;
         }
         if ((week & 0x20) == 0x20) { // 判断第5位是否为1,如若为1,则星期五响应
             weekStr += FRI_DAY;
+            weekStr_en += FRI_DAY_EN;
         }
         if ((week & 0x40) == 0x40) { // 判断第6位是否为1,如若为1,则星期六响应
             weekStr += SAT_DAY;
+            weekStr_en += SAT_DAY_EN;
         }
         if ((week & 0x01) == 0x01) { // 判断第0位是否为1,如若为1,则星期日响应
             weekStr += SUN_DAY;
+            weekStr_en += SUN_DAY_EN;
         }
     }
-    dLabel[alarmNum]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, D_CLOCK_LABEL_FONT);
-    dLabel[alarmNum]->SetText(weekStr.c_str());
-    dLabel[alarmNum]->SetStyle(STYLE_TEXT_OPA, LABEL_SEMITRANSPARENT);
+    if(ConfigModel::GetInstance()->GetLanguage() == ZH_CN)
+        dLabel[alarmNum]->SetText(weekStr.c_str());
+    else
+        dLabel[alarmNum]->SetText(weekStr_en.c_str());
+    // dLabel[alarmNum]->ForceResetText();
 }
 
 bool MainAlarmView::GetRefreshStatus(void)
@@ -220,42 +438,55 @@ bool MainAlarmView::GetRefreshStatus(void)
 
 void MainAlarmView::RefreshAlarmStatus(uint8_t alarmEnable, int16_t num)
 {
-    reflashStatus = true;
-    if (alarmEnable == 0) {
-        statusButton[num]->SetState(false);
-    } else if (alarmEnable == 1) {
-        statusButton[num]->SetState(true);
-    }
-    reflashStatus = false;
-    dClock[num]->SetVisible(true);
-    statusButton[num]->SetVisible(true);
+    if(statusButton[num] && dClock[num] && SwipeView_[num])
+    {
+        reflashStatus = true;
+        if (alarmEnable == 0) {
+            statusButton[num]->SetState(false);
+        } else if (alarmEnable == 1) {
+            statusButton[num]->SetState(true);
+        }
+        reflashStatus = false;
+        dClock[num]->SetVisible(true);
+        statusButton[num]->SetVisible(true);
+
+        SwipeView_[num]->SetCurrentPage(0);
+    }
 }
 
 void MainAlarmView::OnStart()
 {
-
-    group = new UIScrollView();
     if (group == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new group fail");
-        return;
+        group = new UIScrollView();
+        if (group == nullptr) {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new group fail");
+            return;
+        }
     }
-    group->SetPosition(CONTAINER_X, CONTAINER_Y, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();
-    CreateImage();
-
+    group->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+    group->SetScrollBlankSize(75);
     group->SetTouchable(true);
     group->SetDraggable(true);
+    group->SetDirection(UIScrollView::VERTICAL);
+    group->RequestFocus();
+    group->SetRotateFactor(1.0);
     UIView::OnDragListener *alarmDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();
     if (alarmDragListener == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new alarmDragListener fail");
         return;
     }
     group->SetOnDragListener(alarmDragListener);
+
+    AlarmTitleCreate();
+    AlarmAddButtonCreate();
+
     RefreshAlarm();
     if (group != nullptr) {
         container[0] = group;
         AddViewToRootContainer(container[0]);
     }
+    viewInitstatus_ = true;
+    RootView::GetInstance()->SetOnKeyActListener(presenter_);
 }
 
 void MainAlarmView::RefreshAlarm(void)
@@ -294,21 +525,54 @@ void MainAlarmView::RefreshAlarm(void)
         RefreshAlarmStatus(alarmEnable, i);
         dClock[i]->SetTime24Hour(refreshHour, refreshMin, 0);
     }
-    group->ScrollBy(0, ADD_BUTTON_Y - addButton->GetY());
-    if (dClockNum > (i - 1)) {
-        group->Remove(dClock[dClockNum]);
-        delete dClock[dClockNum];
-        dClock[dClockNum] = nullptr;
-
-        group->Remove(statusButton[dClockNum]);
-        delete statusButton[dClockNum];
-        statusButton[dClockNum] = nullptr;
-
-        group->Remove(dLabel[dClockNum]);
-        delete dLabel[dClockNum];
-        dLabel[dClockNum] = nullptr;
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]: dClockNum = %d", __LINE__, dClockNum);
+    // group->ScrollBy(0, ADD_BUTTON_Y - addButton->GetY());
+    if (dClockNum > (i - 1))
+    {
+        if(group)
+        {
+            if(SwipeView_[dClockNum])
+            {   
+                group->Remove(SwipeView_[dClockNum]);
+                SwipeView_[dClockNum]->RemoveAll();
+                // 0
+                if(SwipeViewItem_[dClockNum][0])
+                {
+                    SwipeViewItem_[dClockNum][0]->RemoveAll();
+
+                    delete dClock[dClockNum];
+                    dClock[dClockNum] = nullptr;
+
+                    delete dLabel[dClockNum];
+                    dLabel[dClockNum] = nullptr;
+
+                    delete statusButton[dClockNum];
+                    statusButton[dClockNum] = nullptr;
+
+                    delete SwipeViewItem_[dClockNum][0];
+                    SwipeViewItem_[dClockNum][0] = nullptr;
+                }
+                /* -------------------------------------------------------------------------- */
+                // 1
+                if(SwipeViewItem_[dClockNum][1])
+                {
+                    SwipeViewItem_[dClockNum][1]->RemoveAll();
+
+                    delete DeleteButton_[dClockNum];
+                    DeleteButton_[dClockNum] = nullptr;
+
+                    delete SwipeViewItem_[dClockNum][1];
+                    SwipeViewItem_[dClockNum][1] = nullptr;
+                }
+                delete SwipeView_[dClockNum];
+                SwipeView_[dClockNum] = nullptr;
+            }
+        }
     }
     dClockNum = i - 1;
+
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]: dClockNum=%d", __LINE__, dClockNum);
+    AlarmAddButtonUpdate(i);
 }
 
 bool MainAlarmView::ChangeMainAlarm(int16_t thisView)
@@ -373,7 +637,7 @@ bool MainAlarmView::ChangeSetWeek(int16_t thisView)
 bool MainAlarmView::ChangeJudge(int16_t thisView)
 {
     if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView::AlarmSetWeekView");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView::ChangeJudge");
         judgeView = new AlarmJudgeView();
         if (judgeView == nullptr) {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new container[%d] fail", thisView);
@@ -412,7 +676,7 @@ bool MainAlarmView::ChangeMaxClock(int16_t thisView)
         container[thisView] = maxClockView->InitAlarmMax();
         AddViewToRootContainer(container[thisView]);
     }
-    AlarmMaxClock::GetInstance()->AlarmMaxDelayExit();
+    // AlarmMaxClock::GetInstance()->AlarmMaxDelayExit();//暂时屏蔽自动销毁界面
     return true;
 }
 
@@ -446,11 +710,10 @@ void MainAlarmView::DropView(UIView& view)
     } else if (&view == container[CHANGE_INTERFACE_MAXCLOCK]) {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView::DropView::container[CHANGE_INTERFACE_MAXCLOCK]");
         ChangeView(CHANGE_INTERFACE_MAXCLOCK, MAIN_INTERFACE);
-        CancelScanHandle();
+        // CancelScanHandle();暂时屏蔽自动销毁界面
     } else if (&view == container[MAIN_INTERFACE]) {
-        uint16_t preSlice = AlarmClockModel::GetInstance()->JudgePreSlice();
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView::DropView::container[MAIN_INTERFACE]");
-        NativeAbility::GetInstance().ChangeSlice(preSlice);
+        NativeAbility::GetInstance().Back();
     }
 }
 
index 5ce9f86..6d91ca9 100644 (file)
@@ -20,7 +20,7 @@
 #include "samgr_lite.h"
 
 #include "RtcService.h"
-#include "AlarmClockTimerConfig.h"
+#include "alarmclocktimerconfig/include/AlarmClockTimerConfig.h"
 #include "AlarmClockManage.h"
 
 #ifdef __cplusplus
@@ -28,8 +28,8 @@ extern "C" {
 #endif
 
 static constexpr uint32 DATETIME_PARA_NUM = 6;
-static constexpr const char *ALARM_CLOCK_MANAGE_DATA_PATH =  (char *)"/user/data/alarmclock/alarmClockManage.bin";
-static constexpr const char *ALARM_CLOCK_MANAGE_DIRECTORY =  (char *)"/user/data/alarmclock";
+static constexpr const char *ALARM_CLOCK_MANAGE_DATA_PATH =  (char *)"/user/userdata/alarmclock/alarmClockManage.bin";
+static constexpr const char *ALARM_CLOCK_MANAGE_DIRECTORY =  (char *)"/user/userdata/alarmclock";
 
 static int32 SaveManagementToFile(void);
 static int32 LoadManagementFromFile(void);
@@ -334,7 +334,7 @@ static int32 DeleteAndUpdataListAlarmToday(uint8 id)
 
     if (node == g_alarmTodayList.end() || id > EVENT_ALARM_CLOCK_MAX) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DeleteAndUpdataListAlarmToday id is invalid, id = %u!!", id);
-        return STATUS_ALARM_ID_INVALID;
+        // return STATUS_ALARM_ID_INVALID;
     }
 
     (void)SetFirstAlarmToday(TYPE_CUR_NODE_NO_SKIP);
@@ -377,6 +377,8 @@ static int32 SetFirstAlarmToday(FirstAlarmTodaySetType type)
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetFirstAlarmToday AlarmGetCurrentTimeInfo failed!!");
         return STATUS_TIME_FUN_ERROR;
     }
+    
+    SetAlarm(ALARM_A, 0,255, 255);
 
     for (node = g_alarmTodayList.begin(); node != g_alarmTodayList.end();) {
         tempNode = node;
@@ -772,6 +774,7 @@ void UpdataListAndFirstAlarmToday(void)
     (void)CreateListAlarmToday();
     (void)SortListAlarmToday();
     (void)SetFirstAlarmToday(TYPE_CUR_NODE_NO_SKIP);
+    (void)SetZeroAlarm();
     return;
 }
 
index 4c9e4cd..a4e1c38 100644 (file)
@@ -40,6 +40,7 @@ typedef struct {
     uint8_t week;\r
     uint8_t hour;\r
     uint8_t minute;\r
+    uint8_t second;\r
     uint8_t reserved;\r
 } AlarmInfo;\r
 \r
@@ -56,6 +57,21 @@ int32_t AlarmTimerInit(void);
 int32_t SetZeroAlarm(void);\r
 int32_t SetAlarm(AlarmType type, uint8_t week, uint8_t hour, uint8_t minute);\r
 int32_t AlarmGetCurrentTimeInfo(struct tm *timeInfo);\r
+void set_sleep_and_wake_time(void);\r
+void set_sedentary_data(void);\r
+void get_sleep_time_notify(void);\r
+void clean_sleep_monitoring_flag(void);\r
+void clean_sedentary_flag(void);\r
+void set_drinkreminder_data(void);\r
+\r
+bool HandleIsBind(void);\r
+bool HandleCanShowDialog(void);\r
+void HandleSleepReminder(const struct tm* curTime);\r
+void HandleWakeUp(const struct tm* curTime);\r
+void HandleDrinkReminder(const struct tm* curTime);\r
+void HandleHeartRateDetection(const struct tm *curTime);\r
+void HandleAlarmOnTime(const struct tm *curTime);\r
+void HandleMusicUpdate(void);\r
 \r
 #ifdef __cplusplus\r
 }\r
index 135ebd7..8a13ed5 100644 (file)
 \r
 #include "AlarmClockTimerConfig.h"\r
 \r
-#ifdef __cplusplus\r
-extern "C" {\r
+#include "ConfigModelC.h"\r
+#include "ConfigModel.h"\r
+#include "heartrate/include/HeartModel.h"\r
+#include "sleep/include/SleepModel.h"\r
+#include "sleepmode/include/SleepModeModel.h"\r
+// #include "safemodemanager/include/SafeModeManagerModel.h"\r
+#include "cat1_server_hal.h"\r
+#include "custom_runtime.h"\r
+#include "uiservice/include/ui_service.h"\r
+#include "power_display_service.h"\r
+#include <NativeAbility.h>\r
+#include "AppViewIDs.h"\r
+#include "player/include/PlayersView.h"\r
+#include "record/include/RecordingPlayerView.h"\r
+#include "custom_utils.h"\r
+#include "alarm/include/AlarmClockModel.h"\r
+#ifdef CYWEE_SPORT\r
+#include "cywee_service.h"\r
 #endif\r
 \r
-static AlarmCtrl g_alarmCtrA;\r
-static AlarmCtrl g_alarmCtrB;\r
-namespace OHOS {\r
-GraphicTimer* g_AlarmHandle = nullptr;\r
-}\r
+#ifdef PPG_HX3695\r
+#include "ppg_service.h"\r
+#endif\r
 \r
-void AlarmTimerEventPublish(uint16 topic, AlarmClockEventData data)\r
+#ifdef __cplusplus\r
+extern "C"\r
 {\r
-    int32 ret;\r
-    uint32 size = sizeof(AlarmClockEventData);\r
-    BroadcastApi *broadcastApi = nullptr;\r
-    IUnknown *api = nullptr;\r
+#endif\r
 \r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish topic=%u!!", topic);\r
+    static AlarmCtrl g_alarmCtrA;\r
+    static AlarmCtrl g_alarmCtrB;\r
+    static osTimerId_t g_AlarmHandle = nullptr;\r
 \r
-    void *publishData = malloc(size);\r
-    if (publishData == nullptr) {\r
-        return;\r
+#define SLEPPNOTIFY 20\r
+\r
+    static int sleep_time = 0;\r
+    static int wake_up_time = 0;\r
+    static int sleep_notify_time = 0;\r
+    static int sleep_time_hour = 0;\r
+    static int sleep_time_min = 0;\r
+    static int wake_time_hour = 0;\r
+    static int wake_time_min = 0;\r
+    static int sedentary_switch = 0;\r
+    static int sedentary_interval = 1;\r
+    static int sedentary_time = 0;\r
+    static int sedentary_start_hour = 0;\r
+    static int sedentary_start_min = 0;\r
+    static int sedentary_stop_hour = 0;\r
+    static int sedentary_stop_min = 0;\r
+    static int drinkreminder_switch = 0;     /*喝水提醒开关:0 关闭 1开始 2间隔提醒*/\r
+    static int drinkreminder_start_time = 0; /*喝水提醒开始时间*/\r
+    static int drinkreminder_start_hour = 0; /*喝水提醒开始小时*/\r
+    static int drinkreminder_start_min = 0;  /*喝水提醒开始分钟*/\r
+    static int drinkreminder_end_time = 0;   /*喝水提醒结束时间*/\r
+    static int drinkreminder_end_hour = 0;   /*喝水提醒结束小时*/\r
+    static int drinkreminder_end_min = 0;    /*喝水提醒结束分钟*/\r
+    static int drinkreminder_freq = 0;       /*喝水提醒频率*/\r
+    static int drinkreminder_goal = 0;       /*喝水提醒目标ml*/\r
+    static int drinkremind_expectedTime = 0;\r
+    static int sleep_notify_time_min = 0;\r
+    static int sleep_notify_time_hour = 0;\r
+    static int time_sync_flag = 0;\r
+\r
+    // #define SEDENTARY_TIME_RANGE (((curTime.tm_hour > sedentary_start_hour) || (curTime.tm_hour == sedentary_start_hour && curTime.tm_min >= sedentary_start_min)) && \\r
+//                               ((curTime.tm_hour < sedentary_stop_hour) || (curTime.tm_hour == sedentary_stop_hour && curTime.tm_min < sedentary_stop_min)))\r
+\r
+    // #define WAKE_TIME_RANGE (((wake_time_hour < sleep_time_hour) &&                                              \\r
+//                           ((curTime.tm_hour > wake_time_hour) ||                                             \\r
+//                            (curTime.tm_hour == wake_time_hour && curTime.tm_min >= wake_time_min)) &&        \\r
+//                           ((curTime.tm_hour < sleep_time_hour) ||                                            \\r
+//                            (curTime.tm_hour == sleep_time_hour && curTime.tm_min < sleep_time_min))) ||      \\r
+//                          ((wake_time_hour >= sleep_time_hour) &&                                             \\r
+//                               (((curTime.tm_hour > wake_time_hour) ||                                        \\r
+//                                 (curTime.tm_hour == wake_time_hour && curTime.tm_min >= wake_time_min)) ||   \\r
+//                                ((curTime.tm_hour < sleep_time_hour) ||                                       \\r
+//                                 (curTime.tm_hour == sleep_time_hour && curTime.tm_min < sleep_time_min))) || \\r
+//                           ((curTime.tm_hour > wake_time_hour) && (curTime.tm_hour < sleep_time_hour))))\r
+\r
+    // 设置目标睡眠时间\r
+    void set_sleep_and_wake_time(void)\r
+    {\r
+        sleep_time = get_sleep_time_from_config_model();\r
+        wake_up_time = get_wake_up_time_from_config_model();\r
+        // 解析开始时间\r
+        sleep_time_hour = (sleep_time & 0xFFFF0000) >> 16;\r
+        sleep_time_min = sleep_time & 0x0000FFFF;\r
+        wake_time_hour = (wake_up_time & 0xFFFF0000) >> 16;\r
+        wake_time_min = wake_up_time & 0x0000FFFF;\r
+        clean_sleep_monitoring_flag();\r
+        // 解析结束时间\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "sleep_time_hour:%d sleep_time_min:%d wake_time_hour:%d wake_time_min:%d", sleep_time_hour, sleep_time_min, wake_time_hour, wake_time_min);\r
     }\r
-    ret = memcpy_s(publishData, size, (const void *)&data, size);\r
-    if (ret != EOK) {\r
-        free(publishData);\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish memcpy_s fail! ret = %d", ret);\r
-        return;\r
+\r
+    void set_sedentary_data(void)\r
+    {\r
+        sedentary_switch = get_sedentary_switch_from_config_model();\r
+        sedentary_time = get_sedentary_time_from_config_model();\r
+        sedentary_interval = get_sedentary_interval_from_config_model();\r
+        #ifdef CYWEE_SPORT\r
+        do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SET_SEDENTARY_INTERVAL, &sedentary_interval); // 设置久坐提醒间隔\r
+        #endif\r
+\r
+        // sedentary_start_hour = (sedentary_time & 0XFF000000) >> 24;\r
+        // sedentary_start_min = (sedentary_time & 0X00FF0000) >> 16;\r
+        // sedentary_stop_hour = (sedentary_time & 0X0000FF00) >> 8;\r
+        // sedentary_stop_min = sedentary_time & 0X000000FF;\r
+        sedentary_stop_min = (sedentary_time & 0XFF000000) >> 24;\r
+        sedentary_stop_hour = (sedentary_time & 0X00FF0000) >> 16;\r
+        sedentary_start_min = (sedentary_time & 0X0000FF00) >> 8;\r
+        sedentary_start_hour = sedentary_time & 0X000000FF;\r
+        clean_sedentary_flag();\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "set_sedentary_data:%d:%d~%d:%d", sedentary_start_hour, sedentary_start_min, sedentary_stop_hour, sedentary_stop_min);\r
     }\r
 \r
-    Request request = {\r
-        .msgId = topic,\r
-        .len = size,\r
-        .msgValue = 0,\r
-        .data = publishData,\r
-    };\r
+    void set_drinkreminder_data(void)\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "set_drinkreminder_data");\r
+        drinkreminder_switch = OHOS::ConfigModel::GetInstance()->GetDrinkSwitch();\r
+        drinkreminder_freq = OHOS::ConfigModel::GetInstance()->GetDrinkFreq();\r
+        drinkreminder_goal = OHOS::ConfigModel::GetInstance()->GetDrinkGoal();\r
 \r
-    /* public request */\r
-    api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME);\r
-    if (api == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetFeatureApi failed");\r
-        free(publishData);\r
-        return;\r
+        // 获取提醒时间段\r
+        drinkreminder_start_time = OHOS::ConfigModel::GetInstance()->GetDrinkStart(); // 获取喝水提醒开始时间,int类型 前16位小时,后16位分钟\r
+        drinkreminder_end_time = OHOS::ConfigModel::GetInstance()->GetDrinkEnd();     // 获取喝水提醒结束时间, int类型 前16位小时,后16位分钟\r
+\r
+        // 解析开始时间\r
+        drinkreminder_start_hour = (drinkreminder_start_time & 0XFFFF0000) >> 16; // 前16位是小时\r
+        drinkreminder_start_min = drinkreminder_start_time & 0X0000FFFF;          // 后16位是分钟\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "%d:%d", drinkreminder_start_hour, drinkreminder_start_min);\r
+\r
+        // 解析结束时间\r
+        drinkreminder_end_hour = (drinkreminder_end_time & 0XFFFF0000) >> 16; // 前16位是小时\r
+        drinkreminder_end_min = drinkreminder_end_time & 0x0000FFFF;          // 后16位是分钟\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "%d:%d", drinkreminder_end_hour, drinkreminder_end_min);\r
+\r
+        if (drinkreminder_switch == 2)\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "%d:%d~%d:%d", drinkreminder_start_hour, drinkreminder_start_min, drinkreminder_end_hour, drinkreminder_end_min);\r
+        }\r
     }\r
-    ret = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);\r
-    if (ret != 0 || broadcastApi == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "QueryInterface failed");\r
-        free(publishData);\r
+\r
+    static bool is_time_range(const struct tm &curTime, int start_time_hour, int start_time_min, int end_time_hour, int end_time_min)\r
+    {\r
+        int start_min = start_time_hour * 60 + start_time_min;    /* 开始时间的分钟数 */\r
+        int end_min = end_time_hour * 60 + end_time_min;          /* 结束时间的分钟数 */\r
+        int cur_time_min = curTime.tm_hour * 60 + curTime.tm_min; /* 当前时间的分钟数 */\r
+\r
+        // 处理非跨天的情况\r
+        if (end_min > start_min)\r
+        {\r
+            if (cur_time_min >= start_min && cur_time_min < end_min)\r
+            {\r
+                return true;\r
+            }\r
+        }\r
+        else // 处理跨天的情况\r
+        {\r
+            if (cur_time_min >= start_min || cur_time_min < end_min)\r
+            {\r
+                return true;\r
+            }\r
+        }\r
+        return false;\r
+    }\r
+\r
+    void clean_sleep_monitoring_flag(void)\r
+    {\r
+        uapi_dev_runtime_set_sleep_monitoring_status(0);\r
+        uapi_dev_runtime_set_nap_monitoring_status(0);\r
+    }\r
+\r
+    void clean_sedentary_flag(void)\r
+    {\r
+        uapi_dev_runtime_set_sedentary_status(0);\r
+    }\r
+\r
+    // 设置睡眠提醒时间\r
+    void get_sleep_time_notify(void)\r
+    {\r
+        int goal_hour = (sleep_time & 0XFFFF0000) >> 16;\r
+        int goal_min = (sleep_time & 0X0000FFFF);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "goal_hour:%d goal_min:%d", goal_hour, goal_min);\r
+\r
+        sleep_notify_time_min = (goal_min >= SLEPPNOTIFY) ? goal_min - SLEPPNOTIFY : ((goal_min + 60) - SLEPPNOTIFY); // 避免分钟数为负\r
+        sleep_notify_time_hour = goal_hour;\r
+        if (goal_min < SLEPPNOTIFY)\r
+        {                                // 如果需要借位\r
+            sleep_notify_time_hour -= 1; // 小时减1\r
+        }\r
+        // 确保小时数正确\r
+        sleep_notify_time_hour = (sleep_notify_time_hour < 0) ? 23 : sleep_notify_time_hour; // 处理从0点前20分钟的情况,变为前一天的23点40分\r
+\r
+        sleep_notify_time = (sleep_notify_time_hour << 16) | sleep_notify_time_min;\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "sleep_notify_time_hour:%d sleep_notify_time_min:%d sleep_notify_time:%d", sleep_notify_time_hour, sleep_notify_time_min, sleep_notify_time);\r
+    }\r
+    void AlarmEventPublish(uint16_t topic, uint8_t *data, uint32_t size)\r
+    {\r
+        int32 ret;\r
+\r
+        BroadcastApi *broadcastApi = NULL;\r
+        IUnknown *api = NULL;\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChargerEventPublish topic=%u!!", topic);\r
+\r
+        void *publishData = nullptr;\r
+        if (size > 0)\r
+        {\r
+            publishData = malloc(size);\r
+            if (publishData == nullptr)\r
+            {\r
+                return;\r
+            }\r
+            ret = memcpy_s(publishData, size, (const void *)data, size);\r
+            if (ret != EOK)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ChargerEventPublish memcpy_s rateDataTmp fail! ret = %d", ret);\r
+                free(publishData);\r
+                return;\r
+            }\r
+        }\r
+\r
+        Request request = {.msgId = topic, .len = size, .msgValue = 0, .data = publishData};\r
+\r
+        /* public request */\r
+        api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME);\r
+        if (api == NULL)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetFeatureApi failed");\r
+            free(publishData);\r
+            return;\r
+        }\r
+        ret = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);\r
+        if (ret != 0 || broadcastApi == NULL)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "QueryInterface failed");\r
+            free(publishData);\r
+            return;\r
+        }\r
+        broadcastApi->PublishTopic((IUnknown *)broadcastApi, &request);\r
+        broadcastApi->Release((IUnknown *)broadcastApi);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChargerEventPublish end!!");\r
+\r
         return;\r
     }\r
-    broadcastApi->PublishTopic((IUnknown *)broadcastApi, &request);\r
-    broadcastApi->Release((IUnknown *)broadcastApi);\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish end!!");\r
+    void AlarmTimerEventPublish(uint16 topic, AlarmClockEventData data)\r
+    {\r
+        int32 ret;\r
+        uint32 size = sizeof(AlarmClockEventData);\r
+        BroadcastApi *broadcastApi = nullptr;\r
+        IUnknown *api = nullptr;\r
 \r
-    return;\r
-}\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish topic=%u!!", topic);\r
 \r
-static void AlarmCallBackProcA(void)\r
-{\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmCallBackProcA");\r
-    AlarmClockEventData unuse;\r
-    AlarmTimerEventPublish(TOPIC_EVENT_ALARM_RING, unuse);\r
-}\r
+        void *publishData = malloc(size);\r
+        if (publishData == nullptr)\r
+        {\r
+            return;\r
+        }\r
+        ret = memcpy_s(publishData, size, (const void *)&data, size);\r
+        if (ret != EOK)\r
+        {\r
+            free(publishData);\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish memcpy_s fail! ret = %d", ret);\r
+            return;\r
+        }\r
 \r
-static void AlarmCallBackProcB(void)\r
-{\r
-    AlarmClockEventData unuse;\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmCallBackProcB");\r
-    AlarmTimerEventPublish(TOPIC_EVENT_NEXTDAY_UPDATE, unuse);\r
-    SetZeroAlarm();\r
-}\r
+        Request request = {\r
+            .msgId = topic,\r
+            .len = size,\r
+            .msgValue = 0,\r
+            .data = publishData,\r
+        };\r
+\r
+        /* public request */\r
+        api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME);\r
+        if (api == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetFeatureApi failed");\r
+            free(publishData);\r
+            return;\r
+        }\r
+        ret = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);\r
+        if (ret != 0 || broadcastApi == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "QueryInterface failed");\r
+            free(publishData);\r
+            return;\r
+        }\r
+        broadcastApi->PublishTopic((IUnknown *)broadcastApi, &request);\r
+        broadcastApi->Release((IUnknown *)broadcastApi);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish end!!");\r
 \r
-void AlarmScan(void *arg)\r
-{\r
-    struct tm curTime;\r
-    int32_t ret = AlarmGetCurrentTimeInfo(&curTime);\r
-    if (ret != ERRCODE_SUCC) {\r
         return;\r
     }\r
+    /*闹钟*/\r
+    static void AlarmCallBackProcA(void)\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmCallBackProcA");\r
+        AlarmClockEventData unuse;\r
+        AlarmTimerEventPublish(TOPIC_EVENT_ALARM_RING, unuse);\r
+    }\r
+\r
+    /*NextDay*/\r
+    static void AlarmCallBackProcB(void)\r
+    {\r
+        AlarmClockEventData unuse;\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmCallBackProcB");\r
+#if 0\r
+    // 记录当前时间\r
+    time_t now = time(nullptr);\r
+    struct tm *localTime = localtime(&now);\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Current time - Hour: %d, Minute: %d", localTime->tm_hour, localTime->tm_min);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Posting next day update event");\r
+\r
+#endif\r
+\r
+        GraphicService::GetInstance()->PostGraphicEvent(std::bind(AlarmTimerEventPublish, TOPIC_EVENT_NEXTDAY_UPDATE, unuse));\r
+\r
+        // AlarmTimerEventPublish(TOPIC_EVENT_NEXTDAY_UPDATE, unuse);\r
+\r
+        // 重置nextday闹钟\r
+        SetZeroAlarm();\r
+    }\r
+\r
+    static void on_time_CallBackProc(void)\r
+    {\r
+        AlarmClockEventData unuse;\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "on_time_CallBackProc invoked");\r
+        AlarmTimerEventPublish(TOPIC_EVENT_ON_TIME, unuse);\r
+        // GraphicService::GetInstance()->PostGraphicEvent(\r
+        // std::bind(AlarmTimerEventPublish, TOPIC_EVENT_ON_TIME, unuse));\r
+\r
+        // AlarmTimerEventPublish(TOPIC_EVENT_ON_TIME, unuse);\r
+    }\r
+\r
+    void AlarmScan(void *arg)\r
+    {\r
+        struct tm curTime;\r
+        int32_t ret = AlarmGetCurrentTimeInfo(&curTime);\r
+        if (ret != ERRCODE_SUCC)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get current time info, error code: %d", ret);\r
+            return;\r
+        }\r
+\r
+        if (curTime.tm_sec % 3 == 0)\r
+        {\r
+            do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_BLE_ADV_CHECK, nullptr, 0); // 3秒钟检查一次广播\r
+        }\r
+\r
+        if (curTime.tm_sec % 60 == 0)\r
+        {\r
+            #ifdef CYWEE_SPORT\r
+            do_cywee_service_check_msg(CYWEE_SERVICE_CMD_CHECK_ACC, NULL); // 一分钟检查一次gsensor是否停止\r
+            #endif\r
+        }\r
+\r
+        if (curTime.tm_min % 60 == 0 && curTime.tm_sec == 0)\r
+        {\r
+            do_custom_fileoperate_service_check_msg(CUSTOM_FILEOPERATE_MSG_TYPE_BATTERY_DATA_SAVE, nullptr, 0); // 十分钟存一次电池信息\r
+        }\r
+\r
+        if (g_alarmCtrA.state == ALARM_STATUS_RUNNING)\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Checking Alarm A");\r
+            if ((g_alarmCtrA.callback != nullptr) &&\r
+                (g_alarmCtrA.info.hour == curTime.tm_hour) &&\r
+                (g_alarmCtrA.info.minute == curTime.tm_min))\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Alarm A triggered");\r
+                OHOS::AlarmClockModel::GetInstance()->SetPopTimeData(g_alarmCtrA.info.hour, g_alarmCtrA.info.minute);\r
+                g_alarmCtrA.state = ALARM_STATUS_CREATED;\r
+                g_alarmCtrA.callback();\r
+            }\r
+        }\r
+\r
+        if (g_alarmCtrB.state == ALARM_STATUS_RUNNING)\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Checking Alarm B");\r
+            if ((g_alarmCtrB.callback != NULL) &&\r
+                // (g_alarmCtrB.info.week == curTime.tm_wday) &&\r
+                (g_alarmCtrB.info.hour == curTime.tm_hour) &&\r
+                (g_alarmCtrB.info.minute == curTime.tm_min) &&\r
+                (g_alarmCtrB.info.second == curTime.tm_sec))\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Alarm B triggered");\r
+                g_alarmCtrB.state = ALARM_STATUS_CREATED;\r
+                g_alarmCtrB.callback();\r
+            }\r
+        }\r
+\r
+        // 业务逻辑回调\r
+        do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TIMECALL_BACK, nullptr, 0);\r
+    }\r
 \r
-    if (g_alarmCtrA.state == ALARM_STATUS_RUNNING) {\r
-        if ((g_alarmCtrA.callback != nullptr) &&\r
-            (g_alarmCtrA.info.hour == curTime.tm_hour) &&\r
-            (g_alarmCtrA.info.minute == curTime.tm_min)) {\r
-            g_alarmCtrA.callback();\r
-            g_alarmCtrA.state = ALARM_STATUS_CREATED;\r
+    // 每秒回调\r
+    void custom_timer_callback()\r
+    {\r
+        struct tm curTime;\r
+        int32_t ret = AlarmGetCurrentTimeInfo(&curTime);\r
+        if (ret != ERRCODE_SUCC)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get current time info, error code: %d", ret);\r
+            return;\r
         }\r
+\r
+        // 绑定判断\r
+        if (HandleIsBind())\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandleAlarmOnTime: not binded");\r
+            return;\r
+        }\r
+\r
+        HandleAlarmOnTime(&curTime);\r
+        HandleSleepReminder(&curTime);\r
+        HandleMusicUpdate();\r
+\r
+        // 以下弹窗被控制\r
+        if (HandleCanShowDialog())\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandleAlarmOnTime: not show dialog");\r
+            return;\r
+        }\r
+\r
+        HandleDrinkReminder(&curTime);\r
+        HandleHeartRateDetection(&curTime);\r
     }\r
 \r
-    if (g_alarmCtrB.state == ALARM_STATUS_RUNNING) {\r
-        if ((g_alarmCtrB.callback != nullptr) &&\r
-            (g_alarmCtrB.info.week == curTime.tm_wday) &&\r
-            (g_alarmCtrB.info.hour == curTime.tm_hour) &&\r
-            (g_alarmCtrB.info.minute == curTime.tm_min)) {\r
-            g_alarmCtrB.callback();\r
-            g_alarmCtrB.state = ALARM_STATUS_CREATED;\r
+    // 判断是否绑定\r
+    bool HandleIsBind(void)\r
+    {\r
+        // 未绑定状态下,以下操作不进行\r
+        if (OHOS::ConfigModel::GetInstance()->get_configData_bool(\r
+                OHOS::ConfigModel::CONFIGMODEL_ITEM_FIRSTTIMESTART))\r
+        {\r
+            return true;\r
         }\r
+        return false;\r
     }\r
-}\r
 \r
-static int32_t AlarmCreate(AlarmCtrl *alarmCtrl, AlarmCallBack callback)\r
-{\r
-    if (alarmCtrl == nullptr) {\r
-        return ERRCODE_FAIL;\r
+    // 判断是否可以弹窗\r
+    bool HandleCanShowDialog(void)\r
+    {\r
+        bool state = false;\r
+\r
+        if (uapi_dev_runtime_get_saveele_status())\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "saveele!");\r
+            state = true;\r
+        }\r
+\r
+        if (uapi_dev_runtime_get_train_status())\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "training!");\r
+            state = true;\r
+        }\r
+\r
+        return state;\r
     }\r
-    if (alarmCtrl->state == ALARM_STATUS_UNUSED) {\r
-        alarmCtrl->state = ALARM_STATUS_CREATED;\r
-        alarmCtrl->callback = callback;\r
+\r
+    // 整点回调\r
+    void HandleAlarmOnTime(const struct tm *curTime)\r
+    {\r
+        if (curTime->tm_min == 0 && curTime->tm_sec == 0)\r
+        {\r
+            AlarmClockEventData unuse;\r
+            time_t timetemp = mktime((struct tm *)curTime);\r
+            unuse.value = timetemp - 60 * 60;\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "on_time_CallBackProc invoked");\r
+            GraphicService::GetInstance()->PostGraphicEvent(\r
+                std::bind(AlarmTimerEventPublish, TOPIC_EVENT_ON_TIME, unuse));\r
+        }\r
     }\r
-    return ERRCODE_SUCC;\r
-}\r
 \r
-int32_t AlarmTimerInit(void)\r
-{\r
-    int32_t ret;\r
+    // 睡眠提醒\r
+    void HandleSleepReminder(const struct tm *curTime)\r
+    {\r
+        // 睡眠总开关\r
+        if (OHOS::ConfigModel::GetInstance()->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP))\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CONFIGMODEL_ITEM_SLEEP is OK");\r
+            // 睡眠提醒[前提开启睡眠提醒]\r
+            if (OHOS::ConfigModel::GetInstance()->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_REMIND))\r
+            {\r
+                // 提醒一次\r
+                if ((curTime->tm_hour == sleep_notify_time_hour) && (curTime->tm_min == sleep_notify_time_min) && (curTime->tm_sec == 0))\r
+                {\r
+                    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "It's bedtime in 20 minutes");\r
+                    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "20分钟后要睡觉啦!");\r
+                    // 设置状态为睡眠提醒\r
+                    OHOS::SleepModel::GetInstance().set_sleep_state(OHOS::SLEEPSTATE::SLEEPNOTIFY);\r
+                    AlarmEventPublish(TOPIC_EVENT_SLEEPNOTE, NULL, 0);\r
+                }\r
+            }\r
+            if ((curTime->tm_hour == wake_time_hour && curTime->tm_min == wake_time_min && curTime->tm_sec == 0) ||\r
+                (curTime->tm_hour == sleep_time_hour && curTime->tm_min == sleep_time_min && curTime->tm_sec == 0) && curTime->tm_min)\r
+            {\r
+                uapi_cywee_time_sync();\r
+            }\r
+            else if (!time_sync_flag && curTime->tm_min)\r
+            {\r
+                time_sync_flag = 1;\r
+                uapi_cywee_time_sync();\r
+            }\r
+            // 退出睡眠检测模式并进入小睡检测模式\r
+            if (!is_time_range(*curTime, sleep_time_hour, sleep_time_min, wake_time_hour, wake_time_min) && (uapi_dev_runtime_get_nap_monitoring_status() == 0))\r
+            {\r
+                if (curTime->tm_hour == wake_time_hour && curTime->tm_min == wake_time_min && curTime->tm_sec == 0)\r
+                {\r
+                    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "闹铃!");\r
+                    // 退出睡眠模式\r
+                    OHOS::SleepModeModel::GetInstance().SetSleepModeDisabled();\r
+                    OHOS::SleepModel::GetInstance().set_sleep_state(OHOS::SLEEPSTATE::WAKE);\r
+                }\r
 \r
-    g_alarmCtrA.state = ALARM_STATUS_UNUSED;\r
-    g_alarmCtrB.state = ALARM_STATUS_UNUSED;\r
-    OHOS::g_AlarmHandle = new OHOS::GraphicTimer(ALARM_INTERVAL_MS, AlarmScan, nullptr, true);\r
-    bool timerStatus = OHOS::g_AlarmHandle->Start();\r
-    if (!timerStatus) {\r
-        return ERRCODE_FAIL;\r
+                // 判断是否还在睡眠\r
+                if (uapi_dev_runtime_get_sleep_status() == 0)\r
+                {\r
+                    // 设置状态为小睡\r
+                    uapi_dev_runtime_set_nap_status(0);                                     // 清零小睡状态\r
+                    uapi_dev_runtime_set_absolute_static_status(0);                         // 清零绝对静止状态\r
+                    #ifdef PPG_HX3695\r
+                    set_keep_in_wear_det_mode(1);                                           // 开启小睡佩戴监测\r
+                    #endif\r
+                    #ifdef CYWEE_SPORT\r
+                    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NAP_SEDENTARY_MODE, NULL); // 算法底层切换小睡监测模式\r
+                    #endif\r
+                    time_sync_flag = 0;\r
+                }\r
+            }\r
+            // 进入睡眠检测模式并退出小睡检测模式\r
+            else if (is_time_range(*curTime, sleep_time_hour, sleep_time_min, wake_time_hour, wake_time_min) && (uapi_dev_runtime_get_sleep_monitoring_status() == 0))\r
+            {\r
+                int cmd = 1;\r
+                uapi_dev_runtime_set_sleep_status(0);           // 清零睡眠状态\r
+                uapi_dev_runtime_set_absolute_static_status(0); // 清零绝对静止状态\r
+                // OHOS::clean_sleep_data();                       // 清零睡眠文件存储数据\r
+                // if(uapi_dev_runtime_get_nap_monitoring_status() == 1)\r
+                // uapi_clean_sleep_flag();                        // 清除睡眠标志文件\r
+                // OHOS::create_sleep_folder();                     // 创建睡眠文件夹\r
+                #ifdef PPG_HX3695\r
+                set_keep_in_wear_det_mode(0);\r
+                #endif\r
+                #ifdef CYWEE_SPORT\r
+                do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA, &cmd); // 强制获取小睡数据,结束小睡\r
+                #endif\r
+\r
+                // 睡眠弹窗\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "要睡觉啦!");\r
+                // 设置状态为睡眠\r
+                OHOS::SleepModel::GetInstance().clean_sleep_data(); // 清除历史数据\r
+                OHOS::SleepModel::GetInstance().set_sleep_state(OHOS::SLEEPSTATE::SLEPP);\r
+\r
+                if (curTime->tm_hour == sleep_time_hour && curTime->tm_min == sleep_time_min && curTime->tm_sec == 0)\r
+                {\r
+                    // 进入睡眠模式\r
+                    OHOS::SleepModeModel::GetInstance().SetSleepModeEnabled();\r
+                    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "要睡觉啦!!!! 开始");\r
+                    AlarmEventPublish(TOPIC_EVENT_SLEEPNOTE, NULL, 0);\r
+                    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "要睡觉啦!!!! 结束");\r
+                }\r
+\r
+                #ifdef CYWEE_SPORT\r
+                do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SLEEPING_MODE, NULL); // 算法底层切换睡眠监测模式\r
+                #endif\r
+                time_sync_flag = 0;\r
+            }\r
+        }\r
     }\r
-    ret = AlarmCreate(&g_alarmCtrA, AlarmCallBackProcA);\r
-    if (ret != ERRCODE_SUCC) {\r
-        return ERRCODE_FAIL;\r
+\r
+    // 喝水提醒\r
+    void HandleDrinkReminder(const struct tm *curTime)\r
+    {\r
+        if (drinkreminder_switch == 1)\r
+        { // 定时提醒\r
+            if (curTime->tm_hour == drinkreminder_start_hour &&\r
+                curTime->tm_min == drinkreminder_start_min &&\r
+                curTime->tm_sec == 0)\r
+            {\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "该喝水了!!该喝水了!!");\r
+                AlarmEventPublish(TOPIC_EVENT_DRINKREMINDER, NULL, 0);\r
+            }\r
+        }\r
+        else if (drinkreminder_switch == 2)\r
+        { // 间隔提醒\r
+            // 判断当前时间是否在提醒时间段内\r
+            if (is_time_range(*curTime, drinkreminder_start_hour, drinkreminder_start_min, drinkreminder_end_hour, drinkreminder_end_min))\r
+            {\r
+                double interval_time = (drinkreminder_freq == 0) ? 0.5 : drinkreminder_freq;\r
+                int interval_time_seconds = (int)(interval_time * 60) * 60;\r
+                int current_seconds = (curTime->tm_hour * 60 + curTime->tm_min) * 60;\r
+                int hour_24_seconds = 24 * 60 * 60;\r
+                // 进行间隔判断和提醒\r
+                if (uapi_dev_runtime_get_drinkremind_status() == 0)\r
+                {\r
+                    uapi_dev_runtime_set_drinkremind_status(1);\r
+                    drinkremind_expectedTime = current_seconds + interval_time_seconds;\r
+                    drinkremind_expectedTime %= hour_24_seconds; // 同时处理24小时循环\r
+                }\r
+                else if (current_seconds == drinkremind_expectedTime && curTime->tm_sec == 0)\r
+                {\r
+                    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "该喝水了!!该喝水了!!");\r
+                    drinkremind_expectedTime += interval_time_seconds;\r
+                    drinkremind_expectedTime %= hour_24_seconds; // 处理24小时循环\r
+                    AlarmEventPublish(TOPIC_EVENT_DRINKREMINDER, NULL, 0);\r
+                }\r
+            }\r
+            else if (!is_time_range(*curTime, drinkreminder_start_hour, drinkreminder_start_min, drinkreminder_end_hour, drinkreminder_end_min) && uapi_dev_runtime_get_drinkremind_status() == 1)\r
+            {\r
+                uapi_dev_runtime_set_drinkremind_status(0);\r
+            }\r
+        }\r
     }\r
-    ret = AlarmCreate(&g_alarmCtrB, AlarmCallBackProcB);\r
-    if (ret != ERRCODE_SUCC) {\r
-        return ERRCODE_FAIL;\r
+\r
+    // 心率周期检测\r
+    void HandleHeartRateDetection(const struct tm *curTime)\r
+    {\r
+        int heartRateDetectionInterval = 0;\r
+\r
+        if (uapi_dev_runtime_get_sleep_monitoring_status())\r
+            heartRateDetectionInterval = 20; // 晚上 20分钟检测一次\r
+        else\r
+            heartRateDetectionInterval = OHOS::ConfigModel::GetInstance()->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_DETECTED);\r
+\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Heart rate detection cycle detection is enabled %d", heartRateDetectionInterval);\r
+        if (heartRateDetectionInterval)\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Heart rate detection cycle detection is enabled %d", curTime->tm_min % heartRateDetectionInterval);\r
+            if (curTime->tm_min % heartRateDetectionInterval == 0 && curTime->tm_sec == 0)\r
+            {\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Automatic heart rate detection starts");\r
+                // 开启心率检测\r
+                OHOS::HeartModel::GetInstance()->Heart_Control(OHOS::HeartState::Start, OHOS::HeartCheck::PASSIVITY);\r
+            }\r
+        }\r
     }\r
-    return ERRCODE_SUCC;\r
-}\r
 \r
-int32_t SetAlarm(AlarmType type, uint8_t week, uint8_t hour, uint8_t minute)\r
-{\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetAlarm %d %d %d %d", type, week, hour, minute);\r
-    if (type == ALARM_A) {\r
-        g_alarmCtrA.state = ALARM_STATUS_RUNNING;\r
-        g_alarmCtrA.info.hour = hour;\r
-        g_alarmCtrA.info.minute = minute;\r
-    } else if (type == ALARM_B) {\r
-        g_alarmCtrB.state = ALARM_STATUS_RUNNING;\r
-        g_alarmCtrB.info.week = week;\r
-        g_alarmCtrB.info.hour = hour;\r
-        g_alarmCtrB.info.minute = minute;\r
-    } else {\r
-        return ERRCODE_FAIL;\r
-    }\r
-    return ERRCODE_SUCC;\r
-}\r
+    // 音乐更新\r
+    void HandleMusicUpdate()\r
+    {\r
+        int16_t curviewid = OHOS::NativeAbility::GetInstance().GetCurSliceId();\r
+        if (curviewid != VIEW_MAIN && OHOS::PlayersView::GetInstance())\r
+        { // 当前不在主界面且音乐界面不为空\r
+            OHOS::UICheckBox::UICheckBoxState state = OHOS::PlayersView::GetInstance()->GetPlayerButtonState();\r
+            if (state == OHOS::UICheckBox::UICheckBoxState::SELECTED)\r
+            {\r
+                SendMsgToUIService(UI_UPDATE_PLAYERPROCESS, 0, nullptr, 0); // 音乐进度条更新\r
+            }\r
+        }\r
+        else if (OHOS::RecordingPlayerView::GetInstance())\r
+        {\r
+            OHOS::UICheckBox::UICheckBoxState state = OHOS::RecordingPlayerView::GetInstance()->GetPlayerButtonState();\r
+            if (state == OHOS::UICheckBox::UICheckBoxState::SELECTED)\r
+            {\r
+                SendMsgToUIService(UI_UPDATE_RECORDPROCESS, 0, nullptr, 0); // 录音进度条更新\r
+            }\r
+        }\r
+    }\r
 \r
-int32_t SetZeroAlarm(void)\r
-{\r
-    struct tm curTime;\r
-    int32_t ret = AlarmGetCurrentTimeInfo(&curTime);\r
-    if (ret != ERRCODE_SUCC) {\r
-        return ERRCODE_FAIL;\r
+    static int32_t AlarmCreate(AlarmCtrl *alarmCtrl, AlarmCallBack callback)\r
+    {\r
+        if (alarmCtrl == nullptr)\r
+        {\r
+            return ERRCODE_FAIL;\r
+        }\r
+        if (alarmCtrl->state == ALARM_STATUS_UNUSED)\r
+        {\r
+            alarmCtrl->state = ALARM_STATUS_CREATED;\r
+            alarmCtrl->callback = callback;\r
+        }\r
+        return ERRCODE_SUCC;\r
     }\r
-    int32_t weekday = (++curTime.tm_wday) % 7;\r
-    return SetAlarm(ALARM_B, weekday, 0, 0);\r
-}\r
 \r
-int32_t AlarmGetCurrentTimeInfo(struct tm *timeInfo)\r
-{\r
-    if (timeInfo == nullptr) {\r
-        return ERRCODE_FAIL;\r
+    int32_t AlarmTimerInit(void)\r
+    {\r
+        int32_t timerStatus;\r
+        int32_t ret;\r
+\r
+        set_sleep_and_wake_time();\r
+        set_sedentary_data();\r
+        set_drinkreminder_data();\r
+        get_sleep_time_notify();\r
+\r
+        g_alarmCtrA.state = ALARM_STATUS_UNUSED;\r
+        g_alarmCtrB.state = ALARM_STATUS_UNUSED;\r
+        g_AlarmHandle = osTimerNew(AlarmScan, osTimerPeriodic, nullptr, nullptr);\r
+        if (g_AlarmHandle == nullptr)\r
+        {\r
+            return ERRCODE_FAIL;\r
+        }\r
+        timerStatus = osTimerStart(g_AlarmHandle, ALARM_INTERVAL_MS);\r
+        if (timerStatus != osOK)\r
+        {\r
+            return ERRCODE_FAIL;\r
+        }\r
+        ret = AlarmCreate(&g_alarmCtrA, AlarmCallBackProcA);\r
+        if (ret != ERRCODE_SUCC)\r
+        {\r
+            return ERRCODE_FAIL;\r
+        }\r
+        ret = AlarmCreate(&g_alarmCtrB, AlarmCallBackProcB);\r
+        if (ret != ERRCODE_SUCC)\r
+        {\r
+            return ERRCODE_FAIL;\r
+        }\r
+\r
+        return ERRCODE_SUCC;\r
+    }\r
+\r
+    int32_t SetAlarm(AlarmType type, uint8_t week, uint8_t hour, uint8_t minute)\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetAlarm %d %d %d %d", type, week, hour, minute);\r
+        if (type == ALARM_A)\r
+        {\r
+            g_alarmCtrA.state = ALARM_STATUS_RUNNING;\r
+            g_alarmCtrA.info.hour = hour;\r
+            g_alarmCtrA.info.minute = minute;\r
+        }\r
+        else if (type == ALARM_B)\r
+        {\r
+            g_alarmCtrB.state = ALARM_STATUS_RUNNING;\r
+            g_alarmCtrB.info.week = week;\r
+            g_alarmCtrB.info.hour = hour;\r
+            g_alarmCtrB.info.minute = minute;\r
+            g_alarmCtrB.info.second = 5;\r
+        }\r
+        else\r
+        {\r
+            return ERRCODE_FAIL;\r
+        }\r
+        return ERRCODE_SUCC;\r
+    }\r
+\r
+    int32_t SetZeroAlarm(void)\r
+    {\r
+        struct tm curTime;\r
+        int32_t ret = AlarmGetCurrentTimeInfo(&curTime);\r
+        if (ret != ERRCODE_SUCC)\r
+        {\r
+            return ERRCODE_FAIL;\r
+        }\r
+        int32_t weekday = (++curTime.tm_wday) % 7;\r
+        return SetAlarm(ALARM_B, weekday, 0, 0);\r
+    }\r
+\r
+    int32_t AlarmGetCurrentTimeInfo(struct tm *timeInfo)\r
+    {\r
+        if (timeInfo == nullptr)\r
+        {\r
+            return ERRCODE_FAIL;\r
+        }\r
+        time_t sec = time(nullptr);\r
+        localtime_r(&sec, timeInfo);\r
+        return ERRCODE_SUCC;\r
     }\r
-    time_t sec = time(nullptr);\r
-    localtime_r(&sec, timeInfo);\r
-    return ERRCODE_SUCC;\r
-}\r
 \r
 #ifdef __cplusplus\r
 }\r
index 1d5c29b..b514467 100644 (file)
@@ -59,7 +59,7 @@ namespace OHOS
     }
     void BloodDetectionPresenter::NavigateBack()
     {
-        NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+        NativeAbility::GetInstance().Back();
     }
    
     bool BloodDetectionPresenter::OnDrag(UIView &view, const DragEvent &event)
index 5233784..572087e 100644 (file)
@@ -116,7 +116,7 @@ namespace OHOS
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
         {
             // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
             return true;
         }
         return false;
@@ -130,7 +130,7 @@ namespace OHOS
             keyState == 1 && uapi_get_screen_state() == 0)
         {
             // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index df24e68..7dce69e 100644 (file)
@@ -73,7 +73,7 @@ namespace OHOS
         UNUSED(view);
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
@@ -87,7 +87,7 @@ namespace OHOS
         // 如果是power键,且是亮屏状态,按键释放就返回上一级
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index e216299..ec15f74 100644 (file)
@@ -155,7 +155,7 @@ bool CalculatorPresenter::OnDragEnd(OHOS::UIView& view, const OHOS::DragEvent& e
     if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
     { 
         if(event.GetPreLastPoint().x-event.GetStartPoint().x>150) 
-        NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+        NativeAbility::GetInstance().Back();
     }
     return true;
 }
@@ -169,7 +169,7 @@ bool CalculatorPresenter::OnKeyAct(UIView &view, const KeyEvent &event)
     if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) &&  keyState == 1 && uapi_get_screen_state() == 0)
     {
         uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
-        NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+        NativeAbility::GetInstance().Back();
     }
     return true;
 
index 669004b..0ba0738 100644 (file)
@@ -58,7 +58,7 @@ namespace OHOS
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
         {
             if (event.GetPreLastPoint().x - event.GetStartPoint().x > 100)
-                NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+                NativeAbility::GetInstance().Back();
         }
         if (event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP)
         {
@@ -82,7 +82,7 @@ namespace OHOS
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
             uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index 39be265..7f8a917 100644 (file)
@@ -77,7 +77,7 @@ namespace OHOS
         {\r
             if (strcmp(view.GetViewId(), MAINCOUNTDOWNVIEW) == 0)\r
             {\r
-                NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+                NativeAbility::GetInstance().Back();\r
             }\r
             else if (strcmp(view.GetViewId(), COUNTDOWN_TIMECONFIG_VIEW) == 0)\r
             {\r
@@ -251,7 +251,7 @@ namespace OHOS
         // 如果是power键就返回上一级\r
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)\r
         {\r
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+            NativeAbility::GetInstance().Back();\r
         }\r
         return true;\r
     }\r
index c971b7f..ade20a3 100644 (file)
@@ -216,7 +216,7 @@ namespace OHOS
             }\r
             else if (strcmp(view.GetViewId(), DISPLAY_BRIGHTNESS_VIEW) == 0)\r
             {\r
-                NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+                NativeAbility::GetInstance().Back();\r
             }\r
             DisplayBrightnessPresenter::X_DRAG_FLAG = false;\r
         }\r
index d2babee..4cc98f7 100644 (file)
@@ -71,7 +71,7 @@ namespace OHOS
         UNUSED(event);
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && DnotDisturbPresenter::X_DRAG_FLAG)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
             DnotDisturbPresenter::X_DRAG_FLAG = false;
         }
         return true;
@@ -93,9 +93,9 @@ namespace OHOS
         }
         else if (&view == p_DnotDisturbView->GetButtonOff())
         {
-            // NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            // NativeAbility::GetInstance().Back();
         }
-        NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+        NativeAbility::GetInstance().Back();
         return true;
     }
 
@@ -108,7 +108,7 @@ namespace OHOS
         // 如果是power键就返回上一级
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index 75a850e..865b8dd 100644 (file)
@@ -93,7 +93,7 @@ namespace OHOS
         UNUSED(event);
         if (strcmp(view.GetViewId(), FINDPHONE_LABELBUTTON) == 0)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
@@ -115,7 +115,7 @@ namespace OHOS
         UNUSED(event);
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && FindPhonePresenter::X_DRAG_FLAG)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
             FindPhonePresenter::X_DRAG_FLAG = false;
         }
         return true;
@@ -130,7 +130,7 @@ namespace OHOS
         // 如果是power键,且是亮屏状态,按键释放就返回上一级
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index 3f9c1dc..bb21fc8 100644 (file)
@@ -171,7 +171,7 @@ namespace OHOS
         // 如果是power键就返回上一级
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index 67a22a8..1980b83 100644 (file)
@@ -82,7 +82,7 @@ namespace OHOS
         UNUSED(view);
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && MaingoalPresenter::X_DRAG_FLAG)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
             X_DRAG_FLAG = false;
         }
         return true;
@@ -106,7 +106,7 @@ namespace OHOS
         // 如果是power键就返回上一级
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index b6346b5..9a3b017 100644 (file)
@@ -58,7 +58,7 @@ namespace OHOS
     }
     void HeartChartPresenter::NavigateBack()
     {
-        NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+        NativeAbility::GetInstance().Back();
     }
     void HeartChartPresenter::OnStart()
     {
index 75033b0..08c9c07 100644 (file)
@@ -48,7 +48,7 @@ namespace OHOS
     }
     void HeartDetectionPresenter::NavigateBack()
     {
-        NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+        NativeAbility::GetInstance().Back();
     }
     void HeartDetectionPresenter::OnStart()
     {
index f64c063..7b90ec8 100644 (file)
@@ -119,7 +119,7 @@ namespace OHOS
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
         {
             // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
             return true;
         }
         return false;
@@ -132,7 +132,7 @@ namespace OHOS
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
             // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index 4da0519..7f28611 100644 (file)
@@ -92,7 +92,7 @@ namespace OHOS
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && LanguageSwitchPresenter::X_DRAG_FLAG)
         {
 #ifdef FD230_650
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
 #endif
             LanguageSwitchPresenter::X_DRAG_FLAG = false;
         }
index dee2b48..2d242f2 100644 (file)
@@ -87,7 +87,7 @@ namespace OHOS
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
             (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         if(event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM)
         {
@@ -111,7 +111,7 @@ namespace OHOS
             {
                 // 执行全部删除操作
                 model->ClearAllMessages();
-                NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+                NativeAbility::GetInstance().Back();
                 return true;
             }
 
@@ -147,7 +147,7 @@ namespace OHOS
         // 如果是power键,且是亮屏状态,按键释放就返回上一级
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index 33cb8be..f9c276f 100644 (file)
@@ -94,7 +94,7 @@ namespace OHOS
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
             // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index 7ca585c..a0bb5ed 100644 (file)
@@ -97,7 +97,7 @@ namespace OHOS
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerPresenter::OnDragEnd");
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && MusicPlayerPresenter::X_DRAG_FLAG)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
             MusicPlayerPresenter::X_DRAG_FLAG = false;
         }
         return true;
@@ -112,7 +112,7 @@ namespace OHOS
         // 如果是power键,且是亮屏状态,按键释放就返回上一级
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index 2c62ab3..c6ee00a 100644 (file)
@@ -153,7 +153,7 @@ namespace OHOS
             else
             {
                 //if(event.GetPreLastPoint().x-event.GetStartPoint().x>200) 
-                NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+                NativeAbility::GetInstance().Back();
                 //NativeAbility::GetInstance().EnterSlice(VIEW_APPLIST);
                 TelephonyInitInterface::X_DRAG_FLAG = false;
             }
@@ -183,7 +183,7 @@ namespace OHOS
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
            
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index 0475d24..3b91766 100644 (file)
@@ -110,7 +110,7 @@ namespace OHOS
             switch (currentView)\r
             {\r
             case RECORDINGVIEW:\r
-                NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+                NativeAbility::GetInstance().Back();\r
                 break;\r
             case RECORDINGPLAYERVIEW:\r
                 p_RecordingView->ChangeView(RECORDINGPLAYERVIEW, RECORDINGLISTVIEW); // 录音播放视图(subView)->录音列表视图(subView)\r
@@ -314,7 +314,7 @@ namespace OHOS
         // 如果是power键就返回上一级\r
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)\r
         {\r
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+            NativeAbility::GetInstance().Back();\r
         }\r
         return true;\r
     }\r
index 2238c30..21cfbe2 100644 (file)
@@ -77,7 +77,7 @@ namespace OHOS
         std::string viewId = view.GetViewId();
         if (viewId == RTCLABELBUTTON)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
             return true;
         }
         std::map<std::string, int> viewMap = {
@@ -126,7 +126,7 @@ namespace OHOS
             }
             else
             {
-                NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+                NativeAbility::GetInstance().Back();
             }
             RespiratoryTrainingPresenter::X_DRAG_FLAG = false;
         }
@@ -142,7 +142,7 @@ namespace OHOS
         // 如果是power键,且是亮屏状态,按键释放就返回上一级
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index 15504ed..a93b13a 100644 (file)
@@ -137,7 +137,7 @@ namespace OHOS
                 return true;\r
             }\r
 \r
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+            NativeAbility::GetInstance().Back();\r
             SchedulePresenter::X_DRAG_FLAG = false;\r
         }\r
         return true;\r
@@ -152,7 +152,7 @@ namespace OHOS
         // 如果是power键,且是亮屏状态,按键释放就返回上一级\r
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)\r
         {\r
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+            NativeAbility::GetInstance().Back();\r
         }\r
         return true;\r
     }\r
index 1dcecc1..4ab9001 100644 (file)
@@ -84,7 +84,7 @@ namespace OHOS
         UNUSED(view);
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && SleepControlPresenter::X_DRAG_FLAG)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
@@ -107,7 +107,7 @@ namespace OHOS
         // 如果是power键就返回上一级
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index 77fed05..54eddb7 100644 (file)
@@ -51,7 +51,7 @@ namespace OHOS
         UNUSED(event);
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && SleepModePresenter::X_DRAG_FLAG)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
             SleepModePresenter::X_DRAG_FLAG = false;
         }
         return true;
@@ -66,7 +66,7 @@ namespace OHOS
             SleepModeModel_->SetSleepModeEnabled();
         }
 
-        NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+        NativeAbility::GetInstance().Back();
         return true;
     }
 
@@ -79,7 +79,7 @@ namespace OHOS
         // 如果是power键就返回上一级
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index 9e5914e..6e3dadc 100644 (file)
@@ -90,7 +90,7 @@ namespace OHOS
             }\r
             else\r
             {\r
-                NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+                NativeAbility::GetInstance().Back();\r
             }\r
             SoundAndVibrationPresenter::X_DRAG_FLAG = false;\r
         }\r
@@ -107,7 +107,7 @@ namespace OHOS
         // 如果是power键,且是亮屏状态,按键释放就返回上一级\r
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)\r
         {\r
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+            NativeAbility::GetInstance().Back();\r
         }\r
         return true;\r
     }\r
index 249a639..c3a5513 100644 (file)
@@ -127,7 +127,7 @@ namespace OHOS
         {\r
             if (&view == view_->GetScrollView(MAIN_STOPWATCH))\r
             {\r
-                NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+                NativeAbility::GetInstance().Back();\r
             }\r
             else if (&view == view_->GetScrollView(STOPWATCH_RECORD_CYCLE_TO_LIMIT))\r
             {\r
@@ -358,7 +358,7 @@ namespace OHOS
         // 如果是power键就返回上一级\r
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)\r
         {\r
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+            NativeAbility::GetInstance().Back();\r
         }\r
         return false;\r
     }\r
index d9e41dc..685fc98 100644 (file)
@@ -135,7 +135,7 @@ extern "C"
       {
         // 点亮屏幕
         uapi_set_screen_on_api();
-        NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+        NativeAbility::GetInstance().Back();
 #ifdef SUPPORT_BLE_SERVICE
         cameraSend(3);
 #endif
index b99e34f..e0d584d 100644 (file)
@@ -80,7 +80,7 @@ namespace OHOS
             (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
         {
 
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
 
             /*如果是拍照界面需要发送拍照结束的消息*/
             if (TakephotosModel::GetInstance()->GetPopStaust() == PopupPhoto::TakePopup)
@@ -100,7 +100,7 @@ namespace OHOS
         // 返回按键
         if (strcmp(view.GetViewId(), BUTTONGO) == 0)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
             return true;
         }
         if (strcmp(view.GetViewId(), BUTTONTAKE) == 0)
@@ -121,7 +121,7 @@ namespace OHOS
         // 如果是power键,且是亮屏状态,按键释放就返回上一级
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
             /*如果是拍照界面需要发送拍照结束的消息*/
             if (TakephotosModel::GetInstance()->GetPopStaust() == PopupPhoto::TakePopup)
             {
index 43d6071..8817b37 100644 (file)
@@ -73,7 +73,7 @@ namespace OHOS
         std::string viewId = labelButtonExt->GetViewId();
         if (viewId == THEMESTYLEVIEWEXIT)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
             return true;
         }
 
@@ -105,7 +105,7 @@ namespace OHOS
         uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
         if (preSlice == VIEW_APPLIST)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         else
         {
@@ -133,7 +133,7 @@ namespace OHOS
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RespiratoryTrainingPresenter::OnDragEnd");
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && ThemeStylePresenter::X_DRAG_FLAG)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
             ThemeStylePresenter::X_DRAG_FLAG = false;
         }
         return true;
@@ -147,7 +147,7 @@ namespace OHOS
         // 如果是power键就返回上一级
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index 7aa92f3..f2d0157 100644 (file)
@@ -78,7 +78,7 @@ namespace OHOS
             3.[更多]->[具体训练项]进入\r
             4.[设置训练目标]进入 {不返回}\r
         */\r
-        NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+        NativeAbility::GetInstance().Back();\r
     }\r
     bool TraingNomalPresenter::OnDrag(UIView &view, const DragEvent &event)\r
     {\r
index c2b400a..f56ca47 100644 (file)
@@ -96,7 +96,7 @@ namespace OHOS
         }\r
         else\r
         {\r
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+            NativeAbility::GetInstance().Back();\r
         }\r
     }\r
     bool TraingMorePresenter::OnDrag(UIView &view, const DragEvent &event)\r
index f696d60..548e501 100644 (file)
@@ -105,7 +105,7 @@ namespace OHOS
         }
         else
         {
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            NativeAbility::GetInstance().Back();
         }
     }
     bool TraingRecordPresenter::OnDrag(UIView &view, const DragEvent &event)
index a8e28d0..f4b0941 100644 (file)
@@ -76,7 +76,7 @@ namespace OHOS
         UNUSED(view);\r
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && MainWeatherPresenter::X_DRAG_FLAG)\r
         {\r
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+            NativeAbility::GetInstance().Back();\r
             X_DRAG_FLAG = false;\r
         }\r
         return true;\r
@@ -100,7 +100,7 @@ namespace OHOS
         // 如果是power键就返回上一级\r
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)\r
         {\r
-            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+            NativeAbility::GetInstance().Back();\r
         }\r
         return true;\r
     }\r
index 0ce5a58..46f51a4 100644 (file)
 #include "custom_utils.h"
 
 #include "ui_serviceC.h"
+#include "alarm/include/AlarmClockModelC.h"
 #ifdef FD230_650
 #include "BluetoothModelC.h"
 #include "PhoneServiceC.h"
 #include "safemodemanager/include/SafeModeManagerModelC.h"
 #include "set_dial/include/SetDialModelC.h"
-#include "alarmclocktimerconfig/include/AlarmClockTimerConfig.h"
+
 
 #else
 // void HandleUpdatelcdMode(int f){}
 // void set_ota_upgrade(void){}
-void custom_timer_callback(void){}
+// void custom_timer_callback(void){}
 // void Check_ble_adv_status(void){}
 // void check_dial_space(void){}