#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 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 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 { 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