#include "TjdUiAppFlashlightView.h" #include "TjdUiImageIds.h" #include "TjdUiMultiLanguageExt.h" #include "common/image_cache_manager.h" #include "gfx_utils/mem_check.h" #include "wearable_log.h" #include "TjdUiScreenManage.h" namespace TJD { using namespace OHOS; #define FLASHLIGHT_IMAGE_BIN_PATH TJD_IMAGE_PATH "img_flashlight.bin" #define IF_MEM_CHECK 0 enum FlashlightImageInfoIndex { FLASHLIGHT_INFO_WRITE, FLASHLIGHT_INFO_BLACK, FLASHLIGHT_INFO_WRITEFLA, FLASHLIGHT_INFO_BLACKFLA, FLASHLIGHT_INFO_FLASHLIGHT, FLASHLIGHT_INFO_COUNT }; int last_brightness = 0;//记录进入前手电筒前的亮度 static OHOS::ImageInfo *g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_COUNT]{nullptr}; static TjdUiAppFlashlightView *g_pv_AppFlashlightView = nullptr; static int8_t change_ = 0; static constexpr uint64_t MS_TWO_HANDRED_MILLISECONDS = 200; // 定时器时间 static inline void SetRotateEnable(OHOS::UIScrollView &view) { view.SetThrowDrag(true); view.SetReboundSize(200); // view.SetRotateFactor(ROTATE_FACTOR); // view.SetRotateThreshold(ROTATE_THRESHOLD); // view.SetYScrollBarVisible(true); } TjdUiAppFlashlightView::TjdUiAppFlashlightView() { if (IF_MEM_CHECK) OHOS::MemCheck::GetInstance()->EnableLeakCheck(true); g_pv_AppFlashlightView = this; } TjdUiAppFlashlightView::~TjdUiAppFlashlightView() { g_pv_AppFlashlightView = nullptr; if (IF_MEM_CHECK) OHOS::MemCheck::GetInstance()->EnableLeakCheck(false); } TjdUiAppFlashlightView *TjdUiAppFlashlightView::GetInstance(void) { return g_pv_AppFlashlightView; } bool FlashLightUIScrollView::OnRotateEvent(const OHOS::RotateEvent &event) { printf("cxin is OnRotateEvent = %d\n", event.GetRotate()); TjdUiAppFlashlightView *flashlightView = TjdUiAppFlashlightView::GetInstance(); if ( event.GetRotate() > 0) { if( flashlightView->GetCurrentView() != FlashlightViewIndex::FLASHLIGHT_ON_VIEW) return true; if (flashlightView->GetCurrentView() == FlashlightViewIndex::FLASHLIGHT_ON_VIEW) { flashlightView->ShowView(FlashlightViewIndex::FLASHLIGHT_ON_VIEW, FlashlightViewIndex::FLASHLIGHT_OFF_VIEW); TjdUiAppFlashlightPresenter::GetInstance()->changeFlag = !TjdUiAppFlashlightPresenter::GetInstance()->changeFlag; return true; } } else if ( event.GetRotate() < 0 ) { if( flashlightView->GetCurrentView() == FlashlightViewIndex::FLASHLIGHT_ON_VIEW) return true; if (flashlightView->GetCurrentView() == FlashlightViewIndex::FLASHLIGHT_OFF_VIEW || flashlightView->GetCurrentView() == FlashlightViewIndex::FLASHLIGHT_ON_TO_OFF_VIEW) { flashlightView->ShowView_(FlashlightViewIndex::FLASHLIGHT_OFF_VIEW, FlashlightViewIndex::FLASHLIGHT_ON_TO_OFF_VIEW, FlashlightViewIndex::FLASHLIGHT_ON_VIEW); TjdUiAppFlashlightPresenter::GetInstance()->changeFlag = !TjdUiAppFlashlightPresenter::GetInstance()->changeFlag; return true; } } return true; } void TjdUiAppFlashlightView::OnStart() { last_brightness = TjdUiAppFlashlightPresenter::GetInstance()->GetScreenBrightness(); printf("cxin is OnStart last_brightness = %d\n", last_brightness); TjdUiAppFlashlightPresenter::GetInstance()->SetScreenBrightness(255); View::OnStart(); TjdUiScreenManage::SetScreenKeepOnTimeout(1000 * 60 * 60); InitImage(); if (containerAll_ == nullptr) { containerAll_ = new FlashLightUIScrollView(); } containerAll_->SetPosition(0, 0, OHOS::HORIZONTAL_RESOLUTION, OHOS::VERTICAL_RESOLUTION); flashlightView[FlashlightViewIndex::FLASHLIGHT_ON_VIEW] = InitFlashlightOnView(); flashlightView[FlashlightViewIndex::FLASHLIGHT_OFF_VIEW] = InitFlashlightOffView(); flashlightView[FlashlightViewIndex::Flashlight_VIEW] = InitFlashlightUiView(); flashlightView[FlashlightViewIndex::FLASHLIGHT_ON_TO_OFF_VIEW] = InitFlashlightOnToOffView(); containerAll_->Add(flashlightView[FlashlightViewIndex::FLASHLIGHT_ON_VIEW]); containerAll_->Add(flashlightView[FlashlightViewIndex::FLASHLIGHT_OFF_VIEW]); containerAll_->Add(flashlightView[FlashlightViewIndex::Flashlight_VIEW]); containerAll_->Add(flashlightView[FlashlightViewIndex::FLASHLIGHT_ON_TO_OFF_VIEW]); containerAll_->RequestFocus(); AddViewToRootContainer(containerAll_); SetRotateEnable(*containerAll_); } void TjdUiAppFlashlightView::OnStop() { TjdUiAppFlashlightPresenter::GetInstance()->SetScreenBrightness(last_brightness); containerAll_->ClearFocus(); TjdUiScreenManage::ResetScreenKeepOnTimeout(); ImageCacheManager::GetInstance().UnloadAllInMultiRes(FLASHLIGHT_IMAGE_BIN_PATH); TjdUiMemManage::DeleteChildren(containerAll_); } void TjdUiAppFlashlightView::ShowView(FlashlightViewIndex hideView, FlashlightViewIndex showView) { if (showView == Flashlight_VIEW) TjdUiScreenManage::ResetScreenKeepOnTimeout(); else TjdUiScreenManage::SetScreenKeepOnTimeout(1000 * 60 * 60); if (flashlightView[hideView] != nullptr) { flashlightView[hideView]->SetVisible(false); } if (flashlightView[showView] != nullptr) { flashlightView[showView]->SetVisible(true); currentView_ = showView; } } void TjdUiAppFlashlightView::ShowView_(FlashlightViewIndex hideView1, FlashlightViewIndex hideView2, FlashlightViewIndex showView) { if (showView == Flashlight_VIEW) TjdUiScreenManage::ResetScreenKeepOnTimeout(); else TjdUiScreenManage::SetScreenKeepOnTimeout(1000 * 60 * 60); if (flashlightView[hideView1] != nullptr) { flashlightView[hideView1]->SetVisible(false); } if (flashlightView[hideView2] != nullptr) { flashlightView[hideView2]->SetVisible(false); } if (flashlightView[showView] != nullptr) { flashlightView[showView]->SetVisible(true); currentView_ = showView; } } void TjdUiAppFlashlightView::InitImage() { g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_FLASHLIGHT] = OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_FLASHLIGHT_FLASHLIGHT, FLASHLIGHT_IMAGE_BIN_PATH); g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_WRITE] = OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_FLASHLIGHT_WRITE_ELLIPTICAL, FLASHLIGHT_IMAGE_BIN_PATH); g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_BLACK] = OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_FLASHLIGHT_BLCAK_ELLIPTICAL, FLASHLIGHT_IMAGE_BIN_PATH); g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_WRITEFLA] = OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_FLASHLIGHT_LIGHT_ON, FLASHLIGHT_IMAGE_BIN_PATH); g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_BLACKFLA] = OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_FLASHLIGHT_LIGHT_OFF, FLASHLIGHT_IMAGE_BIN_PATH); } OHOS::UIScrollView *TjdUiAppFlashlightView::InitFlashlightUiView() { OHOS::UIScrollView *flashlightUiView = new OHOS::UIScrollView(); flashlightUiView->SetPosition(0, 0, 466, 466); flashlightUiView->SetOnDragListener(TjdUiAppFlashlightPresenter::GetInstance()); if (flashlight_ == nullptr) { flashlight_ = new OHOS::UIImageView(); } flashlight_->SetPosition(180, 160, 106, 146); flashlight_->SetViewId(FLASHLIGHT_ID); flashlight_->SetTouchable(true); flashlight_->SetOnClickListener(TjdUiAppFlashlightPresenter::GetInstance()); if (g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_FLASHLIGHT] != nullptr) { flashlight_->SetSrc(g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_FLASHLIGHT]); } flashlightUiView->Add(flashlight_); flashlightUiView->SetVisible(false); return flashlightUiView; } OHOS::UIScrollView *TjdUiAppFlashlightView::InitFlashlightOnView() { OHOS::UIScrollView *flashlightOnView = new OHOS::UIScrollView(); flashlightOnView->SetPosition(0, 0, 466, 466); flashlightOnView->SetOnDragListener(TjdUiAppFlashlightPresenter::GetInstance()); if (lighton == nullptr) { lighton = new OHOS::UIImageView(); } lighton->SetPosition(0, 0, 466, 466); if (g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_WRITEFLA] != nullptr) { lighton->SetSrc(g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_WRITEFLA]); } lighton->SetViewId(LASHLIGHT_ON_ID); lighton->SetTouchable(true); lighton->SetOnClickListener(TjdUiAppFlashlightPresenter::GetInstance()); if (writeElliptical == nullptr) { writeElliptical = new OHOS::UIImageView(); } writeElliptical->SetPosition(443, 237, 12, 12); if (g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_WRITE] != nullptr) { writeElliptical->SetSrc(g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_WRITE]); } if (blackElliptical == nullptr) { blackElliptical = new OHOS::UIImageView(); } blackElliptical->SetPosition(443, 217, 12, 12); if (g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_BLACK] != nullptr) { blackElliptical->SetSrc(g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_BLACK]); } flashlightOnView->Add(lighton); flashlightOnView->Add(writeElliptical); flashlightOnView->Add(blackElliptical); flashlightOnView->SetVisible(true); return flashlightOnView; } void TjdUiAppFlashlightView::Changestatus() { if (change_ == 0) { TjdUiAppFlashlightView::GetInstance()->ShowView(FlashlightViewIndex::FLASHLIGHT_OFF_VIEW, FlashlightViewIndex::FLASHLIGHT_ON_TO_OFF_VIEW); change_ = 1; } else { TjdUiAppFlashlightView::GetInstance()->ShowView(FlashlightViewIndex::FLASHLIGHT_ON_TO_OFF_VIEW, FlashlightViewIndex::FLASHLIGHT_OFF_VIEW); change_ = 0; } } void TimerCallback_0(void *param) { TjdUiAppFlashlightView::GetInstance()->Changestatus(); } OHOS::UIScrollView *TjdUiAppFlashlightView::InitFlashlightOffView() { OHOS::UIScrollView *flashlightOffView = new OHOS::UIScrollView(); flashlightOffView->SetPosition(0, 0, 466, 466); flashlightOffView->SetOnDragListener(TjdUiAppFlashlightPresenter::GetInstance()); if (lightoff == nullptr) { lightoff = new OHOS::UIImageView(); } lightoff->SetPosition(0, 0, 466, 466); lightoff->SetViewId(LASHLIGHT_OFF_ID); lightoff->SetTouchable(true); lightoff->SetOnClickListener(TjdUiAppFlashlightPresenter::GetInstance()); if (writeElliptical_ == nullptr) { writeElliptical_ = new OHOS::UIImageView(); } writeElliptical_->SetPosition(443, 217, 12, 12); if (g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_WRITE] != nullptr) { writeElliptical_->SetSrc(g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_WRITE]); } if (blackElliptical_ == nullptr) { blackElliptical_ = new OHOS::UIImageView(); } blackElliptical_->SetPosition(443, 237, 12, 12); if (g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_BLACK] != nullptr) { blackElliptical_->SetSrc(g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_BLACK]); } flashlightOffView->Add(lightoff); flashlightOffView->Add(writeElliptical_); flashlightOffView->Add(blackElliptical_); flashlightOffView->SetVisible(false); return flashlightOffView; } OHOS::UIScrollView *TjdUiAppFlashlightView::InitFlashlightOnToOffView() { OHOS::UIScrollView *flashlightOnToOffView = new OHOS::UIScrollView(); flashlightOnToOffView->SetPosition(0, 0, 466, 466); flashlightOnToOffView->SetOnDragListener(TjdUiAppFlashlightPresenter::GetInstance()); if (lighton1 == nullptr) { lighton1 = new OHOS::UIImageView(); } lighton1->SetPosition(0, 0, 466, 466); if (g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_WRITEFLA] != nullptr) { lighton1->SetSrc(g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_WRITEFLA]); } lighton1->SetViewId(FLASHLIGHT_ONOFF_ID); lighton1->SetTouchable(true); lighton1->SetOnClickListener(TjdUiAppFlashlightPresenter::GetInstance()); if (writeElliptical1_ == nullptr) { writeElliptical1_ = new OHOS::UIImageView(); } writeElliptical1_->SetPosition(443, 217, 12, 12); if (g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_WRITE] != nullptr) { writeElliptical1_->SetSrc(g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_WRITE]); } if (blackElliptical1_ == nullptr) { blackElliptical1_ = new OHOS::UIImageView(); } blackElliptical1_->SetPosition(443, 237, 12, 12); if (g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_BLACK] != nullptr) { blackElliptical1_->SetSrc(g_pv_flashlightimageInfo[FlashlightImageInfoIndex::FLASHLIGHT_INFO_BLACK]); } flashlightOnToOffView->Add(lighton1); flashlightOnToOffView->Add(writeElliptical1_); flashlightOnToOffView->Add(blackElliptical1_); flashlightOnToOffView->SetVisible(false); return flashlightOnToOffView; } } // namespace TJD