-/***
- * @Date: 2024-04-15 10:55:58
- * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-06-18 20:58:38
- * @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 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-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
- */
-
-#ifndef Message_MODEL_H
-#define Message_MODEL_H
+#ifndef MESSAGE_MODEL_H
+#define MESSAGE_MODEL_H
#include <cstdint>
#include <map>
namespace OHOS
{
+ // 消息数据结构体
struct MessageData
{
- bool read; // 是否已读
- std::string labeltitle; // 来信标签
- std::string labeldetails; // 信息内容
- std::string labeltime; // 来信时间
+ bool isRead; // 消息是否已读
+ std::string labelTitle; // 消息标题
+ std::string labelDetails; // 消息详情
+ std::string labelTime; // 消息时间
};
+
+ // 消息模型类
class MessageModel
{
public:
- static MessageModel &GetInstance(void);
- void InitMessageListItem();
- const MessageListItem *GetMessagelistItems() const;
- uint8_t GetMessageListNum() const;
- // 判断json是否存在
- bool CheckDataJson();
- // 设置标志位 获取json状态 避免反复读取
- bool GetJsonStatus();
- // 加载json函数
- std::vector<MessageData> LoadMessageJson();
- // 获取总消息数量
- uint8_t GetListNum();
- // 设置当前界面
- void SetPopupView(bool state);
- // 获取当前界面
- bool GetPopupView();
- // 打印函数
- void PrintfData(MessageData messagedata);
- // 获取目前的message
- MessageData *GetMessageData();
- // 设置目前的message
- void SetMessageData(MessageData *data);
+ static MessageModel &GetInstance();
+ void InitMessageListItems(); // 初始化消息列表项
+ const MessageListItem *GetMessageListItems() const; // 获取消息列表项
+ // uint8_t GetMessageListCount() const; // 获取消息列表数量
+
+ bool HasDataJson(); // 判断是否存在数据Json
+ bool GetJsonLoadStatus(); // 获取Json加载状态
+ std::vector<MessageData> LoadMessageData(); // 加载消息数据
+ uint8_t GetMessageCount() const; // 获取消息数量
+ void SetPopupViewState(bool state); // 设置弹出视图状态
+ bool GetPopupViewState(); // 获取弹出视图状态
+ void PrintData(const MessageData messageData); // 打印数据
+ MessageData *GetCurrentMessageData(); // 获取当前消息数据
+ void SetCurrentMessageData(MessageData *data); // 设置当前消息数据
+ bool ClearAllData(); // 清除所有数据
+ bool DeleteSingleItem(); // 删除单个项
private:
MessageModel();
MessageModel(const MessageModel &);
MessageModel &operator=(const MessageModel &);
virtual ~MessageModel();
- uint8_t ArrayNum;
- static const uint16_t MessageListMaxNum = 11;
- MessageListItem Messages[MessageListMaxNum] = {0, false, nullptr, nullptr, nullptr};
- // std::map<int, AppViewId> MessageIdToViewId;
- bool jsonStatus{false}; // json文件存在标志位
- bool popupStatus{false};
+ uint8_t numberOfItems; // 项数
+ static const uint16_t MaxMessageListCount = 11; // 消息列表最大数量
+ MessageListItem Messages[MaxMessageListCount] = {0, false, nullptr, nullptr, nullptr}; // 消息列表
+
+ bool jsonDataExists{false}; // Json数据存在标志
+ bool popupViewState{false}; // 弹出视图状态
};
}
MessageModel::MessageModel()
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageModel");
- jsonStatus = CheckDataJson(); // 更新json状态
- // LoadMessageJson();
+ jsonDataExists = HasDataJson(); // 更新json状态
}
MessageModel::~MessageModel() {}
return instance;
}
- uint8_t MessageModel::GetMessageListNum() const
+ uint8_t MessageModel::GetMessageCount() const
{
- return ArrayNum;
+ return numberOfItems;
}
/*检查是否存在数据*/
- bool MessageModel::CheckDataJson()
+ bool MessageModel::HasDataJson()
{
// 读取record.json文件
std::ifstream file(MESSAGE_JSON_FILE);
return true;
}
/*加载json函数*/
- std::vector<MessageData> MessageModel::LoadMessageJson()
+ std::vector<MessageData> MessageModel::LoadMessageData()
{
std::ifstream file(MESSAGE_JSON_FILE);
if (!file.is_open())
MessageData messagedata;
// 使用 strdup 复制字符串,确保每个字符串都有独立的内存空间
- messagedata.labeltitle = cJSON_GetObjectItem(item, "title")->valuestring;
- messagedata.labeldetails = cJSON_GetObjectItem(item, "msg")->valuestring;
+ messagedata.labelTitle = cJSON_GetObjectItem(item, "title")->valuestring;
+ messagedata.labelDetails = cJSON_GetObjectItem(item, "msg")->valuestring;
// 获取时间
uint32 timestamp = cJSON_GetObjectItem(item, "time")->valueint;
- char labeltime[20];
- if (uapi_get_TIME_STR(timestamp, labeltime, '.', false) != ERRCODE_SUCC)
+ char labelTime[20];
+ if (uapi_get_TIME_STR(timestamp, labelTime, '.', false) != ERRCODE_SUCC)
{
- messagedata.labeltime = std::string("2024.1.1 00:00");
+ messagedata.labelTime = std::string("2024.1.1 00:00");
}
else
{
- messagedata.labeltime = std::string(labeltime);
+ messagedata.labelTime = std::string(labelTime);
}
- // 这里根据解析的 JSON 数据类型修改 messagedata.read 的精确类型
- messagedata.read = cJSON_GetObjectItem(item, "read")->valueint;
- PrintfData(messagedata);
+ // 这里根据解析的 JSON 数据类型修改 messagedata.isRead 的精确类型
+ messagedata.isRead = cJSON_GetObjectItem(item, "read")->valueint;
+ PrintData(messagedata);
MessageVector.push_back(messagedata);
}
cJSON_Delete(root);
return MessageVector;
}
- void MessageModel::PrintfData(MessageData messagedata)
+ void MessageModel::PrintData(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, "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.isRead);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "**************************************");
}
- void MessageModel::InitMessageListItem()
+ void MessageModel::InitMessageListItems()
{
// 读取json数据
- std::vector<MessageData> messageVector = LoadMessageJson();
+ std::vector<MessageData> messageVector = LoadMessageData();
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++)
+ numberOfItems = messageVector.size();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "the numberOfItems is %d", numberOfItems);
+ for (int i = numberOfItems - 1, count = 0; i >= 0 && count < MaxMessageListCount; 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);
+ messageData.isRead = messageVector[i].isRead;
+ messageData.labelTitle = messageVector[i].labelTitle;
+ messageData.labelDetails = messageVector[i].labelDetails;
+ messageData.labelTime = messageVector[i].labelTime;
+ PrintData(messageData);
// 获取是否读取 来信 信息内容 时间
- Messages[count] = {count, messageData.read, messageData.labeltitle, messageData.labeldetails, messageData.labeltime};
+ Messages[count] = {count, messageData.isRead, messageData.labelTitle, messageData.labelDetails, messageData.labelTime};
}
}
}
- const MessageListItem *MessageModel::GetMessagelistItems() const
+ const MessageListItem *MessageModel::GetMessageListItems() const
{
return Messages;
}
- bool MessageModel::GetJsonStatus()
+ bool MessageModel::GetJsonLoadStatus()
{
- return jsonStatus;
- }
- uint8_t MessageModel::GetListNum()
- {
- return ArrayNum;
+ return jsonDataExists;
}
+
// 设置当前界面
- void MessageModel::SetPopupView(bool state)
+ void MessageModel::SetPopupViewState(bool state)
{
- popupStatus = state;
+ popupViewState = state;
}
// 获取当前界面 0:没有记录 | 1:有记录
- bool MessageModel::GetPopupView()
+ bool MessageModel::GetPopupViewState()
{
- return popupStatus;
+ return popupViewState;
}
// 获取目前的message
- MessageData *MessageModel::GetMessageData()
+ MessageData *MessageModel::GetCurrentMessageData()
{
return &message_;
}
// 设置目前的message
- void MessageModel::SetMessageData(MessageData *data)
+ void MessageModel::SetCurrentMessageData(MessageData *data)
{
if (data != nullptr)
{
- message_.labeldetails = data->labeldetails;
- message_.labeltime = data->labeltime;
- message_.labeltitle = data->labeltitle;
- message_.read = data->read;
+ message_.labelDetails = data->labelDetails;
+ message_.labelTime = data->labelTime;
+ message_.labelTitle = data->labelTitle;
+ message_.isRead = data->isRead;
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetMessageData is ok");
}
}
+ // 清除所有数据
+ bool MessageModel::ClearAllData()
+ {
+ return true;
+ }
+ // 删除单个项
+ bool MessageModel::DeleteSingleItem()
+ {
+ return true;
+ }
+
}