324 lines
14 KiB
C++
324 lines
14 KiB
C++
#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<TjdUiAppFlashlightPresenter>::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
|