mcu_hi3321_watch/tjd/ui/app/phone/call_app/TjdUiAppCallView.h
2025-05-26 20:15:20 +08:00

134 lines
3.2 KiB
C++

/*----------------------------------------------------------------------------
* Copyright (c) TJD Technologies Co., Ltd. 2025. All rights reserved.
*
* Description: TjdUiAppCallView.h
*
* Author: luziquan@ss-tjd.com
*
* Create: 2025-08-16
*--------------------------------------------------------------------------*/
#ifndef TJD_UI_APP_CALL_VIEW_H
#define TJD_UI_APP_CALL_VIEW_H
#include "TjdUiAppCallPresenter.h"
#include "TjdUiMsgCenter.h"
#include "View.h"
#include "components/ui_button.h"
#include "components/ui_image_animator.h"
#include "components/ui_image_view.h"
#include "components/ui_label_ext.h"
#include "components/ui_list.h"
#include "components/ui_scroll_view.h"
#include "components/ui_slider.h"
#include "notification_manager.h"
#include <list>
#include <unordered_map>
namespace TJD {
class CallViewBase : public OHOS::UIScrollView
{
public:
CallViewBase() { SetHorizontalScrollState(false); }
virtual ~CallViewBase() {}
virtual void ShowView() { SetVisible(true); };
virtual void HideView() { SetVisible(false); };
};
class CallInView : public OHOS::UIViewGroup
{
public:
CallInView();
~CallInView() { RemoveAll(); }
void SetMsgClickEvent(OHOS::UIView::OnClickListener *listener);
void SetCallName(std::string &name);
private:
OHOS::UIImageView bg_;
OHOS::UIImageView callStop_;
OHOS::UIImageView callAnswer_;
OHOS::UILabel name_;
OHOS::UILabelExt status_;
};
class CallOutView : public CallViewBase
{
public:
CallOutView();
~CallOutView() { RemoveAll(); }
void ShowView() override;
private:
OHOS::UIImageView callStop_;
OHOS::UILabel name_;
OHOS::UILabelExt status_;
};
class CallingView : public CallViewBase
{
public:
CallingView();
~CallingView() { RemoveAll(); }
void ShowView() override;
void HideView() override;
void SetCallTime(std::string &time);
private:
OHOS::UIImageView callStop_;
OHOS::UILabel name_;
OHOS::UILabel time_;
};
class CallEndView : public CallViewBase
{
public:
CallEndView();
~CallEndView() { RemoveAll(); }
void ShowView() override;
void SetCallStatus(std::string &status);
private:
OHOS::UIImageView callStop_;
OHOS::UILabel name_;
OHOS::UILabelExt status_;
};
class VolumeControlBarView : public CallViewBase
{
public:
VolumeControlBarView();
~VolumeControlBarView() { RemoveAll(); }
int SetVolume(int volume);
int GetVolume(void);
private:
OHOS::UISlider volumeSlider_;
};
class TjdUiAppCallPresenter;
class TjdUiAppCallView : public OHOS::View<TjdUiAppCallPresenter>
{
public:
TjdUiAppCallView();
~TjdUiAppCallView();
static TjdUiAppCallView *GetInstance(void);
void OnStart() override;
void OnStop() override;
void ShowView(CallViewIndex showIndex);
void SetVolumeControlBarVisable(bool visable);
int ChangeVolumeControlBarValue(int volume);
int GetVolumeControlBarValue(void);
void SetCallingTime(std::string &time);
static CallViewIndex currentViewIndex_;
private:
CallViewBase *viewManager_[CallViewIndex::CALL_UNKNOWN]{nullptr};
OHOS::UIScrollView *mainView_{nullptr};
void InitTargetView(CallViewIndex index);
VolumeControlBarView volumeControlBarView_;
};
} // namespace TJD
#endif