/*---------------------------------------------------------------------------- * Copyright (c) TJD Technologies Co., Ltd. 2024. All rights reserved. * * Description: TjdUiAppPlayDialView.cpp * * Author: liuguanwu * * Create: 2024-10 *--------------------------------------------------------------------------*/ #include "sys_config.h" #include "sql_all.h" #include "TjdUiImageIds.h" #include "TjdUiMemManage.h" #include "dock/focus_manager.h" #include "TjdUiMultiLanguageExt.h" #include "common/image_cache_manager.h" #include "graphic_service.h" #include "power_display_service.h" #include "TjdUiLauncher.h" #include "NativeAbility.h" #include "TjdUiAppPlayDialPresenter.h" #include "TjdUiAppPlayDialView.h" #include "TjdUiAppPlayDialDrawView.h" #include "TjdUiAppPlayDialAiView.h" #include "TjdUiAppPlayDialModel.h" #include "TjdUiAppMainView.h" #include "fstream" using namespace std; 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_debug(...) sys_ui_log_d(__VA_ARGS__) // 调试信息打印 #else #define static_print_info(...) #define static_print_warn(...) #define static_print_debug(...) #endif #define static_print_error(...) sys_ui_log_e(__VA_ARGS__) // 错误信息打印一般常开 #define PLAY_DIAL_BIN_PATH TJD_IMAGE_PATH "img_play_dial.bin" namespace TJD { // clang-format off static inline int16_t HorizontalCenter(int16_t width, int16_t parentWidth) { return (parentWidth - width) / 2; } static inline int16_t VerticalCenter(int16_t height, int16_t parentHeight) { return (parentHeight - height) / 2; } inline void InitLabelHorCenter(OHOS::UILabel &label, uint8_t size, int16_t y, int16_t target, const char *text) { label.SetFont(TJD_VECTOR_FONT_FILENAME, size); label.SetText(text); label.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_ADAPT); label.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER); static_print_debug("InitLabelHorCenter[%s] x=%d-%d-%d-%d",text, label.GetX(), label.GetWidth(), target, HorizontalCenter(label.GetWidth(), target)); label.SetPosition(label.GetX() + HorizontalCenter(label.GetWidth(), target), y); } inline void InitLabelVerCenter(OHOS::UILabel &label, uint8_t size, int16_t x, int16_t target, const char *text) { label.SetFont(TJD_VECTOR_FONT_FILENAME, size); label.SetText(text); label.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_ADAPT); label.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER); label.SetPosition(x, label.GetY() + VerticalCenter(label.GetHeight(), target)); } inline void InitLabelCenter(OHOS::UILabel &label, uint8_t size, int16_t parentWidth, int16_t parentHeight, const char *text) { label.SetFont(TJD_VECTOR_FONT_FILENAME, size); label.SetText(text); label.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_ADAPT); label.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER); label.SetPosition(label.GetX() + HorizontalCenter(label.GetWidth(), parentWidth), label.GetY() + VerticalCenter(label.GetHeight(), parentHeight)); } // clang-format on PlayDialViewIndex TjdUiAppPlayDialView::currentViewIndex_ = PlayDialViewIndex::PLAYDIAL_UNKNOWN; PlayDialViewIndex TjdUiAppPlayDialView::previousViewIndex_ = PlayDialViewIndex::PLAYDIAL_UNKNOWN; TjdAiResultIndex TjdUiAppPlayDialView::Result_ = TjdAiResultIndex::AI_RESULT_INVALID; TjdDialTipsIndex TjdUiAppPlayDialView::TipsIndex_ = PLAYDIAL_TIPS_INVALID; DialSelectType TjdUiAppPlayDialView::selectType_ = DialSelectType::SELECT_TYPE_INVALID; bool PlayDialUIScrollView::OnDragStartEvent(const OHOS::DragEvent &event) { if (TjdUiAppPlayDialView::GetInstance().currentViewIndex_ != PLAYDIAL_HOME) { return true; } isOnStart_ = true; return OHOS::UIScrollViewNested::OnDragStartEvent(event); } bool PlayDialUIScrollView::OnDragEvent(const OHOS::DragEvent &event) { if (!isOnStart_) { return true; } if (TjdUiAppPlayDialView::GetInstance().currentViewIndex_ != PLAYDIAL_HOME) { return true; } return OHOS::UIScrollViewNested::OnDragEvent(event); } bool PlayDialUIScrollView::OnDragEndEvent(const OHOS::DragEvent &event) { if (!isOnStart_) { return true; } isOnStart_ = false; if (TjdUiAppPlayDialView::GetInstance().currentViewIndex_ != PLAYDIAL_HOME) { return true; } return OHOS::UIScrollViewNested::OnDragEndEvent(event); } // class TjdUiAppPlayDialView start static TjdUiAppPlayDialView *g_pv_PlayDialView = nullptr; TjdUiAppPlayDialView::TjdUiAppPlayDialView() { g_pv_PlayDialView = this; } TjdUiAppPlayDialView::~TjdUiAppPlayDialView() { TjdUiAppPlayDialModel::GetInstance().LefunAiRequestExitLefunAi(); ImageCacheManager::GetInstance().UnloadAllInMultiRes(PLAY_DIAL_BIN_PATH); g_pv_PlayDialView = nullptr; } TjdUiAppPlayDialView &TjdUiAppPlayDialView::GetInstance() { return *g_pv_PlayDialView; } void TjdUiAppPlayDialView::OnStart() { static_print_info("[%s][%d]: %s", __FILE__, __LINE__, __func__); View::OnStart(); OHOS::ImageCacheManager::GetInstance().LoadAllInMultiRes(PLAY_DIAL_BIN_PATH); if (mainView_ == nullptr) { mainView_ = new PlayDialUIScrollView(); } AddViewToRootContainer(mainView_); mainView_->SetPosition(0, 0, OHOS::HORIZONTAL_RESOLUTION, OHOS::VERTICAL_RESOLUTION); mainView_->SetViewId("TjdUiAppPlayDialView"); // mainView_->SetOnDragListener(&TjdUiAppPlayDialPresenter::GetInstance()); currentViewIndex_ = PlayDialViewIndex::PLAYDIAL_UNKNOWN; for (int i = 0; i < PlayDialViewIndex::PLAYDIAL_UNKNOWN; i++) { if (viewManager_[i] != nullptr) { viewManager_[i]->SetPosition(0, 0); viewManager_[i]->SetVisible(false); mainView_->Add(viewManager_[i]); } } ShowView(PlayDialViewIndex::PLAYDIAL_HOME); } void TjdUiAppPlayDialView::OnStop() { static_print_info("[%s][%d]: %s", __FILE__, __LINE__, __func__); #if 1 if (mainView_ != nullptr) { mainView_->RemoveAll(); delete mainView_; mainView_ = nullptr; ; } #endif for (int i = 0; i < PlayDialViewIndex::PLAYDIAL_UNKNOWN; i++) { if (viewManager_[i] != nullptr) { delete viewManager_[i]; viewManager_[i] = nullptr; } } } void TjdUiAppPlayDialView::InitTargetView(PlayDialViewIndex index) { if (viewManager_[index] != nullptr) { return; } // clang-format off switch (index) { case PLAYDIAL_HOME: viewManager_[index] = new PlayDialHomeView(); break; case PLAYDIAL_AI_STYLE: viewManager_[index] = new PlayDialAIStyleView(); break; case PLAYDIAL_AI_LISTEN: viewManager_[index] = new PlayDialAIListenView(); break; case PLAYDIAL_AI_MAKING_TXT: viewManager_[index] = new PlayDialAIMakingView(); break; case PLAYDIAL_AI_MAKING_IMG: viewManager_[index] = new PlayDialAIMakingIMGView(); break; case PLAYDIAL_AI_PREVIEW: viewManager_[index] = new PlayDialAIPreviewView(); break; case PLAYDIAL_DRAW_HINT: viewManager_[index] = new PlayDialDrawHintView(); break; case PLAYDIAL_DRAW_MAIN: viewManager_[index] = new PlayDialDrawMainView(); break; case PLAYDIAL_DRAW_MAKING_IMG: viewManager_[index] = new PlayDialDrawMakingIMGView(); break; case PLAYDIAL_DRAW_PREVIEW: viewManager_[index] = new PlayDialDrawPreviewView(); break; case PLAYDIAL_LOG_LIST: viewManager_[index] = new PlayDialHistoryView(); break; case PLAYDIAL_LOG_SINGLE: viewManager_[index] = new PlayDialHistorySingleView(); break; case PLAYDIAL_TIPSV_SUCCESS: viewManager_[index] = new PlayDialSetSuccessView(); break; case PLAYDIAL_TIPS_NO_CONNECT: viewManager_[index] = new PlayDialNoConnectView(); break; //case PLAYDIAL_TIPS_OTHER: viewManager_[index] = new PlayDialNoConnectView(); break; default: break; } // clang-format on if (viewManager_[index] == nullptr) { return; } viewManager_[index]->SetPosition(0, 0); viewManager_[index]->SetVisible(false); mainView_->Add(viewManager_[index]); } void TjdUiAppPlayDialView::ShowView(PlayDialViewIndex showIndex) { static_print_info("[%s][%d]: %s : %d", __FILE__, __LINE__, __func__, showIndex); if (showIndex < 0 || showIndex >= PlayDialViewIndex::PLAYDIAL_UNKNOWN) { return; } InitTargetView(showIndex); if (currentViewIndex_ >= 0 && currentViewIndex_ < PlayDialViewIndex::PLAYDIAL_UNKNOWN && viewManager_[currentViewIndex_] != nullptr) { viewManager_[currentViewIndex_]->HideView(); } previousViewIndex_ = currentViewIndex_; if (viewManager_[showIndex] != nullptr) { viewManager_[showIndex]->ShowView(); } currentViewIndex_ = showIndex; } // class TjdUiAppPlayDialView end // class PlayDialHomeView start PlayDialHomeView::PlayDialHomeView() { static_print_info("[%s][%d]: %s", __FILE__, __LINE__, __func__); Resize(OHOS::HORIZONTAL_RESOLUTION, OHOS::VERTICAL_RESOLUTION); SetStyle(OHOS::STYLE_BACKGROUND_COLOR, 0x00000000); if (OHOS::PageTransitionMgr::GetInstance().GetTopSlideBackImage() == nullptr) { SetOnDragListener(&TjdUiAppPlayDialPresenter::GetInstance()); } int16_t title_y = 155 + 130 / 2 - 28 / 2; // InitLabelHorCenter(titleLeft_, 28, title_y, 172, "绘图表盘"); titleLeft_.SetFont(TJD_VECTOR_FONT_FILENAME, 28); titleLeft_.SetTextId(STR_ID_385); titleLeft_.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_MARQUEE); titleLeft_.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER); titleLeft_.SetPosition(67, title_y, 118, 40); // InitLabelHorCenter(titleRight_, 28, title_y, 172, "AI表盘"); titleRight_.SetFont(TJD_VECTOR_FONT_FILENAME, 28); titleRight_.SetTextId(STR_ID_386); titleRight_.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_MARQUEE); titleRight_.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER); titleRight_.SetPosition(298, title_y, 118, 40); // titleLeft_.SetX(40 + titleLeft_.GetX()); // titleRight_.SetX(254 + titleRight_.GetX()); titleRight_.SetTextColor(OHOS::Color::Black()); // titleRight_.SetStyle(STYLE_TEXT_COLOR, OHOS::Color::Black().full); clickLeft_.SetPosition(40, 155, 172, 130); auto clickLeft_Res = OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_PLAY_DIAL_PAINTING, PLAY_DIAL_BIN_PATH); if (clickLeft_Res != nullptr) { clickLeft_.SetSrc(clickLeft_Res); clickLeft_.SetViewId(PLAYDIAL_HOME_VIEW_BTN_LEFT_ID); clickLeft_.SetOnClickListener(&TjdUiAppPlayDialPresenter::GetInstance()); clickLeft_.SetTouchable(true); } clickRight_.SetPosition(254, 155, 172, 130); auto clickRight_Res = OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_PLAY_DIAL_AI, PLAY_DIAL_BIN_PATH); if (clickRight_Res != nullptr) { clickRight_.SetSrc(clickRight_Res); clickRight_.SetViewId(PLAYDIAL_HOME_VIEW_BTN_RIGHT_ID); clickRight_.SetOnClickListener(&TjdUiAppPlayDialPresenter::GetInstance()); clickRight_.SetTouchable(true); } logoRecord_.SetPosition(194, 366, 80, 80); auto logoRecord_Res = OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_PLAY_DIAL_HISTORY, PLAY_DIAL_BIN_PATH); if (logoRecord_Res != nullptr) { logoRecord_.SetSrc(logoRecord_Res); logoRecord_.SetViewId(PLAYDIAL_HOME_VIEW_BTN_RECORD_ID); logoRecord_.SetOnClickListener(&TjdUiAppPlayDialPresenter::GetInstance()); logoRecord_.SetTouchable(true); } Add(&clickLeft_); Add(&clickRight_); Add(&logoRecord_); Add(&titleLeft_); Add(&titleRight_); } PlayDialHomeView::~PlayDialHomeView() { static_print_info("[%s][%d]: %s", __FILE__, __LINE__, __func__); RemoveAll(); } void PlayDialHomeView::ShowView() { extern std::string g_PlayDialPath; g_PlayDialPath.clear(); SetVisible(true); TjdUiAppPlayDialView::GetInstance().Result_ = AI_RESULT_INVALID; TjdUiAppPlayDialView::GetInstance().TipsIndex_ = PLAYDIAL_TIPS_INVALID; TjdUiAppPlayDialModel::GetInstance().LefunAiRequestExitLefunAi(); } void PlayDialHomeView::HideView() { SetVisible(false); } // class PlayDialHistoryView start PlayDialHistoryAdapter *g_PlayDialHistoryAdapter{nullptr}; PlayDialHistoryView *g_PlayDialHistoryView{nullptr}; PlayDialHistoryView::PlayDialHistoryView(void) { g_PlayDialHistoryView = this; } PlayDialHistoryView::~PlayDialHistoryView(void) { static_print_info("[%s][%d]: %s", __FILE__, __LINE__, __func__); PageUninit(); g_PlayDialHistoryView = nullptr; } PlayDialHistoryView *PlayDialHistoryView::GetInstance(void) { return g_PlayDialHistoryView; } void PlayDialHistoryView::PageInit(void) { if (initFlag_ == true) { return; } initFlag_ = true; if (TjdUiAppPlayDialModel::GetInstance().UpdateHistoryFileList(10)) { SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); SetStyle(OHOS::STYLE_BACKGROUND_COLOR, 0x00000000); SetOnDragListener(&TjdUiAppPlayDialPresenter::GetInstance()); styleList_ = new PlayDialHistoryAdapter::HistoryList(); g_PlayDialHistoryAdapter = new PlayDialHistoryAdapter(); styleList_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); // styleList_->SetStartIndex(lastIndex);//这个设置必须位于SetAdapter之前 styleList_->SetAdapter(g_PlayDialHistoryAdapter); styleList_->SetThrowDrag(true); styleList_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); // styleList_->SetMaxScrollDistance(500); // 1000: max scroll distance styleList_->SetSwipeACCLevel(15); // 800: compensation distance styleList_->SetDragACCLevel(10); // 5: drag acceleration styleList_->SetYScrollBarVisible(true); styleList_->SetScrollBlankSize(styleList_->GetHeight() >> 1); styleList_->SetReboundSize(styleList_->GetHeight() >> 1); // 100: rebound size styleList_->SetSelectPosition(styleList_->GetHeight() >> 1); styleList_->EnableAutoAlign(true); styleList_->SetAutoAlignTime(200); styleList_->EnableCrossDragBack(false); styleList_->SetElastic(true); styleList_->ScrollBy(Screen::GetInstance().GetHeight() / 2 - 220 / 2); styleList_->SetViewId(PLAYDIAL_LOG_LIST_VIEW_LIST_ID); styleList_->SetOnRotateListener(&TjdUiAppPlayDialPresenter::GetInstance()); Add(styleList_); } else { SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); SetStyle(OHOS::STYLE_BACKGROUND_COLOR, 0x00000000); int16_t title_y = 327; // InitLabelHorCenter(titleDown_, 28, title_y, 466, "暂无记录!"); titleDown_.SetFont(TJD_VECTOR_FONT_FILENAME, 28); titleDown_.SetTextId(STR_ID_385); titleDown_.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_MARQUEE); titleDown_.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER); titleDown_.SetPosition(0, title_y, 466, 40); logoNoRecord_.SetPosition(168, 104, 162, 203); auto img_Res = OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_PLAY_DIAL_NO_DATA, PLAY_DIAL_BIN_PATH); if (img_Res != nullptr) { logoNoRecord_.SetSrc(img_Res); } Add(&titleDown_); Add(&logoNoRecord_); } } void PlayDialHistoryView::PageUninit(void) { RemoveAll(); if (styleList_) { styleList_->ClearFocus(); delete styleList_; styleList_ = nullptr; } if (g_PlayDialHistoryAdapter) { delete g_PlayDialHistoryAdapter; g_PlayDialHistoryAdapter = nullptr; } initFlag_ = false; } void PlayDialHistoryView::ShowView() { PageInit(); if (styleList_) { styleList_->RequestFocus(); styleList_->SetRotateFactor(1.0); } SetVisible(true); } void PlayDialHistoryView::HideView() { if (styleList_) { styleList_->ClearFocus(); } SetVisible(false); } void PlayDialHistoryView::clickCallBackImage(int16_t index) { std::vector *strList = TjdUiAppPlayDialModel::GetInstance().GetHistoryFileList(); extern std::string g_PlayDialPreviewPath; g_PlayDialPreviewPath = (strList->data()[index]); static_print_info("PlayDialHistoryView::clickCallBackImage():%d-%s-[%s]", index, g_PlayDialPreviewPath.c_str(), strList->data()[index].c_str()); } void PlayDialHistoryView::clickCallBackDelete(int16_t index) { GraphicService::GetInstance()->PostGraphicEvent(std::bind( [](int16_t index) { std::vector *strList = TjdUiAppPlayDialModel::GetInstance().GetHistoryFileList(); std::string deletePath = (strList->data()[index]); TjdUiAppPlayDialModel::GetInstance().FileDelete(deletePath.c_str()); if (TjdUiAppPlayDialModel::GetInstance().UpdateHistoryFileList(10)) { PlayDialHistoryView::GetInstance()->styleList_->RefreshList(); } else { PlayDialHistoryView::GetInstance()->PageUninit(); PlayDialHistoryView::GetInstance()->ShowView(); PlayDialHistoryView::GetInstance()->Invalidate(); } static_print_info("view.GetViewIndex()[%d]: %s", index, deletePath.c_str()); }, index)); //在事件中删除目标,输入设递归可能会非法指针。 } // class PlayDialHistoryView end // class PlayDialHistorySingleView start PlayDialHistorySingleView *g_PlayDialHistorySingleView; PlayDialHistorySingleView::PlayDialHistorySingleView() { g_PlayDialHistorySingleView = this; static_print_info("[%s][%d]: %s", __FILE__, __LINE__, __func__); SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); SetOnDragListener(&TjdUiAppPlayDialPresenter::GetInstance()); ImageInfo *img_Res{nullptr}; ImageBg_.SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); img_Res = OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_PLAY_DIAL_BJ, PLAY_DIAL_BIN_PATH); ImageBg_.SetSrc(img_Res); clickDown_.SetPosition(77, 378, 312, 88); //图片自带文字,后续多语言需要调整 img_Res = OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_PLAY_DIAL_ICON_SETTING, PLAY_DIAL_BIN_PATH); if (img_Res != nullptr) { clickDown_.SetSrc(img_Res); clickDown_.SetViewId(PLAYDIAL_LOG_SINGLE_VIEW_BTN_ID); clickDown_.SetOnClickListener(&TjdUiAppPlayDialPresenter::GetInstance()); clickDown_.SetTouchable(true); } int16_t title_y = 407; // InitLabelHorCenter(clickDownLabel_, 28, title_y, 466, "设为壁纸"); clickDownLabel_.SetFont(TJD_VECTOR_FONT_FILENAME, 28); clickDownLabel_.SetTextId(STR_ID_326); clickDownLabel_.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_MARQUEE); clickDownLabel_.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER); clickDownLabel_.SetPosition(0, title_y, 466, 40); Add(&ImageBg_); Add(&clickDown_); Add(&clickDownLabel_); } PlayDialHistorySingleView::~PlayDialHistorySingleView() { static_print_info("[%s][%d]: %s", __FILE__, __LINE__, __func__); RemoveAll(); g_PlayDialHistorySingleView = nullptr; } PlayDialHistorySingleView *PlayDialHistorySingleView::GetInstance(void) { return g_PlayDialHistorySingleView; } void PlayDialHistorySingleView::ShowView() { ImageInfo *img_Res{nullptr}; extern std::string g_PlayDialPreviewPath; if (g_PlayDialPreviewPath.size()) { if (TjdUiAppPlayDialModel::GetInstance().FileExists(g_PlayDialPreviewPath.c_str())) { img_Res = OHOS::ImageCacheManager::GetInstance().LoadSingleRes(g_PlayDialPreviewPath); static_print_info("PlayDialHistorySingleView::ShowView():[%p]: %s", img_Res, g_PlayDialPreviewPath.c_str()); } } ImageBg_.SetSrc(img_Res); SetVisible(true); } void PlayDialHistorySingleView::HideView() { SetVisible(false); } // class PlayDialHistorySingleView end // class PlayDialSetSuccessView start PlayDialSetSuccessView *g_PlayDialSetSuccessView; PlayDialSetSuccessView::PlayDialSetSuccessView() { g_PlayDialSetSuccessView = this; SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); SetStyle(OHOS::STYLE_BACKGROUND_COLOR, 0x00000000); SetOnDragListener(&TjdUiAppPlayDialPresenter::GetInstance()); int16_t title_y = 319; // InitLabelHorCenter(titleDown_, 34, title_y, 466, "设置成功"); titleDown_.SetFont(TJD_VECTOR_FONT_FILENAME, 34); titleDown_.SetTextId(STR_ID_327); titleDown_.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_MARQUEE); titleDown_.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER); titleDown_.SetPosition(0, title_y, 466, 47); logoSetResul_.SetPosition(156, 114, 166, 164); auto img_Res = OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_PLAY_DIAL_PROMPT_SUCCESS, PLAY_DIAL_BIN_PATH); if (img_Res != nullptr) { logoSetResul_.SetSrc(img_Res); } tick_ = 0; if (logoTimer_ == nullptr) { logoTimer_ = new OHOS::GraphicTimer(100, TimerCallBack, this, true); logoTimer_->Start(); } Add(&logoSetResul_); Add(&titleDown_); static_print_info("%d-%s,logoTimer_:[%p]", __LINE__, __func__, logoTimer_); } PlayDialSetSuccessView::~PlayDialSetSuccessView() { static_print_info("[%s][%d]: %s", __FILE__, __LINE__, __func__); if (logoTimer_ != nullptr) { logoTimer_->Stop(); delete logoTimer_; logoTimer_ = nullptr; } RemoveAll(); g_PlayDialSetSuccessView = nullptr; } PlayDialSetSuccessView *PlayDialSetSuccessView::GetInstance(void) { return g_PlayDialSetSuccessView; } void PlayDialSetSuccessView::ShowView() { TjdUiAppPlayDialView::GetInstance().Result_ = AI_RESULT_SET_DING; SetVisible(true); } void PlayDialSetSuccessView::HideView() { SetVisible(false); } void PlayDialSetSuccessView::TimerCallBackRun(void *arg) { PlayDialSetSuccessView *p_inst = (PlayDialSetSuccessView *)arg; static_print_info("[%s][%d]: %s:%d", __FILE__, __LINE__, __func__, p_inst->tick_); extern std::string g_PlayDialPreviewPath; if (TjdUiAppPlayDialView::GetInstance().TipsIndex_ == PLAYDIAL_TIPS_SET_SUCCESS && TjdUiAppPlayDialView::GetInstance().Result_ == AI_RESULT_SET_DING) { if (TjdUiAppPlayDialModel::GetInstance().MakeingWfConfig0Json(g_PlayDialPreviewPath.c_str()) == 0) { TjdUiAppPlayDialView::GetInstance().Result_ = AI_RESULT_SET_DONE; static_print_debug("MakeingWfConfig0Json():Success\n"); if (power_display_svr_get_api()->get_screen_state() != SCREEN_ON) { power_display_svr_get_api()->turn_on_screen(); } power_display_svr_get_api()->set_auto_timeout_function(true); sql_setting_set_watch_face_id(0); } else { static_print_error("MakeingWfConfig0Json(): fail"); } } if (p_inst->tick_ <= 2 * 10) { p_inst->tick_++; } else { // 超时了,跳转到表盘制作页 if (p_inst->logoTimer_ != nullptr) { p_inst->logoTimer_->Stop(); p_inst->tick_ = 0; } if (TjdUiAppPlayDialView::GetInstance().TipsIndex_ == PLAYDIAL_TIPS_SET_SUCCESS && TjdUiAppPlayDialView::GetInstance().Result_ == AI_RESULT_SET_DONE) { // uint16_t current_slice_id = OHOS::NativeAbility::GetInstance().GetCurSliceId(); OHOS::NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_MAIN); } else { TjdUiAppPlayDialView::GetInstance().ShowView(PlayDialViewIndex::PLAYDIAL_HOME); } } } void PlayDialSetSuccessView::TimerCallBack(void *arg) { GraphicService::GetInstance()->PostGraphicEvent( std::bind([](void *arg) { PlayDialSetSuccessView::GetInstance()->TimerCallBackRun(arg); }, arg)); //每个是 } // class PlayDialSetSuccessView end // class PlayDialNoConnectView start static PlayDialNoConnectView *g_PlayDialNoConnectView = {nullptr}; PlayDialNoConnectView::PlayDialNoConnectView() { g_PlayDialNoConnectView = this; SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); SetStyle(OHOS::STYLE_BACKGROUND_COLOR, 0x00000000); SetOnDragListener(&TjdUiAppPlayDialPresenter::GetInstance()); int16_t title_y = 310; // InitLabelHorCenter(titleDown_, 34, title_y, 466, "请连接APP"); titleDown_.SetPosition(80, title_y, 291, 47); titleDown_.SetFont(TJD_VECTOR_FONT_FILENAME, 34); // titleDown_.SetText("请连接APP"); titleDown_.SetTextId(STR_ID_557); titleDown_.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_WRAP); titleDown_.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER); logoSetResul_.SetPosition(84, 145, 297, 136); auto img_Res = OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_PLAY_DIAL_NO_CONNECTION, PLAY_DIAL_BIN_PATH); if (img_Res != nullptr) { logoSetResul_.SetSrc(img_Res); } if (logoTimer_ == nullptr) { logoTimer_ = new OHOS::GraphicTimer(100, TimerCallBack, this, true); } Add(&logoSetResul_); Add(&titleDown_); static_print_info("%d-%s,logoTimer_:[%p]", __LINE__, __func__, logoTimer_); } PlayDialNoConnectView::~PlayDialNoConnectView() { static_print_info("[%s][%d]: %s", __FILE__, __LINE__, __func__); if (logoTimer_ != nullptr) { logoTimer_->Stop(); delete logoTimer_; logoTimer_ = nullptr; } RemoveAll(); g_PlayDialNoConnectView = nullptr; } PlayDialNoConnectView *PlayDialNoConnectView::GetInstance(void) { return g_PlayDialNoConnectView; } void PlayDialNoConnectView::ShowView() { if (logoTimer_ != nullptr) { logoTimer_->Start(); tick_ = 0; } SetVisible(true); } void PlayDialNoConnectView::HideView() { if (logoTimer_ != nullptr) { logoTimer_->Stop(); } SetVisible(false); } void PlayDialNoConnectView::TimerCallBackRun(void *arg) { static_print_info("[%s][%d]: %s:%d", __FILE__, __LINE__, __func__, tick_); if (tick_ <= 2 * 10) { tick_++; } else { // 超时了,跳转到表盘制作页 if (logoTimer_ != nullptr) { logoTimer_->Stop(); tick_ = 0; } TjdUiAppPlayDialView::GetInstance().ShowView(PlayDialViewIndex::PLAYDIAL_HOME); } } void PlayDialNoConnectView::TimerCallBack(void *arg) { GraphicService::GetInstance()->PostGraphicEvent( std::bind([](void *arg) { PlayDialNoConnectView::GetInstance()->TimerCallBackRun(arg); }, arg)); //每个是 } // class PlayDialNoConnectView end // class PlayDialTipsView start static PlayDialTipsView *g_PlayDialTipsView = nullptr; PlayDialTipsView::PlayDialTipsView(void) { g_PlayDialTipsView = this; SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); SetStyle(OHOS::STYLE_BACKGROUND_COLOR, 0x00000000); if (TjdUiAppPlayDialView::GetInstance().TipsIndex_ == PLAYDIAL_TIPS_FAIL) { int16_t title_y = 320; // InitLabelHorCenter(titleDown_, 34, title_y, 466, "计算失败,请重试"); titleDown_.SetFont(TJD_VECTOR_FONT_FILENAME, 34); titleDown_.SetTextId(STR_ID_410); titleDown_.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_MARQUEE); titleDown_.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER); titleDown_.SetPosition(0, title_y, 466, 47); logoSetResul_.SetPosition(126, 114, 218, 166); auto img_Res = OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_PLAY_DIAL_PROMPT_FAIL, PLAY_DIAL_BIN_PATH); if (img_Res != nullptr) { logoSetResul_.SetSrc(img_Res); } tick_ = 0; if (logoTimer_ == nullptr) { logoTimer_ = new OHOS::GraphicTimer(100, SetResultCB, this, true); logoTimer_->Start(); } } else if (TjdUiAppPlayDialView::GetInstance().TipsIndex_ == PLAYDIAL_TIPS_SUCCESS) { int16_t title_y = 319; // InitLabelHorCenter(titleDown_, 34, title_y, 466, "设置成功"); titleDown_.SetFont(TJD_VECTOR_FONT_FILENAME, 34); titleDown_.SetTextId(STR_ID_327); titleDown_.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_MARQUEE); titleDown_.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER); titleDown_.SetPosition(0, title_y, 466, 47); logoSetResul_.SetPosition(156, 114, 166, 164); auto img_Res = OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_PLAY_DIAL_PROMPT_SUCCESS, PLAY_DIAL_BIN_PATH); if (img_Res != nullptr) { logoSetResul_.SetSrc(img_Res); } tick_ = 0; if (logoTimer_ == nullptr) { logoTimer_ = new OHOS::GraphicTimer(100, SetResultCB, this, true); logoTimer_->Start(); } } Add(&logoSetResul_); Add(&titleDown_); static_print_info("%d-%s,logoTimer_:[%p]", __LINE__, __func__, logoTimer_); } PlayDialTipsView::~PlayDialTipsView(void) { OnStop(); g_PlayDialTipsView = nullptr; } PlayDialTipsView *PlayDialTipsView::GetInstance(void) { return g_PlayDialTipsView; } void PlayDialTipsView::OnStop(void) { static_print_info("[%s][%d]: %s", __FILE__, __LINE__, __func__); if (logoTimer_ != nullptr) { logoTimer_->Stop(); delete logoTimer_; logoTimer_ = nullptr; } RemoveAll(); } void PlayDialTipsView::TimerCallBackRun(void *arg) { PlayDialTipsView *p_inst = (PlayDialTipsView *)arg; static_print_info("[%s][%d]: %s:%d", __FILE__, __LINE__, __func__, p_inst->tick_); if (p_inst->tick_ <= 2 * 10) { p_inst->tick_++; } else { // 超时了,跳转到表盘制作页 if (p_inst->logoTimer_ != nullptr) { p_inst->logoTimer_->Stop(); p_inst->tick_ = 0; } if (TjdUiAppPlayDialView::GetInstance().TipsIndex_ == PLAYDIAL_TIPS_SUCCESS) { TjdUiAppPlayDialView::GetInstance().ShowView(PlayDialViewIndex::PLAYDIAL_HOME); } else { PlayDialTipsView::GetInstance()->OnStop(); } } } void PlayDialTipsView::TimerCallBack(void *arg) { GraphicService::GetInstance()->PostGraphicEvent( std::bind([](void *arg) { PlayDialTipsView::GetInstance()->TimerCallBackRun(arg); }, arg)); //每个是 } } // namespace TJD