mcu_hi3321_watch/tjd/ui/app/wallet/TjdUiAppWalletView.cpp
2025-05-26 20:15:20 +08:00

624 lines
20 KiB
C++

#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<WalletCaseInfo>();
}
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<UIView::OnClickListener *>(TjdUiAppWalletPresenter::GetInstance());
// }
// if (OnDragListener_ == nullptr) {
// OnDragListener_ = dynamic_cast<UIView::OnDragListener *>(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