mcu_hi3321_watch/tjd/ui/app/voice_assistant/TjdUiAppVoiceAssistantView.h
2025-05-26 20:15:20 +08:00

217 lines
7.2 KiB
C++

#ifndef TJDUI_APP_VOICE_ASSISTANT_H
#define TJDUI_APP_VOICE_ASSISTANT_H
#include "TjdUiAppVoiceAssistantPresenter.h"
#include "View.h"
#include "components/ui_label.h"
#include "components/ui_list.h"
#include "components/ui_image_view.h"
#include "components/ui_scroll_view.h"
#include "components/ui_button.h"
#include "graphic_timer.h"
#include <string>
// #include "components/ui_image_animator.h"
// #include "components/ui_scroll_view.h"
// #include "components/ui_label.h"
#include "UiConfig.h"
#include "dfx/event_injector.h"
#include "wearable_log.h"
#include "AppGroupView.h"
using namespace OHOS;
namespace TJD {
enum SwitchApp {
SWITCH_TO_XIAOYI,
SWITCH_TO_MAKECALL,
SWITCH_TO_CUTCALL,
PRE_SONG,
NEXT_SONG,
INCREASE_VOLUME,
DECREASE_VOLUME,
SWITCH_TO_PLAYER,
PAUSE_PLAYBACK,
RESUME_PLAYBACK,
SWITCH_TO_EXERCISE,
SWITCH_TO_MESSAGE,
SWITCH_TO_ALARM,
SWITCH_TO_ALIPAY,
SWITCH_TO_WECHATPAY,
SWITCH_TO_UNKNOWN,
SWITCH_TO_VOCASSIST,
};
enum SwitchWordOrGraph {
CREATE_CMD_LABEL = SWITCH_TO_VOCASSIST + 1,
VOC_VIEW,
WAVE_VIEW,
VOC_TO_WAVE_VIEW,
WAVE_TO_VOC_VIEW
};
// typedef bool (TjdUiAppVoiceAssistantView::*VoiceAssistantChangeView)(VoiceAssistantView hideView);
// class VoiceAssistantOnClickedListener : public UIView::OnClickListener
// {
// public:
// VoiceAssistantOnClickedListener() {}
// virtual ~VoiceAssistantOnClickedListener() {}
// virtual bool OnClick(UIView &view, const ClickEvent &event);
// private:
// };
// class TjdUiAppVoiceAssistantPresenter;
// class TjdUiAppVoiceAssistantView : public OHOS::View<TjdUiAppVoiceAssistantPresenter>, public OHOS::UIViewGroup
// {
// public:
// TjdUiAppVoiceAssistantView();
// ~TjdUiAppVoiceAssistantView();
// static TjdUiAppVoiceAssistantView *GetInstance(void);
// void OnStart() override;
// void OnSetUpView() override;
// void OnTearDownView() override;
// void OnStop() override;
// void ChangedView(VoiceAssistantView view, VoiceAssistantView hideView);
// OHOS::UIImageView *GetIconImage(){return IconView;};
// OHOS::UILabel *GetTipLabel(){return TipLabel;};
// OHOS::UIButton *GetContinueBtn(){return ContinueView;};
// OHOS::UIButton *GetReturnBtn(){return ReturnBtn;};
// GraphicTimer *GetContinueTimer(){return timer_;};
// GraphicTimer *GetWaitTimeout(){return waittimeout;};
// private:
// OHOS::UIViewGroup *groupList_[VoiceAssistantView::VOICEASSISTANT_MAXTHVIEW]{nullptr};
// OHOS::UIViewGroup *container_{nullptr};
// OHOS::UIViewGroup *initView_{nullptr};
// OHOS::UIViewGroup *voiceAssistantView_{nullptr};
// OHOS::UILabel *voiceTipLabel{nullptr};
// OHOS::UIImageView *voiceIconView{nullptr};
// OHOS::UILabel *TipLabel{nullptr};
// OHOS::UIImageView *BgView{nullptr};
// OHOS::UIImageView *IconView{nullptr};
// OHOS::UIButton *ContinueView{nullptr};
// OHOS::UIButton *ReturnBtn{nullptr};
// OHOS::ImageInfo* imgInfo{nullptr};
// VoiceAssistantOnClickedListener *onClickListener_{nullptr};
// UIView::OnDragListener *OnDragListener_{nullptr};
// GraphicTimer *timer_{nullptr};
// GraphicTimer *waittimeout{nullptr};
// bool ShowInitView(VoiceAssistantView hideView);
// bool ShowVoiceView(VoiceAssistantView hideView);
// OHOS::UIViewGroup *InitVoiceAssistantView();
// VoiceAssistantChangeView viewMapper_[VOICEASSISTANT_MAXTHVIEW] = {
// &TjdUiAppVoiceAssistantView::ShowInitView,
// &TjdUiAppVoiceAssistantView::ShowVoiceView,
// };
// };
class VoiceAssistantViewBase : public OHOS::UIScrollView
{
public:
VoiceAssistantViewBase() { SetHorizontalScrollState(false); }
virtual ~VoiceAssistantViewBase() {}
virtual void ShowView() { SetVisible(true); };
virtual void HideView() { SetVisible(false); };
};
class VoiceAssistantMainView : public VoiceAssistantViewBase
{
public:
VoiceAssistantMainView();
~VoiceAssistantMainView();
OHOS::UILabel & GetDescLabel() { return desc_; }
static VoiceAssistantMainView *GetInstance(void);
void ShowView() override;
void HideView() override;
std::string GetCmdContext();
void SetCmdContext(std::string str);
GraphicTimer *GetTimer() { return timer_; }
private:
OHOS::UIImageView bg_;
OHOS::UIImageView icon_;
OHOS::UILabel desc_;
OHOS::UIButton descButtom_;
GraphicTimer *timer_{nullptr};
std::string allWord; // 记录显示文字
};
class VoiceAssistantAwakeView : public VoiceAssistantViewBase
{
public:
VoiceAssistantAwakeView();
~VoiceAssistantAwakeView();
static VoiceAssistantAwakeView *GetInstance(void);
void ShowView() override;
void HideView() override;
GraphicTimer *GetTimer() { return timer_; }
private:
OHOS::UIImageView bg_;
OHOS::UIImageView icon_;
OHOS::UILabel desc_;
OHOS::UILabel descButtom_;
GraphicTimer *timer_{nullptr};
};
class TjdUiAppVoiceAssistantPresenter;
class TjdVoiceAssistance;
class TjdUiAppVoiceAssistantView : public OHOS::View<TjdUiAppVoiceAssistantPresenter>
{
public:
TjdUiAppVoiceAssistantView();
~TjdUiAppVoiceAssistantView();
static TjdUiAppVoiceAssistantView *GetInstance(void);
void OnStart() override;
void OnStop() override;
void ShowView(VoiceAssistantIndex showIndex);
static VoiceAssistantIndex currentViewIndex_;
bool isFirstInto_ = true;
// static VoiceAssistantOnClickedListener onclicklister_;
private:
VoiceAssistantViewBase *viewManager_[VoiceAssistantIndex::VOICEASSISTANT_MAXTHVIEW]{nullptr};
OHOS::UIScrollView *mainView_{nullptr};
void InitTargetView(VoiceAssistantIndex index);
TjdVoiceAssistance* vocassistance{nullptr};
};
class TjdVoiceAssistance : public OHOS::AppGroupView {
public:
TjdVoiceAssistance();
~TjdVoiceAssistance() override;
bool InitView(void *caller) override;
static TjdVoiceAssistance *GetInstance();
void SwitchMedium(uint16_t targetView);
void VocSwitchApp(uint16_t targetView);
int VocResponse(); // 小艺回复我在
int ChangeViewToPlayer(); // 切换到音乐播放界面
int ChangePreSong(); // 切换到上一首
int ChangeNextSong(); // 切换到下一首
// int ChangeStopPlayback(); // 停止播放
int ChangePausePlayback(); // 切换到暂停
int ChangeResumePlayback(); // 切换到播放
int ChangeIncreaseVolume(); // 增加音量
int ChangeDecreaseVolume(); // 减少音量
int ChangeAcceptPhone(); // 接听电话
int ChangeHangupPhone(); // 挂断电话
int ChangeOpenExecise(); // 打开运动
int ChangeOpenMessage(); // 打开短信
int ChangeOpenAlarm(); // 打开闹钟
int ChangeOpenAlipay(); // 打开支付宝支付
int ChangeOpenWechatpay(); // 打开微信支付
// int ResponseWithoutUse(); // 打开语音助手没有操作
void DetermineCause(const int *eventRet); // 根据场景回复命令词
void SetCmdContext(std::string str); // 设置要展示的文字
bool isTrueStopPlay_ = false;
private:
};
} // namespace TJD
#endif