表盘:增加步数目标,卡路里目标对应model
authorCaisking <3449750381@qq.com>
Tue, 24 Dec 2024 13:17:45 +0000 (21:17 +0800)
committerCaisking <3449750381@qq.com>
Tue, 24 Dec 2024 13:17:45 +0000 (21:17 +0800)
20 files changed:
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativeui/goal/include/goalmodel.h
code/sdk/application/wearable/fd230app/nativeui/goal/src/goalmodel.cpp
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialBoxProgressView.h
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialDataBase.h
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelKcalgoal.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelKcalgoalStr.h
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelKcalgoalValue.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelStepgoalStr.h
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelStepgoalValue.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialArcProgressView.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelCalorie.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelKcalgoal.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelKcalgoalStr.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelKcalgoalValue.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelStepgoal.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelStepgoalStr.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelStepgoalValue.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelSteps.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinParser.cpp

index 1df338a..94660bd 100644 (file)
@@ -189,6 +189,12 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelWeekNum.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelDateWeekStr.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelStepgoal.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelStepgoalStr.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelStepgoalValue.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelKcalgoal.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelKcalgoalStr.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelKcalgoalValue.cpp
+
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelSecondMapper.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelPowerMapper.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelPowerStr.cpp
index cfcbea1..bbe14df 100644 (file)
@@ -47,6 +47,7 @@ namespace OHOS
         void updata();
         void GoalModelInitdata();
         uint32_t getstepgoaldata();
