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

331 lines
8.3 KiB
C++

#ifndef TJD_UI_APP_ALIPAY_VIEW_H
#define TJD_UI_APP_ALIPAY_VIEW_H
#include "TjdUiAppAlipayPresenter.h"
#include "TjdUiMultiLanguageExt.h"
#include "View.h"
#include "components/ui_barcode.h"
#include "components/ui_button.h"
#include "components/ui_checkbox.h"
#include "components/ui_edit_text.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_qrcode.h"
#include "components/ui_scroll_view_nested.h"
#include "components/ui_slider.h"
#include "components/ui_swipe_view.h"
#include "components/ui_view_group.h"
#include <list>
namespace TJD {
/* alipay sdk 支持最多20张公交卡 */
static const uint8_t ALIPAY_TRANS_LIST_ITEM_LEN = 20;
class AlipayViewBase : public OHOS::UIScrollView
{
public:
AlipayViewBase() { SetHorizontalScrollState(false); }
virtual ~AlipayViewBase() {}
virtual void ShowView() { SetVisible(true); };
virtual void HideView() { SetVisible(false); };
};
class AlipayButton : public OHOS::UIViewGroup
{
public:
AlipayButton(){};
AlipayButton(bool isBlue, const char *text, uint8_t size) { InitView(isBlue, text, size); }
~AlipayButton() { RemoveAll(); }
void InitView(bool isBlue, const char *text, uint8_t size);
private:
OHOS::UILabel name_;
};
class AlipayProtocolView : public AlipayViewBase
{
public:
AlipayProtocolView();
~AlipayProtocolView();
void SetSwipeViewPage(int page);
private:
OHOS::UISwipeView mainView_;
OHOS::UIViewGroup protocolMsgGroup_;
OHOS::UIImageView protocolSelectCodePoint_;
OHOS::UIImageView protocolUnSelectCodePoint_;
OHOS::UILabel protocolMsgTitle_;
OHOS::UILabel protocolMsgDesc_;
OHOS::UIImageView protocolEnterView_;
OHOS::UILabel protocolEnterViewDesc_;
OHOS::UIViewGroup bindMsgGroup_;
OHOS::UIImageView bindSelectCodePoint_;
OHOS::UIImageView bindUnSelectCodePoint_;
OHOS::UILabel bindMsgTitle_;
OHOS::UILabel bindMsgDesc_;
OHOS::UIImageView bindEnterView_;
OHOS::UILabel bindEnterViewDesc_;
};
class AlipayLogoView : public AlipayViewBase
{
public:
AlipayLogoView();
~AlipayLogoView() { RemoveAll(); }
private:
OHOS::UIImageView logo_;
OHOS::UIImageView desc_;
};
class AlipayBindView : public AlipayViewBase
{
public:
AlipayBindView();
~AlipayBindView() { RemoveAll(); }
void ShowView() override;
void HideView() override;
private:
OHOS::UILabel title_;
OHOS::UIQrcode qrcode_;
OHOS::UIImageView qrcodeIcon_;
};
class AlipayWaitView : public AlipayViewBase
{
public:
AlipayWaitView();
~AlipayWaitView();
void ShowView() override;
void HideView() override;
private:
OHOS::UIImageAnimatorView animator_;
OHOS::UILabel desc_;
OHOS::ImageAnimatorInfo *bindingAnimatorInfo_;
};
class AlipayBindMsgView : public AlipayViewBase
{
public:
AlipayBindMsgView();
~AlipayBindMsgView() { RemoveAll(); }
void ShowBinding(AlipayBindStatus status);
private:
OHOS::UIImageView logo_;
OHOS::UILabel desc_;
};
class AlipayListView : public AlipayViewBase
{
public:
AlipayListView();
~AlipayListView() { RemoveAll(); }
private:
class AlipayListItem : public OHOS::UIViewGroup
{
public:
AlipayListItem() {}
~AlipayListItem() { RemoveAll(); }
void InitView(const OHOS::ImageInfo *iconRes, const char *title);
private:
OHOS::UIImageView icon_;
OHOS::UILabel title_;
};
AlipayListItem payCodeGroup_;
AlipayListItem rideCodeGroup_;
AlipayListItem settingGroup_;
AlipayListItem helpGroup_;
};
class AlipayPayQrcodeView : public AlipayViewBase
{
public:
AlipayPayQrcodeView();
~AlipayPayQrcodeView();
void AlipayRefreshQrcode(const char *refreshStr);
void AlipayRefreshBarcode(const char *refreshStr);
void ShowView() override;
void HideView() override;
private:
OHOS::UISwipeView mainView_;
OHOS::UIViewGroup paymentCodeGroup_;
OHOS::UIImageView paymentSelectCodePoint_;
OHOS::UIImageView paymentUnSelectCodePoint_;
OHOS::UILabel paymentCodeTitle_;
OHOS::UIViewGroup paymentQrcodeGroup_;
OHOS::UIQrcode paymentQrcode_;
OHOS::UIImageView paymentQrcodeIcon_;
OHOS::UIViewGroup barcodeGroup_;
OHOS::UIImageView barcodeSelectCodePoint_;
OHOS::UIImageView barcodeUnSelectCodePoint_;
OHOS::UILabel barcodeTitle_;
OHOS::UIViewGroup barcodeIconGroup_;
OHOS::UIBarcode barcode_;
OHOS::UILabel barcodeNum_;
OHOS::UIView exitView_;
};
class AlipayRideCodeListView : public AlipayViewBase, public OHOS::UIView::OnClickListener
{
public:
AlipayRideCodeListView();
~AlipayRideCodeListView();
bool OnClick(UIView &view, const OHOS::ClickEvent &event) override;
void ShowView() override;
void UpdateRideCodeList();
private:
class AlipayRideCodeItem : public OHOS::UIViewGroup
{
public:
AlipayRideCodeItem() {}
~AlipayRideCodeItem() { RemoveAll(); }
void InitView(const char *desc);
private:
OHOS::UILabel desc_;
};
struct RideCodeItem
{
std::string desc;
AlipayRideCodeItem *item;
};
std::list<std::string> rideCodeList_{nullptr};
RideCodeItem rideItemList_[ALIPAY_TRANS_LIST_ITEM_LEN];
};
class AlipayRideCodeView : public AlipayViewBase
{
public:
AlipayRideCodeView();
~AlipayRideCodeView();
static AlipayRideCodeView *GetInstance();
void ShowQrcode(const char *desc, const char *qrcode, uint32_t len);
private:
OHOS::UILabel desc_;
OHOS::UIQrcode qrcode_;
OHOS::UILabel switch_;
};
class AlipaySettingView : public AlipayViewBase
{
public:
AlipaySettingView();
~AlipaySettingView() { RemoveAll(); }
private:
OHOS::UILabel title_;
OHOS::UILabel name_;
OHOS::UILabel email_;
AlipayButton removeBind_;
};
class AlipayHelpView : public AlipayViewBase
{
public:
AlipayHelpView();
~AlipayHelpView() { RemoveAll(); }
private:
OHOS::UILabel desc_;
AlipayButton enter_;
};
class AlipayUnBindView : public AlipayViewBase
{
public:
AlipayUnBindView();
~AlipayUnBindView() { RemoveAll(); }
private:
OHOS::UILabel title_;
OHOS::UILabel desc_;
AlipayButton enter_;
AlipayButton cancel_;
};
class AlipayUnBindSucView : public AlipayViewBase
{
public:
AlipayUnBindSucView();
~AlipayUnBindSucView() { RemoveAll(); }
private:
OHOS::UILabel desc_;
AlipayButton enter_;
};
class AlipayErrorMsgView : public AlipayViewBase, public OHOS::UIView::OnClickListener
{
public:
AlipayErrorMsgView();
~AlipayErrorMsgView() { RemoveAll(); }
bool OnClick(UIView &view, const OHOS::ClickEvent &event);
void ShowErrorMsg(const char *desc, AlipayViewIndex showIndex);
private:
OHOS::UIImageView errorIcon_;
OHOS::UILabel errorDesc_;
AlipayButton errorButton_;
AlipayViewIndex showIndex_{ALIPAY_UNKNOWN};
};
class AlipayUIScrollView : public OHOS::UIScrollViewNested
{
public:
AlipayUIScrollView() {}
~AlipayUIScrollView() {}
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 TjdUiAppAlipayPresenter;
class TjdUiAppAlipayView : public OHOS::View<TjdUiAppAlipayPresenter>
{
public:
TjdUiAppAlipayView();
~TjdUiAppAlipayView();
static TjdUiAppAlipayView *GetInstance(void);
void OnStart() override;
void OnStop() override;
void ShowView(AlipayViewIndex showIndex);
void ShowBindMsg(AlipayBindStatus status);
void ShowErrorMsg(const char *desc, AlipayViewIndex onClickShowIndex);
void ShowRideCode(const char *desc, const char *qrcode);
void RefreshPayCode(const char *payStr);
void JumpToConsentBindView();
static AlipayViewIndex currentViewIndex_;
private:
void InitTargetView(AlipayViewIndex index);
AlipayUIScrollView *mainView_{nullptr};
AlipayViewBase *viewManager_[ALIPAY_UNKNOWN]{nullptr};
};
} // namespace TJD
#endif