优化MessageModel函数接口
authorCaisking <3449750381@qq.com>
Wed, 19 Jun 2024 11:05:49 +0000 (19:05 +0800)
committerCaisking <3449750381@qq.com>
Wed, 19 Jun 2024 11:05:49 +0000 (19:05 +0800)
code/sdk/application/wearable/fd230app/nativeui/message/include/MessageModel.h
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp

index 58ca2e8..c043138 100644 (file)
@@ -1,32 +1,5 @@
-/*** 
- * @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}; // 弹出视图状态
     };
 }
 
index bbc5740..87b8699 100644 (file)
@@ -32,8 +32,7 @@ namespace OHOS
     MessageModel::MessageModel()
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageModel");
-        jsonStatus = CheckDataJson(); // 更新json状态
-        // LoadMessageJson();
+        jsonDataExists = HasDataJson(); // 更新json状态
     }
 
     MessageModel::~MessageModel() {}
@@ -44,12 +43,12 @@ namespace OHOS
         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);
@@ -72,7 +71,7 @@ namespace OHOS
         return true;
     }
     /*加载json函数*/
-    std::vector<MessageData> MessageModel::LoadMessageJson()
+    std::vector<MessageData> MessageModel::LoadMessageData()
     {
         std::ifstream file(MESSAGE_JSON_FILE);
         if (!file.is_open())
@@ -95,24 +94,24 @@ namespace OHOS
             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);
@@ -120,74 +119,82 @@ namespace OHOS
         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;
+    }
+
 }