+        uint32_t getKcalgoaldata();
 
         uint8_t get_step_goal_show()
         {
index 3f4f0d2..1a62b58 100644 (file)
@@ -75,6 +75,11 @@ namespace OHOS
    {
       return step_goal;
    }
+
+   uint32_t GoalModel::getKcalgoaldata()
+   {
+      return calories_goal;
+   }
   
    std::string GoalModel::getstepGoal()
    {
index b1d2c22..25bfeeb 100644 (file)
@@ -10,6 +10,8 @@ enum DialBoxDataType {
   BATTERY_LEVEL = 1,
   // 步数目标
   STEP_TARGET = 2,
+  // 卡路里
+  CALORIE_TARGET = 3,
 };
 namespace OHOS {
 class DialBoxProgressView : public UIBoxProgress, public DialView {
index 0e1e5cb..0774736 100644 (file)
@@ -38,6 +38,7 @@ enum class DialDataType {
   DATA_TYPE_STEPS_GOAL,       // 运动步数目标
   DATA_TYPE_SECOND_MAPPER,    // 秒映射
   DATA_TYPE_POWER_MAPPER,     // 电量映射
+  DATA_TYPE_CALORIE_GOAL,     // 运动卡路里目标
   DATA_TYPE_STEPS_GOAL_INT,   // 运动步数百分比
   DATA_TYPE_CALORIE_GOAL_INT, // 运动卡路里目标百分比
 
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelKcalgoal.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelKcalgoal.h
new file mode 100644 (file)
index 0000000..c901d94
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelKcalgoal
+ * Author:
+ * Create: 2023-12
+ */
+
+#ifndef DIAL_MODEL_Kcalgoal_H
+#define DIAL_MODEL_Kcalgoal_H
+
+#include "DialBaseModel.h"
+
+namespace OHOS {
+class DialModelKcalgoal : public DialBaseModel {
+public:
+  DialModelKcalgoal() {}
+  ~DialModelKcalgoal() override {}
+  static DialModelKcalgoal *GetInstance() {
+    static DialModelKcalgoal instance;
+    return &instance;
+  }
+  bool GetDialFloatData(DialDataType &type, float &out) override;
+  void UpdateKcalgoal(uint32_t Kcalgoal);
+
+private:
+  float Kcalgoal_ = 0; // 11520.0: default Kcal value as reference
+};
+} // namespace OHOS
+#endif
index ec3a414..4b3594f 100644 (file)
@@ -1,29 +1,31 @@
 /*
  * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
- * Description: DialModelCaloriegoal
+ * Description: DialModelKcalgoalStr
  * Author:
  * Create: 2023-12
  */
 
-#ifndef DIAL_MODEL_Caloriegoal_H
-#define DIAL_MODEL_Caloriegoal_H
+#ifndef DIAL_MODEL_KcalgoalStr_H
+#define DIAL_MODEL_KcalgoalStr_H
 
 #include "DialBaseModel.h"
 
 namespace OHOS {
-class DialModelCaloriegoal : public DialBaseModel {
+class DialModelKcalgoalStr : public DialBaseModel {
 public:
-  DialModelCaloriegoal() {}
-  ~DialModelCaloriegoal() override {}
-  static DialModelCaloriegoal *GetInstance() {
-    static DialModelCaloriegoal instance;
+  DialModelKcalgoalStr() {}
+  ~DialModelKcalgoalStr() override {}
+  static DialModelKcalgoalStr *GetInstance() {
+    static DialModelKcalgoalStr instance;
     return &instance;
   }
-  bool GetDialFloatData(DialDataType &type, float &out) override;
-  void UpdateCaloriegoal(uint32_t Caloriegoal);
+  bool GetDialTextData(DialDataType &type, std::string *&out,
+                       int16_t &strNum) override;
+  
+  void UpdateKcalgoalStr(uint32_t KcalgoalStr);
 
 private:
-  float Caloriegoal_ = 0; // 11520.0: default Calorie value as reference
+  std::string KcalgoalStr_ = "0%";
 };
 } // namespace OHOS
 #endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelKcalgoalValue.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelKcalgoalValue.h
new file mode 100644 (file)
index 0000000..cbef774
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelKcalgoalValue
+ * Author:
+ * Create: 2023-12
+ */
+
+#ifndef DIAL_MODEL_KcalgoalValue_H
+#define DIAL_MODEL_KcalgoalValue_H
+
+#include "DialBaseModel.h"
+
+namespace OHOS {
+class DialModelKcalgoalValue : public DialBaseModel {
+public:
+  DialModelKcalgoalValue() {}
+  ~DialModelKcalgoalValue() override {}
+  static DialModelKcalgoalValue *GetInstance() {
+    static DialModelKcalgoalValue instance;
+    return &instance;
+  }
+  bool GetDialFloatData(DialDataType &type, float &out) override;
+  void UpdateKcalgoalValue(uint32_t KcalgoalValue);
+
+private:
+  float KcalgoalValue_ = 0; // 11520.0: default Kcal value as reference
+};
+} // namespace OHOS
+#endif
index e69de29..29b7d74 100644 (file)
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelStepgoalStr
+ * Author:
+ * Create: 2023-12
+ */
+
+#ifndef DIAL_MODEL_StepgoalStr_H
+#define DIAL_MODEL_StepgoalStr_H
+
+#include "DialBaseModel.h"
+
+namespace OHOS {
+class DialModelStepgoalStr : public DialBaseModel {
+public:
+  DialModelStepgoalStr() {}
+  ~DialModelStepgoalStr() override {}
+  static DialModelStepgoalStr *GetInstance() {
+    static DialModelStepgoalStr instance;
+    return &instance;
+  }
+  bool GetDialTextData(DialDataType &type, std::string *&out,
+                       int16_t &strNum) override;
+  
+  void UpdateStepgoalStr(uint32_t StepgoalStr);
+
+private:
+  std::string StepgoalStr_ = "0%";
+};
+} // namespace OHOS
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelStepgoalValue.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelStepgoalValue.h
new file mode 100644 (file)
index 0000000..2ec1b3c
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelStepgoalValue
+ * Author:
+ * Create: 2023-12
+ */
+
+#ifndef DIAL_MODEL_StepgoalValue_H
+#define DIAL_MODEL_StepgoalValue_H
+
+#include "DialBaseModel.h"
+
+namespace OHOS {
+class DialModelStepgoalValue : public DialBaseModel {
+public:
+  DialModelStepgoalValue() {}
+  ~DialModelStepgoalValue() override {}
+  static DialModelStepgoalValue *GetInstance() {
+    static DialModelStepgoalValue instance;
+    return &instance;
+  }
+  bool GetDialFloatData(DialDataType &type, float &out) override;
+  void UpdateStepgoalValue(uint32_t StepgoalValue);
+
+private:
+  float stepgoalValue_ = 0; // 11520.0: default Step value as reference
+};
+} // namespace OHOS
+#endif
index 67dadd4..e6b4418 100644 (file)
@@ -13,8 +13,8 @@ DialArcProgressView::~DialArcProgressView(void)
 {
 }
 
-void DialArcProgressView::HandleFloatData(float data)
-{
+void DialArcProgressView::HandleFloatData(float data) {
+    printf("HandleFloatData: %f\n", data);
     float ratio = data;
     if (ratio > 1.0f) {
         ratio = 1.0f;
index e3df568..3cf5541 100644 (file)
@@ -2,13 +2,15 @@
  * @Date: 2024-07-31 18:33:13
  * @LastEditors: Caisking 3449750381@qq.com
  * @LastEditTime: 2024-08-02 18:54:18
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelCalorie.cpp
+ * @FilePath:
+ * /FD230/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelCalorie.cpp
  */
 /***
  * @Date: 2024-04-15 10:55:58
  * @LastEditors: Caisking 3449750381@qq.com
  * @LastEditTime: 2024-07-31 18:36:06
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelCalorie.cpp
+ * @FilePath:
+ * /FD230/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelCalorie.cpp
  */
 /*
  * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
  * Create: 2023-12
  */
 
-#include "RegisterDialModel.h"
 #include "DialModelCalorie.h"
+#include "RegisterDialModel.h"
 #include "wearable_log.h"
-REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_CALORIE, OHOS::DialModelCalorie::GetInstance());
+#include "goal/include/goalmodel.h"
+
+REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_CALORIE,
+                   OHOS::DialModelCalorie::GetInstance());
 
 #include "cywee_hal.h"
 extern "C" int get_calories_data();
 
-namespace OHOS
-{
-    bool DialModelCalorie::GetDialFloatData(DialDataType &type, float &out)
-    {
-        (void)type;
-        if (calorie_ == 0)
-        {
-            calorie_ = get_calories_data();
-        }
-        out = calorie_;
-        // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DialModelCalorie %d", calorie_);
-        return true;
-    }
+namespace OHOS {
+bool DialModelCalorie::GetDialFloatData(DialDataType &type, float &out) {
+  (void)type;
+
+  calorie_ = static_cast<float>(GoalModel::GetInstance().show_data_calories_refresh());
+  out = calorie_;
+  // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DialModelCalorie %d", calorie_);
+  return true;
+}
 
-    void DialModelCalorie::UpdateCalorie(int16_t calorie)
-    {
-        // 更新表盘卡路里数据
-        calorie_ = static_cast<float>(calorie);
-        if (onChangeListener_ != nullptr)
-        {
-            onChangeListener_->OnDialFloatDataUpdate(DialDataType::DATA_TYPE_CALORIE, calorie_);
-        }
-    }
+void DialModelCalorie::UpdateCalorie(int16_t calorie) {
+  // 更新表盘卡路里数据
+  calorie_ = static_cast<float>(calorie);
+  if (onChangeListener_ != nullptr) {
+    onChangeListener_->OnDialFloatDataUpdate(DialDataType::DATA_TYPE_CALORIE,
+                                             calorie_);
+  }
 }
+} // namespace OHOS
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelKcalgoal.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelKcalgoal.cpp
new file mode 100644 (file)
index 0000000..c7f66d0
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelKcals
+ * Author:
+ * Create: 2023-12
+ */
+
+#include "DialModelKcalgoal.h"
+#include "DialBoxProgressView.h"
+#include "RegisterDialModel.h"
+#include "goal/include/goalmodel.h"
+
+REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_CALORIE_GOAL,
+                   OHOS::DialModelKcalgoal::GetInstance());
+
+namespace OHOS {
+bool DialModelKcalgoal::GetDialFloatData(DialDataType &type, float &out) {
+  (void)type;
+  uint32_t goal = GoalModel::GetInstance().getKcalgoaldata();
+  uint32_t Kcal_ = GoalModel::GetInstance().show_data_calories_refresh();
+  
+  if (goal > 0) {
+    Kcalgoal_ = (static_cast<float>(Kcal_) / goal) * 100;
+    if (Kcalgoal_ > 100)
+      Kcalgoal_ = 100;
+    Kcalgoal_ = DialBoxProgressView::GetInstance()->ConvertToRequiredFormat(
+        DialBoxDataType::CALORIE_TARGET, Kcalgoal_);
+  } else {
+    Kcalgoal_ = 0;
+  }
+  if (onChangeListener_ != nullptr) {
+    onChangeListener_->OnDialFloatDataUpdate(
+        DialDataType::DATA_TYPE_CALORIE_GOAL, Kcalgoal_);
+  }
+  out = DialBoxProgressView::GetInstance()->ConvertToRequiredFormat(
+      DialBoxDataType::CALORIE_TARGET, Kcalgoal_);
+  return true;
+}
+
+void DialModelKcalgoal::UpdateKcalgoal(uint32_t Kcals) {
+  uint32_t Kcal_ = static_cast<float>(Kcals);
+  uint32_t goal = GoalModel::GetInstance().getKcalgoaldata();
+  if (goal > 0) {
+    Kcalgoal_ = (static_cast<float>(Kcal_) / goal) * 100;
+    if (Kcalgoal_ > 100)
+      Kcalgoal_ = 100;
+    Kcalgoal_ = DialBoxProgressView::GetInstance()->ConvertToRequiredFormat(
+        DialBoxDataType::CALORIE_TARGET, Kcalgoal_);
+  }
+  if (onChangeListener_ != nullptr) {
+    onChangeListener_->OnDialFloatDataUpdate(
+        DialDataType::DATA_TYPE_CALORIE_GOAL, Kcalgoal_);
+  }
+}
+} // namespace OHOS
index e69de29..a5889b3 100644 (file)
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelKcals
+ * Author:
+ * Create: 2023-12
+ */
+
+#include "DialModelKcalgoalStr.h"
+#include "DialBoxProgressView.h"
+#include "RegisterDialModel.h"
+#include "goal/include/goalmodel.h"
+
+REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_CALORIE_GOAL_STR,
+                   OHOS::DialModelKcalgoalStr::GetInstance());
+
+namespace OHOS {
+bool DialModelKcalgoalStr::GetDialTextData(DialDataType &type,
+                                           std::string *&out, int16_t &strNum) {
+  (void)type;
+  uint32_t goal = GoalModel::GetInstance().getKcalgoaldata();
+  uint32_t Kcal_ = GoalModel::GetInstance().show_data_calories_refresh();
+  
+  uint32_t Kcalgoal = 0; //百分比
+  if (goal > 0) {
+    Kcalgoal = (static_cast<float>(Kcal_) / goal) * 100;
+    if (Kcalgoal > 100)
+      Kcalgoal = 100;
+  }
+  KcalgoalStr_.clear();
+  KcalgoalStr_ = std::to_string(Kcalgoal) + "%"; //百分比字符串
+
+  out = &KcalgoalStr_;
+  strNum = 1;
+  return true;
+}
+
+void DialModelKcalgoalStr::UpdateKcalgoalStr(uint32_t Kcals) {
+  uint32_t Kcal_ = static_cast<float>(Kcals);
+  uint32_t goal = GoalModel::GetInstance().getKcalgoaldata();
+  uint32_t Kcalgoal = 0; //百分比
+  if (goal > 0) {
+    Kcalgoal = (static_cast<float>(Kcal_) / goal) * 100;
+    if (Kcalgoal > 100)
+      Kcalgoal = 100;
+  }
+  KcalgoalStr_.clear();
+  KcalgoalStr_ = std::to_string(Kcalgoal) + "%"; //百分比字符串
+
+  if (onChangeListener_ != nullptr) {
+    onChangeListener_->OnDialTextDataUpdate(
+        DialDataType::DATA_TYPE_CALORIE_GOAL_STR, &KcalgoalStr_,
+        KcalgoalStr_.size());
+  }
+}
+} // namespace OHOS
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelKcalgoalValue.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelKcalgoalValue.cpp
new file mode 100644 (file)
index 0000000..d2f02ec
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelKcals
+ * Author:
+ * Create: 2023-12
+ */
+
+#include "DialModelKcalgoalValue.h"
+#include "DialBoxProgressView.h"
+#include "RegisterDialModel.h"
+#include "goal/include/goalmodel.h"
+
+REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_CALORIE_GOAL_INT,
+                   OHOS::DialModelKcalgoalValue::GetInstance());
+
+namespace OHOS {
+bool DialModelKcalgoalValue::GetDialFloatData(DialDataType &type, float &out) {
+  (void)type;
+  uint32_t goal = GoalModel::GetInstance().getKcalgoaldata();
+  uint32_t Kcal_ = GoalModel::GetInstance().show_data_calories_refresh();
+  if (goal > 0) {
+    KcalgoalValue_ = (static_cast<float>(Kcal_) / static_cast<float>(goal));
+    if (KcalgoalValue_ > 1.0f) {
+      KcalgoalValue_ = 1.0f;
+    }
+  } else {
+    KcalgoalValue_ = 0;
+  }
+  printf(" KcalgoalValue_:%f\n", KcalgoalValue_);
+  out = static_cast<float>(KcalgoalValue_);
+  return true;
+}
+
+void DialModelKcalgoalValue::UpdateKcalgoalValue(uint32_t caloriesInput) {
+  uint32_t goalValue = GoalModel::GetInstance().getKcalgoaldata();
+  if (goalValue > 0) {
+    KcalgoalValue_ =
+        (static_cast<float>(caloriesInput) / static_cast<float>(goalValue));
+    if (KcalgoalValue_ > 1.0f) {
+      KcalgoalValue_ = 1.0f;
+    }
+  } else {
+    KcalgoalValue_ = 0;
+  }
+
+  printf(" KcalgoalValue_:%f\n", KcalgoalValue_);
+
+  if (onChangeListener_) {
+    onChangeListener_->OnDialFloatDataUpdate(
+        DialDataType::DATA_TYPE_CALORIE_GOAL_INT, KcalgoalValue_);
+  }
+}
+} // namespace OHOS
index a07e2a6..12e0ed9 100644 (file)
@@ -16,6 +16,18 @@ REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_STEPS_GOAL,
 namespace OHOS {
 bool DialModelStepgoal::GetDialFloatData(DialDataType &type, float &out) {
   (void)type;
+
+  uint32_t step_ = GoalModel::GetInstance().show_data_step_refresh();
+  uint32_t goal = GoalModel::GetInstance().getstepgoaldata();
+  if (goal > 0) {
+    stepgoal_ = (static_cast<float>(step_) / goal) * 100;
+    if (stepgoal_ > 100)
+      stepgoal_ = 100;
+    stepgoal_ = DialBoxProgressView::GetInstance()->ConvertToRequiredFormat(
+        DialBoxDataType::STEP_TARGET, stepgoal_);
+  } else {
+    stepgoal_ = 0;
+  }
   out = DialBoxProgressView::GetInstance()->ConvertToRequiredFormat(
       DialBoxDataType::STEP_TARGET, stepgoal_);
   return true;
index e69de29..8425232 100644 (file)
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelSteps
+ * Author:
+ * Create: 2023-12
+ */
+
+#include "DialModelStepgoalStr.h"
+#include "DialBoxProgressView.h"
+#include "RegisterDialModel.h"
+#include "goal/include/goalmodel.h"
+
+REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_STEPS_GOAL_STR,
+                   OHOS::DialModelStepgoalStr::GetInstance());
+
+namespace OHOS {
+bool DialModelStepgoalStr::GetDialTextData(DialDataType &type,
+                                           std::string *&out, int16_t &strNum) {
+  (void)type;
+  uint32_t step_ = GoalModel::GetInstance().show_data_step_refresh();
+  uint32_t goal = GoalModel::GetInstance().getstepgoaldata();
+  uint32_t stepgoal = 0; //百分比
+  if (goal > 0) {
+    stepgoal = (static_cast<float>(step_) / goal) * 100;
+    if (stepgoal > 100)
+      stepgoal = 100;
+  }
+  StepgoalStr_.clear();
+  StepgoalStr_ = std::to_string(stepgoal) + "%"; //百分比字符串
+  out = &StepgoalStr_;
+  strNum = 1;
+  return true;
+}
+
+void DialModelStepgoalStr::UpdateStepgoalStr(uint32_t steps) {
+  uint32_t step_ = static_cast<float>(steps);
+  uint32_t goal = GoalModel::GetInstance().getstepgoaldata();
+  uint32_t stepgoal = 0; //百分比
+  if (goal > 0) {
+    stepgoal = (static_cast<float>(step_) / goal) * 100;
+    if (stepgoal > 100)
+      stepgoal = 100;
+  }
+  StepgoalStr_.clear();
+  StepgoalStr_ = std::to_string(stepgoal) + "%"; //百分比字符串
+
+  if (onChangeListener_ != nullptr) {
+    onChangeListener_->OnDialTextDataUpdate(
+        DialDataType::DATA_TYPE_STEPS_GOAL_STR, &StepgoalStr_,
+        StepgoalStr_.size());
+  }
+}
+} // namespace OHOS
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelStepgoalValue.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelStepgoalValue.cpp
new file mode 100644 (file)
index 0000000..0a0ca52
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelSteps
+ * Author:
+ * Create: 2023-12
+ */
+
+#include "DialModelStepgoalValue.h"
+#include "DialBoxProgressView.h"
+#include "RegisterDialModel.h"
+#include "goal/include/goalmodel.h"
+
+REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_STEPS_GOAL_INT,
+                   OHOS::DialModelStepgoalValue::GetInstance());
+
+namespace OHOS {
+bool DialModelStepgoalValue::GetDialFloatData(DialDataType &type, float &out) {
+  (void)type;
+  //更新步数
+  uint32_t goalValue = GoalModel::GetInstance().getstepgoaldata();
+  uint32_t steps = GoalModel::GetInstance().show_data_step_refresh();
+  if (goalValue > 0) {
+    stepgoalValue_ =
+        (static_cast<float>(steps) / static_cast<float>(goalValue));
+    if (stepgoalValue_ > 1.0f)
+      stepgoalValue_ = 1.0;
+  } else {
+    stepgoalValue_ = 0;
+  }
+
+  printf("stepgoalValue_ %f\n", stepgoalValue_);
+  out = static_cast<float>(stepgoalValue_);
+  return true;
+}
+
+void DialModelStepgoalValue::UpdateStepgoalValue(uint32_t steps) {
+  uint32_t goalValue = GoalModel::GetInstance().getstepgoaldata();
+  if (goalValue > 0) {
+    stepgoalValue_ =
+        (static_cast<float>(steps) / static_cast<float>(goalValue));
+    if (stepgoalValue_ > 1.0f)
+      stepgoalValue_ = 1.0;
+  } else {
+    stepgoalValue_ = 0;
+  }
+  printf("steps %d goalValue %d stepgoalValue_ %f\n", steps, goalValue,
+         stepgoalValue_);
+  if (onChangeListener_ != nullptr) {
+    //更新百分比 实际值
+    onChangeListener_->OnDialFloatDataUpdate(
+        DialDataType::DATA_TYPE_STEPS_GOAL_INT, stepgoalValue_);
+  }
+}
+} // namespace OHOS
index 4fd12b9..c54ebec 100644 (file)
@@ -5,17 +5,20 @@
  * Create: 2023-12
  */
 
-#include "RegisterDialModel.h"
 #include "DialModelSteps.h"
+#include "RegisterDialModel.h"
+#include "goal/include/goalmodel.h"
 
-REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_STEPS, OHOS::DialModelSteps::GetInstance());
+REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_STEPS,
+                   OHOS::DialModelSteps::GetInstance());
 
 namespace OHOS {
-bool DialModelSteps::GetDialFloatData(DialDataType& type, float& out)
-{
-    (void)type;
-    out = steps_;
-    return true;
+bool DialModelSteps::GetDialFloatData(DialDataType &type, float &out) {
+  (void)type;
+  //更新步数
+  steps_ = GoalModel::GetInstance().show_data_step_refresh();
+  out = steps_;
+  return true;
 }
 
 void DialModelSteps::UpdateSteps(uint32_t steps) {
@@ -25,4 +28,4 @@ void DialModelSteps::UpdateSteps(uint32_t steps) {
                                              steps_);
   }
 }
-}
+} // namespace OHOS
index 63d6fbf..c78db89 100644 (file)
@@ -542,9 +542,13 @@ int32_t DialBinParser::ParserDialArcProgress(FILE* fp)
     }\r
 \r
     DialArcProgressView* view = new DialArcProgressView();\r
-    view->SetPosition(data->typeData.rect.x, data->typeData.rect.y, data->typeData.rect.w, data->typeData.rect.h);\r
-    view->SetCenterPosition(data->typeData.rect.x + data->typeData.rect.w / 2, // 2: half\r
+    view->SetPosition(data->typeData.rect.x, data->typeData.rect.y,\r
+                      data->typeData.rect.w, data->typeData.rect.h);\r
+    GRAPHIC_LOGE("SetPosition: %d, %d, %d ,%d \n", data->typeData.rect.x , data->typeData.rect.w ,data->typeData.rect.y ,data->typeData.rect.h);\r
+    view->SetCenterPosition(\r
+        data->typeData.rect.x + data->typeData.rect.w / 2,  // 2: half\r
         data->typeData.rect.y + data->typeData.rect.h / 2); // 2: half\r
+    GRAPHIC_LOGE("SetCenterPosition: %d, %d\n", data->typeData.rect.x + data->typeData.rect.w / 2,data->typeData.rect.y + data->typeData.rect.h / 2);\r
     view->SetRadius(data->radius);\r
     view->SetStartAngle(data->startAngle);\r
     view->SetEndAngle(data->endAngle);\r