#include "Presenter.h"
#include "TakephotosView.h"
+#include "common/key_code.h"
namespace OHOS
{
class TakephotosPresenter : public Presenter<TakephotosView>,
public UIView::OnClickListener,
+ public RootView::OnKeyActListener,
public UIView::OnDragListener
{
public:
// 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
bool OnClick(UIView &view, const ClickEvent &event) override;
bool OnDrag(UIView &view, const DragEvent &event) override;
+ bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件
};
} // namespace OHOS
#include <iostream>
#include <chrono>
#include <thread>
-#include "takephotos/include/TakephotosPresenter.h"
+
#include "uicomponents/UIComponents.h"
#include "bleEvent.h"
+#include "common/key_code.h"
+#include "KeyInputListener.h"
+#include "custom_utils.h"
+
+#include "takephotos/include/TakephotosPresenter.h"
+#include "takephotos/include/TakephotosModel.h"
// #include "TakephotosView.h"
namespace OHOS
bool TakephotosPresenter::OnDrag(UIView &view, const DragEvent &event)
{
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
+ (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
{
NativeAbility::GetInstance().Back();
- cameraSend(3);
+ /*如果是拍照界面需要发送拍照结束的消息*/
+ if (TakephotosModel::GetInstance()->GetPopStaust() == PopupPhoto::TakePopup)
+ {
+ cameraSend(3);
+ }
}
return true;
}
// 返回按键
if (strcmp(view.GetViewId(), BUTTONGO) == 0)
{
- // NativeAbility::GetInstance().EnterSlice(VIEW_TRAININGMORE);
NativeAbility::GetInstance().Back();
}
if (strcmp(view.GetViewId(), BUTTONTAKE) == 0)
}
return true;
}
+
+ bool TakephotosPresenter::OnKeyAct(UIView &view, const KeyEvent &event)
+ {
+ unsigned short keyID = event.GetKeyId();
+ unsigned short keyState = event.GetState();
+ // 如果是power键,且是亮屏状态,按键释放就返回上一级
+ if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)
+ {
+ NativeAbility::GetInstance().Back();
+ /*如果是拍照界面需要发送拍照结束的消息*/
+ if (TakephotosModel::GetInstance()->GetPopStaust() == PopupPhoto::TakePopup)
+ {
+ cameraSend(3);
+ }
+ }
+ return true;
+ }
+
}
/* DeInit:删除组件 */
void TakephotosView::DeInit()
{
- container_->RemoveAll();
- if (labeltitle_ != nullptr)
- {
- creamView->Remove(labeltitle_);
- delete labeltitle_;
- labeltitle_ = nullptr;
- }
- if (labelnote_ != nullptr)
- {
- creamView->Remove(labelnote_);
- delete labelnote_;
- labelnote_ = nullptr;
- }
- if (labeltake_ != nullptr)
- {
- takeView->Remove(labeltake_);
- delete labeltake_;
- labeltake_ = nullptr;
- }
- if (labelclick_ != nullptr)
- {
- takeView->Remove(labelclick_);
- delete labelclick_;
- labelclick_ = nullptr;
- }
- if (buttontake != nullptr)
- {
- takeView->Remove(buttontake);
- delete buttontake;
- buttontake = nullptr;
- }
- if (buttongo != nullptr)
- {
- creamView->Remove(buttongo);
- delete buttongo;
- buttongo = nullptr;
- }
- if (smileAnimator != nullptr)
- {
- smileAnimator->Stop();
- takeView->Remove(smileAnimator);
- delete smileAnimator;
- smileAnimator = nullptr;
- }
- if (creamAnimator != nullptr)
- {
- creamAnimator->Stop();
- creamView->Remove(creamAnimator);
- delete creamAnimator;
- creamAnimator = nullptr;
- }
- if (creamView != nullptr)
- {
- creamView->RemoveAll();
- delete creamView;
- creamView = nullptr;
- }
- if (takeView != nullptr)
- {
- takeView->RemoveAll();
- delete takeView;
- takeView = nullptr;
- }
- if (container_ != nullptr)
- {
- container_->RemoveAll();
- delete container_;
- container_ = nullptr;
- }
+ 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)
void TakephotosView::OnStart()
{
container_ = new UIScrollView();
- if (container_ == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "container_ new fail");
- return;
- }
container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
- // 创建 draglistener 实例并设置为拖动监听器
- UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TakephotosPresenter::GetInstance());
- if (draglistener == nullptr)
- {
- return;
- }
- container_->SetOnDragListener(draglistener);
+ container_->SetOnDragListener(presenter_);
container_->SetTouchable(true);
container_->SetDraggable(true);
- container_->SetStyle(STYLE_BACKGROUND_COLOR, BACK_GROUND_COLOR);
- container_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
ShowCreamView();
ShowTakeView();
PreLoad();
+
RootView::GetInstance()->Add(container_);
+ SetContainerView(container_);
+
+ RootView::GetInstance()->SetOnKeyActListener(presenter_);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TakephotosView OnStart is ok");
}
void TakephotosView::OnStop()
{
View<TakephotosPresenter>::OnStop();
+ if (container_ != nullptr)
+ {
+ container_->RemoveAll();
+ delete container_;
+ container_ = nullptr;
+ }
RootView::GetInstance()->RemoveAll();
return;
}