From: Caisking <3449750381@qq.com> Date: Wed, 11 Sep 2024 05:11:44 +0000 (+0800) Subject: 安全模式:资源校验列表实现与优化 X-Git-Tag: release_V1.2.70_20241020_135402~502^2~3 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=b8e946ae64f0bdd575bf8be875c51c7a874808fd;p=mirrors%2FFD230.git 安全模式:资源校验列表实现与优化 --- diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index 38d112fd6..f2556e4cc 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -705,7 +705,8 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/safemodemanager/src/SafeModeManagerPresenter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/safemodemanager/src/SafeModeManagerModel.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/safemodemanager/src/ResourceCheckView.cpp - + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/safemodemanager/src/ResourceCheckItemView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/safemodemanager/src/ResourceCheckAdapter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phone/src/PhoneCallView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phone/src/PhoneCallPresenter.cpp diff --git a/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp b/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp index b08252dfb..b0b6aa1ca 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp @@ -388,13 +388,13 @@ extern "C" if (uapi_dev_runtime_get_checkres_status() == 1) { GraphicService::GetInstance()->PostGraphicEvent( - std::bind(&OHOS::SafeModeManagerModel::updatecheckview,OHOS::SafeModeManagerModel::GetInstance(), curTime.tm_sec)); + std::bind(&OHOS::SafeModeManagerModel::UpdateCheckView,OHOS::SafeModeManagerModel::GetInstance(), curTime.tm_sec)); } // 校验成功 else if (uapi_dev_runtime_get_checkres_status() == 2) { GraphicService::GetInstance()->PostGraphicEvent( - std::bind(&OHOS::SafeModeManagerModel::updatecheckview, OHOS::SafeModeManagerModel::GetInstance(), 61)); + std::bind(&OHOS::SafeModeManagerModel::UpdateCheckView, OHOS::SafeModeManagerModel::GetInstance(), 61)); uapi_dev_runtime_set_checkres_status(0); } // 未绑定状态下,以下操作不进行 diff --git a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/ResourceCheckAdapter.h b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/ResourceCheckAdapter.h index e84830422..d5313b6e8 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/ResourceCheckAdapter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/ResourceCheckAdapter.h @@ -4,9 +4,8 @@ * @LastEditTime: 2024-09-10 10:01:22 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/ResourceCheckAdapter.h */ -/ -#ifndef Message_ADAPTER_H -#define Message_ADAPTER_H +#ifndef ResourceCheck_ADAPTER_H +#define ResourceCheck_ADAPTER_H #include #include #include "components/ui_list.h" @@ -18,7 +17,6 @@ namespace OHOS { - typedef struct { int index; diff --git a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/ResourceCheckItemView.h b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/ResourceCheckItemView.h index f1a164b08..c18369eee 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/ResourceCheckItemView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/ResourceCheckItemView.h @@ -17,6 +17,7 @@ #include "components/ui_label_button.h" #include "safemodemanager/include/ResourceCheckAdapter.h" +#include "safemodemanager/include/ResourceCheckItemView.h" namespace OHOS @@ -32,11 +33,10 @@ namespace OHOS int GetResourceCheckListIndex(); private: - ResourceCheckItemView(const ResourceCheckItemView &); + ResourceCheckItemView(const ResourceCheckItem &); UILabel filenamelabel; ResourceCheckItem sItemInfo = {0, nullptr}; bool isSetupChild{false}; - }; } #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/ResourceCheckView.h b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/ResourceCheckView.h index f96f4c995..fbdfc84db 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/ResourceCheckView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/ResourceCheckView.h @@ -1,49 +1,40 @@ -/*** - * @Date: 2024-09-09 17:47:27 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-09-10 11:14:17 - * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/ResourceCheckView.h - */ -/* - * @Author: luozheng 1732036298@qq.com - * @Date: 2024-01-29 15:37:44 - * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-05-07 09:39:01 - * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/system/include/ResourceCheckView.h - */ + #ifndef ResourceCheck_VIEW_H #define ResourceCheck_VIEW_H #include "BaseView.h" #include "View.h" -#include "components/ui_image_view.h" #include "components/ui_button.h" -#include "components/ui_scroll_view.h" +#include "components/ui_image_view.h" #include "components/ui_label_ext.h" -#include "safemodemanager/include/ResourceCheckItem.h" +#include "components/ui_scroll_view.h" #include "safemodemanager/include/ResourceCheckAdapter.h" -namespace OHOS -{ - class ResourceCheckView - { - public: - ResourceCheckView(); - virtual ~ResourceCheckView(); - static ResourceCheckView *GetInstance(void); +#include "safemodemanager/include/ResourceCheckItemView.h" +namespace OHOS { +class ResourceCheckView { +public: + ResourceCheckView(); + virtual ~ResourceCheckView(); + static ResourceCheckView *GetInstance(void); - UIScrollView *ResourceCheckViewInit(void); - void ClearAll(void); + UIScrollView *ResourceCheckViewInit(void); + void ClearAll(void); - void UpdateView(int date); - void UpdateView(); + void UpdateView(int date); + void UpdateView(); + void AddFilenameToList(const ResourceCheckItem &item); + void InitScrollView(void); + void InitFilenameList(void); + void InitNoteLabel(void); + void SetViewState(void); - private: - UIScrollView *scrollView{nullptr}; - UILabelExt *notelabel{nullptr}; - ResourceCheckAdapter *p_ResourceCheckAdapter{nullptr}; - UIList *FilenameList = nullptr; - bool initViewStatus{false}; - }; +private: + UIScrollView *scrollView{nullptr}; + UILabel *notelabel{nullptr}; + ResourceCheckAdapter *p_ResourceCheckAdapter{nullptr}; + UIList *FilenameList = nullptr; + bool initViewStatus{false}; +}; } // namespace OHOS #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/SafeModeManagerModel.h b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/SafeModeManagerModel.h index 726c6088a..294b9a1e1 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/SafeModeManagerModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/SafeModeManagerModel.h @@ -2,64 +2,72 @@ * @Date: 2024-08-21 16:18:26 * @LastEditors: Caisking 3449750381@qq.com * @LastEditTime: 2024-09-06 18:19:25 - * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/SafeModeManager/include/SafeModeManagerModel.h + * @FilePath: + * /FD230/code/sdk/application/wearable/fd230app/nativeui/SafeModeManager/include/SafeModeManagerModel.h */ #ifndef SAFE_MODE_MANAGER_MODEL_H #define SAFE_MODE_MANAGER_MODEL_H +#include "safemodemanager/include/ResourceCheckAdapter.h" +#include "safemodemanager/include/ResourceCheckItemView.h" +#include +#include #include #include -#include -#include - -namespace OHOS -{ - // 定义状态类型 - enum class Safe_State - { - BLE_OTA, - AUTO_OTA, - FACTORY_RESET, - RESOURCE_CHECK - }; - struct SafeStateInfo - { - Safe_State state; - bool active; // 是否激活 - }; - class SafeModeManagerModel - { - public: - // 获取单例实例 - static SafeModeManagerModel *GetInstance(); - // 恢复出厂 - bool FactorySet(); - // 资源检查和读取差异文件 - bool ResourceCheck(); - bool ReadCheckFile(); - // 获取检查文件列表 - const std::vector &GetCheckDifferentialFiles() const; - size_t GetCheckFileCount() const; - void updatecheckview(int date); +namespace OHOS { +// 定义状态类型 +enum class Safe_State { + BLE_OTA, // bleota + AUTO_OTA, // autoota + FACTORY_RESET, //恢复出厂 + RESOURCE_CHECK //资源检查 +}; +struct SafeStateInfo { + Safe_State state; + bool active; // 是否激活 +}; - // 设置状态 - void SetState(Safe_State state, bool executeAction); - // 获取状态 - bool IsState(Safe_State state) const; +class SafeModeManagerModel { +public: + // 获取单例实例 + static SafeModeManagerModel *GetInstance(); + void InitFilenamesListItems(); // 初始化消息列表项 + const ResourceCheckItem *GetFilenamesListItems() const; // 获取消息列表项 + uint16_t GetFilenamesCount() const; // 获取消息数量 - private: - SafeModeManagerModel() = default; // 默认构造函数 - ~SafeModeManagerModel() = default; // 默认析构函数 - SafeModeManagerModel(const SafeModeManagerModel &) = delete; // 禁止拷贝构造 - SafeModeManagerModel &operator=(const SafeModeManagerModel &) = delete; // 禁止赋值操作 + // 恢复出厂 + bool FactorySet(); + // 资源检查和读取差异文件 + bool ResourceCheck(); + bool ReadCheckFile(); + //获取校验状态 + bool GetResourceCheckState() const; + void SetResourceCheckState(bool state); + // 获取检查文件列表 + const std::vector &GetCheckDifferentialFiles() const; + size_t GetCheckFileCount() const; + void UpdateCheckView(int date); + // 设置状态 + void SetState(Safe_State state, bool executeAction); + // 获取状态 + bool IsState(Safe_State state) const; - std::vector resource_check_files; // 存储检查的资源文件列表 +private: + SafeModeManagerModel() = default; // 默认构造函数 + ~SafeModeManagerModel() = default; // 默认析构函数 + SafeModeManagerModel(const SafeModeManagerModel &) = delete; // 禁止拷贝构造 + SafeModeManagerModel & + operator=(const SafeModeManagerModel &) = delete; // 禁止赋值操作 - // 初始化状态与操作的映射 - void InitializeStateActions(); - }; + std::vector resource_check_files; // 存储检查的资源文件列表 + uint16_t numberOfItems; + static const uint16_t MAX_RESOURCE_CHECK_FILE_NUM = 500; // 列表最大数量 + ResourceCheckItem Filenames[MAX_RESOURCE_CHECK_FILE_NUM] = {0, + nullptr}; // 列表 + bool resoure_check_state{false}; +}; } // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/SafeModeManagerPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/SafeModeManagerPresenter.h index 6672c4f63..6217bf06c 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/SafeModeManagerPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/SafeModeManagerPresenter.h @@ -2,7 +2,8 @@ * @Date: 2024-09-09 09:48:47 * @LastEditors: Caisking 3449750381@qq.com * @LastEditTime: 2024-09-09 09:52:39 - * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/SafeModeManagerPresenter.h + * @FilePath: + * /FD230/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/SafeModeManagerPresenter.h */ #ifndef _SafeModeManager_PRESENTER_H @@ -11,37 +12,36 @@ #include "Presenter.h" #include "SafeModeManagerView.h" -namespace OHOS -{ - static constexpr const char *BLE_OTA = "ble_ota"; - static constexpr const char *AUTO_OTA = "auto_ota"; - static constexpr const char *FACTORY_RESET_SAFE = "factory_reset"; - static constexpr const char *RESOURCE_CHECK = "resource_check"; - static constexpr const char *RE_START = "restart"; - - class SafeModeManagerView; - class SafeModeManagerPresenter : public Presenter, - public UIView::OnClickListener, - public UIView::OnDragListener, - public RootView::OnKeyActListener - { - public: - SafeModeManagerPresenter(); - virtual ~SafeModeManagerPresenter(); - - void OnStart() override; - void OnPause() override; - void OnResume() override; - void OnStop() override; - - static SafeModeManagerPresenter *GetInstance(); - - private: - // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; - bool OnClick(UIView &view, const ClickEvent &event) override; - bool OnDrag(UIView &view, const DragEvent &event) override; - bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 - }; +namespace OHOS { +static constexpr const char *BLE_OTA = "ble_ota"; +static constexpr const char *AUTO_OTA = "auto_ota"; +static constexpr const char *FACTORY_RESET_SAFE = "factory_reset"; +static constexpr const char *RESOURCE_CHECK = "resource_check"; +static constexpr const char *RE_START = "restart"; +static constexpr const char *CHECK_FILE_LIST = "check_file_list"; + +class SafeModeManagerView; +class SafeModeManagerPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener, + public RootView::OnKeyActListener { +public: + SafeModeManagerPresenter(); + virtual ~SafeModeManagerPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static SafeModeManagerPresenter *GetInstance(); + +private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(UIView &view, const DragEvent &event) override; + bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 +}; } // namespace OHOS #endif // SLEEPDETAIL_PRESENTER_H \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/ResourceCheckAdapter.cpp b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/ResourceCheckAdapter.cpp index bd62a9ac9..1c4f6daf8 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/ResourceCheckAdapter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/ResourceCheckAdapter.cpp @@ -1,130 +1,101 @@ +#include "safemodemanager/include/ResourceCheckItemView.h" #include "safemodemanager/include/ResourceCheckView.h" -#include "safemodemanager/include/SafeModeManagerPresenter.h" #include "safemodemanager/include/SafeModeManagerModel.h" -#include "safemodemanager/include/ResourceCheckItem.h" +#include "safemodemanager/include/SafeModeManagerPresenter.h" -#include "wearable_log.h" #include "uicomponents/UIComponents.h" -namespace OHOS -{ - ResourceCheckAdapter::ResourceCheckAdapter() {} +#include "wearable_log.h" - ResourceCheckAdapter::~ResourceCheckAdapter() - { - listData.clear(); - } +namespace OHOS { +ResourceCheckAdapter::ResourceCheckAdapter() {} - uint16_t ResourceCheckAdapter::GetCount(void) - { - return listData.size() + 1; - } +ResourceCheckAdapter::~ResourceCheckAdapter() { listData.clear(); } - void ResourceCheckAdapter::SetData(std::list &data) - { - if (!listData.empty()) - { - listData.clear(); - } - std::list::iterator it; - for (it = data.begin(); it != data.end(); it++) - { - listData.push_back(*it); - } - } +uint16_t ResourceCheckAdapter::GetCount(void) { return listData.size() + 1; } - /// @brief - /// @param inView 一个指向已存在的视图对象的指 - /// @param index 要创建的视图在列表中的索引l。 - /// @return 返回该视图对象 - UIView *ResourceCheckAdapter::GetView(UIView *inView, int16_t index) - { - // 1.先检查列表数据是否为空,若为空则返回空指针 - if (listData.empty()) - { - return nullptr; - } - // 2.接着检查索引是否小于0,若小于0则返回空指针 - if (index < 0) - { - return nullptr; - } - // printf("GetView : index %d\r\n", index); - // 3.检查是否超出列表数据大小,若超出则返回空指针 - size_t uindex = index; - if (uindex > listData.size()) - return nullptr; +void ResourceCheckAdapter::SetData(std::list &data) { + if (!listData.empty()) { + listData.clear(); + } + std::list::iterator it; + for (it = data.begin(); it != data.end(); it++) { + listData.push_back(*it); + } +} - MessageItemView *item = nullptr; - if (uindex == listData.size()) - { - if (inView == nullptr) - { - item = new MessageItemView(); - } - else - { - item = static_cast(inView); - // item->TearDownChild(); - item->RemoveAll(); - } - if (DeleteButton == nullptr) - { - DeleteButton = new UILabelButtonExt(); - if (DeleteButton == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitButtonExt is error"); - return nullptr; // 内存分配失败,返回false - } - } - else - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UILabelButtonExt UILabelButtonExt is not nullptr"); - return nullptr; // 内存分配失败,返回false - } - DeleteButton->SetPosition(0, 0); - DeleteButton->Resize(380, 100); - DeleteButton->SetViewId("repair_all"); - DeleteButton->SetText("repair all"); - DeleteButton->SetStyle(STYLE_TEXT_FONT, fontSize); - DeleteButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); - DeleteButton->SetStyle(STYLE_BACKGROUND_COLOR, DEFAULT_BACKGROUND_COLOR); - DeleteButton->SetStyleForState(STYLE_BACKGROUND_COLOR, DEFAULT_BACKGROUND_COLOR, UIButton::PRESSED); - DeleteButton->SetStyleForState(STYLE_BORDER_COLOR, PRESSED_BORDER_COLOR, UIButton::PRESSED); - DeleteButton->SetVisible(true); - DeleteButton->SetOnClickListener(itemClickListener); - item->Add(DeleteButton); - item->SetViewIndex(index); - item->SetOnClickListener(nullptr); - return item; - } - // 4.通过迭代器访问列表中指定索引位置的元素,将其赋值给itemData变量 - std::list::iterator it = listData.begin(); - for (int i = 0; i < index; i++) - { - it++; - } - ResourceCheckItem itemData = *it; - // 5.根据传入的inView参数是否已经存在一个视图对象,若为空则创建一个新的MessageItemView对象,否则将inView转换成MessageItemView类型的指针 - if (inView == nullptr) - { - item = new MessageItemView(); - } - else - { - item = static_cast(inView); - item->RemoveAll(); - } - item->SetUpChild(); - item->SetItemInfo(itemData); - item->SetViewIndex(index); - item->SetOnClickListener(itemClickListener); - return item; - } +/// @brief +/// @param inView 一个指向已存在的视图对象的指 +/// @param index 要创建的视图在列表中的索引l。 +/// @return 返回该视图对象 +UIView *ResourceCheckAdapter::GetView(UIView *inView, int16_t index) { + // 1.先检查列表数据是否为空,若为空则返回空指针 + if (listData.empty()) { + return nullptr; + } + // 2.接着检查索引是否小于0,若小于0则返回空指针 + if (index < 0) { + return nullptr; + } + // printf("GetView : index %d\r\n", index); + // 3.检查是否超出列表数据大小,若超出则返回空指针 + size_t uindex = index; + if (uindex > listData.size()) + return nullptr; - void ResourceCheckAdapter::AddListItem(const ResourceCheckItem &item) - { - listData.push_back(item); + ResourceCheckItemView *item = nullptr; + if (uindex == listData.size()) { + if (inView == nullptr) { + item = new ResourceCheckItemView(); + } else { + item = static_cast(inView); + // item->TearDownChild(); + item->RemoveAll(); + } + if (DeleteButton == nullptr) { + DeleteButton = new UILabelButtonExt(); + if (DeleteButton == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitButtonExt is error"); + return nullptr; // 内存分配失败,返回false + } + DeleteButton->SetPosition(0, 0); + DeleteButton->Resize(380, 100); + DeleteButton->SetViewId("repair_all"); + DeleteButton->SetText("repair_all"); + DeleteButton->SetStyle(STYLE_TEXT_FONT, 30); + DeleteButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + DeleteButton->SetStyle(STYLE_BACKGROUND_COLOR, STYLE_BACKGROUND_COLOR); + DeleteButton->SetVisible(true); } + DeleteButton->SetOnClickListener(itemClickListener); + item->Add(DeleteButton); + item->SetViewIndex(index); + item->SetOnClickListener(nullptr); + + return item; + } + // 4.通过迭代器访问列表中指定索引位置的元素,将其赋值给itemData变量 + std::list::iterator it = listData.begin(); + for (int i = 0; i < index; i++) { + it++; + } + ResourceCheckItem itemData = *it; + // 5.根据传入的inView参数是否已经存在一个视图对象,若为空则创建一个新的ResourceCheckItem对象,否则将inView转换成ResourceCheckItem类型的指针 + if (inView == nullptr) { + item = new ResourceCheckItemView(); + } else { + item = static_cast(inView); + item->RemoveAll(); + } + item->SetUpChild(); + item->SetItemInfo(itemData); + item->SetViewIndex(index); + item->SetOnClickListener(itemClickListener); + return item; +} + +void ResourceCheckAdapter::AddListItem(const ResourceCheckItem &item) { + listData.push_back(item); +} } // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/ResourceCheckItemView.cpp b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/ResourceCheckItemView.cpp index 6033ee25a..bb69a4ce2 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/ResourceCheckItemView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/ResourceCheckItemView.cpp @@ -1,56 +1,43 @@ -#include "message/include/MessageItemView.h" -#include "message/include/MessageModel.h" -#include "ConfigModel.h" -namespace OHOS -{ - - MessageItemView::MessageItemView() - { - SetPosition(0, 0, 380, 280); - SetStyle(STYLE_BACKGROUND_OPA, 255); - SetStyle(STYLE_BORDER_RADIUS, 20); - SetTouchable(true); - } - - MessageItemView::~MessageItemView() - { - RemoveAll(); - } - - void MessageItemView::SetItemInfo(const ResourceCheckItem itemInfo) - { - sItemInfo = itemInfo; - - filenamelabel.SetText(itemInfo.filename.c_str()); - - } - void MessageItemView::TearDownChild() - { - if (!isSetupChild) - return; - - Remove(&filenamelabel); - - isSetupChild = false; - } - void MessageItemView::SetUpChild() - { - if (isSetupChild) - return; - - filenamelabel.SetPosition(60, 31, 280, 35); - filenamelabel.SetTextColor(Color::White()); - filenamelabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); - // 来回滚动属性 - filenamelabel.SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); - filenamelabel.SetRollSpeed(70); - - Add(&filenamelabel); - isSetupChild = false; - } - - int MessageItemView::GetMessageListIndex() - { - return sItemInfo.index; - } -} \ No newline at end of file +#include "safemodemanager/include/ResourceCheckItemView.h" +#include "safemodemanager/include/ResourceCheckAdapter.h" + +namespace OHOS { + +ResourceCheckItemView::ResourceCheckItemView() { + SetPosition(0, 0, 380, 120); + SetStyle(STYLE_BACKGROUND_OPA, 255); + SetStyle(STYLE_BORDER_RADIUS, 20); + SetTouchable(true); +} + +ResourceCheckItemView::~ResourceCheckItemView() { RemoveAll(); } + +void ResourceCheckItemView::SetItemInfo(const ResourceCheckItem itemInfo) { + + sItemInfo = itemInfo; + filenamelabel.SetText(sItemInfo.filename.c_str()); +} +void ResourceCheckItemView::TearDownChild() { + if (!isSetupChild) + return; + + Remove(&filenamelabel); + + isSetupChild = false; +} +void ResourceCheckItemView::SetUpChild() { + if (isSetupChild) + return; + + filenamelabel.SetPosition(0, 0, 466, 180); + filenamelabel.SetTextColor(Color::White()); + filenamelabel.SetFont(GILROY_BOLD_FONT, 30); + filenamelabel.SetLineBreakMode(UILabel::LINE_BREAK_WRAP); + + Add(&filenamelabel); + isSetupChild = false; +} +int ResourceCheckItemView::GetResourceCheckListIndex() { + return sItemInfo.index; +} +} // namespace OHOS \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/ResourceCheckView.cpp b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/ResourceCheckView.cpp index b8c1acad9..9cbd151c9 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/ResourceCheckView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/ResourceCheckView.cpp @@ -1,190 +1,207 @@ #include "safemodemanager/include/ResourceCheckView.h" -#include "safemodemanager/include/SafeModeManagerPresenter.h" #include "safemodemanager/include/SafeModeManagerModel.h" +#include "safemodemanager/include/SafeModeManagerPresenter.h" -#include "wearable_log.h" #include "UiConfig.h" #include "ui_resource_string.h" +#include "wearable_log.h" -namespace OHOS -{ +namespace OHOS { - static ResourceCheckView *g_pResourceCheckView{nullptr}; +// 静态指针,用于获取单例实例 +static ResourceCheckView *g_pResourceCheckView{nullptr}; - ResourceCheckView::ResourceCheckView() - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ResourceCheckView::ResourceCheckView"); - g_pResourceCheckView = this; - } +ResourceCheckView::ResourceCheckView() { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "ResourceCheckView::ResourceCheckView"); + g_pResourceCheckView = this; // 设置单例指针 +} - ResourceCheckView::~ResourceCheckView() - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ResourceCheckView::~ResourceCheckView"); - ClearAll(); - g_pResourceCheckView = nullptr; - } +ResourceCheckView::~ResourceCheckView() { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "ResourceCheckView::~ResourceCheckView"); + ClearAll(); // 清理资源 + g_pResourceCheckView = nullptr; // 释放单例指针 +} - ResourceCheckView *ResourceCheckView::GetInstance() - { - return g_pResourceCheckView; - } +ResourceCheckView *ResourceCheckView::GetInstance() { + return g_pResourceCheckView; // 返回单例实例 +} - void ResourceCheckView::ClearAll() - { - delete scrollView; - scrollView = nullptr; - delete notelabel; - notelabel = nullptr; - g_pResourceCheckView = nullptr; - } +void ResourceCheckView::ClearAll() { + delete scrollView; // 删除滚动视图 + scrollView = nullptr; + delete notelabel; // 删除提示标签 + notelabel = nullptr; + delete FilenameList; // 删除提示标签 + FilenameList = nullptr; +} - UIScrollView *ResourceCheckView::ResourceCheckViewInit(void) - { - scrollView = new UIScrollView(); - if (scrollView == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ResourceCheckView::new scrollView fail!"); - return nullptr; - } - scrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); - scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff); - scrollView->SetStyle(STYLE_BORDER_RADIUS, 100); - scrollView->SetScrollBlankSize(50); - scrollView->SetReboundSize(35); - scrollView->SetMaxScrollDistance(1000); - scrollView->SetThrowDrag(true); - scrollView->RequestFocus(); - scrollView->SetRotateFactor(2); - UIView::OnDragListener *dragListener = static_cast(SafeModeManagerPresenter::GetInstance()); - if (dragListener == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SafeModeManagerPresenter::GetInstance fail!!"); - return nullptr; - } - scrollView->SetOnDragListener(dragListener); - - notelabel = new UILabelExt(); - if (notelabel == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ResourceCheckView::new Title fail!"); - return nullptr; - } - notelabel->SetPosition(83, 217); - notelabel->Resize(300, 60); - notelabel->SetViewId("label4"); - notelabel->SetStyle(STYLE_TEXT_FONT, 50); - - notelabel->SetText("File verification..."); - notelabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); - notelabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); - notelabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); -notelabel->SetOnClickListener(presenter_); - // UIList 的适配器 - if(p_ResourceCheckAdapter == nullptr) - { - p_ResourceCheckAdapter = newFilenameListAdapter(); - p_ResourceCheckAdapter->SetItemClickListener(presenter_); - } - if (MessageList == nullptr) - { - FilenameList = new UIList(); - FilenameList->SetPosition(0, 120, 466, 466); - FilenameList->SetScrollStateListener(this); - FilenameList->SetThrowDrag(true); - FilenameList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); - FilenameList->SetMaxScrollDistance(1000); - FilenameList->SetSwipeACCLevel(800); - FilenameList->SetDragACCLevel(5); - FilenameList->SetYScrollBarVisible(true); - FilenameList->SetOnClickListener(presenter_); - FilenameList->SetOnDragListener(presenter_); - FilenameList->SetVisible(false); // 隐藏界面 - } - scrollView->Add(FilenameList); - scrollView->Add(notelabel); - return scrollView; - } - void ResourceCheckView::UpdateView(int date) - { - std::string display = "File verification"; - - if (date == -1) - { - notelabel->SetText("File verification is error..."); - return; - } - else if (date >= 0 && date <= 60) - { - int progress = date % 5; - - // 添加进度点 - for (int i = 0; i < progress; ++i) - { - display += "."; - } - } - else if (date == 61) - { - notelabel->SetText("File verification is ok..."); - return; - } - else - { - notelabel->SetText("File verification is unkown..."); - return; - } - - // 更新标签文本 - notelabel->SetText(display.c_str()); +UIScrollView *ResourceCheckView::ResourceCheckViewInit() { + scrollView = new UIScrollView(); + if (!scrollView) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "ResourceCheckView::新建滚动视图失败!"); + return nullptr; // 创建失败,返回空指针 + } + + // 初始化滚动视图属性 + InitScrollView(); + + // 设置拖拽监听器 + UIView::OnDragListener *dragListener = static_cast( + SafeModeManagerPresenter::GetInstance()); + if (!dragListener) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "SafeModeManagerPresenter::获取实例失败!"); + return nullptr; // 获取失败,返回空指针 + } + scrollView->SetOnDragListener(dragListener); + + // 初始化提示标签 + InitNoteLabel(); + + // 初始化文件名列表 + InitFilenameList(); + + // 添加视图到滚动视图中 + scrollView->Add(FilenameList); + scrollView->Add(notelabel); + + return scrollView; // 返回初始化后的滚动视图 +} + +void ResourceCheckView::InitScrollView() { + // 设置滚动视图的初始位置和样式 + scrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), + Screen::GetInstance().GetHeight()); + scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + scrollView->SetScrollBlankSize(100); + scrollView->SetMaxScrollDistance(1000); + scrollView->SetThrowDrag(true); + scrollView->SetHorizontalScrollState(false); // 禁止水平滑动 + // scrollView->SetVerticalScrollState(false); // 禁止垂直滑动 +} +void ResourceCheckView::InitNoteLabel() { + notelabel = new UILabel(); + if (!notelabel) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ResourceCheckView::新建标题失败!"); + return; // + } + // 设置标签的基本属性 + notelabel->SetPosition(83, 217); + notelabel->Resize(300, 60); + notelabel->SetViewId(CHECK_FILE_LIST); + notelabel->SetStyle(STYLE_TEXT_FONT, 50); + notelabel->SetText("File verification..."); // 保持为英语 + notelabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); + notelabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + notelabel->SetFont(GILROY_BOLD_FONT, 30); + notelabel->SetTouchable(true); + // 设置点击事件监听器 + UIView::OnClickListener *clickListener = + (UIView::OnClickListener *)OHOS::SafeModeManagerPresenter::GetInstance(); + notelabel->SetOnClickListener(clickListener); +} + +void ResourceCheckView::InitFilenameList() { + // 如果适配器未初始化则创建 + if (!p_ResourceCheckAdapter) { + p_ResourceCheckAdapter = new ResourceCheckAdapter(); + } + // 如果文件名列表未初始化则创建 + if (!FilenameList) { + FilenameList = new UIList(); + FilenameList->SetPosition(43, 120, 466, 466); + FilenameList->SetReboundSize(100); + FilenameList->SetScrollBlankSize(50); + FilenameList->SetThrowDrag(true); + // FilenameList->SetScrollStateListener(this); + FilenameList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); + FilenameList->SetMaxScrollDistance(1000); + FilenameList->SetSwipeACCLevel(800); + FilenameList->SetDragACCLevel(5); + FilenameList->SetVisible(false); // 初始隐藏界面 + } +} + +void ResourceCheckView::UpdateView(int date) { + std::string display = "File verification"; + + // 检查状态并更新提示文本 + if (date == -1) { + notelabel->SetText("File verification error..."); // 保持为英语 + } else if (date >= 0 && date <= 60) { + int progress = date % 5; + display.append(progress, '.'); // 添加进度标记点 + } else if (date == 61) { + notelabel->SetText("File verification is ok..."); // 保持为英语 + } else { + notelabel->SetText("File verification is unknown..."); // 保持为英语 + } + // 更新标签文本 + if (date >= 0) { + notelabel->SetText(display.c_str()); + } +} + +void ResourceCheckView::UpdateView() { + printf("开始显示验证结果。\r\n"); + // 读取文件检查结果 + if (SafeModeManagerModel::GetInstance()->ReadCheckFile()) { + std::vector filenames = + SafeModeManagerModel::GetInstance()->GetCheckDifferentialFiles(); + int num = SafeModeManagerModel::GetInstance()->GetCheckFileCount(); + std::string allFilenames = + "This verification result is successful. Number of verified files: " + + std::to_string(num) + ". Please click the screen to view the data."; + + notelabel->SetText(allFilenames.c_str()); + printf("验证的文件数量为 %d\r\n", num); + if (num != 0) { + SafeModeManagerModel::GetInstance()->SetResourceCheckState(true); } - void ResourceCheckView::UpdateView() - { - printf("Start showing verification results.\r\n"); - if (SafeModeManagerModel::GetInstance()->ReadCheckFile()) - { - // Read the array - std::vector filenames = SafeModeManagerModel::GetInstance()->GetCheckDifferentialFiles(); - // Clear the text of notelabel - std::string allFilenames; - int num = SafeModeManagerModel::GetInstance()->GetCheckFileCount(); - allFilenames = "This verification result is successful. Number of verified files: " + std::to_string(num)+"Please click the screen to view the data"; - notelabel->SetText(allFilenames.c_str()); // Set the text at once - printf("Number of verified files is %d\r\n", num); - } - else - { - notelabel->SetText("File verification is the same."); - printf("Verification result is failure.\r\n"); - } - printf("Verification result is completed.\r\n"); + } else { + notelabel->SetText("File verification is the same."); // 保持为英语 + SafeModeManagerModel::GetInstance()->SetResourceCheckState(false); + printf("验证结果为失败。\r\n"); + } + printf("验证结果已完成。\r\n"); +} + +void ResourceCheckView::AddFilenameToList(const ResourceCheckItem &item) { + p_ResourceCheckAdapter->AddListItem(item); +} + +void ResourceCheckView::SetViewState() { + if (notelabel == nullptr || FilenameList == nullptr) + return; + int filenums = SafeModeManagerModel::GetInstance()->GetCheckFileCount(); + bool check_state = + SafeModeManagerModel::GetInstance()->GetResourceCheckState(); + printf("filenums %d check_state %d \r\n", filenums, check_state); + if (filenums != 0 && check_state) { + notelabel->SetVisible(false); // 隐藏提示标签 + FilenameList->SetVisible(true); // 显示文件名列表 + SafeModeManagerModel *p_SafeModeManagerModel = + SafeModeManagerModel::GetInstance(); + if (!p_SafeModeManagerModel) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_SafeModeManagerModel fail"); + return; // } - void SetViewState() - { - int num = SafeModeManagerModel::GetInstance()->GetCheckFileCount(); - if(num!=0) - { - notelabel->SetVisible(false); // 隐藏界面 - FilenameList->SetVisible(true); - FilenameList->SetAdapter(p_MessageListAdapter); - /*进行list加载*/ - p_MessageModel = &MessageModel::GetInstance(); - if (p_MessageModel == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_MessageModel fail"); - return; - } - /* 加载list */ - p_MessageModel->InitMessageListItems(); - const MessageListItem *itemInfo = p_MessageModel->GetMessageListItems(); - for (int i = 0; i < p_MessageModel->GetMessageCount(); i++) - { - messageCardView->AddMessageToList(itemInfo[i]); - } - } - else - { - FilenameList->SetVisible(false); // 隐藏界面 - notelabel->SetVisible(true); / - } + // 加载消息列表 + p_SafeModeManagerModel->InitFilenamesListItems(); + const ResourceCheckItem *itemInfo = + p_SafeModeManagerModel->GetFilenamesListItems(); + for (int i = 0; i < p_SafeModeManagerModel->GetFilenamesCount(); i++) { + AddFilenameToList(itemInfo[i]); // 将消息添加到视图中 + FilenameList->SetAdapter(p_ResourceCheckAdapter); + SafeModeManagerModel::GetInstance()->SetResourceCheckState(false); } + } else { + FilenameList->SetVisible(false); // 隐藏文件名列表 + notelabel->SetVisible(true); // 显示提示标签 + } } + +} // namespace OHOS \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/SafeModeManagerModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/SafeModeManagerModel.cpp index 8c033bf18..84c7ff468 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/SafeModeManagerModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/SafeModeManagerModel.cpp @@ -1,122 +1,121 @@ -#include #include +#include +#include #include #include -#include -#include +#include "safemodemanager/include/ResourceCheckView.h" #include "safemodemanager/include/SafeModeManagerModel.h" #include "safemodemanager/include/SafeModeManagerView.h" -#include "safemodemanager/include/ResourceCheckView.h" +#include "broadcast_feature.h" +#include "broadcast_service.h" #include "custom_utils.h" -#include "wearable_log.h" -#include "thread_adapter.h" #include "graphic_service.h" -#include "broadcast_service.h" -#include "broadcast_feature.h" +#include "thread_adapter.h" +#include "wearable_log.h" extern "C" bool resfile_checksum_thread(void); static const char *CHECK_DIFFERENTIAL_FILE = "/system/check_differential.txt"; -namespace OHOS -{ - SafeModeManagerModel *SafeModeManagerModel::GetInstance(void) - { - static SafeModeManagerModel instance; - return &instance; - } -/* ---------------------------------安全模式 map状态相关 -------------------------------- */ -#if 0 - /*状态map*/ - std::array stateActions = {{ - {Safe_State::BLE_OTA, false}, - {Safe_State::AUTO_OTA, false}, - {Safe_State::FACTORY_RESET, false}, - {Safe_State::RESOURCE_CHECK, false}, - }}; - - // 设置状态 - void SafeModeManagerModel::SetState(Safe_State state, bool executeAction) { - auto index = static_cast(state); - if (index < stateActions.size()) { - stateActions[index] = executeAction; - } +namespace OHOS { + +SafeModeManagerModel *SafeModeManagerModel::GetInstance(void) { + static SafeModeManagerModel instance; + return &instance; +} +/* --------------------------------- 恢复出厂相关 + * --------------------------------- */ +// 恢复出厂 +bool SafeModeManagerModel::FactorySet() { + do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_RESTORE_FACTORY_SETTING, + nullptr, 0); + return true; +} + +/*-----------------------------资源校验相关-----------------------------*/ +// 资源校验 +bool SafeModeManagerModel::ResourceCheck() { + do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_CHECK_RES, nullptr, 0); + return true; +} + +// 进行文件读取 +bool SafeModeManagerModel::ReadCheckFile() { + resource_check_files.clear(); // 清空数组原内容 + std::ifstream infile(CHECK_DIFFERENTIAL_FILE); // 打开差异文件 + + if (!infile.is_open()) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "无法打开文件: %s", + CHECK_DIFFERENTIAL_FILE); + return false; + } + + std::string filename; + while (std::getline(infile, filename)) { // 逐行读取文件 + if (!filename.empty()) { // 确保文件名不为空 + resource_check_files.push_back(filename); // 将文件名添加到向量中 } - - // 获取指定类状态 - bool SafeModeManagerModel::IsState(Safe_State state) const { - auto index = static_cast(state); - return stateActions[index]; - } -#endif - /* --------------------------------- 恢复出厂相关 --------------------------------- */ - bool SafeModeManagerModel::FactorySet() - { - do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_RESTORE_FACTORY_SETTING, NULL, 0); - return true; - } - - /*-----------------------------资源校验相关-----------------------------*/ - bool SafeModeManagerModel::ResourceCheck() - { - do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_CHECK_RES, NULL, 0); - return true; - } - - // 进行文件读取 - bool SafeModeManagerModel::ReadCheckFile() - { - resource_check_files.clear(); // 清空数组原内容 - std::ifstream infile(CHECK_DIFFERENTIAL_FILE); // 打开差异文件 - - if (!infile.is_open()) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "无法打开文件: %s", CHECK_DIFFERENTIAL_FILE); - return false; - } - - std::string filename; - while (std::getline(infile, filename)) // 逐行读取文件 - { - if (!filename.empty()) // 确保文件名不为空 - { - resource_check_files.push_back(filename); // 将文件名添加到向量中 - } - } - - infile.close(); // 关闭文件 - return true; - } - - // 获取校验数组 - const std::vector &SafeModeManagerModel::GetCheckDifferentialFiles() const // 返回常量引用以避免复制 - { - return resource_check_files; // 返回资源检查文件列表 - } - - // 获取文件个数 - size_t SafeModeManagerModel::GetCheckFileCount() const - { - return resource_check_files.size(); // 返回文件个数 - } - - // 更新文件校对界面 - void SafeModeManagerModel::updatecheckview(int date) - { - if (SafeModeManagerView::GetInstance() != nullptr) - { - if (SafeModeManagerView::GetInstance()->GetSafeScrollView(VIEW_RESOURCE_CHECK) != nullptr) - { - ResourceCheckView::GetInstance()->UpdateView(date); - if (date == 61) - { - // LOS_Msleep(1); // 暂停1秒 - ResourceCheckView::GetInstance()->UpdateView(); - } - } - } + } + + infile.close(); // 关闭文件 + return true; +} +// 获取校验状态 +bool SafeModeManagerModel::GetResourceCheckState() const { + return resoure_check_state; +} +// 设置校验状态 +void SafeModeManagerModel::SetResourceCheckState(bool state) { + resoure_check_state = state; +} +// 获取校验数组 +const std::vector & +SafeModeManagerModel::GetCheckDifferentialFiles() const { + return resource_check_files; // 返回资源检查文件列表 +} +// 获取文件个数 +size_t SafeModeManagerModel::GetCheckFileCount() const { + return resource_check_files.size(); // 返回文件个数 +} +// 更新文件校对界面 +void SafeModeManagerModel::UpdateCheckView(int date) { + auto safeModeView = SafeModeManagerView::GetInstance(); + if (safeModeView != nullptr) { + auto resourceCheckView = ResourceCheckView::GetInstance(); + if (safeModeView->GetSafeScrollView(VIEW_RESOURCE_CHECK) != nullptr) { + resourceCheckView->UpdateView(date); + if (date == 61) { + LOS_Msleep(1000); // 暂停1秒 + resourceCheckView->UpdateView(); + } } - -} \ No newline at end of file + } +} + +/* --------------------------------- 配置列表相关 + * --------------------------------- */ +// 初始化消息列表项 +void SafeModeManagerModel::InitFilenamesListItems() { + numberOfItems = resource_check_files.size(); // 获取大小 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "numberOfItems: %d", numberOfItems); + + for (size_t i = 0; i < numberOfItems && i < MAX_RESOURCE_CHECK_FILE_NUM; + i++) { + Filenames[i] = {static_cast(i), resource_check_files[i].c_str()}; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Filenames[%d].filename: %s", i, + Filenames[i].filename); + } +} +// 获取消息列表项 +const ResourceCheckItem *SafeModeManagerModel::GetFilenamesListItems() const { + return Filenames; +} + +// 获取消息数量 +uint16_t SafeModeManagerModel::GetFilenamesCount() const { + return numberOfItems; +} + +} // namespace OHOS \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/SafeModeManagerPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/SafeModeManagerPresenter.cpp index 580be420e..a6c88ffe4 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/SafeModeManagerPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/src/SafeModeManagerPresenter.cpp @@ -1,134 +1,128 @@ #include "AppViewIDs.h" -#include "components/ui_label_ext.h" -#include "ui_resource_string.h" -#include "NativeAbility.h" #include "KeyInputListener.h" -#include "custom_utils.h" +#include "NativeAbility.h" #include "common/key_code.h" - -#include "safemodemanager/include/SafeModeManagerPresenter.h" -#include "safemodemanager/include/SafeModeManagerModel.h" -#include "gfx_utils/mem_check.h" +#include "components/ui_label_ext.h" #include "custom_utils.h" +#include "ui_resource_string.h" + #include "broadcast_service.h" +#include "custom_utils.h" +#include "gfx_utils/mem_check.h" #include "graphic_service.h" -namespace OHOS -{ - - // 当前Presenter属性实例化的内存指针 - static SafeModeManagerPresenter *g_pSafeModeManagerPresenter = nullptr; - SafeModeManagerPresenter::SafeModeManagerPresenter() - { - // 设置常亮 - ScreenAlwaysOnCtr(0); - ScreenAlwaysOnCtr(1); - - g_pSafeModeManagerPresenter = this; - } +#include "safemodemanager/include/SafeModeManagerModel.h" +#include "safemodemanager/include/SafeModeManagerPresenter.h" +namespace OHOS { - SafeModeManagerPresenter::~SafeModeManagerPresenter() - { +// 当前Presenter属性实例化的内存指针 +static SafeModeManagerPresenter *g_pSafeModeManagerPresenter = nullptr; +SafeModeManagerPresenter::SafeModeManagerPresenter() { + // 设置常亮 + ScreenAlwaysOnCtr(0); + ScreenAlwaysOnCtr(1); - g_pSafeModeManagerPresenter = nullptr; - } + g_pSafeModeManagerPresenter = this; +} - SafeModeManagerPresenter *SafeModeManagerPresenter::GetInstance() - { +SafeModeManagerPresenter::~SafeModeManagerPresenter() { - return g_pSafeModeManagerPresenter; - } + g_pSafeModeManagerPresenter = nullptr; +} - void SafeModeManagerPresenter::OnStart() - { +SafeModeManagerPresenter *SafeModeManagerPresenter::GetInstance() { - Presenter::OnStart(); - } + return g_pSafeModeManagerPresenter; +} - void SafeModeManagerPresenter::OnPause(void) - { +void SafeModeManagerPresenter::OnStart() { - Presenter::OnPause(); - } + Presenter::OnStart(); +} - void SafeModeManagerPresenter::OnResume(void) - { +void SafeModeManagerPresenter::OnPause(void) { - Presenter::OnResume(); - } + Presenter::OnPause(); +} - void SafeModeManagerPresenter::OnStop(void) - { +void SafeModeManagerPresenter::OnResume(void) { - Presenter::OnStop(); - } + Presenter::OnResume(); +} - bool SafeModeManagerPresenter::OnDrag(UIView &view, const DragEvent &event) - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SafeModeManagerPresenter::OnClick"); - SafeModeManagerView *p_SafeModeManagerView = SafeModeManagerView::GetInstance(); - if (p_SafeModeManagerView == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " SafeModeManagerView::GetInstance fail!"); - return false; - } - if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && - (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY())))) - { - if (&view == p_SafeModeManagerView->GetSafeScrollView(VIEW_RESOURCE_CHECK)) - { - p_SafeModeManagerView->ChangeView(VIEW_RESOURCE_CHECK, VIEW_SAFE_LIST); - } - } - return true; - } +void SafeModeManagerPresenter::OnStop(void) { + + Presenter::OnStop(); +} - bool SafeModeManagerPresenter::OnClick(UIView &view, const ClickEvent &event) - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SafeModeManagerPresenter::OnClick"); - SafeModeManagerView *p_SafeModeManagerView = SafeModeManagerView::GetInstance(); - if (p_SafeModeManagerView == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " SafeModeManagerView::GetInstance fail!"); - return false; - } - - if (strcmp(view.GetViewId(), BLE_OTA) == 0) - { - /*蓝牙ota*/ - } - if (strcmp(view.GetViewId(), AUTO_OTA) == 0) - { - /*auto ota*/ - } - if (strcmp(view.GetViewId(), FACTORY_RESET_SAFE) == 0) - { - /*恢复出厂*/ - SafeModeManagerModel::GetInstance()->FactorySet(); - uapi_reboot_device(); - } - if (strcmp(view.GetViewId(), RESOURCE_CHECK) == 0) - { - /*资源校验*/ - p_SafeModeManagerView->ChangeView(VIEW_SAFE_LIST, VIEW_RESOURCE_CHECK); - SafeModeManagerModel::GetInstance()->ResourceCheck(); - } - if (strcmp(view.GetViewId(), RE_START) == 0) - { - /*重启*/ - uapi_reboot_device(); // 重启 - } - return true; +bool SafeModeManagerPresenter::OnDrag(UIView &view, const DragEvent &event) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SafeModeManagerPresenter::OnClick"); + SafeModeManagerView *p_SafeModeManagerView = + SafeModeManagerView::GetInstance(); + if (p_SafeModeManagerView == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + " SafeModeManagerView::GetInstance fail!"); + return false; + } + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && + (event.GetDeltaX() > 20) && + (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY())))) { + if (&view == + p_SafeModeManagerView->GetSafeScrollView(VIEW_RESOURCE_CHECK)) { + p_SafeModeManagerView->ChangeView(VIEW_RESOURCE_CHECK, VIEW_SAFE_LIST); } - bool SafeModeManagerPresenter::OnKeyAct(UIView &view, const KeyEvent &event) - { - unsigned short keyID = event.GetKeyId(); - unsigned short keyState = event.GetState(); - // 如果是power键,且是亮屏状态,按键释放就返回上一级 - if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0) - { - // NativeAbility::GetInstance().Back(); - } - return true; + } + return true; +} + +bool SafeModeManagerPresenter::OnClick(UIView &view, const ClickEvent &event) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, + "SafeModeManagerPresenter::OnClick %s" view.GetViewId()); + SafeModeManagerView *p_SafeModeManagerView = + SafeModeManagerView::GetInstance(); + if (p_SafeModeManagerView == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + " SafeModeManagerView::GetInstance fail!"); + return false; + } + + if (strcmp(view.GetViewId(), BLE_OTA) == 0) { + /*蓝牙ota*/ + } + if (strcmp(view.GetViewId(), AUTO_OTA) == 0) { + /*auto ota*/ + } + if (strcmp(view.GetViewId(), FACTORY_RESET_SAFE) == 0) { + /*恢复出厂*/ + SafeModeManagerModel::GetInstance()->FactorySet(); + uapi_reboot_device(); + } + if (strcmp(view.GetViewId(), RESOURCE_CHECK) == 0) { + /*资源校验*/ + p_SafeModeManagerView->ChangeView(VIEW_SAFE_LIST, VIEW_RESOURCE_CHECK); + if (SafeModeManagerModel::GetInstance()->GetResourceCheckState() == false) + SafeModeManagerModel::GetInstance()->ResourceCheck(); + } + if (strcmp(view.GetViewId(), RE_START) == 0) { + /*重启*/ + uapi_reboot_device(); // 重启 + } + //点击查看列表 + if (strcmp(view.GetViewId(), CHECK_FILE_LIST) == 0) { + if (SafeModeManagerModel::GetInstance()->GetResourceCheckState() == true) { + ResourceCheckView::GetInstance()->SetViewState(); } -} \ No newline at end of file + } + return true; +} +bool SafeModeManagerPresenter::OnKeyAct(UIView &view, const KeyEvent &event) { + unsigned short keyID = event.GetKeyId(); + unsigned short keyState = event.GetState(); + // 如果是power键,且是亮屏状态,按键释放就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && + keyState == 1 && uapi_get_screen_state() == 0) { + // NativeAbility::GetInstance().Back(); + } + return true; +} +} // namespace OHOS \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp index c65dbcc93..092c6580a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp @@ -2,39 +2,42 @@ * @Date: 2024-04-15 10:55:58 * @LastEditors: Caisking 3449750381@qq.com * @LastEditTime: 2024-08-20 16:29:53 - * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp + * @FilePath: + * /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp */ /*** * @Date: 2024-04-15 10:55:58 * @LastEditors: Caisking 3449750381@qq.com * @LastEditTime: 2024-08-20 16:28:11 - * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp + * @FilePath: + * /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp */ /*** * @Date: 2024-04-15 10:55:58 * @LastEditors: Caisking 3449750381@qq.com * @LastEditTime: 2024-08-17 15:08:53 - * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp + * @FilePath: + * /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp */ #include "AppViewIDs.h" -#include "NativeAbility.h" -#include "common/key_code.h" #include "KeyInputListener.h" #include "MainModel.h" +#include "NativeAbility.h" +#include "common/key_code.h" +#include "battery_hal.h" +#include "custom_utils.h" #include "saveele/include/SaveBatPresenter.h" -#include "saveele/include/SaveEleModel.h" #include "saveele/include/SaveBatView.h" -#include "custom_utils.h" +#include "saveele/include/SaveEleModel.h" #include "string.h" #include "time.h" -#include "battery_hal.h" -namespace OHOS -{ - // 当前Presenter属性实例化的内存指针 - static SaveBatPresenter *g_pSaveBatPresenter = nullptr; +namespace OHOS { + +// 当前Presenter属性实例化的内存指针 +static SaveBatPresenter *g_pSaveBatPresenter = nullptr; // 时间间隔宏定义(以毫秒为单位) #define ONE_SECOND 1000 @@ -43,135 +46,110 @@ namespace OHOS #define TIME_THRESHOLD 3000 // 判断时间条件的宏 -#define IS_TIME_MATCH(startTime, current_time, interval) ((startTime != 0) && ((current_time - startTime) >= (interval))) -#define IS_TIME_EXCEED(startTime, current_time) ((startTime != 0) && ((current_time - startTime) > (TIME_THRESHOLD))) +#define IS_TIME_MATCH(startTime, current_time, interval) \ + ((startTime != 0) && ((current_time - startTime) >= (interval))) +#define IS_TIME_EXCEED(startTime, current_time) \ + ((startTime != 0) && ((current_time - startTime) > (TIME_THRESHOLD))) - SaveBatPresenter::SaveBatPresenter() - { - g_pSaveBatPresenter = this; - } +SaveBatPresenter::SaveBatPresenter() { g_pSaveBatPresenter = this; } - SaveBatPresenter::~SaveBatPresenter() - { - g_pSaveBatPresenter = nullptr; - } +SaveBatPresenter::~SaveBatPresenter() { g_pSaveBatPresenter = nullptr; } - SaveBatPresenter *SaveBatPresenter::GetInstance() - { - return g_pSaveBatPresenter; - } +SaveBatPresenter *SaveBatPresenter::GetInstance() { + return g_pSaveBatPresenter; +} - void SaveBatPresenter::OnStart() - { - Presenter::OnStart(); - } +void SaveBatPresenter::OnStart() { Presenter::OnStart(); } - void SaveBatPresenter::OnPause(void) - { - Presenter::OnPause(); - } +void SaveBatPresenter::OnPause(void) { Presenter::OnPause(); } - void SaveBatPresenter::OnResume(void) - { - Presenter::OnResume(); - } +void SaveBatPresenter::OnResume(void) { Presenter::OnResume(); } - void SaveBatPresenter::OnStop(void) - { - SaveEleModel::GetInstance()->SetViewState(false); - Presenter::OnStop(); - } +void SaveBatPresenter::OnStop(void) { + SaveEleModel::GetInstance()->SetViewState(false); + Presenter::OnStop(); +} - bool SaveBatPresenter::OnPress(UIView &view, const PressEvent &event) - { - if (strcmp(view.GetViewId(), "button_exit") == 0) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进行按下"); - if (SaveEleModel::GetInstance()->GetViewState() == false) - { - SaveEleModel::GetInstance()->SetViewState(true); - SaveBatView::GetInstance()->UpdateView(); - SaveBatView::GetInstance()->StartCanvas(); - } - } - return true; +bool SaveBatPresenter::OnPress(UIView &view, const PressEvent &event) { + if (strcmp(view.GetViewId(), "button_exit") == 0) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进行按下"); + if (SaveEleModel::GetInstance()->GetViewState() == false) { + SaveEleModel::GetInstance()->SetViewState(true); + SaveBatView::GetInstance()->UpdateView(); + SaveBatView::GetInstance()->StartCanvas(); } - bool SaveBatPresenter::OnRelease(UIView &view, const ReleaseEvent &event) - { - if (strcmp(view.GetViewId(), "button_exit") == 0) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进行松开"); - if (SaveEleModel::GetInstance()->GetViewState() == true) - { - SaveBatView::GetInstance()->StopCanvas(); - SaveEleModel::GetInstance()->SetViewState(false); - SaveBatView::GetInstance()->UpdateView(); - } - } - return true; + } + return true; +} +bool SaveBatPresenter::OnRelease(UIView &view, const ReleaseEvent &event) { + if (strcmp(view.GetViewId(), "button_exit") == 0) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进行松开"); + if (SaveEleModel::GetInstance()->GetViewState() == true) { + SaveBatView::GetInstance()->StopCanvas(); + SaveEleModel::GetInstance()->SetViewState(false); + SaveBatView::GetInstance()->UpdateView(); } - void SaveBatPresenter::ExitView(void) - { - NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); + } + return true; +} +void SaveBatPresenter::ExitView(void) { + NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); +} + +void SaveBatPresenter::OnTickEvent() { + /*省电表盘界面*/ + if (SaveEleModel::GetInstance()->GetViewState() == false) { + SaveBatView::GetInstance()->Refresh_Dial_View(); + } + /*退出判断*/ + bool chargeStatus = SaveEleModel::GetInstance()->GetChargeStatus(); + bool backState = SaveEleModel::GetInstance()->GetBackState(); + if (chargeStatus || backState) { + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, + "退出省电模式 Charge_Status: %d, Back_State: %d", + chargeStatus, backState); + SaveEleModel::GetInstance()->SetBackState(false); + ExitView(); + } +} +void SaveBatPresenter::ResetTickTimer(void) { + startTime = osKernelGetTick2ms(); +} +/* 更新退出UI */ +void SaveBatPresenter::Refresh_Back_View() { + if (SaveBatView::GetInstance()->GetCountlabel() == nullptr || + SaveBatView::GetInstance()->GetBackprogress() == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "Refresh_Back_View: countlabel or backprogress is null."); + return; + } + + if (count > 0) // 确保不会减少到负数 + { + // 每次调用时尝试更新进度值 + progressValue++; + + // 更新计数并检查进度值 + if (progressValue == 50 || progressValue == 75 || progressValue == 100) { + count--; + SaveBatView::GetInstance()->GetCountlabel()->SetText( + std::to_string(count).c_str()); } - void SaveBatPresenter::OnTickEvent() - { - /*省电表盘界面*/ - if (SaveEleModel::GetInstance()->GetViewState() == false) - { - SaveBatView::GetInstance()->Refresh_Dial_View(); - } - /*退出判断*/ - bool chargeStatus = SaveEleModel::GetInstance()->GetChargeStatus(); - bool backState = SaveEleModel::GetInstance()->GetBackState(); - if (chargeStatus || backState) - { - WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "退出省电模式 Charge_Status: %d, Back_State: %d", chargeStatus, backState); - SaveEleModel::GetInstance()->SetBackState(false); - ExitView(); - } - } - void SaveBatPresenter::ResetTickTimer(void) - { - startTime = osKernelGetTick2ms(); - } - /* 更新退出UI */ - void SaveBatPresenter::Refresh_Back_View() - { - if (SaveBatView::GetInstance()->GetCountlabel() == nullptr || SaveBatView::GetInstance()->GetBackprogress() == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Refresh_Back_View: countlabel or backprogress is null."); - return; - } - - if (count > 0) // 确保不会减少到负数 - { - // 每次调用时尝试更新进度值 - progressValue++; - - // 更新计数并检查进度值 - if (progressValue == 50 || progressValue == 75 || progressValue == 100) - { - count--; - SaveBatView::GetInstance()->GetCountlabel()->SetText(std::to_string(count).c_str()); - } - - // 根据最大值进行检查以避免进度条越界 - if (progressValue >= 100) // 假设进度最大值为100 - { - NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); - } - else - { - SaveBatView::GetInstance()->GetBackprogress()->SetValue(progressValue); - } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Refresh_Back_View: 当前计数: %d, 当前进度值: %d", count, progressValue); - } - } - bool SaveBatPresenter::OnKeyAct(UIView &view, const KeyEvent &event) + // 根据最大值进行检查以避免进度条越界 + if (progressValue >= 100) // 假设进度最大值为100 { - /*消耗按键事件*/ - return true; + NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); + } else { + SaveBatView::GetInstance()->GetBackprogress()->SetValue(progressValue); } -} \ No newline at end of file + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, + "Refresh_Back_View: 当前计数: %d, 当前进度值: %d", count, + progressValue); + } +} +bool SaveBatPresenter::OnKeyAct(UIView &view, const KeyEvent &event) { + /*消耗按键事件*/ + return true; +} +} // namespace OHOS