mcu_hi3321_watch/tjd/ui/app/stopwatch/TjdUiAppStopwatchView.h
2025-05-26 20:15:20 +08:00

162 lines
5.6 KiB
C++

#ifndef TJD_UI_APP_STOPWATCH_VIEW_H
#define TJD_UI_APP_STOPWATCH_VIEW_H
#include "TjdUiAppStopwatchAdapter.h"
#include "TjdUiAppStopwatchPresenter.h"
#include "TjdUiMemManage.h"
#include "View.h"
#include "common/image.h"
#include "components/root_view.h"
#include "components/ui_image_animator.h"
#include "components/ui_image_view.h"
#include "components/ui_label.h"
#include "components/ui_list.h"
#include "components/ui_scroll_view.h"
#include "components/ui_scroll_view_nested.h"
#include "components/ui_view.h"
#include "components/ui_view_group.h"
#include "gfx_utils/graphic_types.h"
#include "hal_tick.h"
#include "rtc_api.h"
#include "sys/time.h"
#include "time.h"
#include "ui_label_ext.h"
#include "ui_view.h"
namespace TJD {
enum StopwatchViewIndex
{
STOPWATCH_START_VIEW,
STOPWATCH_CARRY_VIEW,
STOPWATCH_PAUSE_VIEW,
STOPWATCH_LIST_VIEW,
STOPWATCH_VIEW_COUNT
};
class StopwatchAnimatorCallback : public OHOS::AnimatorCallback
{
public:
explicit StopwatchAnimatorCallback(OHOS::UIImageView *img) : stopwatchImageScale_(img) {}
~StopwatchAnimatorCallback() override {}
void Callback(OHOS::UIView *view) override;
void OnStop(OHOS::UIView &view) override { curTime = 0; }
uint32_t startTimestamp = 0;
void SetAnimator(OHOS::Animator *animator) { animator_ = animator; }
void SetLabel(OHOS::UILabel *label) { label_ = label; }
private:
OHOS::Point labelStartPos_{107, 230};
OHOS::Point labelEndPos_{161, 76};
OHOS::Point imageStartPos_{179, 92};
OHOS::Point imageEndPos_{92, 86};
OHOS::UILabel *label_ = nullptr;
OHOS::Animator *animator_{nullptr};
OHOS::UIImageView *stopwatchImageScale_ = nullptr;
float scale = 0;
uint16_t curTime = 0;
uint16_t durationTime = 200;
int16_t startVal = durationTime;
int16_t endVal = durationTime / 2; // 2: half
};
class StopwatchUIScrollView : public OHOS::UIScrollViewNested
{
public:
StopwatchUIScrollView() {}
~StopwatchUIScrollView() {}
bool OnDragStartEvent(const OHOS::DragEvent &event) override;
bool OnDragEvent(const OHOS::DragEvent &event) override;
bool OnDragEndEvent(const OHOS::DragEvent &event) override;
private:
bool isOnStart_{false};
};
class TjdUiAppStopwatchtPresenter;
class TjdUiAppStopwatchView : public OHOS::View<TjdUiAppStopwatchPresenter>, public OHOS::UIViewGroup
{
public:
TjdUiAppStopwatchView();
~TjdUiAppStopwatchView();
static TjdUiAppStopwatchView *GetInstance(void);
void OnStart() override;
void OnStop() override;
void ShowView(StopwatchViewIndex hideView, StopwatchViewIndex showView);
void ChangestatusPause();
void ChangestatusPause_();
void ChangeAnimator();
void ChangestatusResume();
void ChangestatusClear();
void ShowList();
void UpdateStopwatchTime();
void SaveStopwatchTime();
void StartAnimator();
void MoveLabel();
void StopTimer();
void CoumtNumInit();
void StopAiainAnimator(int8_t boolnum);
StopwatchViewIndex GetCurrentView() { return currentView_; }
OHOS::List<StopwatchCaseInfo> &GetStopwatchItemList() { return *stopwatchInfoList_; }
void SetStopWatchListOpa(uint8_t opa);
bool GetStopWatchStart1Visible() { return stopwatchStart1_->IsVisible(); }
bool GetStopWatchPause1Visible() { return stopwatchPause1_->IsVisible(); }
bool GetStopWatchPause2Visible() { return stopwatchPause2_->IsVisible(); }
bool GetStopWatchResumeVisible() { return stopwatchResume_->IsVisible(); }
OHOS::UIView listBg1;
OHOS::UIView listBg2;
private:
StopwatchViewIndex currentView_{StopwatchViewIndex::STOPWATCH_START_VIEW};
std::string textStopwatch1_{nullptr};
StopwatchUIScrollView *containerAll_{nullptr};
OHOS::UIViewGroup *stopwatchView[STOPWATCH_VIEW_COUNT]{nullptr};
OHOS::UIScrollView *InitStopwatchStartView();
OHOS::UIScrollView *InitStopwatchCarryView();
OHOS::UIImageView *stopwatchImage1_{nullptr};
OHOS::UIImageView *stopwatchImage2_{nullptr};
OHOS::UIImageView *stopwatchImageScale_{nullptr};
OHOS::UIImageView *stopwatchImage4_{nullptr};
OHOS::UIImageView *stopwatchStart1_{nullptr};
OHOS::UIImageView *stopwatchStart2_{nullptr};
OHOS::UIImageView *stopwatchResume_{nullptr};
OHOS::UIImageView *stopwatchClear_{nullptr};
OHOS::UIImageView *stopwatchPause1_{nullptr};
OHOS::UIImageView *stopwatchPause2_{nullptr};
OHOS::UIImageView *stopwatchList1_{nullptr};
OHOS::UIImageView *stopwatchImageScaleTwo{nullptr};
OHOS::UILabel *lblStopWatchStartTime_{nullptr};
OHOS::UILabel *lblStopWatchPauseTime_{nullptr};
OHOS::UILabel *lblStopWatchCarryTime_{nullptr};
OHOS::UILabel *lblStopWatchListTime_{nullptr};
OHOS::UILabelExt *lblTopStopWatch1_{nullptr};
OHOS::UILabel *lblTopStopWatch2_{nullptr};
OHOS::UIImageAnimatorView *imageAnimatorstopwatch1_{nullptr};
void InitStopwatchImage();
std::string textStopwatch2_{nullptr};
uint64_t timestamp{0};
uint64_t time1_{0};
uint64_t time2_{0};
uint64_t time3_{0};
uint64_t time4_{0};
uint64_t time5_{0};
uint64_t time6_{0};
uint8_t countNum_{0};
uint64_t timeinterval{0};
bool boolFlag_{true};
bool boolFlagAgain_{false};
OHOS::List<StopwatchCaseInfo> *stopwatchInfoList_{nullptr};
TjdUiAppStopwatchAdapter *stopwatchListAdapter_{nullptr};
OHOS::UIList *stopwatchList_{nullptr};
StopwatchAnimatorCallback *callBack_{nullptr};
OHOS::Animator *moveAnimator_{nullptr};
bool animateStart_{false};
OHOS::GraphicTimer *timerMoveLabel_{nullptr};
uint16_t moveX{107};
uint16_t moveY{230};
uint16_t changeSize{72};
};
}
#endif