1.添加秒表视图
authorluozheng <1732036298@qq.com>
Thu, 4 Apr 2024 08:16:34 +0000 (16:16 +0800)
committerluozheng <1732036298@qq.com>
Thu, 4 Apr 2024 08:16:34 +0000 (16:16 +0800)
2.添加倒计时和秒表图片资源

34 files changed:
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h
code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h
code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h
code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp
code/sdk/application/wearable/fd230app/nativeui/compass/src/CompassModel.cpp
code/sdk/application/wearable/fd230app/nativeui/settings/src/SettingView.cpp
code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/MainStopWatchPresenter.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/MainStopWatchView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/StopWatchModel.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/StopWatchRecordCycleToLimitView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/StopWatchRecordTimeToLimitView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/MainStopWatchPresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/MainStopWatchView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/StopWatchModel.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/StopWatchRecordCycleToLimitView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/StopWatchRecordTimeToLimitView.cpp [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_END.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_FIVE_MINUTE.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_ONE_MINUTE.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_PAUSE.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_PLAY.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_RESET.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_TEN_MINUTE.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_THIRTY_MINUTE.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_VECTOR.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWN_ATTENTION.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWN_BUTTON.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWN_COLONE.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATCH_LINE.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATCH_MARK.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATH_RESET1.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATH_RESET2.bin [new file with mode: 0644]

index ef3aae1..e2ff02f 100644 (file)
@@ -252,12 +252,20 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/src/HeartCardView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/health_service/health_service.cpp
 
+    # 语言切换
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/src/LanguageSwitchListAdapter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/src/LanguageSwitchListitemView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/src/LanguageSwitchPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/src/LanguageSwitchView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/src/LanguageSwitchModel.cpp
 
+    #秒表
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stopwatch/src/MainStopWatchPresenter.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stopwatch/src/MainStopWatchView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stopwatch/src/StopWatchModel.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stopwatch/src/StopWatchRecordCycleToLimitView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stopwatch/src/StopWatchRecordTimeToLimitView.cpp
+
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/LanguageInit.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/config/src/ConfigModel.cpp
 
index 83875d2..113b71d 100644 (file)
@@ -56,6 +56,7 @@ typedef enum : uint16_t
     VIEW_FAST_TRAINING_ATTENTION, // 快速训练项目选择超出提示
     VIEW_FIND_PHONE,              // 查找手机
     VIEW_LANGUAGE_SWITCH,         // 语言切换
+    VIEW_MAIN_STOPWATCH,          // 秒表
     /* ----------------------------------- 录音 ----------------------------------- */
     VIEW_RECORD,
     /* ---------------------------------- 界面 ---------------------------------- */
index 59c4144..830bad2 100644 (file)
@@ -45,6 +45,7 @@ namespace OHOS
         void InitClassicBluetoothSlice(void);
         void InitFindPhoneSlice(void);
         void InitLanguageSwitchSlice(void);
+        void InitMainStopWatchSlice(void);
         /* --------------------------------界面------------------------------------ */
         void InitRotateSlice(void);
         void InitBloodSlice(void);
index 85a4d8b..757e573 100644 (file)
@@ -219,6 +219,7 @@ namespace OHOS
     static constexpr const char *PNG_APPLIST_RECORD_IMAGE = APP_RES_PATH "/APPLIST_RECORD_IMAGE.bin";             // 录音
     static constexpr const char *PNG_APPLIST_TRAINING_IMAGE = APP_RES_PATH "/APPLIST_TRAINING.bin";               // 训练
     static constexpr const char *PNG_APPLIST_TRAINING_RECORD_IMAGE = APP_RES_PATH "/APPLIST_TRAINING_RECORD.bin"; // 训练记录
+    static constexpr const char *PNG_APPLIST_STOPWATCH_IMAGE = APP_RES_PATH "/APPLIST_STOPWATCH.bin";             // 秒表
     /* ---------------------------------- 快速训练 ---------------------------------- */
     static constexpr const char *PNG_TRAING_BOUTTONMORE_IMAGE = APP_RES_PATH "/Training/More.bin";
     static constexpr const char *PNG_TRAING_BUTTONGRONG_IMAGE = APP_RES_PATH "/Training/Bouttonground.bin";
index 6ed5ba0..ae32d00 100644 (file)
 
 #include "language/include/LanguageSwitchPresenter.h"
 #include "language/include/LanguageSwitchView.h"
+
+#include "stopwatch/include/MainStopWatchPresenter.h"
+#include "stopwatch/include/MainStopWatchView.h"
 /* -------------------------------------------------------------------------- */
 #include "traing/include/TraingView.h"
 #include "traing/include/TraingPresenter.h"
@@ -260,7 +263,8 @@ namespace OHOS
 
         {VIEW_RECORD, &NativeLauncher::InitRecordingSlice}, // 录音实例化地址
         {VIEW_FIND_PHONE, &NativeLauncher::InitFindPhoneSlice},
-        {VIEW_LANGUAGE_SWITCH,&NativeLauncher::InitLanguageSwitchSlice},
+        {VIEW_LANGUAGE_SWITCH, &NativeLauncher::InitLanguageSwitchSlice},
+        {VIEW_MAIN_STOPWATCH, &NativeLauncher::InitMainStopWatchSlice},
         {VIEW_MESSAGE, &NativeLauncher::InitMessageSlice},
         {VIEW_ROTATE, &NativeLauncher::InitRotateSlice},
         {VIEW_DIALUPDATE, &NativeLauncher::InitDialUpdateSlice},
@@ -1088,7 +1092,7 @@ namespace OHOS
         NativeAbility::GetInstance().AddSliceProxy(VIEW_FIND_PHONE, findphoneview);
     }
 
-    //语言切换
+    // 语言切换
     void NativeLauncher::InitLanguageSwitchSlice(void)
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitLanguageSwitchSlice");
@@ -1100,5 +1104,16 @@ namespace OHOS
         }
         NativeAbility::GetInstance().AddSliceProxy(VIEW_LANGUAGE_SWITCH, languageswitchview);
     }
+
+    /*秒表*/
+    void NativeLauncher::InitMainStopWatchSlice(void)
+    {
+        SliceProxy *mainstopwatch = new AbilitySliceProxy<MainStopWatchView, MainStopWatchPresenter>;
+        if (mainstopwatch == nullptr)
+        {
+            return;
+        }
+        NativeAbility::GetInstance().AddSliceProxy(VIEW_MAIN_STOPWATCH, mainstopwatch);
+    }
     
 }
index 01bb17e..5cfe6b5 100644 (file)
@@ -36,7 +36,8 @@ namespace OHOS
         {VIEW_RECORD, PNG_APPLIST_RECORD_IMAGE, PNG_APPLIST_RECORD_IMAGE, "录音", nullptr},
         {VIEW_CALLER_LOG, PNG_APPLIST_CALLLOG_IMAGE, PNG_APPLIST_CALLLOG_IMAGE, "通话记录", nullptr},
         {VIEW_PHONE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_CALLER_IMAGE, "电话", nullptr},
