* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-04-04 15:13:51\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-10-12 16:05:30\r
+ * @LastEditTime: 2024-10-30 14:51:08\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/MainStopWatchPresenter.h\r
*/\r
#ifndef MAIN_STOPWATCH_PRESENTER_H\r
#include "MainStopWatchView.h"\r
#include <string>\r
#include "ui_resource_string.h"\r
+#include "ModelListenerSample.h"\r
/*秒表主视图*/\r
namespace OHOS\r
{\r
public UIView::OnClickListener,\r
public UIView::OnDragListener,\r
public RootView::OnKeyActListener,\r
- public UICheckBox::OnChangeListener\r
+ public UICheckBox::OnChangeListener,\r
+ public ModelListenerSample\r
{\r
public:\r
MainStopWatchPresenter();\r
bool OnDragEnd(UIView &view, const DragEvent &event) override;\r
bool OnChange(UICheckBox::UICheckBoxState state) override;\r
bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件\r
+ void Notify() override;\r
private:\r
UICheckBox *m_checkbox{nullptr};\r
UIButton *m_button{nullptr};\r
int RecordCycleNumber{0}; // 用来记录计时圈数\r
bool X_DRAG_FLAG{false};\r
bool isStartMark{false};\r
+ bool TimerIsRunning{false};\r
};\r
} // namespace OHOS\r
\r
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-04-04 15:13:51\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-04-09 20:22:12\r
+ * @LastEditTime: 2024-10-30 14:28:49\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/MainStopWatchView.h\r
*/\r
#ifndef MAIN_STOPWATCH_VIEW_H\r
UILabelExt *GetShowTimelabel(void);\r
UICheckBox *GetPlayOrPausecheckBox(void);\r
void ChangeRecordTimeToLimitView(void);\r
+ UIScrollView *GetScrollView(int16_t index);\r
private:\r
void InitMainStopWatchView(void);\r
void ClearAll(void);\r
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-04-04 15:13:51\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-04-07 10:35:43\r
+ * @LastEditTime: 2024-10-30 11:47:14\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/stopwatch/include/StopWatchModel.h\r
*/\r
#ifndef STOP_WATCH_MODEL_H\r
void StopWatch_StopTimer(void);\r
void StopWatch_PauseTimer();\r
void StopWatch_ResumeTimer(uint32_t interval);\r
+ bool isReachMaxRecordTime(void);\r
\r
\r
private:\r
UNUSED(view);\r
if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && MainStopWatchPresenter::X_DRAG_FLAG)\r
{\r
- NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+ if (&view == view_->GetScrollView(MAIN_STOPWATCH))\r
+ {\r
+ NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+ }\r
+ else if(&view == view_->GetScrollView(STOPWATCH_RECORD_CYCLE_TO_LIMIT))\r
+ {\r
+ view_->ChangeView(STOPWATCH_RECORD_CYCLE_TO_LIMIT, MAIN_STOPWATCH);\r
+ }\r
+ else if(&view == view_->GetScrollView(STOPWATCH_RECORD_TIME_TO_LIMIT))\r
+ {\r
+ view_->ChangeView(STOPWATCH_RECORD_TIME_TO_LIMIT, MAIN_STOPWATCH);\r
+ }\r
X_DRAG_FLAG = false;\r
}\r
return true;\r
{\r
mainStopWatchView->ChangeView(STOPWATCH_RECORD_TIME_TO_LIMIT, MAIN_STOPWATCH);\r
}\r
+ else if (strcmp(clickedViewId, PlayOrPausecheckBoxVIEWID) == 0) // 点击播放和暂停按钮\r
+ {\r
+ if (StopWatchModel::GetInstance()->isReachMaxRecordTime()) // 到达最大时间不能再计时\r
+ {\r
+ mainStopWatchView->ChangeView(MAIN_STOPWATCH, STOPWATCH_RECORD_TIME_TO_LIMIT);\r
+ }\r
+ }\r
return true;\r
}\r
\r
bool MainStopWatchPresenter::OnChange(UICheckBox::UICheckBoxState state)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainStopWatchPresenter::OnChange");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainStopWatchPresenter::OnChange,state = %d",state);\r
if (state == UICheckBox::UICheckBoxState::SELECTED)\r
{\r
StopWatchModel::GetInstance()->StopWatch_StartTimer(STOPWATCH_TIMER_DURATION); // 开启定时器,如果定时器存在会直接返回\r
m_button->SetViewId(ResetOrMarkButton_MARK_VIEWID);\r
m_button->SetImageSrc(ResetOrMarkButtonImg_Mark, ResetOrMarkButtonImg_Mark);\r
m_button->Invalidate(); // 图片重新赋值要刷新该区域\r
+ TimerIsRunning = true;\r
}\r
else\r
{\r
m_button->SetViewId(ResetOrMarkButton_RESET2_VIEWID);\r
m_button->SetImageSrc(ResetOrMarkButtonImg_Reset2, ResetOrMarkButtonImg_Reset2);\r
m_button->Invalidate();\r
+ TimerIsRunning = false;\r
}\r
return true;\r
}\r
return false;\r
}\r
\r
+ void MainStopWatchPresenter::Notify()\r
+ {\r
+ if (view_->GetScrollView(MAIN_STOPWATCH) && view_->GetScrollView(MAIN_STOPWATCH)->IsVisible())\r
+ {\r
+ if (view_->GetPlayOrPausecheckBox() && view_->GetPlayOrPausecheckBox() && TimerIsRunning)\r
+ {\r
+ view_->GetShowTimelabel()->SetText(StopWatchModel::GetInstance()->DisplayStopWatchDuration());\r
+ view_->GetShowTimelabel()->Invalidate();\r
+ }\r
+ }\r
+ }\r
}
\ No newline at end of file
}\r
scrollView[MAIN_STOPWATCH]->SetPosition(0, 0, 466, 466);\r
scrollView[MAIN_STOPWATCH]->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+ scrollView[MAIN_STOPWATCH]->SetTouchable(true);\r
+ scrollView[MAIN_STOPWATCH]->SetDraggable(true);\r
+ scrollView[MAIN_STOPWATCH]->SetOnDragListener(presenter_);\r
/* ----------------------------- stopWatchlabel ----------------------------- */\r
stopWatchlabel = new UILabelExt();\r
if (stopWatchlabel == nullptr)\r
// Add the CallBack about events\r
UICheckBox::OnChangeListener *PlayOrPausecheckBoxChangeListener = static_cast<UICheckBox::OnChangeListener *>(MainStopWatchPresenter::GetInstance());\r
PlayOrPausecheckBox->SetOnChangeListener(PlayOrPausecheckBoxChangeListener);\r
+ PlayOrPausecheckBox->SetOnClickListener(presenter_);\r
UIView::OnClickListener *ResetOrMarkbuttonClick = static_cast<UIView::OnClickListener *>(MainStopWatchPresenter::GetInstance());\r
ResetOrMarkbutton->SetOnClickListener(ResetOrMarkbuttonClick);\r
}\r
ChangeView(MAIN_STOPWATCH, STOPWATCH_RECORD_TIME_TO_LIMIT);\r
}\r
\r
+ UIScrollView *MainStopWatchView::GetScrollView(int16_t index)\r
+ {\r
+ return scrollView[index];\r
+ }\r
+\r
void MainStopWatchView::OnStart()\r
{\r
View<MainStopWatchPresenter>::OnStart();\r
return (char *)stopwatchDuration.c_str();\r
}\r
\r
- /*\r
- * @brief 在这里添加定时器到期后的处理逻辑\r
- */\r
- static void StopWatch_TimerCallbackProc(int data)\r
+ // 检查是否达到最大记录时间\r
+ bool StopWatchModel::isReachMaxRecordTime(void)\r
{\r
- if (MainStopWatchView::GetInstance() == nullptr || MainStopWatchView::GetInstance()->GetShowTimelabel() == nullptr || StopWatchModel::GetInstance()->DisplayStopWatchDuration() == nullptr)\r
+ if (g_StopWatchTimes >= MAX_STOPWATCH_TIME)\r
{\r
- return;\r
+ return true;\r
}\r
+ return false;\r
+ }\r
\r
- if ((g_StopWatchTimes) >= MAX_STOPWATCH_TIME) // 达到最大时间\r
-\r
- {\r
- MainStopWatchView::GetInstance()->GetPlayOrPausecheckBox()->SetState(UICheckBox::UNSELECTED);\r
- MainStopWatchView::GetInstance()->ChangeRecordTimeToLimitView();\r
- }\r
- else\r
+ static void StopWatch_TimerCallbackProc(int data)\r
+ {\r
+ if (MainStopWatchView::GetInstance() == nullptr)\r
{\r
- MainStopWatchView::GetInstance()->GetShowTimelabel()->SetText(StopWatchModel::GetInstance()->DisplayStopWatchDuration());\r
+ return;\r
}\r
+ MainStopWatchView::GetInstance()->GetPlayOrPausecheckBox()->SetState(UICheckBox::UNSELECTED);\r
+ MainStopWatchView::GetInstance()->ChangeRecordTimeToLimitView();\r
+ uapi_set_screen_on_api();\r
}\r
\r
/*\r
static void StopWatch_TimerCallback(int data)\r
{\r
g_StopWatchTimes += 10; // 每次回调增加10毫秒\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(StopWatch_TimerCallbackProc, data));\r
+ if(StopWatchModel::GetInstance()->isReachMaxRecordTime()) //达到最大时间\r
+ {\r
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(StopWatch_TimerCallbackProc, data));\r
+ }\r
}\r
\r
/*\r
if (scrollView == nullptr)\r
{\r
scrollView = new UIScrollView();\r
-\r
scrollView->SetPosition(0, 0, 466, 466);\r
scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+ scrollView->SetTouchable(true);\r
+ scrollView->SetDraggable(true);\r
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(MainStopWatchPresenter::GetInstance());\r
+ if (draglistener == nullptr)\r
+ {\r
+ return nullptr;\r
+ }\r
+ scrollView->SetOnDragListener(draglistener);\r
/* -------------------------------------------------------------------------- */\r
if (Title == nullptr)\r
{\r
scrollView = new UIScrollView();\r
scrollView->SetPosition(0, 0, 466, 466);\r
scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+ scrollView->SetTouchable(true);\r
+ scrollView->SetDraggable(true);\r
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(MainStopWatchPresenter::GetInstance());\r
+ if (draglistener == nullptr)\r
+ {\r
+ return nullptr;\r
+ }\r
+ scrollView->SetOnDragListener(draglistener);\r
/* -------------------------------------------------------------------------- */\r
if (Title == nullptr)\r
{\r