-/***
+/***
+ * @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
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
+/***
+ * @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
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
-/***
+/***
+ * @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
*/
#include <map>
#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:
void InitMessageListItem();
const MessageListItem *GetMessagelistItems() const;
uint8_t GetMessageListNum() const;
- //const std::map<MessageIndex, AppViewId> &GetMessageIdToViewId() 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);
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<int, AppViewId> MessageIdToViewId;
- bool btConnectStatus{false};
+ uint8_t ArrayNum;
+ static const uint16_t MessageListMaxNum = 10;
+ MessageListItem Messages[MessageListMaxNum] = {0, false, nullptr, nullptr, nullptr};
+ // std::map<int, AppViewId> MessageIdToViewId;
+
+ bool jsonStatus{false}; // json文件存在标志位
+ bool popupStatus{false};
};
}
+/***
+ * @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
#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
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);
private:
UIScrollView *container_ = nullptr;
- UILabel *title{nullptr};
- MessageListAdapter *p_MessageListAdapter{nullptr};
- UIList *MessageList = nullptr;
- UIView::OnDragListener *draglistener{nullptr};
-
/*无消息界面*/
UIScrollView *lackView{nullptr};
UIImageView *imageline{nullptr};
/*消息列表界面*/
UIScrollView *messageView{nullptr};
+ UILabelExt *title{nullptr};
+ MessageListAdapter *p_MessageListAdapter{nullptr};
+ UIList *MessageList = nullptr;
+ UIView::OnDragListener *draglistener{nullptr};
bool viewInitStatus{false};
};
}
}
- /// @brief 为音乐列表的每一项创建一个视图
+ /// @brief
/// @param inView 一个指向已存在的视图对象的指
/// @param index 要创建的视图在列表中的索引l。
/// @return 返回该视图对象
-/***
- * @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);
}
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);
}
-/***
+/***
* @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
*/
#include "common/image_cache_manager.h"
#include "UiConfig.h"
#include "ui_resource_image.h"
+#include "samgr_lite.h"
+#include <vector>
+#include <sstream>
+#include <iomanip>
+#include <fstream>
+#include <iostream>
+#include <string>
+#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() {}
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<MessageData> 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<MessageData>();
+ }
+ std::string jsonData((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
+ 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<MessageData> 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<MessageData> 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
+}
+/***
+ * @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
#include "message/include/MessageItemView.h"
#include "components/ui_abstract_scroll_bar.h"
#include "gfx_utils/graphic_log.h"
+#include "wearable_log.h"
namespace OHOS
{
void MessagePresenter::OnStart()
{
- // p_MessageModel->InitMessageListItem();
+
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitMessageListItem");
+ p_MessageModel->InitMessageListItem();
Presenter<MessageView>::OnStart();
}
void MessagePresenter::OnPause(void)
{
-
Presenter<MessageView>::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<MessageView>::OnResume();
}
// 向下回到主界面
if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM)
{
- NativeAbility::GetInstance().EnterSlice(VIEW_MAIN);
+ // NativeAbility::GetInstance().EnterSlice(VIEW_MAIN);
}
return true;
}
#include "message/include/MessageView.h"
#include "message/include/MessagePresenter.h"
+#include "message/include/MessageModel.h"
#include "UiConfig.h"
#include "wearable_log.h"
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};
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);
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();
}
}
+ /*无数据界面*/
void MessageView::ShowLackView()
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView start");
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);
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<UIView::OnClickListener *>(MessagePresenter::GetInstance()));
+
+ UIView::OnDragListener *Messagedraglistener = static_cast<UIView::OnDragListener *>(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);
}
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<MessagePresenter>::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<MessagePresenter>::OnTearDownView();
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()
/***
* @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
*/
/***
// 设置标志位
bool TraingRecordModel::GetJsonStatus()
{
- if (jsonStatus)
- {
- // printf("存在文件!\r\n");
- }
return jsonStatus;
}
TraingRecordList->SetMaxScrollDistance(MAX_SCR_DIS);
recordView->SetYScrollBarVisible(true); // 设置滑动滚动条
+
TraingRecordList->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingRecordPresenter::GetInstance()));
UIView::OnDragListener *recorddraglistener = static_cast<UIView::OnDragListener *>(TraingRecordPresenter::GetInstance());
void TraingRecordView::OnTearDownView()
{
-
View<TraingRecordPresenter>::OnTearDownView();
return;
}
}
time_t rawtime = (time_t)time;
- struct tm *timeinfo = gmtime(&rawtime);
+ struct tm *timeinfo = localtime(&rawtime);
if (timeinfo == NULL)
{