-        {VIEW_CONNECT_PHONE, PNG_CONNECT_PHONE_IMAGE, PNG_CONNECT_PHONE_IMAGE, "连接手机", nullptr},
+        {VIEW_MAIN_STOPWATCH, PNG_APPLIST_STOPWATCH_IMAGE, PNG_APPLIST_STOPWATCH_IMAGE, "秒表", nullptr},
+        //{VIEW_CONNECT_PHONE, PNG_CONNECT_PHONE_IMAGE, PNG_CONNECT_PHONE_IMAGE, "连接手机", nullptr},
         //{VIEW_LANGUAGE_SWITCH, PNG_CONNECT_PHONE_IMAGE, PNG_CONNECT_PHONE_IMAGE, "语言切换", nullptr},
 #ifdef SUPPORT_ALIPAY_SEC
         {VIEW_MAIN_ALIPAY, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_ALIPAY_IMAGE, "支付宝", nullptr},
index d789e6d..06f069b 100644 (file)
@@ -51,7 +51,7 @@ uint8_t CompassModel::GetCalibrationStatus(void)
 }
 
 /* 
- * @brief 设置显示的角度
+ * @brief 设置显示的角度,通常表示为从地磁北方向到设备当前朝向的角度。
 */
 void CompassModel::SetDisplayAngle(uint16_t angle)
 {
index 6059b6e..a76060e 100644 (file)
@@ -101,7 +101,7 @@ namespace OHOS
         contentList->SetScrollBlankSize(SETTING_SCROLLBLANKSIZE);
         contentList->SetSelectPosition(HORIZONTAL_RESOLUTION / SNUM_2); // middle position
         contentList->SetDraggable(true);
-        contentList->SetThrowDrag(false);
+        contentList->SetThrowDrag(true);
         contentList->EnableAutoAlign(true);
         contentList->SetReboundSize(REBOUNDSIZE);
         contentList->SetMaxScrollDistance(MAX_SCR_DIS / SNUM_2);
diff --git a/code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/MainStopWatchPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/MainStopWatchPresenter.h
new file mode 100644 (file)
index 0000000..ccb4d9e
--- /dev/null
@@ -0,0 +1,65 @@
+/*\r
+ * @Author: luozheng 1732036298@qq.com\r
+ * @Date: 2024-04-04 15:13:51\r
+ * @LastEditors: luozheng 1732036298@qq.com\r
+ * @LastEditTime: 2024-04-04 16:05:17\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/MainStopWatchPresenter.h\r
+ */\r
+#ifndef MAIN_STOPWATCH_PRESENTER_H\r
+#define MAIN_STOPWATCH_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "View.h"\r
+#include "MainStopWatchView.h"\r
+#include <string>\r
+/*秒表主视图*/\r
+namespace OHOS\r
+{\r
+    typedef enum\r
+    {\r
+        MAIN_STOPWATCH = 0,              // 秒表主视图\r
+        STOPWATCH_RECORD_CYCLE_TO_LIMIT, // 到达秒表计时的最高记录圈数后弹出视图\r
+        STOPWATCH_RECORD_TIME_TO_LIMIT,  // 到达秒表最大的记录时间后弹出该视图\r
+        STOPWATCH_MAXVIEWID,             // 秒表的视图id数量\r
+    } StopWatchViewId;\r
+    class MainStopWatchView;\r
+    class MainStopWatchPresenter : public Presenter<MainStopWatchView>,\r
+                                   public UIView::OnClickListener,\r
+                                   public UIView::OnDragListener,\r
+                                   public RootView::OnKeyActListener,\r
+                                   public UICheckBox::OnChangeListener\r
+    {\r
+    public:\r
+        MainStopWatchPresenter();\r
+        virtual ~MainStopWatchPresenter();\r
+        void OnStart() override;\r
+        void OnPause() override;\r
+        void OnResume() override;\r
+        void OnStop() override;\r
+        static MainStopWatchPresenter *GetInstance();\r
+        void SetCheckBoxAndButton(UICheckBox *checkbox, UIButton *button);\r
+        void SetLable(UILabel *label1, UILabel *label2);\r
+        void SetShowTimeLableStyle(UILabel *label, int x, int y, int TextFont, int LineHeight);\r
+        void SetList(UIList *list, TextAdapter *listadapter, List<const char *> *listdata);\r
+        void SetImage(UIImageView *image);\r
+    private:\r
+        // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
+        bool OnClick(UIView &view, const ClickEvent &event) override;\r
+        bool OnDrag(UIView &view, const DragEvent &event) override;\r
+        bool OnChange(UICheckBox::UICheckBoxState state) override;\r
+        bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件\r
+    private:\r
+        UICheckBox *m_checkbox{nullptr};\r
+        UIButton *m_button{nullptr};\r
+        UILabel *m_stopWatchlabel{nullptr};\r
+        UILabel *m_showTimelabel{nullptr};\r
+        UIImageView *m_image{nullptr};\r
+        UIList *m_list = nullptr;\r
+        TextAdapter *m_listadapter = nullptr;\r
+        List<const char *> *m_listdata = nullptr;\r
+        int RecordCycleNumber{0};              // 用来记录点击计时按钮("Mark")的次数\r
+        std::string RecordMaxTime{"99:59.59"}; // 计时时间最高为99:59.59\r
+    };\r
+} // namespace OHOS\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/MainStopWatchView.h b/code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/MainStopWatchView.h
new file mode 100644 (file)
index 0000000..3af8a0e
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef MAIN_STOPWATCH_VIEW_H\r
+#define MAIN_STOPWATCH_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_checkbox.h"\r
+#include "components/ui_button.h"\r
+#include "components/ui_list.h"\r
+#include "components/text_adapter.h"\r
+#include "stopwatch/include/StopWatchRecordCycleToLimitView.h"\r
+#include "stopwatch/include/StopWatchRecordTimeToLimitView.h"\r
+/*秒表主视图*/\r
+namespace OHOS\r
+{\r
+\r
+    static const char *checkBox1selectedImg = "/user/res/countdown/COUNTDOWM_PLAY.bin";         // 播放\r
+    static const char *checkBox1unSelectedImg = "/user/res/countdown/COUNTDOWM_PAUSE.bin";      // 暂停\r
+    static const char *ResetOrMarkButtonImg_Reset1 = "/user/res/stopwatch/STOPWATH_RESET1.bin"; // 重置_灰色 图片\r
+    static const char *ResetOrMarkButtonImg_Reset2 = "/user/res/stopwatch/STOPWATH_RESET2.bin"; // 重置_白色 图片\r
+    static const char *ResetOrMarkButtonImg_Mark = "/user/res/stopwatch/STOPWATCH_MARK.bin";    // 标记 图片\r
+    static const char *PlayOrPausecheckBoxVIEWID = "PlayOrPausecheckBox";                       // 播放或暂停复选框视图ID\r
+    static const char *ResetOrMarkButton_RESET1_VIEWID = "ResetOrMarkButtonReset1";             // ResetOrMarkButtonReset1\r
+    static const char *ResetOrMarkButton_RESET2_VIEWID = "ResetOrMarkButtonReset2";             // ResetOrMarkButtonReset2\r
+    static const char *ResetOrMarkButton_MARK_VIEWID = "ResetOrMarkButtonMark";                 // ResetOrMarkButtonMark\r
+    static const char *CycleToLimitReturnButton_VIEWID = "CycleToLimitReturnButton";            // CycleToLimitReturnButton\r
+    static const char *TimeToLimitReturnButton_VIEWID = "TimeToLimitReturnButton";              // TimeToLimitReturnButton\r
+    class MainStopWatchPresenter;\r
+    class MainStopWatchView : public View<MainStopWatchPresenter>\r
+    {\r
+\r
+    public:\r
+        MainStopWatchView();\r
+        virtual ~MainStopWatchView();\r
+        static MainStopWatchView *GetInstance(void);\r
+\r
+        void OnStart() override;\r
+        void OnSetUpView() override;\r
+        void OnTearDownView() override;\r
+        void OnStop() override;\r
+        void SetViewIsVisible(UIView *view, bool status);\r
+        bool ClickFunc(int16_t interface);\r
+        void ChangeView(int16_t hideView, int16_t showView);\r
+        bool ChangeMainStopWatch(int16_t thisView);\r
+        bool ChangeStopWatchRecordCycleLimit(int16_t thisView);\r
+        bool ChangeMainStopWatchRecordTimeLimit(int16_t thisView);\r
+\r
+    private:\r
+        void InitMainStopWatchView(void);\r
+        void DeInitView(void);\r
+        void PreLoad(void);\r
+\r
+    private:\r
+        StopWatchRecordCycleToLimitView *p_StopWatchRecordCycleToLimitView{nullptr}; // 圈数到达上限后弹出该视图\r
+        StopWatchRecordTimeToLimitView *p_StopWatchRecordTimeToLimitView{nullptr};   // 计时时间到达上限后弹出该视图\r
+\r
+    private:\r
+        UIViewGroup *container_ = nullptr;\r
+        UIScrollView *scrollView[3] = {nullptr};\r
+        UILabel *stopWatchlabel = nullptr;         // 内容为“秒表”的标签\r
+        UILabel *showTimelabel = nullptr;          // 用来显示计时时间\r
+        UICheckBox *PlayOrPausecheckBox = nullptr; // 播放或暂停复选框\r
+        UIButton *ResetOrMarkbutton = nullptr;     // 重置或标记按钮\r
+        UIImageView *LineImage{nullptr};\r
+        UIList *list = nullptr;\r
+        TextAdapter *listadapter = nullptr;\r
+        List<const char *> *listdata = nullptr;\r
+        UIView::OnDragListener *draglistener{nullptr};\r
+        UICheckBox::OnChangeListener *PlayOrPausecheckBoxChangeListener{nullptr};\r
+        UIView::OnClickListener *ResetOrMarkbuttonClick{nullptr};\r
+        bool viewInitStatus{false};\r
+    };\r
+} // namespace OHOS\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/StopWatchModel.h b/code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/StopWatchModel.h
new file mode 100644 (file)
index 0000000..66baa6d
--- /dev/null
@@ -0,0 +1,31 @@
+#ifndef STOP_WATCH_MODEL_H\r
+#define STOP_WATCH_MODEL_H\r
+\r
+#include <iostream>\r
+#include <string>\r
+#include <memory>\r
+\r
+namespace OHOS\r
+{\r
+    class StopWatchModel\r
+    {\r
+    public:\r
+        static std::shared_ptr<StopWatchModel> GetInstance(); // shared_ptr:当没有引用指向这个实例时会自动释放内存\r
+        ~StopWatchModel() {}\r
+        char *DisplayMotionDuration();\r
+\r
+    private:\r
+        // 将构造函数、拷贝构造函数和赋值操作符私有化\r
+        StopWatchModel() = default;\r
+        StopWatchModel(const StopWatchModel &) = delete;\r
+        StopWatchModel &operator=(const StopWatchModel &) = delete;\r
+\r
+    private:\r
+        static int oneDaySec;    // 一天的秒数\r
+        static int oneHourSec;   // 一个小时的秒数\r
+        static int oneMinuteSec; // 一分钟秒数\r
+    };\r
+\r
+}\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/StopWatchRecordCycleToLimitView.h b/code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/StopWatchRecordCycleToLimitView.h
new file mode 100644 (file)
index 0000000..390fa0c
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef STOPWATCH_RECORD_CYCLE_TO_LIMIT_VIEW_H\r
+#define STOPWATCH_RECORD_CYCLE_TO_LIMIT_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_button.h"\r
+/*弹窗视图:到达最高圈数99时弹出*/\r
+namespace OHOS\r
+{\r
+    class StopWatchRecordCycleToLimitView\r
+    {\r
+\r
+    public:\r
+        StopWatchRecordCycleToLimitView();\r
+        void DeInitView(void);\r
+        virtual ~StopWatchRecordCycleToLimitView();\r
+        static StopWatchRecordCycleToLimitView *GetInstance(void);\r
+        UIScrollView *InitStopWatchRecordCycleToLimitView(void);\r
+\r
+    private:\r
+        UIViewGroup *container_ = nullptr;\r
+        UIScrollView *scrollView1_ = nullptr;\r
+        UILabel *label1_ = nullptr;\r
+        UIImageView *image1_ = nullptr;\r
+        UILabel *label3_ = nullptr;\r
+        UIButton *button1_ = nullptr;\r
+        bool viewInitStatus{false};\r
+    };\r
+} // namespace OHOS\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/StopWatchRecordTimeToLimitView.h b/code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/StopWatchRecordTimeToLimitView.h
new file mode 100644 (file)
index 0000000..22495f2
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef STOPWATCH_RECORD_TIME_TO_LIMIT_VIEW_H\r
+#define STOPWATCH_RECORD_TIME_TO_LIMIT_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_button.h"\r
+/*弹窗视图:到达最高时间99:59.99时弹出*/\r
+namespace OHOS\r
+{\r
+    class StopWatchRecordTimeToLimitView\r
+    {\r
+    public:\r
+        StopWatchRecordTimeToLimitView();\r
+        virtual ~StopWatchRecordTimeToLimitView();\r
+        static StopWatchRecordTimeToLimitView *GetInstance(void);\r
+        UIScrollView *InitStopWatchRecordTimeToLimitView(void);\r
+        void DeInitView(void);\r
+\r
+    private:\r
+        UIScrollView *scrollView1_ = nullptr;\r
+        UILabel *label1_ = nullptr;\r
+        UIImageView *image1_ = nullptr;\r
+        UILabel *label3_ = nullptr;\r
+        UIButton *button1_ = nullptr;\r
+        bool viewInitStatus{false};\r
+    };\r
+} // namespace OHOS\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/MainStopWatchPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/MainStopWatchPresenter.cpp
new file mode 100644 (file)
index 0000000..4c5e742
--- /dev/null
@@ -0,0 +1,207 @@
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+#include "stopwatch/include/MainStopWatchPresenter.h"\r
+#include "common/key_code.h"\r
+#include <custom_utils.h>\r
+/*秒表主视图*/\r
+namespace OHOS\r
+{\r
+\r
+    // 当前Presenter属性实例化的内存指针\r
+    static MainStopWatchPresenter *g_pMainStopWatchPresenter = nullptr;\r
+\r
+    MainStopWatchPresenter::MainStopWatchPresenter()\r
+    {\r
+\r
+        g_pMainStopWatchPresenter = this;\r
+    }\r
+\r
+    MainStopWatchPresenter::~MainStopWatchPresenter()\r
+    {\r
+\r
+        g_pMainStopWatchPresenter = nullptr;\r
+    }\r
+\r
+    MainStopWatchPresenter *MainStopWatchPresenter::GetInstance()\r
+    {\r
+\r
+        return g_pMainStopWatchPresenter;\r
+    }\r
+\r
+    void MainStopWatchPresenter::OnStart()\r
+    {\r
+\r
+        Presenter<MainStopWatchView>::OnStart();\r
+    }\r
+\r
+    void MainStopWatchPresenter::OnPause(void)\r
+    {\r
+\r
+        Presenter<MainStopWatchView>::OnPause();\r
+    }\r
+\r
+    void MainStopWatchPresenter::OnResume(void)\r
+    {\r
+\r
+        Presenter<MainStopWatchView>::OnResume();\r
+    }\r
+\r
+    void MainStopWatchPresenter::OnStop(void)\r
+    {\r
+\r
+        Presenter<MainStopWatchView>::OnStop();\r
+    }\r
+\r
+    /// @brief 设置复选框和按钮\r
+    /// @param checkbox\r
+    /// @param button\r
+    void MainStopWatchPresenter::SetCheckBoxAndButton(UICheckBox *checkbox, UIButton *button)\r
+    {\r
+        m_checkbox = checkbox;\r
+        m_button = button;\r
+    }\r
+\r
+    /// @brief 设置标签\r
+    /// @param label1\r
+    /// @param label2\r
+    void MainStopWatchPresenter::SetLable(UILabel *label1, UILabel *label2)\r
+    {\r
+        m_stopWatchlabel = label1;\r
+        m_showTimelabel = label2;\r
+    }\r
+\r
+    /// @brief 设置显示时间的标签样式\r
+    /// @param label\r
+    /// @param x\r
+    /// @param y\r
+    /// @param TextFont\r
+    /// @param LineHeight\r
+    void MainStopWatchPresenter::SetShowTimeLableStyle(UILabel *label, int x, int y, int TextFont, int LineHeight)\r
+    {\r
+        label->SetPosition(x, y);\r
+        label->SetStyle(STYLE_TEXT_FONT, TextFont);\r
+        label->SetStyle(STYLE_LINE_HEIGHT, LineHeight);\r
+        label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TextFont);\r
+        label->Invalidate();\r
+    }\r
+\r
+    void MainStopWatchPresenter::SetList(UIList *list, TextAdapter *listadapter, List<const char *> *listdata)\r
+    {\r
+        m_list = list;\r
+        m_listadapter = listadapter;\r
+        m_listdata = listdata;\r
+    }\r
+\r
+    void MainStopWatchPresenter::SetImage(UIImageView *image)\r
+    {\r
+        m_image = image;\r
+    }\r
+\r
+    bool MainStopWatchPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+    {\r
+        UNUSED(view);\r
+        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&\r
+            (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
+        }\r
+        return true;\r
+    }\r
+\r
+    bool MainStopWatchPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+    {\r
+        UNUSED(view);\r
+        MainStopWatchView *mainStopWatchView = MainStopWatchView::GetInstance();\r
+        const char *clickedViewId = view.GetViewId();\r
+        if (strcmp(clickedViewId, ResetOrMarkButton_MARK_VIEWID) == 0)\r
+        {\r
+            RecordCycleNumber += 1;\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordCycleNumber:%d\n",RecordCycleNumber);\r
+            if (RecordCycleNumber >= 99)\r
+            {\r
+                mainStopWatchView->ChangeView(MAIN_STOPWATCH, STOPWATCH_RECORD_CYCLE_TO_LIMIT);\r
+                return true;\r
+            }\r
+            else\r
+            {\r
+                mainStopWatchView->SetViewIsVisible(m_stopWatchlabel, false);\r
+                SetShowTimeLableStyle(m_showTimelabel, 93, 60, 65, 78);\r
+                mainStopWatchView->SetViewIsVisible(m_list, true);\r
+                mainStopWatchView->SetViewIsVisible(m_image, true);\r
+            }\r
+            char *PickerData = (char *)malloc(128);\r
+            sprintf(PickerData, "0%d    %s    %s", RecordCycleNumber, "00:08:09", "+00:08:09");\r
+            m_listdata->PushFront(static_cast<char *>(PickerData));\r
+            m_listadapter->SetData(m_listdata);\r
+            m_list->SetAdapter(m_listadapter);\r
+            m_list->SetStartIndex(RecordCycleNumber - 1);\r
+            m_list->SetSelectPosition(RecordCycleNumber);\r
+            m_list->RefreshList();\r
+            return true;\r
+        }\r
+        else if (strcmp(clickedViewId, ResetOrMarkButton_RESET2_VIEWID) == 0)\r
+        {\r
+            m_button->SetViewId(ResetOrMarkButton_RESET1_VIEWID);\r
+            m_button->SetImageSrc(ResetOrMarkButtonImg_Reset1, ResetOrMarkButtonImg_Reset1);\r
+            m_button->Invalidate();\r
+\r
+            mainStopWatchView->SetViewIsVisible(m_stopWatchlabel, true);\r
+            SetShowTimeLableStyle(m_showTimelabel, 63, 160, 80, 94);\r
+            mainStopWatchView->SetViewIsVisible(m_image, false);\r
+            if (m_listdata != nullptr)\r
+            {\r
+                for (int i = 0; i < m_listdata->Size(); i++)\r
+                {\r
+                    char *p = (char *)(m_listdata->Tail()->data_);\r
+                    free(p);\r
+                }\r
+                m_listdata->Clear();\r
+            }\r
+            mainStopWatchView->SetViewIsVisible(m_list, false);\r
+            m_list->Invalidate();\r
+            RecordCycleNumber = 0;\r
+        }\r
+        else if (strcmp(clickedViewId, CycleToLimitReturnButton_VIEWID) == 0)\r
+        {\r
+            mainStopWatchView->ChangeView(STOPWATCH_RECORD_CYCLE_TO_LIMIT, MAIN_STOPWATCH);\r
+        }\r
+        else if (strcmp(clickedViewId, TimeToLimitReturnButton_VIEWID) == 0)\r
+        {\r
+            mainStopWatchView->ChangeView(STOPWATCH_RECORD_TIME_TO_LIMIT, MAIN_STOPWATCH);\r
+        }\r
+        return true;\r
+    }\r
+\r
+    bool MainStopWatchPresenter::OnChange(UICheckBox::UICheckBoxState state)\r
+    {\r
+        if (state == UICheckBox::UICheckBoxState::SELECTED)\r
+        {\r
+            m_button->SetViewId(ResetOrMarkButton_MARK_VIEWID);\r
+            m_button->SetImageSrc(ResetOrMarkButtonImg_Mark, nullptr);\r
+            m_button->Invalidate(); // 图片重新赋值要刷新该区域\r
+        }\r
+        else\r
+        {\r
+            m_button->SetViewId(ResetOrMarkButton_RESET2_VIEWID);\r
+            m_button->SetImageSrc(ResetOrMarkButtonImg_Reset2, nullptr);\r
+            m_button->Invalidate();\r
+        }\r
+        return true;\r
+    }\r
+\r
+    // 增加按键事件\r
+    bool MainStopWatchPresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainStopWatchPresenter::OnKeyAct");\r
+        uint16_t keyID = event.GetKeyId();\r
+        uint16_t keyState = event.GetState();\r
+        // 如果是power键就返回上一级\r
+        if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)\r
+        {\r
+            uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
+            NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+        }\r
+        return true;\r
+    }\r
+\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/MainStopWatchView.cpp b/code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/MainStopWatchView.cpp
new file mode 100644 (file)
index 0000000..6c31fdc
--- /dev/null
@@ -0,0 +1,385 @@
+#include "stopwatch/include/MainStopWatchView.h"\r
+#include "stopwatch/include/MainStopWatchPresenter.h"\r
+#include "UiConfig.h"\r
+#include "NativeAbility.h"\r
+#include "AppViewIDs.h"\r
+/*秒表主视图*/\r
+namespace OHOS\r
+{\r
+\r
+    static MainStopWatchView *g_pMainStopWatchView{nullptr};\r
+\r
+    MainStopWatchView::MainStopWatchView()\r
+    {\r
+\r
+        g_pMainStopWatchView = this;\r
+    }\r
+\r
+    MainStopWatchView::~MainStopWatchView()\r
+    {\r
+        if (viewInitStatus == true)\r
+        {\r
+            DeInitView();\r
+        }\r
+        g_pMainStopWatchView = nullptr;\r
+    }\r
+\r
+    MainStopWatchView *MainStopWatchView::GetInstance()\r
+    {\r
+\r
+        return g_pMainStopWatchView;\r
+    }\r
+\r
+    /// @brief 设置视图是否可见\r
+    /// @param view 具体视图\r
+    /// @param status true 可见 false 不可见\r
+    void MainStopWatchView::SetViewIsVisible(UIView *view, bool status)\r
+    {\r
+        if (status == true)\r
+        {\r
+            view->SetVisible(true);\r
+        }\r
+        else\r
+        {\r
+            view->SetVisible(false);\r
+        }\r
+        view->Invalidate();\r
+    }\r
+\r
+    // 切换到秒表主视图\r
+    bool MainStopWatchView::ChangeMainStopWatch(int16_t thisView)\r
+    {\r
+        container_->Add(scrollView[thisView]);\r
+        return true;\r
+    }\r
+\r
+    // 切换到秒表到达最高圈数视图\r
+    bool MainStopWatchView::ChangeStopWatchRecordCycleLimit(int16_t thisView)\r
+    {\r
+        if (scrollView[thisView] == nullptr)\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView::StopWatchRecordCycleToLimitView");\r
+            p_StopWatchRecordCycleToLimitView = new StopWatchRecordCycleToLimitView();\r
+            if (p_StopWatchRecordCycleToLimitView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainStopWatchView:: new scrollView[%d] fail", thisView);\r
+                return false;\r
+            }\r
+            scrollView[thisView] = p_StopWatchRecordCycleToLimitView->InitStopWatchRecordCycleToLimitView();\r
+            container_->Add(scrollView[thisView]);\r
+        }\r
+        return true;\r
+    }\r
+\r
+    // 切换到秒表到达最大时间计时视图\r
+    bool MainStopWatchView::ChangeMainStopWatchRecordTimeLimit(int16_t thisView)\r
+    {\r
+        if (scrollView[thisView] == nullptr)\r
+        {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView::ChangeMainStopWatchRecordTimeLimit");\r
+            p_StopWatchRecordTimeToLimitView = new StopWatchRecordTimeToLimitView();\r
+            if (p_StopWatchRecordTimeToLimitView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainStopWatchView:: new scrollView[%d] fail", thisView);\r
+                return false;\r
+            }\r
+            scrollView[thisView] = p_StopWatchRecordTimeToLimitView->InitStopWatchRecordTimeToLimitView();\r
+            container_->Add(scrollView[thisView]);\r
+        }\r
+        return true;\r
+    }\r
+    /* -------------------------------------------------------------------------- */\r
+    // 1.MainStopWatchViewMapper:结构体定义了一个将视图ID映射到特定成员函数指针的映射表。\r
+    struct MainStopWatchViewMapper\r
+    {\r
+        const int16_t viewId;\r
+        bool (MainStopWatchView::*func)(int16_t thisView);\r
+    };\r
+\r
+    // 2.ViewMapper[] 是一个静态的视图映射数组,将视图ID与MainStopWatchView类中的特定成员函数指针进行了绑定。\r
+    static const MainStopWatchViewMapper ViewMapper[] =\r
+        {\r
+            {MAIN_STOPWATCH, &MainStopWatchView::ChangeMainStopWatch},\r
+            {STOPWATCH_RECORD_CYCLE_TO_LIMIT, &MainStopWatchView::ChangeStopWatchRecordCycleLimit},\r
+            {STOPWATCH_RECORD_TIME_TO_LIMIT, &MainStopWatchView::ChangeMainStopWatchRecordTimeLimit}};\r
+\r
+    // 3.根据传入的interface参数执行相应视图ID关联的成员函数。\r
+    bool MainStopWatchView::ClickFunc(int16_t interface)\r
+    {\r
+        int funcSize = sizeof(ViewMapper) / sizeof(ViewMapper[0]);\r
+        for (int i = 0; i < funcSize; i++)\r
+        {\r
+            if (interface == ViewMapper[i].viewId)\r
+            {\r
+                bool jug = (this->*(ViewMapper[i].func))(interface);\r
+                if (jug == false)\r
+                {\r
+                    return false;\r
+                }\r
+                return true;\r
+            }\r
+        }\r
+        return false;\r
+    }\r
+\r
+    // 4.切换视图\r
+    void MainStopWatchView::ChangeView(int16_t hideView, int16_t showView)\r
+    {\r
+        if (hideView > STOPWATCH_MAXVIEWID)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainStopWatchView:: StopWatchViewId Overstep ones bounds");\r
+            return;\r
+        }\r
+        scrollView[hideView]->SetVisible(false);\r
+        ClickFunc(showView);\r
+        scrollView[showView]->SetVisible(true);\r
+        Draw();\r
+    }\r
+    /* -------------------------------------------------------------------------- */\r
+    // 初始化秒表主视图\r
+    void MainStopWatchView::InitMainStopWatchView()\r
+    {\r
+        if (scrollView[MAIN_STOPWATCH] == nullptr)\r
+        {\r
+            scrollView[MAIN_STOPWATCH] = new UIScrollView();\r
+        }\r
+        scrollView[MAIN_STOPWATCH]->SetPosition(0, 0);\r
+        scrollView[MAIN_STOPWATCH]->Resize(466, 466);\r
+        scrollView[MAIN_STOPWATCH]->SetViewId("scrollView1");\r
+        scrollView[MAIN_STOPWATCH]->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        container_->Add(scrollView[MAIN_STOPWATCH]);\r
+        scrollView[MAIN_STOPWATCH]->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (stopWatchlabel == nullptr)\r
+        {\r
+            stopWatchlabel = new UILabel();\r
+        }\r
+        stopWatchlabel->SetPosition(203, 52);\r
+        stopWatchlabel->Resize(60, 35);\r
+        stopWatchlabel->SetViewId("label1");\r
+        stopWatchlabel->SetStyle(STYLE_TEXT_FONT, 30);\r
+        stopWatchlabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        stopWatchlabel->SetText("秒表");\r
+        stopWatchlabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        stopWatchlabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        stopWatchlabel->SetRollSpeed(0);\r
+        stopWatchlabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        scrollView[MAIN_STOPWATCH]->Add(stopWatchlabel);\r
+        stopWatchlabel->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (showTimelabel == nullptr)\r
+        {\r
+            showTimelabel = new UILabel();\r
+        }\r
+        showTimelabel->SetPosition(63, 160);\r
+        showTimelabel->Resize(200, 60);\r
+        showTimelabel->SetViewId("showTimelabel");\r
+        showTimelabel->SetStyle(STYLE_TEXT_FONT, 80);\r
+        showTimelabel->SetStyle(STYLE_LINE_HEIGHT, 94);\r
+        showTimelabel->SetText("00:00.00");\r
+        showTimelabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        showTimelabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        showTimelabel->SetRollSpeed(0);\r
+        showTimelabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 80);\r
+        scrollView[MAIN_STOPWATCH]->Add(showTimelabel);\r
+        showTimelabel->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (LineImage == nullptr)\r
+        {\r
+            LineImage = new UIImageView();\r
+        }\r
+        LineImage->SetPosition(53, 150);\r
+        char *imageimagesPath = "/user/res/stopwatch/STOPWATCH_LINE.bin";\r
+        LineImage->SetSrc(imageimagesPath);\r
+        scrollView[MAIN_STOPWATCH]->Add(LineImage);\r
+        LineImage->SetVisible(false);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (list == nullptr)\r
+        {\r
+            list = new UIList();\r
+        }\r
+        list->SetPosition(56, 170, 360, 100);\r
+        list->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
+        list->SetReboundSize(30);\r
+        if (listadapter == nullptr)\r
+        {\r
+            listadapter = new TextAdapter();\r
+        }\r
+        listadapter->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28);\r
+        if (listdata == nullptr)\r
+        {\r
+            listdata = new List<const char *>();\r
+        }\r
+        scrollView[MAIN_STOPWATCH]->Add(list);\r
+        list->SetVisible(false);\r
+        /* -------------------------------------------------------------------------- */\r
+        // Add CheckBox to App\r
+        if (PlayOrPausecheckBox == nullptr)\r
+        {\r
+            PlayOrPausecheckBox = new UICheckBox();\r
+        }\r
+        PlayOrPausecheckBox->SetPosition(118, 321);\r
+        PlayOrPausecheckBox->Resize(120, 120);\r
+        PlayOrPausecheckBox->SetViewId(PlayOrPausecheckBoxVIEWID);\r
+        PlayOrPausecheckBox->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+        PlayOrPausecheckBox->SetStyle(STYLE_BORDER_RADIUS, 51);\r
+        PlayOrPausecheckBox->SetImages(checkBox1selectedImg, checkBox1unSelectedImg);\r
+        // Add to scrollView1\r
+        scrollView[MAIN_STOPWATCH]->Add(PlayOrPausecheckBox);\r
+        PlayOrPausecheckBox->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        // Add Button to App\r
+        if (ResetOrMarkbutton == nullptr)\r
+        {\r
+            ResetOrMarkbutton = new UIButton();\r
+        }\r
+        ResetOrMarkbutton->SetPosition(256, 333);\r
+        ResetOrMarkbutton->Resize(100, 100);\r
+        ResetOrMarkbutton->SetViewId(ResetOrMarkButton_RESET1_VIEWID);\r
+        ResetOrMarkbutton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+        ResetOrMarkbutton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+        ResetOrMarkbutton->SetImageSrc(ResetOrMarkButtonImg_Reset1, nullptr);\r
+        ResetOrMarkbutton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED);\r
+        ResetOrMarkbutton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+        ResetOrMarkbutton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+        scrollView[MAIN_STOPWATCH]->Add(ResetOrMarkbutton);\r
+        ResetOrMarkbutton->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        MainStopWatchPresenter::GetInstance()->SetCheckBoxAndButton(PlayOrPausecheckBox, ResetOrMarkbutton);\r
+        MainStopWatchPresenter::GetInstance()->SetLable(stopWatchlabel, showTimelabel);\r
+        MainStopWatchPresenter::GetInstance()->SetImage(LineImage);\r
+        MainStopWatchPresenter::GetInstance()->SetList(list, listadapter, listdata);\r
+        // Add the CallBack about events\r
+        PlayOrPausecheckBoxChangeListener = static_cast<UICheckBox::OnChangeListener *>(MainStopWatchPresenter::GetInstance());\r
+        PlayOrPausecheckBox->SetOnChangeListener(PlayOrPausecheckBoxChangeListener);\r
+        ResetOrMarkbuttonClick = static_cast<UIView::OnClickListener *>(MainStopWatchPresenter::GetInstance());\r
+        ResetOrMarkbutton->SetOnClickListener(ResetOrMarkbuttonClick);\r
+    }\r
+\r
+    void MainStopWatchView::DeInitView()\r
+    {\r
+        if (stopWatchlabel != nullptr)\r
+        {\r
+            delete stopWatchlabel;\r
+            stopWatchlabel = nullptr;\r
+        }\r
+        if (showTimelabel != nullptr)\r
+        {\r
+            delete showTimelabel;\r
+            showTimelabel = nullptr;\r
+        }\r
+        if (PlayOrPausecheckBox != nullptr)\r
+        {\r
+            delete PlayOrPausecheckBox;\r
+            PlayOrPausecheckBox = nullptr;\r
+        }\r
+        if (ResetOrMarkbutton != nullptr)\r
+        {\r
+            delete ResetOrMarkbutton;\r
+            ResetOrMarkbutton = nullptr;\r
+        }\r
+        if (LineImage != nullptr)\r
+        {\r
+            delete LineImage;\r
+            LineImage = nullptr;\r
+        }\r
+        if (list != nullptr)\r
+        {\r
+            delete list;\r
+            list = nullptr;\r
+        }\r
+        if (listadapter != nullptr)\r
+        {\r
+            delete listadapter;\r
+            listadapter = nullptr;\r
+        }\r
+        if (listdata != nullptr)\r
+        {\r
+            listdata->Clear();\r
+            delete listdata;\r
+            listdata = nullptr;\r
+        }\r
+        if (draglistener != nullptr)\r
+        {\r
+            delete draglistener;\r
+            draglistener = nullptr;\r
+        }\r
+        if (PlayOrPausecheckBoxChangeListener != nullptr)\r
+        {\r
+            delete PlayOrPausecheckBoxChangeListener;\r
+            PlayOrPausecheckBoxChangeListener = nullptr;\r
+        }\r
+        if (ResetOrMarkbuttonClick != nullptr)\r
+        {\r
+            delete ResetOrMarkbuttonClick;\r
+            ResetOrMarkbuttonClick = nullptr;\r
+        }\r
+        if (scrollView[MAIN_STOPWATCH] != nullptr)\r
+        {\r
+            delete scrollView[MAIN_STOPWATCH];\r
+            scrollView[MAIN_STOPWATCH] = nullptr;\r
+        }\r
+        if (container_ != nullptr)\r
+        {\r
+            container_->RemoveAll();\r
+            delete container_;\r
+            container_ = nullptr;\r
+        }\r
+    }\r
+    void MainStopWatchView::PreLoad(void)\r
+    {\r
+        if (!viewInitStatus)\r
+        {\r
+            InitMainStopWatchView();\r
+            viewInitStatus = true;\r
+        }\r
+    }\r
+    void MainStopWatchView::OnStart()\r
+    {\r
+        // container_容器属性 new\r
+        container_ = new UIViewGroup();\r
+        if (container_ == nullptr)\r
+        {\r
+            return;\r
+        }\r
+        // container_容器属性 扩展\r
+        container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        draglistener = static_cast<UIView::OnDragListener *>(MainStopWatchPresenter::GetInstance());\r
+        if (draglistener == nullptr)\r
+        {\r
+            return;\r
+        }\r
+        container_->SetOnDragListener(draglistener);\r
+        container_->SetTouchable(true);\r
+        container_->SetDraggable(true);\r
+        PreLoad();\r
+        RootView::GetInstance()->Add(container_);\r
+        // 增加按键监听\r
+        RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::MainStopWatchPresenter::GetInstance();\r
+        RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
+        RootView::GetInstance()->SetIntercept(true);\r
+    }\r
+\r
+    void MainStopWatchView::OnSetUpView()\r
+    {\r
+\r
+        View<MainStopWatchPresenter>::OnSetUpView();\r
+        Draw();\r
+    }\r
+\r
+    void MainStopWatchView::OnTearDownView()\r
+    {\r
+\r
+        View<MainStopWatchPresenter>::OnTearDownView();\r
+        return;\r
+    }\r
+\r
+    void MainStopWatchView::OnStop()\r
+    {\r
+\r
+        View<MainStopWatchPresenter>::OnStop();\r
+         RootView::GetInstance()->ClearOnKeyActListener();\r
+        RootView::GetInstance()->RemoveAll();\r
+        return;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/StopWatchModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/StopWatchModel.cpp
new file mode 100644 (file)
index 0000000..bb4f2be
--- /dev/null
@@ -0,0 +1,21 @@
+#include "stopwatch/include/StopWatchModel.h"\r
+#include "cmsis_os2.h"\r
+#include "cmsis_os.h"\r
+\r
+namespace OHOS\r
+{\r
+    int StopWatchModel::oneDaySec = 86400; // 一天的秒数\r
+    int StopWatchModel::oneHourSec = 3600; // 一个小时的秒数\r
+    int StopWatchModel::oneMinuteSec = 60; // 一分钟秒数\r
+\r
+    std::shared_ptr<StopWatchModel> StopWatchModel::GetInstance() // shared_ptr:当没有引用指向这个实例时会自动释放内存\r
+    {\r
+        static std::shared_ptr<StopWatchModel> instance(new StopWatchModel());\r
+        return instance;\r
+    }\r
+\r
+    /* 时间显示 */\r
+    char *StopWatchModel::DisplayMotionDuration()\r
+    {\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/StopWatchRecordCycleToLimitView.cpp b/code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/StopWatchRecordCycleToLimitView.cpp
new file mode 100644 (file)
index 0000000..24318e8
--- /dev/null
@@ -0,0 +1,146 @@
+#include "stopwatch/include/StopWatchRecordCycleToLimitView.h"\r
+#include "stopwatch/include/MainStopWatchPresenter.h"\r
+/*弹窗视图:到达最高圈数99时弹出*/\r
+namespace OHOS\r
+{\r
+\r
+    static StopWatchRecordCycleToLimitView *g_pStopWatchRecordCycleToLimitView{nullptr};\r
+\r
+    StopWatchRecordCycleToLimitView::StopWatchRecordCycleToLimitView()\r
+    {\r
+\r
+        g_pStopWatchRecordCycleToLimitView = this;\r
+    }\r
+\r
+    StopWatchRecordCycleToLimitView::~StopWatchRecordCycleToLimitView()\r
+    {\r
+        if (viewInitStatus == true)\r
+        {\r
+            DeInitView();\r
+        }\r
+        g_pStopWatchRecordCycleToLimitView = nullptr;\r
+    }\r
+\r
+    StopWatchRecordCycleToLimitView *StopWatchRecordCycleToLimitView::GetInstance()\r
+    {\r
+\r
+        return g_pStopWatchRecordCycleToLimitView;\r
+    }\r
+    // 初始化秒表到达最高圈数时弹出的视图\r
+    UIScrollView *StopWatchRecordCycleToLimitView::InitStopWatchRecordCycleToLimitView()\r
+    {\r
+        if (scrollView1_ == nullptr)\r
+        {\r
+            scrollView1_ = new UIScrollView();\r
+        }\r
+        scrollView1_->SetPosition(0, 0);\r
+        scrollView1_->Resize(466, 466);\r
+        scrollView1_->SetViewId("scrollView1");\r
+        scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        scrollView1_->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (label1_ == nullptr)\r
+        {\r
+            label1_ = new UILabel();\r
+        }\r
+        label1_->SetPosition(203, 52);\r
+        label1_->Resize(60, 35);\r
+        label1_->SetViewId("label1");\r
+        label1_->SetStyle(STYLE_TEXT_FONT, 30);\r
+        label1_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        label1_->SetText("秒表");\r
+        label1_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label1_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label1_->SetRollSpeed(0);\r
+        label1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        scrollView1_->Add(label1_);\r
+        label1_->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (image1_ == nullptr)\r
+        {\r
+            image1_ = new UIImageView();\r
+        }\r
+        image1_->SetPosition(193, 121);\r
+        image1_->Resize(100, 100);\r
+        image1_->SetViewId("image1");\r
+        image1_->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+        char *image1imagesPath = "/user/res/countdown/COUNTDOWN_ATTENTION.bin";\r
+        image1_->SetSrc(image1imagesPath);\r
+        scrollView1_->Add(image1_);\r
+        image1_->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        // Add Label to App\r
+        if (label3_ == nullptr)\r
+        {\r
+            label3_ = new UILabel();\r
+        }\r
+        label3_->SetPosition(83, 253);\r
+        label3_->Resize(300, 35);\r
+        label3_->SetViewId("label3");\r
+        label3_->SetStyle(STYLE_TEXT_FONT, 30);\r
+        label3_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        label3_->SetText("当前已达到了最高圈数");\r
+        label3_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label3_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label3_->SetRollSpeed(0);\r
+        label3_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        // Add to scrollView1\r
+        scrollView1_->Add(label3_);\r
+        label3_->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        // Add Button to App\r
+        if (button1_ == nullptr)\r
+        {\r
+            button1_ = new UIButton();\r
+        }\r
+        button1_->SetPosition(0, 366);\r
+        button1_->Resize(466, 100);\r
+        button1_->SetViewId(CycleToLimitReturnButton_VIEWID);\r
+        button1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+        button1_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+        char *button1defaultImgSrc = "/user/res/countdown/COUNTDOWN_BUTTON.bin";\r
+        button1_->SetImageSrc(button1defaultImgSrc, nullptr);\r
+        button1_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED);\r
+        button1_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+        button1_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+\r
+        // Add the CallBack about events\r
+        UIView::OnClickListener *button1Click = static_cast<UIView::OnClickListener *>(MainStopWatchPresenter::GetInstance());\r
+        button1_->SetOnClickListener(button1Click);\r
+        // Add to scrollView1\r
+        scrollView1_->Add(button1_);\r
+        button1_->SetVisible(true);\r
+        viewInitStatus == true;\r
+        return scrollView1_;\r
+    }\r
+\r
+    void StopWatchRecordCycleToLimitView::DeInitView()\r
+    {\r
+        if (scrollView1_ != nullptr)\r
+        {\r
+            scrollView1_->RemoveAll();\r
+            delete scrollView1_;\r
+            scrollView1_ = nullptr;\r
+        }\r
+        if (label1_ != nullptr)\r
+        {\r
+            delete label1_;\r
+            label1_ = nullptr;\r
+        }\r
+        if (image1_ != nullptr)\r
+        {\r
+            delete image1_;\r
+            image1_ = nullptr;\r
+        }\r
+        if (label3_ != nullptr)\r
+        {\r
+            delete label3_;\r
+            label3_ = nullptr;\r
+        }\r
+        if (button1_ != nullptr)\r
+        {\r
+            delete button1_;\r
+            button1_ = nullptr;\r
+        }\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/StopWatchRecordTimeToLimitView.cpp b/code/sdk/application/wearable/fd230app/nativeui/stopwatch/src/StopWatchRecordTimeToLimitView.cpp
new file mode 100644 (file)
index 0000000..eaf3cb6
--- /dev/null
@@ -0,0 +1,147 @@
+#include "stopwatch/include/StopWatchRecordTimeToLimitView.h"\r
+#include "stopwatch/include/MainStopWatchPresenter.h"\r
+#include "UiConfig.h"\r
+\r
+/*弹窗视图:到达最高时间99:59.99时弹出*/\r
+namespace OHOS\r
+{\r
+\r
+    static StopWatchRecordTimeToLimitView *g_pStopWatchRecordTimeToLimitView{nullptr};\r
+\r
+    StopWatchRecordTimeToLimitView::StopWatchRecordTimeToLimitView()\r
+    {\r
+\r
+        g_pStopWatchRecordTimeToLimitView = this;\r
+    }\r
+\r
+    StopWatchRecordTimeToLimitView::~StopWatchRecordTimeToLimitView()\r
+    {\r
+        if (viewInitStatus == true)\r
+        {\r
+            DeInitView();\r
+        }\r
+        g_pStopWatchRecordTimeToLimitView = nullptr;\r
+    }\r
+\r
+    StopWatchRecordTimeToLimitView *StopWatchRecordTimeToLimitView::GetInstance()\r
+    {\r
+\r
+        return g_pStopWatchRecordTimeToLimitView;\r
+    }\r
+\r
+    UIScrollView *StopWatchRecordTimeToLimitView::InitStopWatchRecordTimeToLimitView()\r
+    {\r
+        if (scrollView1_ == nullptr)\r
+        {\r
+            scrollView1_ = new UIScrollView();\r
+        }\r
+        scrollView1_->SetPosition(0, 0);\r
+        scrollView1_->Resize(466, 466);\r
+        scrollView1_->SetViewId("scrollView1");\r
+        scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        scrollView1_->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (label1_ == nullptr)\r
+        {\r
+            label1_ = new UILabel();\r
+        }\r
+        label1_->SetPosition(203, 52);\r
+        label1_->Resize(60, 35);\r
+        label1_->SetViewId("label1");\r
+        label1_->SetStyle(STYLE_TEXT_FONT, 30);\r
+        label1_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        label1_->SetText("秒表");\r
+        label1_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label1_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label1_->SetRollSpeed(0);\r
+        label1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        scrollView1_->Add(label1_);\r
+        label1_->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (image1_ == nullptr)\r
+        {\r
+            image1_ = new UIImageView();\r
+        }\r
+        image1_->SetPosition(193, 121);\r
+        image1_->Resize(100, 100);\r
+        image1_->SetViewId("image1");\r
+        image1_->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+        char *image1imagesPath = "/user/res/countdown/COUNTDOWN_ATTENTION.bin";\r
+        image1_->SetSrc(image1imagesPath);\r
+        scrollView1_->Add(image1_);\r
+        image1_->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        // Add Label to App\r
+        if (label3_ == nullptr)\r
+        {\r
+            label3_ = new UILabel();\r
+        }\r
+        label3_->SetPosition(53, 235);\r
+        label3_->Resize(300, 35);\r
+        label3_->SetViewId("label3");\r
+        label3_->SetStyle(STYLE_TEXT_FONT, 30);\r
+        label3_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        label3_->SetText("当前已达到了最长时间\n表秒自动暂停,请重新开始");\r
+        label3_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label3_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label3_->SetRollSpeed(0);\r
+        label3_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        // Add to scrollView1\r
+        scrollView1_->Add(label3_);\r
+        label3_->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        // Add Button to App\r
+        if (button1_ == nullptr)\r
+        {\r
+            button1_ = new UIButton();\r
+        }\r
+        button1_->SetPosition(0, 366);\r
+        button1_->Resize(466, 100);\r
+        button1_->SetViewId(TimeToLimitReturnButton_VIEWID);\r
+        button1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+        button1_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+        char *button1defaultImgSrc = "/user/res/countdown/COUNTDOWN_BUTTON.bin";\r
+        button1_->SetImageSrc(button1defaultImgSrc, nullptr);\r
+        button1_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED);\r
+        button1_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+        button1_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+        // Add the CallBack about events\r
+        UIView::OnClickListener *button1Click = static_cast<UIView::OnClickListener *>(MainStopWatchPresenter::GetInstance());\r
+        button1_->SetOnClickListener(button1Click);\r
+        // Add to scrollView1\r
+        scrollView1_->Add(button1_);\r
+        button1_->SetVisible(true);\r
+        viewInitStatus = true;\r
+        return scrollView1_;\r
+    }\r
+\r
+    void StopWatchRecordTimeToLimitView::DeInitView()\r
+    {\r
+        if (scrollView1_ != nullptr)\r
+        {\r
+            scrollView1_->RemoveAll();\r
+            delete scrollView1_;\r
+            scrollView1_ = nullptr;\r
+        }\r
+        if (label1_ != nullptr)\r
+        {\r
+            delete label1_;\r
+            label1_ = nullptr;\r
+        }\r
+        if (image1_ != nullptr)\r
+        {\r
+            delete image1_;\r
+            image1_ = nullptr;\r
+        }\r
+        if (label3_ != nullptr)\r
+        {\r
+            delete label3_;\r
+            label3_ = nullptr;\r
+        }\r
+        if (button1_ != nullptr)\r
+        {\r
+            delete button1_;\r
+            button1_ = nullptr;\r
+        }\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_END.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_END.bin
new file mode 100644 (file)
index 0000000..85ed573
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_END.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_FIVE_MINUTE.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_FIVE_MINUTE.bin
new file mode 100644 (file)
index 0000000..7dd2cf8
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_FIVE_MINUTE.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_ONE_MINUTE.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_ONE_MINUTE.bin
new file mode 100644 (file)
index 0000000..d0efbc5
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_ONE_MINUTE.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_PAUSE.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_PAUSE.bin
new file mode 100644 (file)
index 0000000..87c1874
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_PAUSE.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_PLAY.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_PLAY.bin
new file mode 100644 (file)
index 0000000..97b64f8
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_PLAY.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_RESET.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_RESET.bin
new file mode 100644 (file)
index 0000000..2d3105e
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_RESET.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_TEN_MINUTE.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_TEN_MINUTE.bin
new file mode 100644 (file)
index 0000000..7a2e102
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_TEN_MINUTE.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_THIRTY_MINUTE.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_THIRTY_MINUTE.bin
new file mode 100644 (file)
index 0000000..ba69e92
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_THIRTY_MINUTE.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_VECTOR.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_VECTOR.bin
new file mode 100644 (file)
index 0000000..40be9d1
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWM_VECTOR.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWN_ATTENTION.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWN_ATTENTION.bin
new file mode 100644 (file)
index 0000000..b8120b8
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWN_ATTENTION.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWN_BUTTON.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWN_BUTTON.bin
new file mode 100644 (file)
index 0000000..5f89b63
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWN_BUTTON.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWN_COLONE.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWN_COLONE.bin
new file mode 100644 (file)
index 0000000..f3d90d9
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/countdown/COUNTDOWN_COLONE.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATCH_LINE.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATCH_LINE.bin
new file mode 100644 (file)
index 0000000..28019b0
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATCH_LINE.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATCH_MARK.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATCH_MARK.bin
new file mode 100644 (file)
index 0000000..482ef15
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATCH_MARK.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATH_RESET1.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATH_RESET1.bin
new file mode 100644 (file)
index 0000000..66a43d7
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATH_RESET1.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATH_RESET2.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATH_RESET2.bin
new file mode 100644 (file)
index 0000000..2730fd9
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/stopwatch/STOPWATH_RESET2.bin differ