From 9aa5a984d2f176e30fab137ced6f5562675bf046 Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Wed, 26 Mar 2025 11:31:46 +0800 Subject: [PATCH] =?utf8?q?=E6=97=A5=E5=8E=86slice=E5=90=88=E5=B9=B6?= =?utf8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/calendar/include/CalendarModel.h | 34 ++ .../calendar/include/CalendarPresenter.h | 42 ++ .../nativeui/calendar/include/CalendarView.h | 57 +++ .../nativeui/calendar/src/CalendarModel.cpp | 37 ++ .../calendar/src/CalendarPresenter.cpp | 89 ++++ .../nativeui/calendar/src/CalendarView.cpp | 398 ++++++++++++++++++ 6 files changed, 657 insertions(+) create mode 100644 code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/include/CalendarModel.h create mode 100644 code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/include/CalendarPresenter.h create mode 100644 code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/include/CalendarView.h create mode 100644 code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/src/CalendarModel.cpp create mode 100644 code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/src/CalendarPresenter.cpp create mode 100644 code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/src/CalendarView.cpp diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/include/CalendarModel.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/include/CalendarModel.h new file mode 100644 index 000000000..144c82076 --- /dev/null +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/include/CalendarModel.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. + * Description: CalendarModel.h + * Author: + * Create: 2021-10-12 + */ +#ifndef CALENDAR_MODEL_H +#define CALENDAR_MODEL_H + +#include "los_mux.h" +#include "string" +#include "PhoneService.h" +#include "AppViewIDs.h" +#include "components/ui_label_ext.h" +#include"ui_resource_string.h" +#include "message.h" +#include "msg_center.h" +#include "stack" + +namespace OHOS { + + +class CalendarModel { +public: + static CalendarModel *GetInstance(void); + +private: + CalendarModel(); + CalendarModel(const CalendarModel &); + virtual ~CalendarModel(); + +}; +} +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/include/CalendarPresenter.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/include/CalendarPresenter.h new file mode 100644 index 000000000..4bb7c0393 --- /dev/null +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/include/CalendarPresenter.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. + * Description: CalendarPresenter.h + * Author: + * Create: 2021-10-12 + */ + +#ifndef CALENDAR_PRESENTER_H +#define CALENDAR_PRESENTER_H + +#include "Presenter.h" +#include "ohos_types.h" + +#include "cmsis_os.h" +#include "wearable_log.h" +#include "UiConfig.h" +#include "NativeAbility.h" + +namespace OHOS { +class CalendarView; +class CalendarPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener, + public RootView::OnKeyActListener +{ +public: + CalendarPresenter(); + ~CalendarPresenter() override; + + void OnStart() override; + static CalendarPresenter *GetInstance(void); + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnKeyAct(UIView &view, const KeyEvent &event) override; + bool OnDragEnd(UIView &view, const DragEvent &event) override; + + +private: + +}; +} + +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/include/CalendarView.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/include/CalendarView.h new file mode 100644 index 000000000..c78bdcf6e --- /dev/null +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/include/CalendarView.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. + * Description: CalculatorView.h + * Author: + * Create: 2021-10-12 + */ + +#ifndef CALENDAR_VIEW_H +#define CALENDAR_VIEW_H + +#include "View.h" + +#include "components/ui_view_group.h" +#include "components/ui_image_animator.h" +#include "components/ui_scroll_view.h" +#include "components/ui_label.h" +#include "components/ui_label_ext.h" +#include "components/ui_label_button.h" +#include "components/ui_list.h" +#include "components/abstract_adapter.h" +#include "components/ui_image_view.h" +#include "CalendarPresenter.h" + +namespace OHOS { + +class CalendarView : public View +{ +public: + CalendarView(); + ~CalendarView(); + + void OnStart() override; + static CalendarView *GetInstance(); + bool updata_label(int8_t type); + +private: + bool Label_init(); + UIViewGroup *group{nullptr}; + UIView:: OnDragListener* dragListener{nullptr}; + UILabel *mon_label{nullptr}; + UILabel *week_label[7]{nullptr}; + UILabel *day_label[31]{nullptr}; + UIImageView *imageview{nullptr}; + + UIImageAnimatorView *PullUpAnimatorView{nullptr}; // 上拉动画 + + ImageAnimatorInfo PullUpimageAnimatorInfo[70]{0}; + + const ImageInfo** PullUpimageAnimator_imageInfo{nullptr}; + + uint32_t show_y=0; + uint32_t show_m=0; + uint32_t show_d=0; +}; +} + +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/src/CalendarModel.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/src/CalendarModel.cpp new file mode 100644 index 000000000..f06596375 --- /dev/null +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/src/CalendarModel.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. + * Description: CalendarModel.cpp + * Author: + * Create: 2021-10-12 + */ +#include "DialingScreenView.h" + +#include "service_id_define.h" +#include "cmsis_os.h" +#include "samgr_lite.h" +#include "calendar/include/CalendarModel.h" + +#ifdef __cplusplus +extern "C" { +#endif + +using namespace OHOS; + +CalendarModel::CalendarModel() +{ +} + +CalendarModel::~CalendarModel() +{ +} + + +CalendarModel *CalendarModel::GetInstance(void) +{ + static CalendarModel callLogModel; + return &callLogModel; +} + +#ifdef __cplusplus +} +#endif diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/src/CalendarPresenter.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/src/CalendarPresenter.cpp new file mode 100644 index 000000000..669004b35 --- /dev/null +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/src/CalendarPresenter.cpp @@ -0,0 +1,89 @@ +/* + * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. + * Description: CalendarPresenter.cpp + * Author: + * Create: 2021-10-12 + */ + +#include "calendar/include/CalendarView.h" +#include "calendar/include/CalendarModel.h" +#include "gfx_utils/mem_check.h" +#include "common/key_code.h" +#include "calendar/include/CalendarPresenter.h" +#include "custom_utils.h" +#include "NativeRegisterManager.h" + +namespace OHOS +{ + REGIST_MENU_PRO(VIEW_CALENDAR, CalendarView, CalendarPresenter, + PNG_APPLIST_CALENDAR_IMAGE_BIG, PNG_APPLIST_CALENDAR_IMAGE, PNG_APPLIST_CALENDAR_IMAGE, "日历", STR_CALENDAR); + + static CalendarPresenter *g_pMainView = nullptr; + CalendarPresenter::CalendarPresenter() + { + g_pMainView = this; +#ifdef MEM_CHECK + MemCheck::GetInstance()->EnableLeakCheck(true); +#endif + } + + CalendarPresenter::~CalendarPresenter() + { + g_pMainView = nullptr; +#ifdef MEM_CHECK + MemCheck::GetInstance()->EnableLeakCheck(false); +#endif + } + + CalendarPresenter *CalendarPresenter::GetInstance(void) + { + return g_pMainView; + } + + void CalendarPresenter::OnStart() + { + } + + bool CalendarPresenter::OnClick(UIView &view, const ClickEvent &event) + { + UNUSED(event); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick"); + + return false; + } + + bool CalendarPresenter::OnDragEnd(OHOS::UIView &view, const OHOS::DragEvent &event) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter OnDragEnd"); + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) + { + if (event.GetPreLastPoint().x - event.GetStartPoint().x > 100) + NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); + } + if (event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP) + { + // if(event.GetPreLastPoint().y-event.GetStartPoint().y>100) + CalendarView::GetInstance()->updata_label(2); + } + if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM) + { + // if(event.GetPreLastPoint().y-event.GetStartPoint().y>100) + CalendarView::GetInstance()->updata_label(1); + } + return true; + } + + bool CalendarPresenter::OnKeyAct(UIView &view, const KeyEvent &event) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::OnKeyAct"); + uint16 keyID = event.GetKeyId(); + uint16_t keyState = event.GetState(); + // 如果是power键就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0) + { + uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); + } + return true; + } +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/src/CalendarView.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/src/CalendarView.cpp new file mode 100644 index 000000000..8a922b3b7 --- /dev/null +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/calendar/src/CalendarView.cpp @@ -0,0 +1,398 @@ +/* + * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. + * Description: CalendarView.cpp + * Author: + * Create: 2021-10-12 + */ + +#include "calendar/include/CalendarView.h" +#include "calendar/include/CalendarModel.h" +#include "uicomponents/UIComponents.h" + +#include "wearable_log.h" +#include "UiConfig.h" +#include "NativeAbility.h" +#include "ConfigModel.h" +#include "languagecode/LanguageInit.h" +namespace OHOS +{ + + static CalendarView *g_pMainView_CalendarView = nullptr; + + static char *dial_id_str[] = {"7", "8", "9", "C", "%", "4", "5", "6", "÷", "x", "1", "2", "3", "-", "+", "", "0", ".", "=", ""}; + + static constexpr int16_t PULLUP_ANIMATOR_VIEW_X = 213; + static constexpr int16_t PULLUP_ANIMATOR_VIEW_Y = 380; + static constexpr int16_t PULLUP_ANIMATOR_VIEW_W = 40; + static constexpr int16_t PULLUP_ANIMATOR_VIEW_H = 40; + static constexpr int16_t PULLUP_ANIMATOR_VIEW_NUM_FRAMES = 70; + static constexpr int16_t PULLUP_ANIMATOR_VIEW_TIME = 100; + + static constexpr const char *PullUpPaths = "/user/res/weather/PullUp/PullUp_"; + + static constexpr const char *stepPaths = "/user/res/step/"; + + CalendarView::CalendarView() + { + // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "::CalendarView::CalendarView "); + g_pMainView_CalendarView = this; + } + + CalendarView::~CalendarView() + { + // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "::CalendarView::~CalendarView "); + + g_pMainView_CalendarView = nullptr; + if (group) + { + group->RemoveAll(); + + if (mon_label) + { + delete mon_label; + mon_label = nullptr; + } + + if (imageview) + { + delete imageview; + imageview = nullptr; + } + + for (int i = 0; i < 7; i++) + { + if (week_label[i]) + { + delete week_label[i]; + week_label[i] = nullptr; + } + } + + for (int i = 0; i < 31; i++) + { + if (day_label[i]) + { + delete day_label[i]; + day_label[i] = nullptr; + } + } + + if (PullUpAnimatorView != nullptr) + { + PullUpAnimatorView->Stop(); + delete PullUpAnimatorView; + PullUpAnimatorView = nullptr; + } + + FreeImageInfoArray(PullUpimageAnimator_imageInfo, PullUpPaths, PULLUP_ANIMATOR_VIEW_NUM_FRAMES); + + delete group; + group = nullptr; + } + + g_pMainView_CalendarView = nullptr; + } + + CalendarView *CalendarView::GetInstance() + { + return g_pMainView_CalendarView; + } + static char *week_Z_str[] = {"一", "二", "三", "四", "五", "六", "日"}; + static char *week_E_str[] = {"MON", "THE", "WED", "THU", "FRI", "SAT", "SUN"}; + // static char *day_str[]={"1","2","3","4","5","7","8"}; + + bool CalendarView::updata_label(int8_t type) + { + for (int i = 0; i < 31; i++) + { + day_label[i]->SetVisible(false); + } + imageview->SetVisible(false); + + if (type == 1) + { + show_m--; + if (show_m == 0) + { + show_m = 12; + show_y--; + } + } + else + { + show_m++; + if (show_m == 13) + { + show_m = 1; + show_y++; + } + } + uint8_t mon_max_day = 0; + uint8_t is_run = 0; + if (show_y % 4 == 0 && show_y % 100 != 0 || show_y % 400 == 0) + { + is_run = 1; + } + + if (show_m == 2) + { + mon_max_day = 28 + is_run; + } + else if (show_m == 1 || show_m == 3 || show_m == 5 || show_m == 7 || show_m == 8 || show_m == 10 || show_m == 12) + { + mon_max_day = 31; + } + else + { + mon_max_day = 30; + } + + int y = show_y; + int m = show_m; + int week = 0; + { + if (m == 1 || m == 2) + { + m += 12; + y--; + } + week = (1 + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7; + } + + char mon[20] = {0}; + sprintf(mon, "%d.%d", show_y, show_m); + mon_label->SetText(mon); + + for (int i = 0; i < mon_max_day; i++) + { + int x = ((i + week) % 7); + int y = ((i + week) / 7); + day_label[i]->SetPosition(58 + 50 * x, 140 + 44 * y); // widget's left position and top position + char day[5]; + sprintf(day, "%d", i + 1); + ; + day_label[i]->SetText(day); + time_t currtime; + time(&currtime); + struct tm *timeinfo; + timeinfo = localtime(&currtime); + int y_ = timeinfo->tm_year + 1900; + int m_ = timeinfo->tm_mon + 1; + int d_ = timeinfo->tm_mday; + if (i + 1 == d_ && show_y == y_ && show_m == m_) + { + imageview->SetPosition(58 + 50 * x, 140 + 44 * y); + imageview->SetVisible(true); + } + day_label[i]->SetVisible(true); + } + RootView::GetInstance()->Invalidate(); + return true; + } + bool CalendarView::Label_init() + { + // Add Label to App + uint8_t mon_max_day = 0; + + uint8_t is_run = 0; + time_t currtime; + time(&currtime); + struct tm *timeinfo; + timeinfo = localtime(&currtime); + int y = timeinfo->tm_year + 1900; + int m = timeinfo->tm_mon + 1; + int d = timeinfo->tm_mday; + int h = timeinfo->tm_hour; + int min = timeinfo->tm_min; + int week = timeinfo->tm_wday; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d,%d,%d,%d", y, m, d, week); + if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) // + { + is_run = 1; + } + + if (m == 2) + { + mon_max_day = 28 + is_run; + } + else if (m == 1 || + m == 3 || + m == 5 || + m == 7 || + m == 8 || + m == 10 || + m == 12) + { + mon_max_day = 31; + } + else + { + mon_max_day = 30; + } + + show_y = y; + show_m = m; + show_d = d; + + if (mon_label == nullptr) + { + mon_label = new UILabel(); + } + mon_label->SetPosition(83, 50); // widget's left position and top position + mon_label->Resize(300, 35); // widget's width and height + mon_label->SetViewId("label1"); // Set style + mon_label->SetStyle(STYLE_TEXT_FONT, 30); + + char mon[20] = {0}; + sprintf(mon, "%d.%d", y, m); + + if (m == 1 || m == 2) + { + m += 12; + y--; + } + week = (1 + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7; + + mon_label->SetText(mon); + mon_label->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); + mon_label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + mon_label->SetRollSpeed(0); + mon_label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + + // Add to rootView + group->Add(mon_label); + + for (int i = 0; i < 7; i++) + { + if (week_label[i] == nullptr) + { + week_label[i] = new UILabel(); + } + week_label[i]->SetPosition(58 + 50 * (i), 110); // widget's left position and top position + week_label[i]->Resize(50, 30); // widget's width and height + week_label[i]->SetViewId("label3"); // Set style + week_label[i]->SetStyle(STYLE_TEXT_FONT, 20); + + if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) + week_label[i]->SetText(week_Z_str[i]); + else + week_label[i]->SetText(week_E_str[i]); + + week_label[i]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); + week_label[i]->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff)); + week_label[i]->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + week_label[i]->SetRollSpeed(0); + week_label[i]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20); + + group->Add(week_label[i]); + week_label[i]->SetVisible(true); + } + // Add Label to App + if (imageview == nullptr) + { + imageview = new UIImageView(); + } + + imageview->SetPosition(58, 140); + imageview->Resize(50, 50); + imageview->SetViewId("image1"); + imageview->SetStyle(STYLE_BACKGROUND_COLOR, 0xffff5a36); + imageview->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + imageview->SetStyle(STYLE_BORDER_RADIUS, 100); + group->Add(imageview); + imageview->SetVisible(false); + + for (int i = 0; i < 31; i++) + { + if (day_label[i] == nullptr) + { + day_label[i] = new UILabel(); + } + + day_label[i]->SetPosition(58, 140); // widget's left position and top position + day_label[i]->Resize(50, 44); // widget's width and height + day_label[i]->SetViewId("label3"); // Set style + day_label[i]->SetStyle(STYLE_TEXT_FONT, 20); + + day_label[i]->SetStyle(STYLE_BORDER_RADIUS, 100); + + day_label[i]->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); + day_label[i]->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + day_label[i]->SetRollSpeed(0); + day_label[i]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + + group->Add(day_label[i]); + day_label[i]->SetVisible(false); + } + for (int i = 0; i < mon_max_day; i++) + { + int x = ((i + week) % 7); + int y = ((i + week) / 7); + day_label[i]->SetPosition(58 + 50 * x, 140 + 44 * y); // widget's left position and top position + char day[5]; + sprintf(day, "%d", i + 1); + ; + day_label[i]->SetText(day); + if (i + 1 == d) + { + imageview->SetPosition(58 + 50 * x, 140 + 44 * y); + imageview->SetVisible(true); + } + day_label[i]->SetVisible(true); + } + + PullUpimageAnimator_imageInfo = CreateImageInfoArray(PullUpPaths, PULLUP_ANIMATOR_VIEW_NUM_FRAMES); + if (PullUpAnimatorView == nullptr) + { + PullUpAnimatorView = new UIImageAnimatorView(); + if (PullUpAnimatorView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpAnimatorView new fail"); + return false; + } + for (uint8_t i = 0; i < PULLUP_ANIMATOR_VIEW_NUM_FRAMES; i++) + { + // PullUpimageAnimatorInfo[i].imageInfo = ImageCacheManager::GetInstance().LoadSingleRes(PullUpPathsArray[i]); + // PullUpimageAnimatorInfo[i].imageType = IMG_SRC_IMAGE_INFO; + PullUpimageAnimatorInfo[i].imageInfo = PullUpimageAnimator_imageInfo[i]; + // PullUpPathsArray[i]; + PullUpimageAnimatorInfo[i].imageType = IMG_SRC_IMAGE_INFO; + PullUpimageAnimatorInfo[i].pos.x = PULLUP_ANIMATOR_VIEW_X; + PullUpimageAnimatorInfo[i].pos.y = PULLUP_ANIMATOR_VIEW_Y; + PullUpimageAnimatorInfo[i].width = PULLUP_ANIMATOR_VIEW_W; + PullUpimageAnimatorInfo[i].height = PULLUP_ANIMATOR_VIEW_H; + } + PullUpAnimatorView->SetPosition(PULLUP_ANIMATOR_VIEW_X, PULLUP_ANIMATOR_VIEW_Y, PULLUP_ANIMATOR_VIEW_W, PULLUP_ANIMATOR_VIEW_H); + PullUpAnimatorView->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); + PullUpAnimatorView->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + PullUpAnimatorView->SetImageAnimatorSrc(PullUpimageAnimatorInfo, PULLUP_ANIMATOR_VIEW_NUM_FRAMES, PULLUP_ANIMATOR_VIEW_TIME); + PullUpAnimatorView->SetRepeat(true); + PullUpAnimatorView->Start(); + } + group->Add(PullUpAnimatorView); + + return true; + } + + void CalendarView::OnStart() + { + group = new UIViewGroup(); + if (group == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallingView::UIViewGroup::new group error"); + return; + } + group->SetPosition(0, 0); + group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); // 454 : value + group->SetTouchable(true); + group->SetDraggable(true); + group->SetOnDragListener(presenter_); + AddViewToRootContainer(group); + + if (!Label_init()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallingView::UIViewGroup::new group error"); + return; + } + } +} \ No newline at end of file -- 2.17.1