progressBar_->SetValidHeight(BP_FIRST_DONE_PROGRESS_H);
progressBar_->SetRange(100, 0);
progressBar_->SetValue(BP_FIRST_DONE_PROGRESS_VALUE);
- progressBar_->SetStyle(STYLE_BORDER_RADIUS, 4);
+ progressBar_->SetStyle(STYLE_BORDER_RADIUS, 10);
progressBar_->EnableBackground(true);
progressBar_->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, BP_FIRST_DONE_PROGRESS_BG);
progressBar_->SetBackgroundStyle(STYLE_BACKGROUND_OPA, 0xff);
group_ = new UIViewGroup();
group_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
InitImageView(imageView_, 114, 50, 32, 32, "bp_first_done_image", BLOOD_PATH_FIRST_DONE);
- InitLabel(titleLabel_, 114 + 32 + 8, 50, 198, 35, "bp_first_done_title", "第1轮校准完成",
+ InitLabel(titleLabel_, 114 + 32 + 8, 50, 230, 35, "bp_first_done_title", "第1轮校准完成",
DEFAULT_VECTOR_FONT_FILENAME, 30);
InitProgressBar();
InitLabel(noteLabel_, 83, 178, 300, 105, "bp_first_done_note",
DEFAULT_VECTOR_FONT_FILENAME, 30);
emptyTitleLabel_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- InitImageView(emptyImage_, 174, 120, 118, 120, "bp_history_empty_image", BP_NO_RECORD_IMAGE);
+ InitImageView(emptyImage_, 174, 120, 80, 80, "bp_history_empty_image", BP_NO_RECORD_IMAGE);
InitUILabel(emptyHintLabel_, 53, 260, 360, 70, "bp_history_empty_hint",
- "完成一次测量后可在这里查看记录", DEFAULT_VECTOR_FONT_FILENAME, 28);
+ "完成一次测量后\n可在这里查看记录", DEFAULT_VECTOR_FONT_FILENAME, 28);
emptyHintLabel_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
emptyHintLabel_->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
InitLabelButton(startMeasureButton_, 93, 330, 280, 90, BP_CLICK_MEASURE, "开始测量", 30);
- startMeasureButton_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff4fc34c);
- startMeasureButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff4fc34c, UIButton::PRESSED);
+ startMeasureButton_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff0176ff);
+ startMeasureButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff0176ff, UIButton::PRESSED);
startMeasureButton_->SetStyle(STYLE_BORDER_RADIUS, 45);
startMeasureButton_->SetOnClickListener(
static_cast<UIView::OnClickListener *>(BPMainPresenter::GetInstance()));
bool BPModel::IsFirstUse() const {
char buf[8] = {0};
int len = UtilsGetValue(BP_KV_DISCLAIMER, buf, sizeof(buf));
- return len <= 0 || buf[0] != '1';
+ if (len < 0) {
+ return true;
+ }
+ return buf[0] != '1';
}
bool BPModel::MarkDisclaimerAccepted() {
- return UtilsSetValue(BP_KV_DISCLAIMER, "1") == 0;
+ if (UtilsSetValue(BP_KV_DISCLAIMER, "1") != 0) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BPModel MarkDisclaimerAccepted kv fail");
+ return false;
+ }
+ return true;
}
bool BPModel::CreateBPDataDirectory() {
static ECGModel *GetInstance();
void LoadData();
+ bool IsFirstUse() const;
+ bool MarkDisclaimerAccepted();
ECGRecord GetLastRecord() const;
bool HasHistory() const;
const std::deque<ECGRecord> &GetHistoryRecords() const;
#define ECG_CLICK_VIEW_ALL "ecg_click_view_all"
#define ECG_CLICK_INSTRUCTION "ecg_click_instruction"
#define ECG_CLICK_INSTRUCTION_BACK "ecg_click_instruction_back"
+#define ECG_CLICK_DISCLAIMER_ACCEPT "ecg_disclaimer_accept"
#define ECG_CLICK_MEASURE "ecg_click_measure"
#define ECG_CLICK_STOP "ecg_click_stop"
#define ECG_CLICK_RETRY "ecg_click_retry"
#include "ecg/include/ECGInstructionView.h"
#include "ecg/include/ECGMainPresenter.h"
+#include "ecg/include/ECGViewClickIds.h"
#include "uicomponents/UIComponents.h"
namespace OHOS {
InitUILabel(noteLabel_, 0, 248, 466, 35, "ecg_disclaimer_note", "如有心脏相关疑虑,请咨询医生",
DEFAULT_VECTOR_FONT_FILENAME, 30);
noteLabel_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- InitLabelButton(agreeButton_, 93, 320, 280, 90, ECG_CLICK_MEASURE, "同意并继续", 26);
+ InitLabelButton(agreeButton_, 93, 320, 280, 90, ECG_CLICK_DISCLAIMER_ACCEPT, "同意并继续", 26);
agreeButton_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff0176ff);
agreeButton_->SetStyle(STYLE_BORDER_RADIUS, 100);
mainView->ChangeView(ECG_INSTRUCTION_VIEW, ECG_ENTRY_VIEW);
return true;
}
+ if (viewId == ECG_CLICK_DISCLAIMER_ACCEPT) {
+ ECGModel::GetInstance()->MarkDisclaimerAccepted();
+ mainView->ChangeView(ECG_INSTRUCTION_VIEW, ECG_ENTRY_VIEW);
+ return true;
+ }
if (viewId == ECG_CLICK_INSTRUCTION) {
mainView->ChangeView(ECG_ENTRY_VIEW, ECG_INSTRUCTION_VIEW, ECG_INSTRUCTION_TYPE_DISCLAIMER);
return true;
return true;
}
if (viewId == ECG_CLICK_MEASURE) {
- if (current == ECG_INSTRUCTION_VIEW &&
- mainView->GetInstructionSubType() == ECG_INSTRUCTION_TYPE_DISCLAIMER) {
- ShowWaitContact(mainView);
- return true;
- }
if (current == ECG_ENTRY_VIEW || current == ECG_HISTORY_VIEW) {
StartMeasureFlow(mainView);
return true;
AddViewToRootContainer(container_);
}
ECGModel::GetInstance()->LoadData();
- ChangeView(MAX_ECGVIEW, ECG_ENTRY_VIEW);
+ if (ECGModel::GetInstance()->IsFirstUse()) {
+ ChangeView(MAX_ECGVIEW, ECG_INSTRUCTION_VIEW, ECG_INSTRUCTION_TYPE_DISCLAIMER);
+ } else {
+ ChangeView(MAX_ECGVIEW, ECG_ENTRY_VIEW);
+ }
RootView::GetInstance()->SetOnKeyActListener(
static_cast<RootView::OnKeyActListener *>(ECGMainPresenter::GetInstance()));
Draw();
#include "ecg/include/ECGModel.h"
+#include "kv_store.h"
#include "securec.h"
#include "wearable_log.h"
#include <ctime>
namespace OHOS {
+namespace {
+static constexpr const char *ECG_KV_DISCLAIMER = "ecg.disclaimer";
+} // namespace
+
ECGModel::ECGModel() { LoadData(); }
ECGModel::~ECGModel() {}
return &instance;
}
+bool ECGModel::IsFirstUse() const {
+ char buf[8] = {0};
+ int len = UtilsGetValue(ECG_KV_DISCLAIMER, buf, sizeof(buf));
+ if (len < 0) {
+ return true;
+ }
+ return buf[0] != '1';
+}
+
+bool ECGModel::MarkDisclaimerAccepted() {
+ if (UtilsSetValue(ECG_KV_DISCLAIMER, "1") != 0) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ECGModel MarkDisclaimerAccepted kv fail");
+ return false;
+ }
+ return true;
+}
+
void ECGModel::LoadData() {
historyRecords_.clear();
time_t now = time(nullptr);