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

104 lines
2.7 KiB
C++

#ifndef TJD_UI_APP_CALCULATOR_VIEW_H
#define TJD_UI_APP_CALCULATOR_VIEW_H
#include "TjdUiAppCalculatorModel.h"
#include "TjdUiAppCalculatorPresenter.h"
#include "TjdUiMultiLanguageExt.h"
#include "View.h"
#include "components/ui_button.h"
#include "components/ui_image_view.h"
#include "components/ui_label.h"
#include "components/ui_scroll_view.h"
#include "components/ui_scroll_view_nested.h"
#include "components/ui_view_group.h"
#include <list>
namespace TJD {
#define RESULT_LABEL_X 41
#define SHOW_NUM_MAX 13 //最大显示位数
#define abs(x) ((x > 0.0) ? (x) : (-x))
#define __this (__calculator)
#define sizeof_this (sizeof(struct UiCalculator))
#define CALCULATOR_MAX_BUTTON 18
typedef struct CalButtonImgInfo
{
OHOS::ImageInfo *defaultInfo = nullptr;
OHOS::ImageInfo *highlightInfo = nullptr;
;
} ImageInfo_t;
enum
{
NONE,
ADD,
SUB,
MUL,
DIV,
EQUAL,
};
struct UiCalculator
{
double num_1;
double num_2;
uint8_t cal_mode; //运算模式
uint8_t point; // BIT7记录是否有效
uint8_t error = 0;
char str[SHOW_NUM_MAX];
};
class ButtonOnClickListener : public OHOS::UIView::OnClickListener
{
public:
ButtonOnClickListener() {}
~ButtonOnClickListener() {}
bool OnClick(OHOS::UIView &view, const OHOS::ClickEvent &event);
private:
void ButtonOnClickCallBack(OHOS::UIView &view, const OHOS::ClickEvent &event);
};
class CalculatorView : public OHOS::UIScrollView
{
public:
CalculatorView();
~CalculatorView();
static CalculatorView *GetInstance();
OHOS::UILabel *GetResultLabel() { return &reultLabel; }
OHOS::UILabel *GetResultLabel1() { return &reultLabel1; }
void CalculatorViewRefresh();
// UiCalculator * GetCalculator() {return __calculator;}
private:
OHOS::UILabel reultLabel;
OHOS::UILabel reultLabel1;
OHOS::UIButton button_[CALCULATOR_MAX_BUTTON];
ImageInfo_t imgButtonInfo[CALCULATOR_MAX_BUTTON];
ButtonOnClickListener buttonOnClickListener[CALCULATOR_MAX_BUTTON];
};
class TjdUiAppCalculatorPresenter;
class TjdUiAppCalculatorView : public OHOS::View<TjdUiAppCalculatorPresenter>
{
public:
TjdUiAppCalculatorView();
~TjdUiAppCalculatorView();
static TjdUiAppCalculatorView *GetInstance(void);
void OnStart() override;
// void OnSetUpView() override {};
// void OnTearDownView() override {};
void OnStop() override;
uint8_t GetDaysOfCurrentMonth(uint8_t month, uint16_t year);
int GetDaysOfCurrentWeek(int year, int month, int day);
OHOS::UIScrollView *GetMainView() { return mainView_; };
private:
CalculatorView *calculatorView_{nullptr};
OHOS::UIScrollView *mainView_{nullptr};
};
} // namespace TJD
#endif