VIEW_TRAININGENDDATA, // 训练结束详细数据
VIEW_TRAINING_RECORD, // 训练记录
VIEW_TRAINING_GPSNOTE,// 训练GPS提醒
+ VIEW_TRAINING_EPHEMERIS_NOTE,// 训练星历提醒
/* ---------------------------------- 训练列表 ---------------------------------- */
VIEW_TRAININGMORE, // 更多训练
VIEW_TRAININGLIMIT, // 极限运动列表
--- /dev/null
+#ifndef _TraingEphemerisNote_PRESENTER_H
+#define _TraingEphemerisNote_PRESENTER_H
+
+#include "key/include/KeyInputListener.h"
+#include "Presenter.h"
+#include "TraingEphemerisNoteView.h"
+
+namespace OHOS
+{
+ class TraingEphemerisNoteView;
+
+ class TraingEphemerisNotePresenter : public Presenter<TraingEphemerisNoteView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingEphemerisNotePresenter();
+ virtual ~TraingEphemerisNotePresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingEphemerisNotePresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ bool OnDragEnd(UIView& view, const DragEvent& event) override;
+ };
+} // namespace OHOS
+
+#endif // TraingEphemerisNote_PRESENTER_H
+
--- /dev/null
+#ifndef _TraingEphemerisNote_VIEW_H
+#define _TraingEphemerisNote_VIEW_H
+
+#include "View.h"
+#include "components/icon_adapter.h"
+#include "components/ui_button.h"
+#include "components/ui_card_page.h"
+#include "components/ui_chart.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_image_view.h"
+#include "components/ui_label.h"
+#include "components/ui_label_button.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_label_ext.h"
+#include "components/ui_list.h"
+#include "components/ui_view_group.h"
+#include "ohos_types.h"
+#include "traing/Training_UiConfig.h"
+#include "traing/include/TraingModel.h"
+#include "uicomponents/UIComponents.h"
+#include "wearable_log.h"
+#include <ui_scroll_view.h>
+
+#include "TraingEphemerisNotePresenter.h"
+namespace OHOS {
+#define BUTTONTRAIN "button1" // 去训练按钮
+#define BUTTONDOWNLOAD "button2" // 去下载按钮
+
+class TraingEphemerisNotePresenter;
+class TraingEphemerisNoteView : public View<TraingEphemerisNotePresenter> {
+
+public:
+ TraingEphemerisNoteView();
+ virtual ~TraingEphemerisNoteView();
+ static TraingEphemerisNoteView *GetInstance(void);
+
+ void OnStart() override;
+
+ void InitView();
+ void DeInit();
+
+ void InitList();
+ void PreLoad(void);
+
+private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingEphemerisNoteView(TraingEphemerisNoteView &&) = delete;
+ TraingEphemerisNoteView &operator=(TraingEphemerisNoteView &&) = delete;
+
+ UIScrollView *scrollView1_ = nullptr;
+
+ UILabelExt *label1_ = nullptr;
+ UILabelExt *label2_ = nullptr;
+
+ UILabelButtonExt *button_back = nullptr;
+ UILabelButtonExt *button_download = nullptr;
+
+ UIImageView *image1_ = nullptr;
+ UIImageView *image2_ = nullptr;
+ bool viewiInitStatus{false};
+};
+} // namespace OHOS
+#endif // TraingEphemerisNote_PRESENTER_H
+
--- /dev/null
+#include "AppViewIDs.h"
+#include "components/ui_label_ext.h"
+#include "ui_resource_string.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/training_GPS/include/TraingEphemerisNotePresenter.h"
+#include "ephemeris_download/include/EphemerisDownloadModel.h"
+#include "traing/training_card/include/TraingCardPresenter.h"
+#include "traing/include/TraingModel.h"
+#include "traing/include/TraingNomalPresenter.h"
+
+#include "NativeRegisterManager.h"
+namespace OHOS
+{
+ REGIST_SLICE(VIEW_TRAINING_EPHEMERIS_NOTE, TraingEphemerisNoteView, TraingEphemerisNotePresenter);
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingEphemerisNotePresenter *g_pTraingEphemerisNotePresenter = nullptr;
+
+ TraingEphemerisNotePresenter::TraingEphemerisNotePresenter()
+ {
+ g_pTraingEphemerisNotePresenter = this;
+ }
+
+ TraingEphemerisNotePresenter::~TraingEphemerisNotePresenter()
+ {
+ g_pTraingEphemerisNotePresenter = nullptr;
+ }
+
+ TraingEphemerisNotePresenter *TraingEphemerisNotePresenter::GetInstance()
+ {
+ return g_pTraingEphemerisNotePresenter;
+ }
+
+ void TraingEphemerisNotePresenter::OnStart()
+ {
+ Presenter<TraingEphemerisNoteView>::OnStart();
+ }
+
+ void TraingEphemerisNotePresenter::OnPause(void)
+ {
+ Presenter<TraingEphemerisNoteView>::OnPause();
+ }
+
+ void TraingEphemerisNotePresenter::OnResume(void)
+ {
+ Presenter<TraingEphemerisNoteView>::OnResume();
+ }
+
+ void TraingEphemerisNotePresenter::OnStop(void)
+ {
+ Presenter<TraingEphemerisNoteView>::OnStop();
+ }
+
+ bool TraingEphemerisNotePresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+ return true;
+ }
+
+ bool TraingEphemerisNotePresenter::OnDragEnd(UIView &view, const DragEvent &event)
+ {
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
+ {
+ uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ NativeAbility::GetInstance().ChangeSlice(preSlice);
+ }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingEphemerisNotePresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ // 根据控件id查找是哪个控件触发了点击回调
+ if (strcmp(view.GetViewId(), BUTTONTRAIN) == 0)
+ {
+ // 去训练按钮 - 直接进入运动卡片(跳过星历检查)
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCRAD);
+
+ // 启动运动相关资源
+ ExerciseClass type = TraingModel::GetInstance()->GetSportId();
+ TraingCardPresenter::GetInstance()->OpenSensor(type);
+ TraingModel::GetInstance()->SetSportOpenWay(false);
+ }
+ else if (strcmp(view.GetViewId(), BUTTONDOWNLOAD) == 0)
+ {
+ // 去下载按钮 - 跳转到星历下载界面
+ NativeAbility::GetInstance().ChangeSlice(VIEW_EPHEMERIS_DOWNLOAD);
+
+ TraingNomalPresenter::GetInstance()->CleanupGPSResources();//关闭GPS资源
+ }
+ return true;
+ }
+} // namespace OHOS
+
--- /dev/null
+#include "traing/training_GPS/include/TraingEphemerisNoteView.h"
+
+#include "UiConfig.h"
+#include "ui_resource_string.h"
+#include "ui_resource_image.h"
+#include "uicomponents/UIComponents.h"
+#include "traing/Training_UiConfig.h"
+
+namespace OHOS
+{
+
+ static TraingEphemerisNoteView *g_pTraingEphemerisNoteView{nullptr};
+
+ TraingEphemerisNoteView::TraingEphemerisNoteView()
+ {
+ g_pTraingEphemerisNoteView = this;
+ }
+
+ TraingEphemerisNoteView::~TraingEphemerisNoteView()
+ {
+ DeInit();
+ g_pTraingEphemerisNoteView = nullptr;
+ }
+
+ TraingEphemerisNoteView *TraingEphemerisNoteView::GetInstance(void)
+ {
+ return g_pTraingEphemerisNoteView;
+ }
+
+ /* InitView:初始化界面*/
+ void TraingEphemerisNoteView::InitView()
+ {
+ // Add ScrollView to App
+ if (scrollView1_ == nullptr)
+ {
+ scrollView1_ = new UIScrollView();
+ }
+ scrollView1_->SetPosition(0, 0);
+ scrollView1_->Resize(466, 466);
+ scrollView1_->SetViewId("scrollView1");
+ scrollView1_->SetReboundSize(100);
+ scrollView1_->SetScrollBlankSize(52);
+ scrollView1_->SetHorizontalScrollState(false);
+ AddViewToRootContainer(scrollView1_);
+ scrollView1_->SetVisible(true);
+
+ // 初始化Image - 警告图标
+ InitImageView(image1_, 193, 111, 80, 80, "image1", WARNING_IMAGE);
+ scrollView1_->Add(image1_);
+
+ // 初始化button - 去训练按钮
+ InitButtonExt(button_back, 118, 434, 230, 80, BUTTONTRAIN, STR_SET_TARGET, 30);
+ button_back->SetText("去训练");
+ scrollView1_->Add(button_back);
+ button_back->SetOnClickListener(presenter_);
+
+ // 初始化button - 去下载按钮
+ InitButtonExt(button_download, 118, 334, 230, 80, BUTTONDOWNLOAD, STR_EPHEMERIS_DOWNLOAD, 30);
+ button_download->SetText("去下载");
+ button_download->SetStyle(STYLE_BACKGROUND_COLOR, 0xff4fc34c);
+ scrollView1_->Add(button_download);
+ button_download->SetOnClickListener(presenter_);
+
+ // 初始化Lable - 标题
+ InitLabel(label1_, 133, 52, 200, 60, "label1", "星历未下载", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ // 初始化Lable - 说明文字
+ InitLabel(label2_, 33, 215, 400, 90, "label2", "星历数据未下载或已过期,建议先下载星历数据后再开始训练", DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+ scrollView1_->Add(label1_);
+ scrollView1_->Add(label2_);
+
+ // Add ImageView to App
+ if (image2_ == nullptr)
+ {
+ image2_ = new UIImageView();
+ }
+ image2_->SetPosition(181, 500);
+ image2_->Resize(100, 100);
+ image2_->SetViewId("image7");
+ scrollView1_->Add(image2_);
+ image2_->SetVisible(true);
+ }
+
+ /* DeInit:删除组件 */
+ void TraingEphemerisNoteView::DeInit()
+ {
+ if (scrollView1_ != nullptr)
+ {
+ scrollView1_->RemoveAll();
+ if (image1_ != nullptr)
+ {
+ delete image1_;
+ image1_ = nullptr;
+ }
+ if (button_back != nullptr)
+ {
+ delete button_back;
+ button_back = nullptr;
+ }
+ if(button_download != nullptr)
+ {
+ delete button_download;
+ button_download = nullptr;
+ }
+ if (label1_ != nullptr)
+ {
+ delete label1_;
+ label1_ = nullptr;
+ }
+ if (label2_ != nullptr)
+ {
+ delete label2_;
+ label2_ = nullptr;
+ }
+ if (image2_ != nullptr)
+ {
+ delete image2_;
+ image2_ = nullptr;
+ }
+
+ delete scrollView1_;
+ scrollView1_ = nullptr;
+ }
+ }
+
+ void TraingEphemerisNoteView::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ InitView();
+ viewiInitStatus = true;
+ }
+ }
+
+ void TraingEphemerisNoteView::OnStart()
+ {
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingEphemerisNotePresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ GetRootContainer()->SetOnDragListener(draglistener);
+
+ GetRootContainer()->SetTouchable(true);
+ GetRootContainer()->SetDraggable(true);
+
+ PreLoad();
+ }
+
+
+} // namespace OHOS
+