* @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 <ui_scroll_view.h>
+#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<UIViewGroup *>(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<UIView::OnClickListener *>(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<UIView::OnDragListener *>(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<UIView::OnClickListener *>(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<UIView::OnDragListener *>(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<TakephotosPresenter>::OnSetUpView();
- Draw();
- }
-
- void TakephotosView::OnTearDownView()
- {
- View<TakephotosPresenter>::OnTearDownView();
- return;
- }
-
- void TakephotosView::OnStop()
- {
- View<TakephotosPresenter>::OnStop();
- if (container_ != nullptr)
- {
- container_->RemoveAll();
- delete container_;
- container_ = nullptr;
- }
- RootView::GetInstance()->RemoveAll();
- return;
- }
+#include <ui_scroll_view.h>
+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<UIViewGroup *>(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<UIView::OnClickListener *>(
+ 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<UIView::OnDragListener *>(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<UIView::OnClickListener *>(
+ 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<UIView::OnDragListener *>(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<TakephotosPresenter>::OnSetUpView();
+ Draw();
+}
+
+void TakephotosView::OnTearDownView() {
+ View<TakephotosPresenter>::OnTearDownView();
+ return;
+}
+
+void TakephotosView::OnStop() {
+ View<TakephotosPresenter>::OnStop();
+ if (container_ != nullptr) {
+ container_->RemoveAll();
+ delete container_;
+ container_ = nullptr;
+ }
+ RootView::GetInstance()->RemoveAll();
+ return;
}
+} // namespace OHOS