From 4e2192c93e50f3cc81e324cd595e9787fbd8f5ea Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Wed, 11 Sep 2024 16:33:48 +0800 Subject: [PATCH] =?utf8?q?#637=E6=89=8B=E8=A1=A8=EF=BC=8C=E9=81=A5?= =?utf8?q?=E6=8E=A7=E6=8B=8D=E7=85=A7=EF=BC=8CAPP=E5=85=88=E9=80=80?= =?utf8?q?=E5=87=BA=E4=BC=9A=E5=AF=BC=E8=87=B4=E6=89=8B=E8=A1=A8=E5=8D=A1?= =?utf8?q?=E6=AD=BB=E6=9C=BA=EF=BC=88=E5=BF=85=E7=8E=B0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../takephotos/src/TakephotosModel.cpp | 2 +- .../takephotos/src/TakephotosPresenter.cpp | 4 + .../takephotos/src/TakephotosView.cpp | 563 +++++++++--------- 3 files changed, 275 insertions(+), 294 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosModel.cpp index 195e97e66..a99952098 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosModel.cpp @@ -98,9 +98,9 @@ extern "C" // 退出拍照 if (request->msgId == TOPIC_EVENT_CANCEL_CMAERA) { - TakephotosModel::GetInstance()->SetPopStaust(PopupPhoto::CreamPopup); NativeAbility::GetInstance().Back(); cameraSend(3); + TakephotosModel::GetInstance()->SetPopStaust(PopupPhoto::CreamPopup); } } #ifdef __cplusplus diff --git a/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosPresenter.cpp index 0c839ce93..86d2f3ced 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosPresenter.cpp @@ -77,10 +77,14 @@ namespace OHOS if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY())))) { + NativeAbility::GetInstance().Back(); + /*如果是拍照界面需要发送拍照结束的消息*/ if (TakephotosModel::GetInstance()->GetPopStaust() == PopupPhoto::TakePopup) { + //设置状态为 cream + TakephotosModel::GetInstance()->SetPopStaust(PopupPhoto::CreamPopup); cameraSend(3); } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosView.cpp b/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosView.cpp index 79eea0918..8813516dd 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosView.cpp @@ -2,305 +2,282 @@ * @Date: 2024-08-29 19:34:29 * @LastEditors: Caisking 3449750381@qq.com * @LastEditTime: 2024-08-30 19:46:48 - * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosView.cpp + * @FilePath: + * /FD230/code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosView.cpp */ #include "takephotos/include/TakephotosView.h" #include "takephotos/include/TakephotosModel.h" -#include "common/image_cache_manager.h" #include "UiConfig.h" -#include "ui_resource_image.h" -#include +#include "common/image_cache_manager.h" #include "components/ui_button.h" +#include "ui_resource_image.h" #include "uicomponents/UIComponents.h" -#include "UiConfig.h" -namespace OHOS -{ - static const uint32_t BACK_GROUND_COLOR = 0xfff6f6f6; - - static TakephotosView *g_pTakephotosView{nullptr}; - - TakephotosView::TakephotosView() - { - g_pTakephotosView = this; - } - - TakephotosView::~TakephotosView() - { - // DeInit(); - PopupPhoto staust = TakephotosModel::GetInstance()->GetPopStaust(); - if (staust == PopupPhoto::CreamPopup) - { - creamAnimator->Stop(); - FreeImageInfoArray(creamimageInfos, creambasePath.c_str(), 50); - } - else - { - smileAnimator->Stop(); - FreeImageInfoArray(smileimageInfos, smilebasePath.c_str(), 50); - } - ReleaseImageAnimatorSource(smileimageAnimatorInfo, 50); - ReleaseImageAnimatorSource(creamimageAnimatorInfo, 50); - UIViewGroup *tmpGroup = dynamic_cast(container_); - UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup); - - g_pTakephotosView = nullptr; - } - - TakephotosView *TakephotosView::GetInstance() - { - return g_pTakephotosView; - } - - /* InitView:初始化界面*/ - void TakephotosView ::InitView() - { - if (container_ == nullptr) - { - container_ = new UIScrollView(); - container_->SetPosition(0, 0, 466, 466); - container_->SetStyle(STYLE_BACKGROUND_OPA, 0); - } - PopupPhoto staust = TakephotosModel::GetInstance()->GetPopStaust(); - SetPopupViewStatus(staust, true); - } - - /* DeInit:删除组件 */ - void TakephotosView::DeInit() - { - creamView->RemoveAll(); - takeView->RemoveAll(); - - delete labeltitle_; - labeltitle_ = nullptr; - - delete labelnote_; - labelnote_ = nullptr; - - delete labeltake_; - labeltake_ = nullptr; - - delete labelclick_; - labelclick_ = nullptr; - - delete buttontake; - buttontake = nullptr; - - delete buttongo; - buttongo = nullptr; - - smileAnimator->Stop(); - delete smileAnimator; - smileAnimator = nullptr; - - creamAnimator->Stop(); - delete creamAnimator; - creamAnimator = nullptr; - - delete creamView; - creamView = nullptr; - - delete takeView; - takeView = nullptr; - } - - void TakephotosView::PreLoad(void) - { - if (!viewiInitStatus) - { - InitView(); - viewiInitStatus = true; - } - } - /*显示拍照界面*/ - void TakephotosView::ShowCreamView() - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowcreamView start"); - creamView = new UIScrollView(); - if (creamView == nullptr) - { - return; - } - creamView->SetPosition(0, 0); - creamView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); - creamView->SetScrollBlankSize(20); - creamView->SetReboundSize(50); - creamView->SetDirection(1); - /*初始化label*/ - InitLabelExt(labeltitle_, 83, 50, 300, 35, "labletitle", STR_REMOTE_SHOOTING, DEFAULT_VECTOR_FONT_FILENAME, 30); - - // 设置标签的位置和大小 - labelnote_ = new UILabel(); - labelnote_->SetPosition(53, 250); - labelnote_->Resize(360, 200); - // 设置标签的视图 ID - labelnote_->SetViewId("labelTake"); - // 设置标签的样式 - labelnote_->SetStyle(STYLE_TEXT_FONT, 30); - labelnote_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); - // 设置标签的文本和其他属性 - labelnote_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); - labelnote_->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); - SetLabelId(labelnote_, STR_TACK); - - /*初始化image*/ - // InitImageView(imageTake, 174, 120, 118, 120, "image", RECOED_IMAGE); - /*初始化按键*/ - InitButtonExt(buttongo, 0, 366, 466, 100, BUTTONGO, STR_KONW, 30); - buttongo->SetImageSrc(PNG_466x100BUTTON_IMAGE, PNG_466x100BUTTON_IMAGE); - buttongo->SetOnClickListener(static_cast(TakephotosPresenter::GetInstance())); - - // 初始化图片数组以及动画 - creamimageInfos = CreateImageInfoArray(creambasePath.c_str(), 50); - InitImageAnimatorSource(creamAnimator, creamimageAnimatorInfo, creamimageInfos, 50, 163, 103, 140, 140, "imageAnimator", 100); - - creamView->Add(creamAnimator); - creamView->Add(labeltitle_); - creamView->Add(labelnote_); - creamView->Add(buttongo); - - // RootView::GetInstance()->Add(creamView); - container_->Add(creamView); - - creamView->SetDraggable(true); - creamView->SetTouchable(true); - - UIView::OnDragListener *draglistener = static_cast(TakephotosPresenter::GetInstance()); - if (draglistener == nullptr) - { - return; - } - creamView->SetOnDragListener(draglistener); - - creamView->SetVisible(false); // 界面隐藏 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowcreamView end"); - } - /*遥控拍照界面*/ - void TakephotosView::ShowTakeView() - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowTakeView start"); - takeView = new UIScrollView(); - if (takeView == nullptr) - { - return; - } - takeView->SetPosition(0, 0); - takeView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); - takeView->SetScrollBlankSize(20); - takeView->SetReboundSize(50); - takeView->SetDirection(1); - - /*初始化label*/ - InitLabelExt(labeltake_, 83, 50, 300, 35, "labletitle", STR_REMOTE_SHOOTING, DEFAULT_VECTOR_FONT_FILENAME, 30); - InitLabelExt(labelclick_, 53, 278, 360, 70, "labelclick_", STR_TACKNUM, DEFAULT_VECTOR_FONT_FILENAME, 30); - UpdateLabel(labelclick_, 0, STR_TACKNUM); // 初始化为0 - - /*初始化按键*/ - InitButtonExt(buttontake, 93, 330, 280, 90, BUTTONTAKE, STR_CLICK, 26); - buttontake->SetStyle(STYLE_BACKGROUND_COLOR, 0xff4fc34c); // 设置按键颜色 - buttontake->SetOnClickListener(static_cast(TakephotosPresenter::GetInstance())); - - // 初始化图片数组以及动画 {修改为统一动画} - smileimageInfos = CreateImageInfoArray(smilebasePath.c_str(), 50); - InitImageAnimatorSource(smileAnimator, smileimageAnimatorInfo, smileimageInfos, 50, 163, 140, 140, 140, "imageAnimator", 100); - - takeView->Add(smileAnimator); - takeView->Add(labeltake_); - takeView->Add(labelclick_); - takeView->Add(buttontake); - - // RootView::GetInstance()->Add(takeView); - container_->Add(takeView); - - takeView->SetDraggable(true); - takeView->SetTouchable(true); - - UIView::OnDragListener *draglistener = static_cast(TakephotosPresenter::GetInstance()); - if (draglistener == nullptr) - { - return; - } - takeView->SetOnDragListener(draglistener); - - takeView->SetVisible(false); // 界面隐藏 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowTakeView end"); - } - /*控制显示界面*/ - void TakephotosView::SetPopupViewStatus(PopupPhoto view, bool status) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPopupViewStatus %d", view); - - if (view == PopupPhoto::CreamPopup) - { - creamView->SetVisible(true); - takeView->SetVisible(false); - - creamAnimator->Start(); - smileAnimator->Stop(); - } - else if (view == PopupPhoto::TakePopup) - { - takeView->SetVisible(true); - creamView->SetVisible(false); - - smileAnimator->Start(); - creamAnimator->Stop(); - } - } - - void TakephotosView::OnStart() - { - container_ = new UIScrollView(); - container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); - container_->SetOnDragListener(presenter_); - container_->SetTouchable(true); - container_->SetDraggable(true); - - ShowCreamView(); - ShowTakeView(); - PreLoad(); - - SetContainerView(container_); - - RootView::GetInstance()->SetOnKeyActListener(presenter_); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TakephotosView OnStart is ok"); - } - - UILabel *TakephotosView::GetClileLabel() - { - return labelclick_; - } - void TakephotosView::Updatenum(int num) - { - if (smileAnimator->GetState() == true && labelclick_ != nullptr) - { - UpdateLabel(labelclick_, num, STR_TACKNUM); - labelclick_->Invalidate(); - } - } - void TakephotosView::OnSetUpView() - { - View::OnSetUpView(); - Draw(); - } - - void TakephotosView::OnTearDownView() - { - View::OnTearDownView(); - return; - } - - void TakephotosView::OnStop() - { - View::OnStop(); - if (container_ != nullptr) - { - container_->RemoveAll(); - delete container_; - container_ = nullptr; - } - RootView::GetInstance()->RemoveAll(); - return; - } +#include +namespace OHOS { +static const uint32_t BACK_GROUND_COLOR = 0xfff6f6f6; + +static TakephotosView *g_pTakephotosView{nullptr}; + +TakephotosView::TakephotosView() { g_pTakephotosView = this; } + +TakephotosView::~TakephotosView() { + // DeInit(); + if (creamimageInfos != nullptr) + FreeImageInfoArray(creamimageInfos, creambasePath.c_str(), 50); + if (smileimageInfos != nullptr) + FreeImageInfoArray(smileimageInfos, smilebasePath.c_str(), 50); + + creamAnimator->Stop(); + smileAnimator->Stop(); + ReleaseImageAnimatorSource(smileimageAnimatorInfo, 50); + ReleaseImageAnimatorSource(creamimageAnimatorInfo, 50); + + UIViewGroup *tmpGroup = dynamic_cast(container_); + UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup); + + g_pTakephotosView = nullptr; +} + +TakephotosView *TakephotosView::GetInstance() { return g_pTakephotosView; } + +/* InitView:初始化界面*/ +void TakephotosView ::InitView() { + if (container_ == nullptr) { + container_ = new UIScrollView(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + //设置进入弹窗 + PopupPhoto staust = TakephotosModel::GetInstance()->GetPopStaust(); + SetPopupViewStatus(staust, true); +} + +/* DeInit:删除组件 */ +void TakephotosView::DeInit() { + creamView->RemoveAll(); + takeView->RemoveAll(); + + delete labeltitle_; + labeltitle_ = nullptr; + + delete labelnote_; + labelnote_ = nullptr; + + delete labeltake_; + labeltake_ = nullptr; + + delete labelclick_; + labelclick_ = nullptr; + + delete buttontake; + buttontake = nullptr; + + delete buttongo; + buttongo = nullptr; + + smileAnimator->Stop(); + delete smileAnimator; + smileAnimator = nullptr; + + creamAnimator->Stop(); + delete creamAnimator; + creamAnimator = nullptr; + + delete creamView; + creamView = nullptr; + + delete takeView; + takeView = nullptr; +} + +void TakephotosView::PreLoad(void) { + if (!viewiInitStatus) { + InitView(); + viewiInitStatus = true; + } +} +/*显示拍照界面*/ +void TakephotosView::ShowCreamView() { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowcreamView start"); + creamView = new UIScrollView(); + if (creamView == nullptr) { + return; + } + creamView->SetPosition(0, 0); + creamView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); + creamView->SetScrollBlankSize(20); + creamView->SetReboundSize(50); + creamView->SetDirection(1); + /*初始化label*/ + InitLabelExt(labeltitle_, 83, 50, 300, 35, "labletitle", STR_REMOTE_SHOOTING, + DEFAULT_VECTOR_FONT_FILENAME, 30); + + // 设置标签的位置和大小 + labelnote_ = new UILabel(); + labelnote_->SetPosition(53, 250); + labelnote_->Resize(360, 200); + // 设置标签的视图 ID + labelnote_->SetViewId("labelTake"); + // 设置标签的样式 + labelnote_->SetStyle(STYLE_TEXT_FONT, 30); + labelnote_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + // 设置标签的文本和其他属性 + labelnote_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + labelnote_->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); + SetLabelId(labelnote_, STR_TACK); + + /*初始化image*/ + // InitImageView(imageTake, 174, 120, 118, 120, "image", RECOED_IMAGE); + /*初始化按键*/ + InitButtonExt(buttongo, 0, 366, 466, 100, BUTTONGO, STR_KONW, 30); + buttongo->SetImageSrc(PNG_466x100BUTTON_IMAGE, PNG_466x100BUTTON_IMAGE); + buttongo->SetOnClickListener(static_cast( + TakephotosPresenter::GetInstance())); + + // 初始化图片数组以及动画 + creamimageInfos = CreateImageInfoArray(creambasePath.c_str(), 50); + InitImageAnimatorSource(creamAnimator, creamimageAnimatorInfo, + creamimageInfos, 50, 163, 103, 140, 140, + "imageAnimator", 100); + + creamView->Add(creamAnimator); + creamView->Add(labeltitle_); + creamView->Add(labelnote_); + creamView->Add(buttongo); + + // RootView::GetInstance()->Add(creamView); + container_->Add(creamView); + + creamView->SetDraggable(true); + creamView->SetTouchable(true); + + UIView::OnDragListener *draglistener = + static_cast(TakephotosPresenter::GetInstance()); + if (draglistener == nullptr) { + return; + } + creamView->SetOnDragListener(draglistener); + + creamView->SetVisible(false); // 界面隐藏 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowcreamView end"); +} +/*遥控拍照界面*/ +void TakephotosView::ShowTakeView() { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowTakeView start"); + takeView = new UIScrollView(); + if (takeView == nullptr) { + return; + } + takeView->SetPosition(0, 0); + takeView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); + takeView->SetScrollBlankSize(20); + takeView->SetReboundSize(50); + takeView->SetDirection(1); + + /*初始化label*/ + InitLabelExt(labeltake_, 83, 50, 300, 35, "labletitle", STR_REMOTE_SHOOTING, + DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabelExt(labelclick_, 53, 278, 360, 70, "labelclick_", STR_TACKNUM, + DEFAULT_VECTOR_FONT_FILENAME, 30); + UpdateLabel(labelclick_, 0, STR_TACKNUM); // 初始化为0 + + /*初始化按键*/ + InitButtonExt(buttontake, 93, 330, 280, 90, BUTTONTAKE, STR_CLICK, 26); + buttontake->SetStyle(STYLE_BACKGROUND_COLOR, 0xff4fc34c); // 设置按键颜色 + buttontake->SetOnClickListener(static_cast( + TakephotosPresenter::GetInstance())); + + // 初始化图片数组以及动画 {修改为统一动画} + smileimageInfos = CreateImageInfoArray(smilebasePath.c_str(), 50); + InitImageAnimatorSource(smileAnimator, smileimageAnimatorInfo, + smileimageInfos, 50, 163, 140, 140, 140, + "imageAnimator", 100); + + takeView->Add(smileAnimator); + takeView->Add(labeltake_); + takeView->Add(labelclick_); + takeView->Add(buttontake); + + // RootView::GetInstance()->Add(takeView); + container_->Add(takeView); + + takeView->SetDraggable(true); + takeView->SetTouchable(true); + + UIView::OnDragListener *draglistener = + static_cast(TakephotosPresenter::GetInstance()); + if (draglistener == nullptr) { + return; + } + takeView->SetOnDragListener(draglistener); + + takeView->SetVisible(false); // 界面隐藏 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowTakeView end"); +} +/*控制显示界面*/ +void TakephotosView::SetPopupViewStatus(PopupPhoto view, bool status) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPopupViewStatus %d", view); + + if (view == PopupPhoto::CreamPopup) { + creamView->SetVisible(true); + takeView->SetVisible(false); + + creamAnimator->Start(); + smileAnimator->Stop(); + } else if (view == PopupPhoto::TakePopup) { + takeView->SetVisible(true); + creamView->SetVisible(false); + + smileAnimator->Start(); + creamAnimator->Stop(); + } +} + +void TakephotosView::OnStart() { + container_ = new UIScrollView(); + container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), + Screen::GetInstance().GetHeight()); + container_->SetOnDragListener(presenter_); + container_->SetTouchable(true); + container_->SetDraggable(true); + + ShowCreamView(); + ShowTakeView(); + PreLoad(); + + SetContainerView(container_); + + RootView::GetInstance()->SetOnKeyActListener(presenter_); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TakephotosView OnStart is ok"); +} + +UILabel *TakephotosView::GetClileLabel() { return labelclick_; } +void TakephotosView::Updatenum(int num) { + if (smileAnimator->GetState() == true && labelclick_ != nullptr) { + UpdateLabel(labelclick_, num, STR_TACKNUM); + labelclick_->Invalidate(); + } +} +void TakephotosView::OnSetUpView() { + View::OnSetUpView(); + Draw(); +} + +void TakephotosView::OnTearDownView() { + View::OnTearDownView(); + return; +} + +void TakephotosView::OnStop() { + View::OnStop(); + if (container_ != nullptr) { + container_->RemoveAll(); + delete container_; + container_ = nullptr; + } + RootView::GetInstance()->RemoveAll(); + return; } +} // namespace OHOS -- 2.17.1