From 5436d92b43a250ace280911e8cb6cc857d6fa555 Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Sat, 15 Jun 2024 19:07:02 +0800 Subject: [PATCH] =?utf8?q?=E6=B6=88=E6=81=AFSlice=E5=90=8C=E6=AD=A5?= =?utf8?q?=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/message/include/MessageAdapter.h | 16 +- .../message/include/MessageItemView.h | 18 +- .../nativeui/message/include/MessageModel.h | 53 +++++- .../nativeui/message/include/MessageView.h | 24 ++- .../nativeui/message/src/MessageAdapter.cpp | 2 +- .../nativeui/message/src/MessageItemView.cpp | 79 ++++++--- .../nativeui/message/src/MessageModel.cpp | 159 ++++++++++++++++-- .../nativeui/message/src/MessagePresenter.cpp | 26 ++- .../nativeui/message/src/MessageView.cpp | 137 ++++++++++++--- .../traingrecord/src/TraingRecordModel.cpp | 6 +- .../traingrecord/src/TraingRecordView.cpp | 2 +- .../drivers/peripheral/utils/custom_utils.c | 2 +- 12 files changed, 418 insertions(+), 106 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageAdapter.h b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageAdapter.h index 18b962123..98a35217a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageAdapter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageAdapter.h @@ -1,4 +1,10 @@ -/*** +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-06-13 16:31:15 + * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageAdapter.h + */ +/*** * @Author: Caisking 3449750381@qq.com * @Date: 2024-01-29 19:58:37 * @LastEditors: Caisking 3449750381@qq.com @@ -23,10 +29,10 @@ namespace OHOS typedef struct { int index; - ImageInfo *icon; // 图标 - const char *label; // 标签 - const char *labelbutton; // 未读 - bool hasSecondMenu; + bool read; // 是否未读 + std::string labeltitle; // 来信标签 + std::string labeldetails; // 信息内容 + std::string labeltime; // 来信时间 } MessageListItem; class MessageListAdapter : public AbstractAdapter diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageItemView.h b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageItemView.h index eb2ddc557..50b860357 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageItemView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageItemView.h @@ -1,3 +1,9 @@ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-06-13 16:51:22 + * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageItemView.h + */ #ifndef Message_ITEM_VIEW_H #define Message_ITEM_VIEW_H @@ -23,12 +29,12 @@ namespace OHOS private: MessageItemView(const MessageItemView &); - UIImageView sbackground; // 背景 - UIImageView sIcon; // 图标 - UILabel sLabel; // 标签 - UILabelButton sLabelButton; // 未读 - MessageListItem sItemInfo = {0, nullptr, nullptr, nullptr, false}; + UIImageView sIcon; // 未读图标 + UILabel stitle; // 消息来源 + UILabel smessgae; // 消息 + UILabel stime; // 时间 + UILabelButton sLabelButton; // 按键 + MessageListItem sItemInfo = {0, false, nullptr, nullptr, nullptr}; }; - } #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageModel.h b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageModel.h index e2fb6d4ea..283ee99ec 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageModel.h @@ -1,9 +1,21 @@ -/*** +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-06-14 20:09:13 + * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageModel.h + */ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-06-14 19:49:15 + * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageModel.h + */ +/*** * @Author: Caisking 3449750381@qq.com * @Date: 2024-01-29 19:58:37 * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-03-26 18:00:19 - * @FilePath: /sdk/application/wearable/fd230app/nativeui/message/include/MessageModel.h + * @LastEditTime: 2024-06-13 17:01:04 + * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageModel.h * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ @@ -14,13 +26,20 @@ #include #include "AppViewIDs.h" #include "components/ui_label_ext.h" -#include"language/font/ui_resource_string.h" +#include "language/font/ui_resource_string.h" #include "UiConfig.h" #include "MessagePresenter.h" #include "message/include/MessageAdapter.h" namespace OHOS { + struct MessageData + { + bool read; // 是否已读 + std::string labeltitle; // 来信标签 + std::string labeldetails; // 信息内容 + std::string labeltime; // 来信时间 + }; class MessageModel { public: @@ -28,17 +47,33 @@ namespace OHOS void InitMessageListItem(); const MessageListItem *GetMessagelistItems() const; uint8_t GetMessageListNum() const; - //const std::map &GetMessageIdToViewId() const; + // 判断json是否存在 + bool CheckDataJson(); + // 设置标志位 获取json状态 避免反复读取 + bool GetJsonStatus(); + // 加载json函数 + std::vector LoadMessageJson(); + // 获取总消息数量 + uint8_t GetListNum(); + // 设置当前界面 + void SetPopupView(bool state); + // 获取当前界面 + bool GetPopupView(); + // 打印函数 + void PrintfData(MessageData messagedata); private: MessageModel(); MessageModel(const MessageModel &); MessageModel &operator=(const MessageModel &); virtual ~MessageModel(); - static const uint16_t MessageListMaxNum = 4; - MessageListItem Messages[MessageListMaxNum] = {0, nullptr, nullptr, nullptr, false}; - //std::map MessageIdToViewId; - bool btConnectStatus{false}; + uint8_t ArrayNum; + static const uint16_t MessageListMaxNum = 10; + MessageListItem Messages[MessageListMaxNum] = {0, false, nullptr, nullptr, nullptr}; + // std::map MessageIdToViewId; + + bool jsonStatus{false}; // json文件存在标志位 + bool popupStatus{false}; }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageView.h b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageView.h index 7266ff5e5..a02c98713 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageView.h @@ -1,3 +1,9 @@ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-06-15 15:47:19 + * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageView.h + */ /*** * @Date: 2024-04-15 10:55:58 * @LastEditors: Caisking 3449750381@qq.com @@ -16,10 +22,12 @@ #include "message/include/MessageAdapter.h" #include "message/include/MessageModel.h" #include "components/ui_image_view.h" +#include "components/ui_label.h" +#include "components/ui_label_ext.h" namespace OHOS { - enum class PopupMessgae + enum class PopupMessage { LackPopup, MessagePopup @@ -38,11 +46,12 @@ namespace OHOS void OnSetUpView() override; void OnTearDownView() override; void OnStop() override; - // void AddMessageToList(const MessageListItem &item); + void AddMessageToList(const MessageListItem &item); + UIList *GetList(); void ShowLackView(); void ShowMessageView(); - void SetPopupViewStatus(PopupMessgae view, bool status); + void SetPopupViewStatus(PopupMessage view, bool status); void InitView(void); void DeInitView(void); @@ -51,11 +60,6 @@ namespace OHOS private: UIScrollView *container_ = nullptr; - UILabel *title{nullptr}; - MessageListAdapter *p_MessageListAdapter{nullptr}; - UIList *MessageList = nullptr; - UIView::OnDragListener *draglistener{nullptr}; - /*无消息界面*/ UIScrollView *lackView{nullptr}; UIImageView *imageline{nullptr}; @@ -65,6 +69,10 @@ namespace OHOS /*消息列表界面*/ UIScrollView *messageView{nullptr}; + UILabelExt *title{nullptr}; + MessageListAdapter *p_MessageListAdapter{nullptr}; + UIList *MessageList = nullptr; + UIView::OnDragListener *draglistener{nullptr}; bool viewInitStatus{false}; }; diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageAdapter.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageAdapter.cpp index fbb42a36f..4ca0785dd 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageAdapter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageAdapter.cpp @@ -38,7 +38,7 @@ namespace OHOS } } - /// @brief 为音乐列表的每一项创建一个视图 + /// @brief /// @param inView 一个指向已存在的视图对象的指 /// @param index 要创建的视图在列表中的索引l。 /// @return 返回该视图对象 diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageItemView.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageItemView.cpp index da2420336..dda762842 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageItemView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageItemView.cpp @@ -1,35 +1,37 @@ -/*** - * @Author: Caisking 3449750381@qq.com - * @Date: 2024-01-29 19:58:37 +/*** + * @Date: 2024-04-15 10:55:58 * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-03-26 20:20:20 - * @FilePath: /sdk/application/wearable/fd230app/nativeui/message/src/MessageItemView.cpp - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + * @LastEditTime: 2024-06-14 11:18:42 + * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageItemView.cpp */ #include "message/include/MessageItemView.h" namespace OHOS { - + static constexpr const char *ICON_IMAGE = "user/res/message/Icon.bin"; MessageItemView::MessageItemView() { - SetPosition(0, 0, 380, 120); // 每一itemview宽高要配置好,因为每一首加到list歌曲都是以这个视图为基准 - SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + SetPosition(0, 0, 380, 240); // 每一itemview宽高要配置好,因为每一首加到list歌曲都是以这个视图为基准 + // SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); SetStyle(STYLE_BACKGROUND_OPA, 255); + SetStyle(STYLE_BORDER_RADIUS, 20); SetTouchable(true); SetUpChild(); - Add(&sbackground); - Add(&sIcon); - Add(&sLabel); + Add(&sLabelButton); + Add(&sIcon); + Add(&stitle); + Add(&smessgae); + Add(&stime); } MessageItemView::~MessageItemView() { - Remove(&sbackground); - Remove(&sLabel); Remove(&sIcon); + Remove(&stitle); + Remove(&smessgae); + Remove(&stime); Remove(&sLabelButton); } @@ -38,30 +40,51 @@ namespace OHOS void MessageItemView::SetItemInfo(const MessageListItem itemInfo) { sItemInfo = itemInfo; - sIcon.SetSrc(itemInfo.icon); - sLabel.SetText(itemInfo.label); - sLabelButton.SetText(itemInfo.labelbutton); + if (!itemInfo.read) + { + sIcon.SetSrc(ICON_IMAGE); + } + stitle.SetText((itemInfo.labeltitle).c_str()); + smessgae.SetText((itemInfo.labeldetails).c_str()); + stime.SetText((itemInfo.labeltime).c_str()); + + // printf("itemInfo:%s %s %s\r\n", (itemInfo.labeltitle).c_str(), (itemInfo.labeldetails).c_str(), (itemInfo.labeltime).c_str()); } /// @brief 设置每一个itemview上的组件 void MessageItemView::SetUpChild() { - sbackground.SetSrc("/user/res/SETTING_BACKGROUND.bin"); - sIcon.SetPosition(19, 19); + sIcon.SetPosition(40, 43); sIcon.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE); - sLabel.SetPosition(115, 33, 200, 40); - sLabel.SetStyle(STYLE_TEXT_FONT, 30); - sLabel.SetStyle(STYLE_LINE_HEIGHT, 36); - sLabel.SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); - sLabel.SetTextColor(Color::White()); - sLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + stitle.SetPosition(60, 31, 280, 35); + stitle.SetStyle(STYLE_TEXT_FONT, 30); + stitle.SetStyle(STYLE_LINE_HEIGHT, 36); + stitle.SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); + stitle.SetRollSpeed(30); // 设置文本滚动速度 + stitle.SetTextColor(Color::White()); + stitle.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + + smessgae.SetPosition(40, 69, 300, 105); + smessgae.SetStyle(STYLE_TEXT_FONT, 30); + smessgae.SetStyle(STYLE_LINE_HEIGHT, 36); + smessgae.SetLineBreakMode(UILabel::LINE_BREAK_CLIP); + smessgae.SetTextColor(Color::Gray()); + smessgae.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + + stime.SetPosition(40, 178, 300, 33); + stime.SetStyle(STYLE_TEXT_FONT, 30); + stime.SetStyle(STYLE_LINE_HEIGHT, 36); + stime.SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); + stime.SetTextColor(Color::Gray()); + stime.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28); - sLabelButton.SetPosition(215, 25, 140, 50); + sLabelButton.SetPosition(0, 0, 380, 220); sLabelButton.SetStyle(STYLE_BACKGROUND_COLOR, 0xff303030); - sLabelButton.SetTextColor(Color::White()); - sLabelButton.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20); + sLabelButton.SetStyle(STYLE_BORDER_RADIUS, 20); + sLabelButton.SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); + sLabelButton.SetStyleForState(STYLE_BORDER_RADIUS, 20, UIButton::PRESSED); sLabelButton.SetTouchable(true); } diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp index 21696b7fa..82be4c324 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp @@ -1,9 +1,9 @@ -/*** +/*** * @Author: Caisking 3449750381@qq.com * @Date: 2024-01-29 19:58:37 * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-03-26 20:08:00 - * @FilePath: /sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp + * @LastEditTime: 2024-06-14 19:15:15 + * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ @@ -11,10 +11,30 @@ #include "common/image_cache_manager.h" #include "UiConfig.h" #include "ui_resource_image.h" +#include "samgr_lite.h" +#include +#include +#include +#include +#include +#include +#include "cJSON.h" +#include "wearable_log.h" +#include "custom_utils.h" + +#define MESSAGE_JSON_FILE "user/userdata/message/ancs.json" +#define PRINTFDATA 1 + +extern "C" errcode_t uapi_get_TIME_STR(uint32_t time, char *p_time, char separator, bool include_seconds); namespace OHOS { - MessageModel::MessageModel() {} + MessageModel::MessageModel() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageModel"); + jsonStatus = CheckDataJson(); // 更新json状态 + // LoadMessageJson(); + } MessageModel::~MessageModel() {} @@ -24,25 +44,132 @@ namespace OHOS return instance; } - void MessageModel::InitMessageListItem() + uint8_t MessageModel::GetMessageListNum() const + { + return MessageListMaxNum; + } + /*检查是否存在数据*/ + bool MessageModel::CheckDataJson() + { + // 读取record.json文件 + std::ifstream file(MESSAGE_JSON_FILE); + // 检查文件是否打开成功 + if (!file.is_open()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Unable to open file"); + return false; + } + // 检查文件是否为空 + file.seekg(0, std::ios::end); + if (file.tellg() == 0) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "File is empty"); + file.close(); + return false; + } + // 关闭文件 + file.close(); + return true; + } + /*加载json函数*/ + std::vector MessageModel::LoadMessageJson() { - ImageInfo *imgSystem = ImageCacheManager::GetInstance().LoadOneInMultiRes(MESSAGE_SYSTEM, MESSAGE_IAMGES); - ImageInfo *imgNote = ImageCacheManager::GetInstance().LoadOneInMultiRes(MESSAGE_MESSAGE, MESSAGE_IAMGES); - ImageInfo *imgWechat = ImageCacheManager::GetInstance().LoadOneInMultiRes(MESSAGE_WECHAT, MESSAGE_IAMGES); - ImageInfo *imgQQ = ImageCacheManager::GetInstance().LoadOneInMultiRes(MESSAGE_QQ, MESSAGE_IAMGES); + std::ifstream file(MESSAGE_JSON_FILE); + if (!file.is_open()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to open file"); + return std::vector(); + } + std::string jsonData((std::istreambuf_iterator(file)), std::istreambuf_iterator()); + file.close(); + + cJSON *root = cJSON_Parse(jsonData.c_str()); + cJSON *dataArray = cJSON_GetObjectItem(root, "infor"); + int dataCount = cJSON_GetArraySize(dataArray); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dataCount is %d", dataCount); + + std::vector MessageVector; + for (int i = 0; i < dataCount; i++) + { + cJSON *item = cJSON_GetArrayItem(dataArray, i); + MessageData messagedata; + + // 使用 strdup 复制字符串,确保每个字符串都有独立的内存空间 + messagedata.labeltitle = cJSON_GetObjectItem(item, "title")->valuestring; + messagedata.labeldetails = cJSON_GetObjectItem(item, "msg")->valuestring; - Messages[0] = {0, imgSystem, "系统", "暂无信息", false}; - Messages[1] = {1, imgNote, "信息", "暂无信息", false}; - Messages[2] = {2, imgWechat, "微信", "暂无信息", false}; - Messages[3] = {3, imgQQ, "QQ", "暂无信息", false}; + // 获取时间 + uint32 timestamp = cJSON_GetObjectItem(item, "time")->valueint; + char labeltime[20]; + if (uapi_get_TIME_STR(timestamp, labeltime, '.', false) != ERRCODE_SUCC) + { + messagedata.labeltime = std::string("2024.1.1 00:00"); + } + else + { + messagedata.labeltime = std::string(labeltime); + } + + // 这里根据解析的 JSON 数据类型修改 messagedata.read 的精确类型 + messagedata.read = cJSON_GetObjectItem(item, "read")->valueint; + PrintfData(messagedata); + MessageVector.push_back(messagedata); + } + cJSON_Delete(root); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LoadMessageJson is ok"); + return MessageVector; } + void MessageModel::PrintfData(MessageData messagedata) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "**************************************"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Message Title: %s", (messagedata.labeltitle).c_str()); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Message Details: %s", (messagedata.labeldetails).c_str()); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Message Time: %s", (messagedata.labeltime).c_str()); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Message Read: %d", messagedata.read); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "**************************************"); + } + void MessageModel::InitMessageListItem() + { + // 读取json数据 + std::vector messageVector = LoadMessageJson(); + if (!messageVector.empty()) + { + ArrayNum = messageVector.size(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "the ArrayNum is %d", ArrayNum); + for (int i = ArrayNum - 1, count = 0; i >= 0 && count < MessageListMaxNum; i--, count++) + { + MessageData messageData; + messageData.read = messageVector[i].read; + messageData.labeltitle = messageVector[i].labeltitle; + messageData.labeldetails = messageVector[i].labeldetails; + messageData.labeltime = messageVector[i].labeltime; + // PrintfData(messageData); + // 获取是否读取 来信 信息内容 时间 + Messages[count] = {count, messageData.read, messageData.labeltitle, messageData.labeldetails, messageData.labeltime}; + } + } + } const MessageListItem *MessageModel::GetMessagelistItems() const { return Messages; } - uint8_t MessageModel::GetMessageListNum() const + bool MessageModel::GetJsonStatus() { - return MessageListMaxNum; + return jsonStatus; + } + uint8_t MessageModel::GetListNum() + { + return ArrayNum; + } + // 设置当前界面 + void MessageModel::SetPopupView(bool state) + { + popupStatus = state; + } + // 获取当前界面 0:没有记录 | 1:有记录 + bool MessageModel::GetPopupView() + { + return popupStatus; } -} \ No newline at end of file +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessagePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessagePresenter.cpp index cc6ec2e4b..66061a367 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessagePresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessagePresenter.cpp @@ -1,3 +1,9 @@ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-06-15 15:56:50 + * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessagePresenter.cpp + */ /*** * @Date: 2024-04-15 10:55:58 * @LastEditors: Caisking 3449750381@qq.com @@ -14,6 +20,7 @@ #include "message/include/MessageItemView.h" #include "components/ui_abstract_scroll_bar.h" #include "gfx_utils/graphic_log.h" +#include "wearable_log.h" namespace OHOS { @@ -39,18 +46,31 @@ namespace OHOS void MessagePresenter::OnStart() { - // p_MessageModel->InitMessageListItem(); + + // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitMessageListItem"); + p_MessageModel->InitMessageListItem(); Presenter::OnStart(); } void MessagePresenter::OnPause(void) { - Presenter::OnPause(); } void MessagePresenter::OnResume(void) { + if (view_ == nullptr) + { + return; + } + if (p_MessageModel->GetJsonStatus()) + { + const MessageListItem *itemInfo = p_MessageModel->GetMessagelistItems(); + for (int i = 0; i < p_MessageModel->GetMessageListNum(); i++) + { + view_->AddMessageToList(itemInfo[i]); + } + } Presenter::OnResume(); } @@ -70,7 +90,7 @@ namespace OHOS // 向下回到主界面 if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM) { - NativeAbility::GetInstance().EnterSlice(VIEW_MAIN); + // NativeAbility::GetInstance().EnterSlice(VIEW_MAIN); } return true; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp index 466b21a92..ebc96c23e 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp @@ -2,6 +2,7 @@ #include "message/include/MessageView.h" #include "message/include/MessagePresenter.h" +#include "message/include/MessageModel.h" #include "UiConfig.h" #include "wearable_log.h" @@ -11,6 +12,12 @@ namespace OHOS static constexpr char *lineimagePath = "/user/res/message/Line.bin"; static constexpr char *messageimagePath = "/user/res/message/message.bin"; static const uint32_t BACK_GROUND_COLOR = 0xfff6f6f6; + static constexpr int16_t More_LIST_POSITION_X = 43; + static constexpr int16_t More_LIST_POSITION_Y = 120; + static constexpr int16_t More_SCROLLBLANKSIZE = 35; // 设置此滚动视图的空白大小。 + static constexpr int16 MAX_SCR_DIS = 1000; + static constexpr int16 LIST_POS = 20; + static constexpr int16 SNUM_2 = 2; static constexpr uint8_t NUM_2 = 2; static MessageView *g_pMessageView{nullptr}; @@ -41,12 +48,25 @@ namespace OHOS container_->SetPosition(0, 0, 466, 466); container_->SetStyle(STYLE_BACKGROUND_OPA, 0); } - // 展示无记录界面。后续需要加入函数判断 - SetPopupViewStatus(PopupMessgae::LackPopup, true); + // 展示界面 + if (MessageModel::GetInstance().GetJsonStatus()) + { + printf("存在数据!\r\n"); + SetPopupViewStatus(PopupMessage::MessagePopup, true); + } + else + { + printf("不存在数据!\r\n"); + SetPopupViewStatus(PopupMessage::LackPopup, true); + } } void MessageView::DeInitView() { container_->RemoveAll(); + lackView->RemoveAll(); + messageView->RemoveAll(); + MessageList->RemoveAll(); + if (labeltitle != nullptr) { lackView->Remove(labeltitle); @@ -77,6 +97,23 @@ namespace OHOS delete lackView; lackView = nullptr; } + if (title != nullptr) + { + delete title; + title = nullptr; + } + if (MessageList != nullptr) + { + MessageList->RemoveAll(); + delete MessageList; + MessageList = nullptr; + } + if (messageView != nullptr) + { + messageView->RemoveAll(); + delete messageView; + messageView = nullptr; + } if (container_ != nullptr) { container_->RemoveAll(); @@ -96,6 +133,7 @@ namespace OHOS } } + /*无数据界面*/ void MessageView::ShowLackView() { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView start"); @@ -111,7 +149,7 @@ namespace OHOS lackView->SetDirection(1); /*初始化label*/ InitLabelExt(labeltitle, 83, 50, 300, 35, "labletitle", STR_MESSAGE, DEFAULT_VECTOR_FONT_FILENAME, 30); - InitLabelExt(labelmeage, 53, 276, 360, 40, "labelrecord", STR_MESSAGENO, DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabelExt(labelmeage, 53, 276, 360, 40, "labelMessage", STR_MESSAGENO, DEFAULT_VECTOR_FONT_FILENAME, 30); labelmeage->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff)); /*初始化image*/ InitImageView(imageline, 193, 30, 365, 35, "image", lineimagePath); @@ -137,33 +175,79 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView end"); } + /*数据界面*/ void MessageView::ShowMessageView() { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView start"); + messageView = new UIScrollView(); + if (messageView == nullptr) + { + return; + } + messageView->SetPosition(0, 0); + messageView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); + messageView->SetScrollBlankSize(20); + messageView->SetReboundSize(50); + messageView->SetDirection(1); + + /*初始化label*/ + InitLabelExt(title, 83, 50, 300, 35, "labletitle", STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30); + messageView->Add(title); + + // UIList 的适配器 + p_MessageListAdapter = new MessageListAdapter(); + p_MessageListAdapter->SetItemClickListener(presenter_); + if (MessageList == nullptr) + { + MessageList = new UIList(); + } + MessageList->SetPosition(More_LIST_POSITION_X, More_LIST_POSITION_Y); + MessageList->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + MessageList->SetScrollBlankSize(More_SCROLLBLANKSIZE); + MessageList->SetReboundSize(50); + MessageList->SetSelectPosition(HORIZONTAL_RESOLUTION / SNUM_2); // middle position + MessageList->SetDraggable(true); + MessageList->SetThrowDrag(true); + MessageList->EnableAutoAlign(true); + MessageList->SetElastic(true); // 设置回弹效果 + MessageList->SetMaxScrollDistance(MAX_SCR_DIS); + + messageView->SetYScrollBarVisible(true); // 设置滑动滚动条 + MessageList->SetOnClickListener(static_cast(MessagePresenter::GetInstance())); + + UIView::OnDragListener *Messagedraglistener = static_cast(MessagePresenter::GetInstance()); + if (Messagedraglistener == nullptr) + { + return; + } + messageView->SetOnDragListener(Messagedraglistener); + messageView->SetVisible(false); // 隐藏界面 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView end"); } - void MessageView::SetPopupViewStatus(PopupMessgae view, bool status) + /*控制显示界面*/ + void MessageView::SetPopupViewStatus(PopupMessage view, bool status) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPopupViewStatus %d", view); UIView *popupView = nullptr; - if (view == PopupMessgae::LackPopup) + if (view == PopupMessage::LackPopup) { + MessageModel::GetInstance().SetPopupView(false); // 设置状态为无记录 popupView = lackView; } - else if (view == PopupMessgae::MessagePopup) + else if (view == PopupMessage::MessagePopup) { + MessageModel::GetInstance().SetPopupView(true); // 设置状态为有记录 popupView = messageView; } - if (popupView == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PopupView is NULL"); return; } - if (container_ != nullptr) { container_->SetVisible(!status); } - popupView->SetVisible(status); } @@ -190,18 +274,36 @@ namespace OHOS container_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); ShowLackView(); + ShowMessageView(); PreLoad(); RootView::GetInstance()->Add(container_); } - - /// @brief 创建页面的视图。 + void MessageView::AddMessageToList(const MessageListItem &item) + { + p_MessageListAdapter->AddListItem(item); + } + // 获取列表 + UIList *MessageView::GetList() + { + return MessageList; + } + /// @brief 创建页面的视图 void MessageView::OnSetUpView() { View::OnSetUpView(); + if (MessageModel::GetInstance().GetJsonStatus()) + { + messageView->Add(MessageList); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageList is add"); + messageView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); + RootView::GetInstance()->Add(messageView); + MessageList->SetAdapter(p_MessageListAdapter); + MessageList->RefreshList(); // 刷新列表 + } Draw(); } - /// @brief 销毁页面的视图。 + /// @brief 销毁页面的视图 void MessageView::OnTearDownView() { View::OnTearDownView(); @@ -216,17 +318,6 @@ namespace OHOS return; } #if 0 - UIList *MessageView::GetList() - { - return MessageList; - } - - /// @brief 添加歌曲到list - /// @param item - void MessageView::AddMessageToList(const MessageListItem &item) - { - p_MessageListAdapter->AddListItem(item); - } /* -------------------------------------------------------------------------- */ // 初始化页面 bool MessageView::InitPage() diff --git a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordModel.cpp index 9ede7dc7e..946382391 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordModel.cpp @@ -1,7 +1,7 @@ /*** * @Date: 2024-05-20 19:40:41 * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-06-13 11:01:17 + * @LastEditTime: 2024-06-15 15:16:11 * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordModel.cpp */ /*** @@ -49,10 +49,6 @@ namespace OHOS // 设置标志位 bool TraingRecordModel::GetJsonStatus() { - if (jsonStatus) - { - // printf("存在文件!\r\n"); - } return jsonStatus; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordView.cpp index 33cfd9098..0a91efd93 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordView.cpp @@ -213,6 +213,7 @@ namespace OHOS TraingRecordList->SetMaxScrollDistance(MAX_SCR_DIS); recordView->SetYScrollBarVisible(true); // 设置滑动滚动条 + TraingRecordList->SetOnClickListener(static_cast(TraingRecordPresenter::GetInstance())); UIView::OnDragListener *recorddraglistener = static_cast(TraingRecordPresenter::GetInstance()); @@ -296,7 +297,6 @@ namespace OHOS void TraingRecordView::OnTearDownView() { - View::OnTearDownView(); return; } diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index f97bad742..78b2cfac1 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -799,7 +799,7 @@ errcode_t uapi_get_TIME_STR(uint32_t time,char *p_time, char separator, bool inc } time_t rawtime = (time_t)time; - struct tm *timeinfo = gmtime(&rawtime); + struct tm *timeinfo = localtime(&rawtime); if (timeinfo == NULL) { -- 2.17.1