std::string labelTitle; // 消息标题
std::string labelDetails; // 消息详情
std::string labelTime; // 消息时间
+ uint32 timestamp; // 消息时间戳
};
// 消息模型类
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(); // 删除单个项
- MessageData *GetNewestData(); // 获取最新信息项
+ bool HasDataJson(); // 判断是否存在数据Json
+ bool GetJsonLoadStatus(); // 获取Json加载状态
+ std::vector<MessageData> LoadMessageData(); // 加载消息数据
+ void SaveMessageData(const std::vector<MessageData> &messageVector); // 保存json数据
+ 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(int currentIndex); // 删除单个项
+ MessageData *GetNewestData(); // 获取最新信息项
+ void SetCurrentIndex(uint8_t index); // 设置当前项
+ uint8_t GetCurrentIndex(); // 获取当前项
private:
MessageModel();
uint8_t numberOfItems; // 项数
static const uint16_t MaxMessageListCount = 11; // 消息列表最大数量
MessageListItem Messages[MaxMessageListCount] = {0, false, nullptr, nullptr, nullptr}; // 消息列表
+ uint8_t indexCurrent; // 选择的项
bool jsonDataExists{false}; // Json数据存在标志
bool popupViewState{false}; // 弹出视图状态
cJSON *item = cJSON_GetArrayItem(dataArray, i);
MessageData messagedata;
- // 使用 strdup 复制字符串,确保每个字符串都有独立的内存空间
messagedata.labelTitle = cJSON_GetObjectItem(item, "title")->valuestring;
messagedata.labelDetails = cJSON_GetObjectItem(item, "msg")->valuestring;
// 获取时间
uint32 timestamp = cJSON_GetObjectItem(item, "time")->valueint;
+ messagedata.timestamp = timestamp;
char labelTime[20];
if (uapi_get_TIME_STR(timestamp, labelTime, '.', false) != ERRCODE_SUCC)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LoadMessageJson is ok");
return MessageVector;
}
+ /*保存json数据*/
+ void MessageModel::SaveMessageData(const std::vector<MessageData> &messageVector)
+ {
+ cJSON *root = cJSON_CreateObject();
+ cJSON *dataArray = cJSON_CreateArray();
+
+ for (const auto &message : messageVector)
+ {
+ cJSON *item = cJSON_CreateObject();
+ cJSON_AddStringToObject(item, "title", message.labelTitle.c_str());
+ cJSON_AddStringToObject(item, "msg", message.labelDetails.c_str());
+ cJSON_AddNumberToObject(item, "time", message.timestamp);
+ cJSON_AddNumberToObject(item, "read", message.isRead);
+
+ cJSON_AddItemToArray(dataArray, item);
+ }
+
+ cJSON_AddItemToObject(root, "infor", dataArray);
+
+ std::string jsonString = cJSON_Print(root);
+ cJSON_Delete(root);
+ std::ofstream file(MESSAGE_JSON_FILE);
+ if (file.is_open())
+ {
+ file << jsonString;
+ file.close();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveMessageData is ok");
+ }
+ else
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to open file for writing");
+ }
+ }
void MessageModel::PrintData(MessageData messagedata)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "**************************************");
// 清除所有数据
bool MessageModel::ClearAllData()
{
- return true;
+ if (uapi_delete_files(MESSAGE_JSON_FILE))
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClearAllData is ok");
+ return true;
+ }
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClearAllData is fail");
+ return false;
}
// 删除单个项
- bool MessageModel::DeleteSingleItem()
+ bool MessageModel::DeleteSingleItem(int currentIndex)
{
+ std::vector<MessageData> messageVector = LoadMessageData();
+
+ if (currentIndex < 0 || currentIndex >= messageVector.size())
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Invalid index for deletion");
+ return false;
+ }
+
+ messageVector.erase(messageVector.begin() + currentIndex);
+
+ // 保存修改后的数据
+ SaveMessageData(messageVector);
+
return true;
}
// 获取最新消息项
return &messageVector[numberOfItems - 1];
}
+ // 设置当前项
+ void MessageModel::SetCurrentIndex(uint8_t index)
+ {
+ indexCurrent = index;
+ }
+ // 获取当前项
+ uint8_t MessageModel::GetCurrentIndex()
+ {
+ return indexCurrent;
+ }
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "the index is %d", index);
// 读取json数据
std::vector<MessageData> messageDataVector = MessageModel::GetInstance().LoadMessageData();
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "the index is %d", index);
if (!messageDataVector.empty())
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "the index is %d", index);
// 选择点击按键的历史数据
int arraynum = messageDataVector.size() - 1;
MessageData messageData = messageDataVector[arraynum - index]; // 显示是倒序 id同理
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "the index is %d", index);
MessageModel::GetInstance().SetCurrentMessageData(&messageData);
+ MessageModel::GetInstance().SetCurrentIndex(arraynum - index);
NativeAbility::GetInstance().ChangeSlice(VIEW_MESSAGE_SHOW);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "the index is %d", index);
return true;
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "the messageDataVector is error");
+/***
+ * @Date: 2024-06-17 19:39:36
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-06-21 18:57:04
+ * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageShowPresenter.cpp
+ */
/***
* @Date: 2024-06-17 19:39:36
* @LastEditors: Caisking 3449750381@qq.com
UNUSED(event);
if (strcmp(view.GetViewId(), DELETEBUTTON) == 0)
{
+ // 删除当前项
+ uint8_t index = MessageModel::GetInstance().GetCurrentIndex();
+ MessageModel::GetInstance().DeleteSingleItem(index);
+
NativeAbility::GetInstance().ChangeSlice(VIEW_MESSAGE);
}
return true;