-/***
- * @Date: 2024-04-15 10:55:58
- * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-08-03 09:55:51
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessagePresenter.h
- */
-/***
- * @Date: 2024-04-15 10:55:58
- * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-07-06 16:36:09
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessagePresenter.h
- */
-/***
- * @Date: 2024-04-15 10:55:58
- * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-04-23 15:40:41
- * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessagePresenter.h
- */
+
#ifndef Message_PRESENTER_H
#define Message_PRESENTER_H
bool OnClick(UIView &view, const ClickEvent &event) override;
bool OnDrag(UIView &view, const DragEvent &event) override;
bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件
- MessageModel *p_MessageModel{nullptr};
+ MessageModel *model{nullptr};
};
} // namespace OHOS
-/***
+/***
* @Date: 2024-06-17 19:39:27
* @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-06-17 20:04:15
- * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageShowPresenter.h
+ * @LastEditTime: 2024-08-03 14:18:46
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageShowPresenter.h
*/
-
#ifndef MessageShow_PRESENTER_H
#define MessageShow_PRESENTER_H
#include "MessageShowView.h"
#include "message/include/MessageModel.h"
#include "components/ui_list.h"
+#include "common/key_code.h"
namespace OHOS
{
class MessageShowView;
class MessageShowPresenter : public Presenter<MessageShowView>,
public UIView::OnClickListener,
public UIView::OnDragListener,
+ public RootView::OnKeyActListener,
public UIList
{
public:
// 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
bool OnClick(UIView &view, const ClickEvent &event) override;
bool OnDrag(UIView &view, const DragEvent &event) override;
+ bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件
MessageShowModel *p_MessageShowModel{nullptr};
};
} // namespace OHOS
-/***
+/***
+ * @Date: 2024-06-22 11:36:16
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-08-03 14:23:21
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlPresenter.cpp
+ */
+/***
* @Date: 2024-06-22 11:36:16
* @LastEditors: Caisking 3449750381@qq.com
* @LastEditTime: 2024-07-25 15:51:56
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlPresenter.cpp
*/
-
#include "message/include/MessageControlPresenter.h"
#include "message/include/MessageControlView.h"
#include "message/include/MessageModel.h"
UNUSED(event);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageControlView::OnClick %s", view.GetViewId());
- if (!MessageModel::GetInstance().HasDataVector())
+ MessageModel &messageModel = MessageModel::GetInstance();
+
+ if (!messageModel.HasDataVector())
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Json data not loaded.");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Vector data not loaded.");
return false;
}
+
if (strcmp(view.GetViewId(), DELETEALLDATA) == 0)
{
// 执行全部删除操作
- MessageModel::GetInstance().ClearAllMessages();
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+ messageModel.ClearAllMessages();
+ NativeAbility::GetInstance().Back();
return true;
}
+
// 获取 MessageItemView 并检查索引
- MessageItemView *p_MessageItemView = static_cast<MessageItemView *>(&view);
- if (!p_MessageItemView)
+ MessageItemView *pMessageItemView = dynamic_cast<MessageItemView *>(&view);
+ if (!pMessageItemView)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Invalid view type.");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Invalid view type for view ID %s.", view.GetViewId());
return false;
}
- int index = p_MessageItemView->GetMessageListIndex();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "index is %d", index);
+ int index = pMessageItemView->GetMessageListIndex();
+ int messageCount = messageModel.GetMessageCount();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Clicked message index: %d, Total messages: %d", index, messageCount);
+
+ if (index >= 0 && index < messageCount)
+ {
+ messageModel.SetCurrentIndex(index);
+ messageModel.SetMessageAsRead();
+ NativeAbility::GetInstance().EnterSlice(VIEW_MESSAGE_SHOW); // 切换到详情界面
+ return true;
+ }
- MessageModel::GetInstance().SetCurrentIndex(index);
- MessageModel::GetInstance().SetMessageAsRead();
- NativeAbility::GetInstance().EnterSlice(VIEW_MESSAGE_SHOW); // 切换到详情界面
- return true;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Index %d is out of bounds.", index);
+ return false;
}
} // namespace OHOS
\ No newline at end of file
MessagePresenter::MessagePresenter()
{
- p_MessageModel = &MessageModel::GetInstance();
+ model = &MessageModel::GetInstance();
g_pMessagePresenter = this;
}
void MessagePresenter::OnStart()
{
- // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitMessageListItem");
- p_MessageModel->InitMessageListItems();
+ model->InitMessageListItems();
Presenter<MessageView>::OnStart();
}
return;
}
- // p_MessageModel->InitMessageListItems();
- if (p_MessageModel->GetPopupViewState())
+ if (model->GetPopupViewState())
{
- const MessageListItem *itemInfo = p_MessageModel->GetMessageListItems();
- for (int i = 0; i < p_MessageModel->GetMessageCount(); i++)
+ const MessageListItem *itemInfo = model->GetMessageListItems();
+ for (int i = 0; i < model->GetMessageCount(); i++)
{
view_->AddMessageToList(itemInfo[i]);
}
- // MessageView::GetInstance()->UpdataButton(p_MessageModel->GetMessageCount());
}
Presenter<MessageView>::OnResume();
UNUSED(event);
if (MessageModel::GetInstance().GetPopupViewState())
{
+ if (!(model->HasDataVector()))
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Vector data not loaded.");
+ return false;
+ }
+
if (strcmp(view.GetViewId(), DELETEALLDATA) == 0)
{
// 执行全部删除操作
- MessageModel::GetInstance().ClearAllMessages();
+ model->ClearAllMessages();
NativeAbility::GetInstance().Back();
return true;
}
- /* -------------------------------------------------------------------------- */
+
// 获取 MessageItemView 并检查索引
- MessageItemView *p_MessageItemView = static_cast<MessageItemView *>(&view);
- if (!p_MessageItemView)
+ MessageItemView *pMessageItemView = dynamic_cast<MessageItemView *>(&view);
+ if (!pMessageItemView)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Invalid view type.");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Error: Invalid view type for view ID %s.", view.GetViewId());
return false;
}
- int index = p_MessageItemView->GetMessageListIndex();
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "index is %d", index);
-
- MessageModel::GetInstance().SetCurrentIndex(index);
- MessageModel::GetInstance().SetMessageAsRead();
- // 切换到详情界面
- NativeAbility::GetInstance().EnterSlice(VIEW_MESSAGE_SHOW);
+ int index = pMessageItemView->GetMessageListIndex();
+ int messageCount = model->GetMessageCount();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Clicked message index: %d, Total messages: %d", index, messageCount);
- return true; // 返回 true 表示点击事件处理成功
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "the messageDataVector is error");
+ if (index >= 0 && index < messageCount)
+ {
+ model->SetCurrentIndex(index);
+ model->SetMessageAsRead();
+ NativeAbility::GetInstance().EnterSlice(VIEW_MESSAGE_SHOW); // 切换到详情界面
+ return true;
+ }
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Error: Index %d is out of bounds.", index);
}
- return true;
+
+ return false;
}
bool MessagePresenter::OnKeyAct(UIView &view, const KeyEvent &event)
// 如果是power键,且是亮屏状态,按键释放就返回上一级
if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)
{
- // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
NativeAbility::GetInstance().Back(TransitionType::TRANSITION_ZOOM);
}
return true;
+/***
+ * @Date: 2024-06-17 19:39:36
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-08-03 14:19:43
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageShowPresenter.cpp
+ */
#include "AppViewIDs.h"
#include "components/ui_label_ext.h"
#include "gfx_utils/graphic_log.h"
#include "wearable_log.h"
+#include "common/key_code.h"
+#include "KeyInputListener.h"
+#include "custom_utils.h"
+
namespace OHOS
{
return true;
}
+ bool MessageShowPresenter::OnKeyAct(UIView &view, const KeyEvent &event)
+ {
+ unsigned short keyID = event.GetKeyId();
+ unsigned short keyState = event.GetState();
+ // 如果是power键,且是亮屏状态,按键释放就返回上一级
+ if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)
+ {
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+ NativeAbility::GetInstance().Back(TransitionType::TRANSITION_ZOOM);
+ }
+ return true;
+ }
}
\ No newline at end of file
}
void MessageShowView::DeInitView()
{
- container_->RemoveAll();
- if (title != nullptr)
- {
- delete title;
- title = nullptr;
- }
- if (time != nullptr)
- {
- delete time;
- time = nullptr;
- }
- if (message != nullptr)
- {
- delete message;
- message = nullptr;
- }
- if (messageButton != nullptr)
- {
- delete messageButton;
- messageButton = nullptr;
- }
- if (deleteButton != nullptr)
- {
- delete deleteButton;
- deleteButton = nullptr;
- }
- if (container_ != nullptr)
- {
- container_->RemoveAll();
- delete container_;
- container_ = nullptr;
- }
- // delete draglistener;
- // draglistener = nullptr;
+ delete title;
+ title = nullptr;
+
+ delete time;
+ time = nullptr;
+
+ delete message;
+ message = nullptr;
+
+ delete messageButton;
+ messageButton = nullptr;
+
+ delete deleteButton;
+ deleteButton = nullptr;
}
void MessageShowView::InitializeLabel(UILabel *label, int posX, int posY, int width, int height, const char *viewId, int fontSize)
container_->Add(title);
container_->Add(time);
container_->Add(messageButton);
- // container_->Add(message);
container_->Add(deleteButton);
/* -------------------------------------------------------------------------- */
// UpdateMessage();
void MessageShowView::OnStart()
{
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnStart");
+ View<MessageShowPresenter>::OnStart();
+
container_ = new UIScrollView();
- if (container_ == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "container_ new fail");
- return;
- }
container_->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
container_->SetScrollBlankSize(35);
container_->SetReboundSize(50);
- container_->SetDirection(1);
- // 创建 draglistener 实例并设置为拖动监听器
- UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(MessageShowPresenter::GetInstance());
- if (draglistener == nullptr)
- {
- return;
- }
- container_->SetOnDragListener(draglistener);
+
+ container_->SetOnDragListener(presenter_);
container_->SetTouchable(true);
container_->SetDraggable(true);
- container_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
PreLoad();
+
RootView::GetInstance()->Add(container_);
+ SetContainerView(container_);
+
+ RootView::GetInstance()->SetOnKeyActListener(presenter_);
}
void MessageShowView::OnSetUpView()
{
void MessageShowView::OnStop()
{
View<MessageShowPresenter>::OnStop();
+ if (container_ != nullptr)
+ {
+ container_->RemoveAll();
+ delete container_;
+ container_ = nullptr;
+ }
RootView::GetInstance()->RemoveAll();
return;
}
MessageList->SetOnClickListener(presenter_);
messageView->SetOnDragListener(presenter_);
-
+#if 0
/*删除按键*/
int top = MessageList->GetHeight();
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "old top %d", top);
InitButtonExt(DeleteButton, 43, top, 380, 100, DELETEALLDATA, STR_CLEANALL, 30);
DeleteButton->SetOnClickListener(presenter_);
messageView->Add(DeleteButton);
-
+#endif
messageView->SetVisible(false); // 隐藏界面
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView end");
}
/// @brief 页面启动时需要执行的代码逻辑
void MessageView::OnStart()
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartResultView::OnStart");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartResultView::OnStart");
View<MessagePresenter>::OnStart();
// SetContainerView(new UIScrollView());