From cd328666ff156238fd7f133a75efb60b703812c8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E7=BD=97=E6=AD=A3yun?= <1732036298@qq.com> Date: Thu, 25 Jan 2024 16:58:30 +0800 Subject: [PATCH] =?utf8?q?=E7=B3=BB=E7=BB=9F=E8=A7=86=E5=9B=BE=E4=BF=AE?= =?utf8?q?=E6=94=B9=EF=BC=8C=E5=88=A0=E9=99=A4=E6=8E=89=E4=B8=8D=E5=BF=85?= =?utf8?q?=E8=A6=81=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativelauncher/include/UiConfig.h | 28 +++---- .../src/FastTrainingAttentionView.cpp | 2 +- .../system/include/SystemAboutTheWatchView.h | 4 +- .../system/include/SystemLanguageView.h | 4 - .../nativeui/system/include/SystemPresenter.h | 57 ++++++++------ .../system/include/SystemSuperviseView.h | 5 +- .../system/src/SystemAboutTheWatchView.cpp | 73 +++++++++--------- .../src/SystemFactoryResetPresenter.cpp | 1 - .../system/src/SystemLanguageView.cpp | 4 + .../nativeui/system/src/SystemPresenter.cpp | 53 ++++++++++++- .../system/src/SystemSuperviseView.cpp | 65 +++++++--------- .../nativeui/system/src/SystemView.cpp | 60 +++++++------- ...onVector.bin => OrangeAttentionVector.bin} | Bin .../fs/user/res/system/SYSTEM_REBOOT.bin | Bin 25624 -> 0 bytes .../fs/user/res/system/SYSTEM_SHOUTDOWM.bin | Bin 25624 -> 0 bytes .../mk_fs_image/fs/user/res/system/reboot.bin | Bin 146040 -> 0 bytes .../fs/user/res/system/shoutdown.bin | Bin 146040 -> 0 bytes 17 files changed, 201 insertions(+), 155 deletions(-) rename code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/{FastTrainingAttentionVector.bin => OrangeAttentionVector.bin} (100%) delete mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/system/SYSTEM_REBOOT.bin delete mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/system/SYSTEM_SHOUTDOWM.bin delete mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/system/reboot.bin delete mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/system/shoutdown.bin diff --git a/code/sdk/application/wearable/nativeapp/nativelauncher/include/UiConfig.h b/code/sdk/application/wearable/nativeapp/nativelauncher/include/UiConfig.h index f261847a7..06c4d1bb6 100755 --- a/code/sdk/application/wearable/nativeapp/nativelauncher/include/UiConfig.h +++ b/code/sdk/application/wearable/nativeapp/nativelauncher/include/UiConfig.h @@ -207,20 +207,20 @@ namespace OHOS static constexpr const char *PNG_Message_Wechat = APP_RES_PATH "/message/WeChat-icon.bin"; // 微信消息 static constexpr const char *PNG_Message_QQ = APP_RES_PATH "/message/QQ-icon.bin"; // QQ消息 /* ---------------------------------- 通用图片 ---------------------------------- */ - static constexpr const char *PNG_CHECKBOX_OFF_IMAGE = APP_RES_PATH "/CHECKBOX_OFF.bin"; // checkbox未选中图片 - static constexpr const char *PNG_CHECKBOX_ON_IMAGE = APP_RES_PATH "/CHECKBOX_ON.bin"; // checkbox选中图片 - static constexpr const char *PNG_SETTING_NEXT_IMAGE = APP_RES_PATH "/SETTING_NEXT.bin"; // 箭头图片 - static constexpr const char *PNG_SETTING_BACKGROUND_IMAGE = APP_RES_PATH "/SETTING_BACKGROUND.bin"; // 按钮的背景图片 - static constexpr const char *PNG_VOLUME_CONTROL_VECTOR = APP_RES_PATH "/VolumeControlVector.bin"; // 调节音量图片 - static constexpr const char *PNG_BRIGHTNESS_CONTROL_VECTOR = APP_RES_PATH "/BringhtnessContuolVector.bin"; // 调节亮度图片 - static constexpr const char *PNG_SYSTEM_CHECK_ON_IMAGE = APP_RES_PATH "/SYSTEM_CheckOn.bin"; // 勾 - static constexpr const char *PNG_SYSTEM_CHECK_OFF_IMAGE = APP_RES_PATH "/SYSTEM_CheckOff.bin"; // 叉 - static constexpr const char *PNG_TOGGLEBUTTON_OFF_IMAGE = APP_RES_PATH "/TOGGLEBUTTON_OFF.bin"; // togglebuttton未选中图片 - static constexpr const char *PNG_TOGGLEBUTTON_ON_IMAGE = APP_RES_PATH "/TOGGLEBUTTON_ON.bin"; // togglebuttton选中图片 - static constexpr const char *PNG_SYSTEM_VOLUME_IMAGE = APP_RES_PATH "/SYSTEM_VOLUME.bin"; // 系统音量 - static constexpr const char *PNG_CALL_VOLUME_IMAGE = APP_RES_PATH "/CALL_VOLUME.bin"; // 通话音量 - static constexpr const char *PNG_MEDIA_VOLUME_IMAGE = APP_RES_PATH "/MEDIA_VOLUME.bin"; // 媒体音量 - static constexpr const char *PNG_FAST_TRAINING_ATTENTION_IMAGE = APP_RES_PATH "/FastTrainingAttentionVector.bin"; // 快速训练选中操过三个后出现 + static constexpr const char *PNG_CHECKBOX_OFF_IMAGE = APP_RES_PATH "/CHECKBOX_OFF.bin"; // checkbox未选中图片 + static constexpr const char *PNG_CHECKBOX_ON_IMAGE = APP_RES_PATH "/CHECKBOX_ON.bin"; // checkbox选中图片 + static constexpr const char *PNG_SETTING_NEXT_IMAGE = APP_RES_PATH "/SETTING_NEXT.bin"; // 箭头图片 + static constexpr const char *PNG_SETTING_BACKGROUND_IMAGE = APP_RES_PATH "/SETTING_BACKGROUND.bin"; // 按钮的背景图片 + static constexpr const char *PNG_VOLUME_CONTROL_VECTOR = APP_RES_PATH "/VolumeControlVector.bin"; // 调节音量图片 + static constexpr const char *PNG_BRIGHTNESS_CONTROL_VECTOR = APP_RES_PATH "/BringhtnessContuolVector.bin"; // 调节亮度图片 + static constexpr const char *PNG_SYSTEM_CHECK_ON_IMAGE = APP_RES_PATH "/SYSTEM_CheckOn.bin"; // 勾 + static constexpr const char *PNG_SYSTEM_CHECK_OFF_IMAGE = APP_RES_PATH "/SYSTEM_CheckOff.bin"; // 叉 + static constexpr const char *PNG_TOGGLEBUTTON_OFF_IMAGE = APP_RES_PATH "/TOGGLEBUTTON_OFF.bin"; // togglebuttton未选中图片 + static constexpr const char *PNG_TOGGLEBUTTON_ON_IMAGE = APP_RES_PATH "/TOGGLEBUTTON_ON.bin"; // togglebuttton选中图片 + static constexpr const char *PNG_SYSTEM_VOLUME_IMAGE = APP_RES_PATH "/SYSTEM_VOLUME.bin"; // 系统音量 + static constexpr const char *PNG_CALL_VOLUME_IMAGE = APP_RES_PATH "/CALL_VOLUME.bin"; // 通话音量 + static constexpr const char *PNG_MEDIA_VOLUME_IMAGE = APP_RES_PATH "/MEDIA_VOLUME.bin"; // 媒体音量 + static constexpr const char *PNG_ORANGE_ATTENTION_VECTOR_IMAGE = APP_RES_PATH "/OrangeAttentionVector.bin"; // 橘黄色感叹号图标 static constexpr const char *PNG_ANIMATOR1_IMAGE = APP_RES_PATH "/Record/animator1.bin"; static constexpr const char *PNG_ANIMATOR2_IMAGE = APP_RES_PATH "/Record/animator2.bin"; /* -------------------------------- 已删除的不必要图片 ------------------------------- */ diff --git a/code/sdk/application/wearable/nativeapp/nativeui/secondaryfunction/src/FastTrainingAttentionView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/secondaryfunction/src/FastTrainingAttentionView.cpp index b636311fc..35d0b96ef 100644 --- a/code/sdk/application/wearable/nativeapp/nativeui/secondaryfunction/src/FastTrainingAttentionView.cpp +++ b/code/sdk/application/wearable/nativeapp/nativeui/secondaryfunction/src/FastTrainingAttentionView.cpp @@ -77,7 +77,7 @@ namespace OHOS } image7_->SetPosition(193, 121); image7_->Resize(80, 80); - image7_->SetSrc(PNG_FAST_TRAINING_ATTENTION_IMAGE); + image7_->SetSrc(PNG_ORANGE_ATTENTION_VECTOR_IMAGE); // Add to scrollView1 scrollView1_->Add(image7_); diff --git a/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemAboutTheWatchView.h b/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemAboutTheWatchView.h index 916f3b5ea..03249d47e 100644 --- a/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemAboutTheWatchView.h +++ b/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemAboutTheWatchView.h @@ -47,9 +47,7 @@ namespace OHOS UILabel *LANAddress = nullptr; UILabel *FONTTitle = nullptr; UILabel *FONT = nullptr; - - UIImageView *image = nullptr; - UIView::OnDragListener *draglistener{nullptr}; + bool initViewStatus{false}; }; } #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemLanguageView.h b/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemLanguageView.h index afb6b9800..294bb2bb3 100644 --- a/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemLanguageView.h +++ b/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemLanguageView.h @@ -9,10 +9,6 @@ #include "components/ui_image_view.h" namespace OHOS { - static const char *SIMPLIFIED_CHINESE_BUTTON = "SimplifiedChineseButton"; // 简体中文 button - static const char *ENGLISH_BUTTON = "EnglishButton"; // English button - static const char *SIMPLIFIED_CHINESE_CHECKBOX = "SimplifiedChineseCheckBox"; // 简体中文 checkbox - static const char *ENGLISH_CHECKBOX = "EnglishCheckBox"; // English checkbox class SystemLanguageView { diff --git a/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemPresenter.h b/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemPresenter.h index 7a827129e..7d23daf31 100644 --- a/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemPresenter.h +++ b/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemPresenter.h @@ -2,40 +2,51 @@ #define SYSTEM_PRESENTER_H #include "Presenter.h" - #include "SystemView.h" - +#include "components/ui_radio_button.h" namespace OHOS { + + static const char *SIMPLIFIED_CHINESE_CHECKBOX = "SimplifiedChineseCheckBox"; // 简体中文 + static const char *ENGLISH_CHECKBOX = "EnglishCheckBox"; // English + class RadiobuttonOnChangeListener : public UICheckBox::OnChangeListener + { + public: + RadiobuttonOnChangeListener(UIRadioButton *uiView) + { + m_uiView = uiView; + } + ~RadiobuttonOnChangeListener() {} + bool isChineseRadioButtonSelected(); + bool isEnglishRadioButtonSelected(); + bool OnChange(UICheckBox::UICheckBoxState state) override; + + private: + UIRadioButton *m_uiView{nullptr}; + }; + class SystemView; - class SystemPresenter : public Presenter, - public UIView::OnClickListener, - public UIView::OnDragListener + public UIView::OnClickListener, + public UIView::OnDragListener { public: SystemPresenter(); virtual ~SystemPresenter(); - - void OnStart() override; - void OnPause() override; - void OnResume() override; - void OnStop() override; - - static SystemPresenter *GetInstance(); - - private: - //因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; - bool OnClick(UIView &view, const ClickEvent &event) override; - bool OnDrag(UIView& view, const DragEvent& event) override; - bool OnDragEnd(UIView &view, const DragEvent &event) override; - }; -} //namespace OHOS - - - + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + static SystemPresenter *GetInstance(); + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(UIView &view, const DragEvent &event) override; + bool OnDragEnd(UIView &view, const DragEvent &event) override; + }; +} // namespace OHOS #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemSuperviseView.h b/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemSuperviseView.h index 2939f4e87..3438a7acf 100644 --- a/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemSuperviseView.h +++ b/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemSuperviseView.h @@ -3,8 +3,6 @@ #include "BaseView.h" #include "View.h" - -#include "components/ui_view_group.h" #include "components/ui_scroll_view.h" #include "components/ui_label.h" namespace OHOS @@ -21,14 +19,13 @@ namespace OHOS void ClearAll(void); private: - UIViewGroup *container_ = nullptr; UIScrollView *SystemSuperviseViewScrollView = nullptr; - UIView::OnDragListener *draglistener{nullptr}; UILabel *Title = nullptr; UILabel *ProductModel = nullptr; UILabel *ProductModelName = nullptr; UILabel *CMIT = nullptr; UILabel *CMITName = nullptr; + bool initViewStatus{false}; }; } // namespace OHOS #endif // SLEEPDETAIL_PRESENTER_H \ No newline at end of file diff --git a/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemAboutTheWatchView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemAboutTheWatchView.cpp index a961a8719..7f9b49bcf 100644 --- a/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemAboutTheWatchView.cpp +++ b/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemAboutTheWatchView.cpp @@ -25,6 +25,42 @@ namespace OHOS return g_pSystemAboutTheWatchView; } + void SystemAboutTheWatchView::ClearAll() + { + if (initViewStatus == true) + { + SystemAboutTheWatchScrollView->RemoveAll(); + delete SystemAboutTheWatchTitle; + SystemAboutTheWatchTitle = nullptr; + delete WatchNameTitle; + WatchNameTitle = nullptr; + delete WatchName; + WatchName = nullptr; + delete FirmwareVersionTitle; + FirmwareVersionTitle = nullptr; + delete FirmwareVersion; + FirmwareVersion = nullptr; + delete AlgorithmVersionTitle; + AlgorithmVersionTitle = nullptr; + delete AlgorithmVersion; + AlgorithmVersion = nullptr; + delete BluetoothAddressTitle; + BluetoothAddressTitle = nullptr; + delete BluetoothAddress; + BluetoothAddress = nullptr; + delete LANAddressTitle; + LANAddressTitle = nullptr; + delete LANAddress; + LANAddress = nullptr; + delete FONTTitle; + FONTTitle = nullptr; + delete FONT; + FONT = nullptr; + delete SystemAboutTheWatchScrollView; + SystemAboutTheWatchScrollView = nullptr; + } + } + UILabel *SystemAboutTheWatchView::InitLabel(LabelConfig &labelConfig) { UILabel *label = new UILabel(); @@ -56,7 +92,7 @@ namespace OHOS SystemAboutTheWatchScrollView->SetScrollBlankSize(35); SystemAboutTheWatchScrollView->SetReboundSize(50); SystemAboutTheWatchScrollView->SetDirection(1); - draglistener = static_cast(SystemPresenter::GetInstance()); + UIView::OnDragListener *draglistener = static_cast(SystemPresenter::GetInstance()); if (draglistener == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::draglistener can not be nullptr!"); @@ -314,40 +350,7 @@ namespace OHOS } LANAddress->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x87)); SystemAboutTheWatchScrollView->Add(LANAddress); - + initViewStatus = true; return SystemAboutTheWatchScrollView; } - - void SystemAboutTheWatchView::ClearAll() - { - SystemAboutTheWatchScrollView->RemoveAll(); - delete SystemAboutTheWatchTitle; - SystemAboutTheWatchTitle = nullptr; - delete WatchNameTitle; - WatchNameTitle = nullptr; - delete WatchName; - WatchName = nullptr; - delete FirmwareVersionTitle; - FirmwareVersionTitle = nullptr; - delete FirmwareVersion; - FirmwareVersion = nullptr; - delete AlgorithmVersionTitle; - AlgorithmVersionTitle = nullptr; - delete AlgorithmVersion; - AlgorithmVersion = nullptr; - delete BluetoothAddressTitle; - BluetoothAddressTitle = nullptr; - delete BluetoothAddress; - BluetoothAddress = nullptr; - delete LANAddressTitle; - LANAddressTitle = nullptr; - delete LANAddress; - LANAddress = nullptr; - delete FONTTitle; - FONTTitle = nullptr; - delete FONT; - FONT = nullptr; - delete SystemAboutTheWatchScrollView; - SystemAboutTheWatchScrollView = nullptr; - } } \ No newline at end of file diff --git a/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemFactoryResetPresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemFactoryResetPresenter.cpp index 1f49d3673..358f02239 100644 --- a/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemFactoryResetPresenter.cpp +++ b/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemFactoryResetPresenter.cpp @@ -66,7 +66,6 @@ namespace OHOS // 根据控件id查找是哪个控件触发了点击回调 if (strcmp(view.GetViewId(), FACTORYRESET_CHECKON) == 0) { - printf("file:%s line:%d\n shoutdown button check on being clicked\n", __FILE__, __LINE__); return true; } else if (strcmp(view.GetViewId(), FACTORYRESET_CHECKOFF) == 0) diff --git a/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemLanguageView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemLanguageView.cpp index 5d11053ea..e0457aee1 100644 --- a/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemLanguageView.cpp +++ b/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemLanguageView.cpp @@ -215,6 +215,8 @@ namespace OHOS return nullptr; } SetRadioButtonSelectStatus(*SimplifiedChineseRadioButton, true); + UICheckBox::OnChangeListener* SimplifiedChineseRadioButtonChange = static_cast(new RadiobuttonOnChangeListener(SimplifiedChineseRadioButton)); + SimplifiedChineseRadioButton->SetOnChangeListener(SimplifiedChineseRadioButtonChange); scrollView->Add(SimplifiedChineseRadioButton); /* --------------------------- EnglishRadioButton --------------------------- */ radioButtonConfig.left = 300; @@ -226,6 +228,8 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemLanguageView::EnglishRadioButton new fail!"); return nullptr; } + UICheckBox::OnChangeListener* EnglishRadioButtonChange = static_cast(new RadiobuttonOnChangeListener(EnglishRadioButton)); + EnglishRadioButton->SetOnChangeListener(EnglishRadioButtonChange); scrollView->Add(EnglishRadioButton); initViewStatus = true; return scrollView; diff --git a/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemPresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemPresenter.cpp index 9a3152243..617357c0c 100644 --- a/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemPresenter.cpp +++ b/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemPresenter.cpp @@ -61,7 +61,7 @@ namespace OHOS if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING); + NativeAbility::GetInstance().ChangeSlice(VIEW_SYSTEM); return true; } return false; @@ -93,4 +93,55 @@ namespace OHOS } return false; } + + /// @brief 简体中文单选按钮被选中 + /// @param void + /// @return true 表示选中 ,false 表示未选中 + bool RadiobuttonOnChangeListener::isChineseRadioButtonSelected(void) + { + if (m_uiView->GetState() == UICheckBox::SELECTED && m_uiView->GetViewId() == SIMPLIFIED_CHINESE_CHECKBOX) + { + return true; + } + return false; + } + + /// @brief 英语单选按钮被选中 + /// @param void + /// @return true 表示选中 ,false 表示未选中 + bool RadiobuttonOnChangeListener::isEnglishRadioButtonSelected(void) + { + if (m_uiView->GetState() == UICheckBox::SELECTED && m_uiView->GetViewId() == ENGLISH_CHECKBOX) + { + return true; + } + return false; + } + + bool RadiobuttonOnChangeListener::OnChange(UICheckBox::UICheckBoxState state) + { + switch (state) + { + case UICheckBox::SELECTED: + if (isChineseRadioButtonSelected()) + { + // loadChineseLanguageResource();//加载中文资源 + // updateUIWithChineseText();//更新中文文本 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to Chinese language"); + } + else if (isEnglishRadioButtonSelected()) + { + // loadEnglishLanguageResource(); //加载英语资源 + // updateUIWithEnglishText(); //更新英语文本 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to English language"); + } + break; + case UICheckBox::UNSELECTED: + // Handle unselected state if needed + break; + default: + break; + } + return true; + } } \ No newline at end of file diff --git a/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemSuperviseView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemSuperviseView.cpp index 39a20c958..5e8fb5fd0 100644 --- a/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemSuperviseView.cpp +++ b/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemSuperviseView.cpp @@ -8,13 +8,13 @@ namespace OHOS SystemSuperviseView::SystemSuperviseView() { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemSuperviseView::SystemSuperviseView"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemSuperviseView::SystemSuperviseView"); g_pSystemSuperviseView = this; } SystemSuperviseView::~SystemSuperviseView() { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemSuperviseView::~SystemSuperviseView"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemSuperviseView::~SystemSuperviseView"); ClearAll(); g_pSystemSuperviseView = nullptr; } @@ -23,6 +23,27 @@ namespace OHOS { return g_pSystemSuperviseView; } + + void SystemSuperviseView::ClearAll() + { + if (initViewStatus == true) + { + SystemSuperviseViewScrollView->RemoveAll(); + delete Title; + Title = nullptr; + delete ProductModel; + ProductModel = nullptr; + delete ProductModelName; + ProductModelName = nullptr; + delete CMIT; + CMIT = nullptr; + delete CMITName; + CMITName = nullptr; + delete SystemSuperviseViewScrollView; + SystemSuperviseViewScrollView = nullptr; + } + } + UILabel *SystemSuperviseView::InitLabel(int left, int top, int width, int height, const char *text, const char *viewId, int fontSize, int fontlineHeigh, uint16_t speed) { UILabel *label = new UILabel(); @@ -49,7 +70,7 @@ namespace OHOS SystemSuperviseViewScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); SystemSuperviseViewScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff); SystemSuperviseViewScrollView->SetStyle(STYLE_BORDER_RADIUS, 1294); - draglistener = static_cast(SystemPresenter::GetInstance()); + UIView::OnDragListener *draglistener = static_cast(SystemPresenter::GetInstance()); if (draglistener == nullptr) { return nullptr; @@ -99,48 +120,14 @@ namespace OHOS CMITName->SetPosition(37, 367, 400, 30); // 位置大小 CMITName->SetStyle(STYLE_TEXT_FONT, 26); // 字体大小 CMITName->SetStyle(STYLE_LINE_HEIGHT, 30); // 字体行高 - CMITName->SetText("V02.03.01"); // 内容 + CMITName->SetText("V1.0"); // 内容 CMITName->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); // 断行模式。 CMITName->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); CMITName->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); CMITName->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x87)); SystemSuperviseViewScrollView->Add(CMITName); - + initViewStatus = true; return SystemSuperviseViewScrollView; } - void SystemSuperviseView::ClearAll() - { - SystemSuperviseViewScrollView->RemoveAll(); - delete draglistener; - draglistener = nullptr; - if (Title != nullptr) - { - delete Title; - Title = nullptr; - } - if (ProductModel != nullptr) - { - delete ProductModel; - ProductModel = nullptr; - } - if (ProductModelName != nullptr) - { - delete ProductModelName; - ProductModelName = nullptr; - } - if (CMIT != nullptr) - { - delete CMIT; - CMIT = nullptr; - } - if (CMITName != nullptr) - { - delete CMITName; - CMITName = nullptr; - } - delete SystemSuperviseViewScrollView; - SystemSuperviseViewScrollView = nullptr; - } - } \ No newline at end of file diff --git a/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemView.cpp index 10b994873..52d180a88 100644 --- a/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemView.cpp +++ b/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemView.cpp @@ -24,6 +24,30 @@ namespace OHOS return g_pSystemView; } + void SystemView::ClearAll() + { + if (initViewStatus == true) + { + SystemScrollView[0]->RemoveAll(); + delete p_SystemAboutTheWatchView; + p_SystemAboutTheWatchView = nullptr; + delete p_SystemSuperviseView; + p_SystemSuperviseView = nullptr; + delete p_SystemLanguageView; + p_SystemLanguageView = nullptr; + delete SystemLabel; + SystemLabel = nullptr; + delete AboutTheWatchButton; + AboutTheWatchButton = nullptr; + delete SuperviseButton; + SuperviseButton = nullptr; + delete SystemLanguageButton; + SystemLanguageButton = nullptr; + delete FactoryResetButton; + FactoryResetButton = nullptr; + } + } + /// @brief 设置SystemScrollView /// @param void /// @return true 设置成功,false 失败 @@ -156,34 +180,10 @@ namespace OHOS initViewStatus = true; } - void SystemView::ClearAll() - { - if (initViewStatus == true) - { - SystemScrollView[0]->RemoveAll(); - delete p_SystemAboutTheWatchView; - p_SystemAboutTheWatchView = nullptr; - delete p_SystemSuperviseView; - p_SystemSuperviseView = nullptr; - delete p_SystemLanguageView; - p_SystemLanguageView = nullptr; - delete SystemLabel; - SystemLabel = nullptr; - delete AboutTheWatchButton; - AboutTheWatchButton = nullptr; - delete SuperviseButton; - SuperviseButton = nullptr; - delete SystemLanguageButton; - SystemLanguageButton = nullptr; - delete FactoryResetButton; - FactoryResetButton = nullptr; - } - } - - // 0.跳转到系统视图,其他视图都市通过这个视图跳转 + // 0.跳转到系统视图,其他视图都市通过这个视图跳转 bool SystemView::ChangeSystemView(int16_t thisView) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeSystemView"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeSystemView"); RootView::GetInstance()->Add(SystemScrollView[thisView]); return true; } @@ -193,7 +193,7 @@ namespace OHOS { if (SystemScrollView[thisView] == nullptr) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeSystemAboutView"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeSystemAboutView"); p_SystemAboutTheWatchView = new SystemAboutTheWatchView(); if (p_SystemAboutTheWatchView == nullptr) { @@ -211,7 +211,7 @@ namespace OHOS { if (SystemScrollView[thisView] == nullptr) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeSystemSuperviseView"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeSystemSuperviseView"); p_SystemSuperviseView = new SystemSuperviseView(); if (p_SystemSuperviseView == nullptr) { @@ -229,7 +229,7 @@ namespace OHOS { if (SystemScrollView[thisView] == nullptr) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeSystemLanguageView"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeSystemLanguageView"); p_SystemLanguageView = new SystemLanguageView(); if (p_SystemLanguageView == nullptr) { @@ -304,7 +304,7 @@ namespace OHOS View::OnSetUpView(); if (SystemScrollView[0] == nullptr) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemView:: OnSetUpView has nullptr"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView:: OnSetUpView has nullptr"); return; } SystemScrollView[0]->Add(SystemLabel); diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/FastTrainingAttentionVector.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/OrangeAttentionVector.bin similarity index 100% rename from code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/FastTrainingAttentionVector.bin rename to code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/OrangeAttentionVector.bin diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/system/SYSTEM_REBOOT.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/system/SYSTEM_REBOOT.bin deleted file mode 100644 index ac88ca2bb9220c4c068c4afe96ff5ad55ce67b98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25624 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 PgCHt+k=y0#M(h6t`${G3 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/system/SYSTEM_SHOUTDOWM.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/system/SYSTEM_SHOUTDOWM.bin deleted file mode 100644 index 5fb1c58efba9ced9df3ca359065ec386abb699e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25624 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 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/system/shoutdown.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/system/shoutdown.bin deleted file mode 100644 index 8ee51a27de7d898a83c8c8c5f352039aaa73d9f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146040 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 E53af44gdfE -- 2.17.1