#include "TjdUiAppWalletView.h" #include "NativeAbility.h" #include "TjdUiAppIds.h" #include "TjdUiImageIds.h" #include "TjdUiMemManage.h" #include "TjdUiMultiLanguageExt.h" #include "TjdUiUtils.h" #include "common/image_cache_manager.h" #include "sql_fit.h" #include "sys_config.h" #include "wearable_log.h" // #include "gfx_utils/mem_check.h" using namespace OHOS; #define ENABLE_PRINT_INFO 1 #if ENABLE_PRINT_INFO #define static_print_info(...) sys_ui_log_i(__VA_ARGS__) //一般信息打印宏控制 #define static_print_warn(...) sys_ui_log_w(__VA_ARGS__) //警告信息打印一般常开 #define static_print_error(...) sys_ui_log_e(__VA_ARGS__) //错误信息打印一般常开 #define static_print_debug(...) sys_ui_log_d(__VA_ARGS__) //调试信息打印 #else #define static_print_info(...) #define static_print_warn(...) #define static_print_error(...) #define static_print_debug(...) #endif namespace TJD { #define WECHAT_IMAGE_BIN_PATH TJD_IMAGE_PATH "img_business_card.bin" #define BJ_IMAGE_BIN_PATH TJD_IMAGE_PATH "img_wallet.bin" struct WalletInfo { WalletItemIndex index; int resId; WalletType type; std::string description; qrcode_type_t boundResId; }; WalletInfo g_pv_Wallets[] = { {WALLET_TITLE_INDEX, NULL, WALLET_TYPE_HIDE, "卡包", QRCODE_MAX}, {WALLET_WECHAT_INDEX, IMG_BUSINESS_CARD_WECHAT, WALLET_TYPE_NORMAL, "微信", QRCODE_WECHATPAY}, {WALLET_ALIPAY_INDEX, IMG_WALLET_MENU_ALIPAY, WALLET_TYPE_NORMAL, "支付宝", QRCODE_ALIPAY}, }; static TjdUiAppWalletView *g_pv_AppWalletView = nullptr; WalletView TjdUiAppWalletView::currentViewIndex_ = WalletView::MAXTHVIEW; // class WalletOnClickedListener : public UIView::OnClickListener // { // public: // WalletOnClickedListener() {} // virtual ~WalletOnClickedListener() {} // virtual bool OnClick(UIView &view, const ClickEvent &event) // { // if (view.GetViewId() == "imgReturn_Return") { // // OHOS::NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_MENU_LIST); // OHOS::NativeAbility::GetInstance().ChangePreSlice(); // } // else if(view.GetViewId() == "imgReturn_cardView"){ // TjdUiAppWalletView::GetInstance()->ChangedView(LISTVIEW,CARDVIEW); // }else if(view.GetViewId() == "imgReturn_listView"){ // TjdUiAppWalletView::GetInstance()->ChangedView(LISTVIEW,TIPVIEW); // } // return true; // } // private: // }; bool WalletUIScrollView::OnDragStartEvent(const OHOS::DragEvent &event) { TjdUiAppWalletView *walletView = TjdUiAppWalletView::GetInstance(); if (walletView == nullptr) { return true; } if (TjdUiAppWalletView::currentViewIndex_ != WalletView::TIPVIEW && TjdUiAppWalletView::currentViewIndex_ != WalletView::LISTVIEW) { return true; } isOnStart_ = true; return OHOS::UIScrollViewNested::OnDragStartEvent(event); } bool WalletUIScrollView::OnDragEvent(const OHOS::DragEvent &event) { if (!isOnStart_) { return true; } TjdUiAppWalletView *walletView = TjdUiAppWalletView::GetInstance(); if (walletView == nullptr) { return true; } if (TjdUiAppWalletView::currentViewIndex_ != WalletView::TIPVIEW && TjdUiAppWalletView::currentViewIndex_ != WalletView::LISTVIEW) { return true; } return OHOS::UIScrollViewNested::OnDragEvent(event); } bool WalletUIScrollView::OnDragEndEvent(const OHOS::DragEvent &event) { if (!isOnStart_) { return true; } isOnStart_ = false; TjdUiAppWalletView *walletView = TjdUiAppWalletView::GetInstance(); if (walletView == nullptr) { return true; } if (TjdUiAppWalletView::currentViewIndex_ != WalletView::TIPVIEW && TjdUiAppWalletView::currentViewIndex_ != WalletView::LISTVIEW) { return true; } return OHOS::UIScrollViewNested::OnDragEndEvent(event); } TjdUiAppWalletView::TjdUiAppWalletView() { // printf("TjdUiAppWalletView::TjdUiAppWalletView()\n"); // OHOS::MemCheck::GetInstance()->EnableLeakCheck(true); g_pv_AppWalletView = this; } TjdUiAppWalletView::~TjdUiAppWalletView() { // printf("TjdUiAppWalletView::~TjdUiAppWalletView()\n"); g_pv_AppWalletView = nullptr; // MemCheck::GetInstance()->EnableLeakCheck(false); } TjdUiAppWalletView *TjdUiAppWalletView::GetInstance(void) { return g_pv_AppWalletView; } void TjdUiAppWalletView::InitWalletList() { auto &image = OHOS::ImageCacheManager::GetInstance(); if (walletItemList_ == nullptr) { walletItemList_ = new OHOS::List(); } walletItemList_->Clear(); OHOS::ImageInfo *boundRes = nullptr; for (const auto &walletCard : g_pv_Wallets) { boundRes = image.LoadOneInMultiRes(IMG_BUSINESS_CARD_ALREADY_BOUND, WECHAT_IMAGE_BIN_PATH); if (walletCard.index == WALLET_ALIPAY_INDEX) { image.LoadAllInMultiRes(BJ_IMAGE_BIN_PATH); imgItemInfo[walletCard.index] = image.LoadOneInMultiRes(walletCard.resId, BJ_IMAGE_BIN_PATH); } else if (walletCard.index == WALLET_WECHAT_INDEX) { image.LoadAllInMultiRes(WECHAT_IMAGE_BIN_PATH); imgItemInfo[walletCard.index] = image.LoadOneInMultiRes(walletCard.resId, WECHAT_IMAGE_BIN_PATH); } if (walletCard.index == WALLET_TITLE_INDEX) { walletItemList_->PushBack({walletCard.index, walletCard.type, NULL, walletCard.description.c_str()}); } else { walletItemList_->PushBack({walletCard.index, walletCard.type, imgItemInfo[walletCard.index], walletCard.description.c_str(), boundRes, walletCard.boundResId}); } } } void TjdUiAppWalletView::OnStart() { static_print_info("TjdUiAppWalletView::OnStart()"); InitWalletList(); if (containerAll_ == nullptr) { containerAll_ = new WalletUIScrollView(); } // if (onClickListener_ == nullptr) { // onClickListener_ = dynamic_cast(TjdUiAppWalletPresenter::GetInstance()); // } // if (OnDragListener_ == nullptr) { // OnDragListener_ = dynamic_cast(TjdUiAppWalletPresenter::GetInstance()); // } groupList_[WalletView::TIPVIEW] = InitTipView(); groupList_[WalletView::LISTVIEW] = InitListView(); groupList_[WalletView::CARDVIEW] = InitCardView(); containerAll_->SetPosition(0, 0, OHOS::HORIZONTAL_RESOLUTION, OHOS::VERTICAL_RESOLUTION); containerAll_->SetStyle(STYLE_BACKGROUND_OPA, 0); // containerAll_->SetOnDragListener(TjdUiAppWalletPresenter::GetInstance()); containerAll_->Add(groupList_[WalletView::LISTVIEW]); containerAll_->Add(groupList_[WalletView::TIPVIEW]); containerAll_->Add(groupList_[WalletView::CARDVIEW]); // RootView::GetInstance()->Add(containerAll_); AddViewToRootContainer(containerAll_); // if(sql_bt_get_is_payment_into_wechat()){ // sql_bt_set_is_payment_into_wechat(false); // ChooseWalletItem(WALLET_WECHAT_INDEX); // return; // } if (sql_bt_get_wallet_qrcode_show_flag()) { ShowListView(TIPVIEW); } else { ShowTipView(LISTVIEW); } // for (int i = 0; i < MAXTHVIEW; i++) { // if (groupList_[i] != nullptr) { // containerAll_->Add(groupList_[i]); // } // } } void TjdUiAppWalletView::OnStop() { printf("TjdUiAppWalletView::OnStop()\n"); if (containerAll_ != nullptr) { containerAll_->RemoveAll(); delete containerAll_; containerAll_ = nullptr; } for (int i = 0; i < MAXTHVIEW; i++) { if (groupList_[i] == nullptr) { continue; } groupList_[i]->RemoveAll(); delete groupList_[i]; groupList_[i] = nullptr; } if (listView_ != nullptr) { delete listView_; listView_ = nullptr; } if (tipView_ != nullptr) { delete tipView_; tipView_ = nullptr; } if (cardView_ != nullptr) { delete cardView_; cardView_ = nullptr; } // if (onClickListener_ != nullptr) { // delete onClickListener_; // onClickListener_ = nullptr; // } // if (OnDragListener_ != nullptr) { // delete OnDragListener_; // OnDragListener_ = nullptr; // } if (lblTitle_ != nullptr) { delete lblTitle_; lblTitle_ = nullptr; } // if(lblTip_cardView != nullptr){ // delete lblTip_cardView; // lblTip_cardView = nullptr; // } if (lblTip_ != nullptr) { delete lblTip_; lblTip_ = nullptr; } // if(lblTip_cardView != nullptr){ // delete lblTip_cardView; // lblTip_cardView = nullptr; // } if (imgReturn_ != nullptr) { delete imgReturn_; imgReturn_ = nullptr; } if (imgReturn_cardView != nullptr) { delete imgReturn_cardView; imgReturn_cardView = nullptr; } if (qrcode_ != nullptr) { delete qrcode_; qrcode_ = nullptr; } if (walletListAdapter_ != nullptr) { delete walletListAdapter_; walletListAdapter_ = nullptr; } if (walletItemList_ != nullptr) { delete walletItemList_; walletItemList_ = nullptr; } } void TjdUiAppWalletView::ChooseWalletItem(WalletItemIndex index) { if (index < 0 || index >= WALLET_MAX_INDEX) { return; } qrcode_type_t type; switch (index) { case WALLET_TITLE_INDEX: return; break; case WALLET_WECHAT_INDEX: type = QRCODE_WECHATPAY; break; case WALLET_ALIPAY_INDEX: type = QRCODE_ALIPAY; break; case WALLET_MAX_INDEX: return; break; } listView_->SetVisible(false); InitWalletItemView(index); TjdUiUtils::AutoAlignHorizontalCenter(lblTip_cardView); if (sql_bt_get_qrcode_exist(type)) { uint8_t qrcode_data[256] = {0}; uint16_t qrcode_len = 0; if ((sql_bt_get_qrcode_info(type, qrcode_data, &qrcode_len) == 0) && qrcode_ != nullptr) { static_print_debug("qrcode_data: %s ,qrcode_len: %d", qrcode_data, qrcode_len); qrcode_->SetQrcodeInfo(qrcode_data, qrcode_len); qrcode_->SetPosition(109, 84, 248, 248); } ChangedView(CARDVIEW, LISTVIEW); } else { imgReturn_->SetViewId("imgReturn_listView"); ChangedView(TIPVIEW, LISTVIEW); } } void TjdUiAppWalletView::ChangedView(WalletView view, WalletView hideView) { static_print_debug("TjdUiAppWalletView::ChangedView..."); if (view >= MAXTHVIEW) { return; } if (viewMapper_[view] == nullptr) { return; } static_print_info("[%s][%d]: %s", __FILE__, __LINE__, __func__); (GetInstance()->*viewMapper_[view])(hideView); static_print_info("[%s][%d]: %s", __FILE__, __LINE__, __func__); currentViewIndex_ = view; } OHOS::UIScrollView *TjdUiAppWalletView::InitTipView() { static_print_info("TjdUiAppWalletView::InitTipView..."); if (tipView_ == nullptr) { tipView_ = new OHOS::UIScrollView(); } tipView_->SetPosition(0, 0, OHOS::HORIZONTAL_RESOLUTION, OHOS::VERTICAL_RESOLUTION); if (OHOS::PageTransitionMgr::GetInstance().GetTopSlideBackImage() == nullptr) { tipView_->SetOnDragListener(TjdUiAppWalletPresenter::GetInstance()); } tipView_->SetStyle(STYLE_BACKGROUND_OPA, 0); tipView_->SetVisible(false); if (lblTitle_ == nullptr) { lblTitle_ = new UILabelExt(); } lblTitle_->SetPosition(0, 16); lblTitle_->Resize(466, 40); lblTitle_->SetViewId("lblTitle_"); lblTitle_->SetStyle(STYLE_TEXT_FONT, 28); // lblTitle_->SetText("卡包"); lblTitle_->SetTextId(STR_ID_23); // lblTitle_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); lblTitle_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); lblTitle_->SetRollSpeed(0); lblTitle_->SetFont(TJD_VECTOR_FONT_FILENAME, 28); lblTitle_->SetVisible(true); tipView_->Add(lblTitle_); // Add Label to App if (lblTip_ == nullptr) { lblTip_ = new UILabelExt(); } lblTip_->SetPosition(0, 218); lblTip_->Resize(466, 45); lblTip_->SetViewId("lblTip_"); lblTip_->SetStyle(STYLE_TEXT_FONT, 32); lblTip_->SetTextId(STR_ID_333); // lblTip_->SetText("打开APP绑定后使用"); // lblTip_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); lblTip_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); lblTip_->SetRollSpeed(0); lblTip_->SetFont(TJD_VECTOR_FONT_FILENAME, 32); lblTip_->SetVisible(true); // Add to rootView tipView_->Add(lblTip_); /*-----------------------------Add imgReturn_ to AboutView_------------------------------*/ if (imgReturn_ == nullptr) { imgReturn_ = new UIImageView(); } imgReturn_->SetPosition(187, 352); imgReturn_->SetViewId("imgReturn_Return"); imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_BUSINESS_CARD_BJ, WECHAT_IMAGE_BIN_PATH); if (imgInfo != nullptr) { imgReturn_->SetSrc(imgInfo); } imgReturn_->SetTouchable(true); imgReturn_->SetOnClickListener(TjdUiAppWalletPresenter::GetInstance()); tipView_->Add(imgReturn_); return tipView_; } OHOS::UIScrollView *TjdUiAppWalletView::InitListView() { static_print_info("TjdUiAppWalletView::InitListView..."); if (listView_ == nullptr) { listView_ = new OHOS::UIScrollView(); } listView_->SetPosition(0, 0, OHOS::HORIZONTAL_RESOLUTION, OHOS::VERTICAL_RESOLUTION); if (OHOS::PageTransitionMgr::GetInstance().GetTopSlideBackImage() == nullptr) { listView_->SetOnDragListener(TjdUiAppWalletPresenter::GetInstance()); } // listView_->SetOnDragListener(TjdUiAppWalletPresenter::GetInstance()); listView_->SetStyle(STYLE_BACKGROUND_OPA, 0); listView_->SetVisible(false); // Add Label to App // if (lblTitle_listView == nullptr) { // lblTitle_listView = new UILabel(); // } // lblTitle_listView->SetPosition(207, 16); // lblTitle_listView->Resize(53, 27); // lblTitle_listView->SetViewId("lblTitle_"); // lblTitle_listView->SetStyle(STYLE_TEXT_FONT, 28); // // Set additional property // lblTitle_listView->SetText("卡包"); // lblTitle_listView->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); // lblTitle_listView->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); // // lblTitle_listView->SetRollSpeed(0); // lblTitle_listView->SetFont(TJD_VECTOR_FONT_FILENAME, 28); // lblTitle_listView->SetVisible(true); if (walletListAdapter_ == nullptr) { walletListAdapter_ = new TjdUiAppWalletAdapter(); } if (walletList_ == nullptr) { walletList_ = new OHOS::UIList(); } walletList_->SetPosition(0, 0, OHOS::HORIZONTAL_RESOLUTION, OHOS::VERTICAL_RESOLUTION - 110); walletList_->SetAdapter(walletListAdapter_); // walletList_->SetYScrollBarVisible(true); // walletList_->SetStartIndex(0); // walletList_->SetOnDragListener(TjdUiAppWalletPresenter::GetInstance()); listView_->Add(walletList_); // listView_->Add(lblTitle_listView); return listView_; } OHOS::UIScrollView *TjdUiAppWalletView::InitCardView() { static_print_info("TjdUiAppWalletView::InitCardView..."); if (cardView_ == nullptr) { cardView_ = new OHOS::UIScrollView(); } cardView_->SetPosition(0, 0, OHOS::HORIZONTAL_RESOLUTION, OHOS::VERTICAL_RESOLUTION); cardView_->SetOnDragListener(TjdUiAppWalletPresenter::GetInstance()); cardView_->SetStyle(STYLE_BACKGROUND_OPA, 0); cardView_->SetVisible(false); if (qrcode_ == nullptr) { qrcode_ = new UIQrcode(); } qrcode_->SetPosition(109, 84, 248, 248); qrcode_->SetECCLevel(QrCode::Ecc::QUARTILE); // qrcode_->SetQrcodeInfo("https://h5.sz-tjd.com/download/cn"); qrcode_->SetVisible(true); cardView_->Add(qrcode_); // if (lblTip_cardView == nullptr) { // lblTip_cardView = new UILabel(); // } lblTip_cardView.SetPosition(0, 28, 466, 42); // widget's left position and top position // lblTip_cardView.Resize(54, 27); // widget's width and height // lblTip_cardView.SetViewId("lblTip_cardView");// Set style lblTip_cardView.SetStyle(STYLE_TEXT_FONT, 30); // Set additional property // lblTip_cardView->SetText("微信"); // lblTip_cardView.SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); lblTip_cardView.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); // lblTip_cardView->SetRollSpeed(0); lblTip_cardView.SetFont(TJD_VECTOR_FONT_FILENAME, 28); lblTip_cardView.SetVisible(true); cardView_->Add(&lblTip_cardView); /*-----------------------------Add imgReturn_ to AboutView_------------------------------*/ if (imgReturn_cardView == nullptr) { imgReturn_cardView = new UIImageView(); } imgReturn_cardView->SetPosition(187, 352); imgReturn_cardView->SetViewId("imgReturn_cardView"); // imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_BUSINESS_CARD_BJ, IMAGE_BIN_PATH); if (imgInfo != nullptr) { imgReturn_cardView->SetSrc(imgInfo); } imgReturn_cardView->SetTouchable(true); imgReturn_cardView->SetOnClickListener(TjdUiAppWalletPresenter::GetInstance()); imgReturn_cardView->SetVisible(true); cardView_->Add(imgReturn_cardView); return cardView_; } bool TjdUiAppWalletView::ShowTipView(WalletView hideView) { static_print_info("TjdUiAppWalletView::ShowTipView... hideView = %d", hideView); if (groupList_[hideView] == nullptr) { static_print_info("groupList_ is nullptr"); return false; } groupList_[hideView]->SetVisible(false); if (groupList_[WalletView::TIPVIEW] == nullptr) { static_print_info("groupList_ is nullptr"); return false; } groupList_[WalletView::TIPVIEW]->SetVisible(true); groupList_[WalletView::TIPVIEW]->Invalidate(); currentViewIndex_ = WalletView::TIPVIEW; return true; } bool TjdUiAppWalletView::ShowListView(WalletView hideView) { static_print_info("TjdUiAppWalletView::ShowListView...hideView = %d", hideView); if (groupList_[hideView] == nullptr) { static_print_info("groupList_ is nullptr"); return false; } groupList_[hideView]->SetVisible(false); if (groupList_[WalletView::LISTVIEW] == nullptr) { static_print_info("groupList_ is nullptr"); return false; } groupList_[WalletView::LISTVIEW]->SetVisible(true); groupList_[WalletView::LISTVIEW]->Invalidate(); currentViewIndex_ = WalletView::LISTVIEW; return true; } bool TjdUiAppWalletView::ShowCardView(WalletView hideView) { static_print_info("TjdUiAppWalletView::ShowCardView...hideView = %d", hideView); if (groupList_[hideView] == nullptr) { static_print_info("groupList_ is nullptr"); return false; } printf("%s , line is %d\n", __FUNCTION__, __LINE__); groupList_[hideView]->SetVisible(false); printf("%s , line is %d\n", __FUNCTION__, __LINE__); if (groupList_[WalletView::CARDVIEW] == nullptr) { static_print_info("groupList_ is nullptr"); return false; } printf("%s , line is %d\n", __FUNCTION__, __LINE__); groupList_[WalletView::CARDVIEW]->SetVisible(true); printf("%s , line is %d\n", __FUNCTION__, __LINE__); groupList_[WalletView::CARDVIEW]->Invalidate(); currentViewIndex_ = WalletView::CARDVIEW; return true; } void TjdUiAppWalletView::InitWalletItemView(WalletItemIndex index) { if (index < 0 || index >= WALLET_MAX_INDEX) { return; } // clang-format off switch (index) { case WALLET_WECHAT_INDEX:{ // lblTip_cardView.SetText("微信"); lblTip_cardView.SetTextId(STR_ID_334); break; } case WALLET_ALIPAY_INDEX:{ // lblTip_cardView.SetText("支付宝"); lblTip_cardView.SetTextId(STR_ID_32); break; } default: break; } // clang-format on return; } } // namespace TJD