From e39d21ce9af9bdca7280dbfd08850d465dd72ed5 Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Fri, 15 Nov 2024 18:49:54 +0800 Subject: [PATCH] =?utf8?q?applsit=E6=8B=A8=E5=8F=B7=E7=9B=98=E5=AE=9E?= =?utf8?q?=E7=8E=B0=EF=BC=9A=E7=9B=AE=E5=89=8D=EF=BC=8C=E6=BB=91=E5=8A=A8?= =?utf8?q?=E4=B8=80=E4=B8=8B=E5=B1=8F=E5=B9=95APP=E8=BD=AC=E5=8A=A8?= =?utf8?q?=E4=B8=80=E6=AC=A1=EF=BC=8C=E5=90=8E=E7=BB=AD=E4=BC=98=E5=8C=96?= =?utf8?q?=E4=B8=BA=E5=A4=9A=E6=AC=A1=E8=BD=AC=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativelauncher/include/UiConfig.h | 36 + .../nativeui/applist/include/ApplistModel.h | 24 +- .../nativeui/applist/include/ApplistView.h | 13 + .../nativeui/applist/src/ApplistModel.cpp | 96 ++- .../nativeui/applist/src/ApplistPresenter.cpp | 12 + .../nativeui/applist/src/ApplistView.cpp | 718 +++++++++++++++++- .../themestyle/include/ThemeStyleModel.h | 8 +- .../themestyle/include/ThemeStyleView.h | 14 +- .../themestyle/src/ThemeStylePresenter.cpp | 6 +- .../themestyle/src/ThemeStyleView.cpp | 19 +- 10 files changed, 898 insertions(+), 48 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h index 7d08b4f60..ec0554dd3 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h @@ -522,6 +522,42 @@ namespace OHOS static constexpr const char *PNG_APPLIST_SCHEDULE_IMAGE = APP_LIST_PATH "/schedule.bin"; static constexpr const char *PNG_APPLIST_SMART_IMAGE = APP_LIST_PATH "/smart.bin"; //语音助手 static constexpr const char *PNG_APPLIST_CALENDAR_IMAGE = APP_LIST_PATH "/calendar.bin"; //日历 + //big Icon + static constexpr const char *PNG_APPLIST_THEME_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/theme.bin"; // 显示方式 + static constexpr const char *PNG_APPLIST_CARDSET_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/cardsetting.bin"; // 卡片管理 + static constexpr const char *PNG_APPLIST_CHANGEDIAL_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/changedial.bin"; // 切换表盘 + static constexpr const char *PNG_APPLIST_ALARM_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/alarm.bin"; // 闹钟 + static constexpr const char *PNG_APPLIST_SPO2_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/booldoxygen.bin"; // 血氧 + static constexpr const char *PNG_APPLIST_HEART_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/heart.bin"; // 心率 + static constexpr const char *PNG_APPLIST_SETTING_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/setting.bin"; // 设置 + static constexpr const char *PNG_APPLIST_CALLER_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/phone.bin"; // 打电话 + static constexpr const char *PNG_APPLIST_CALLLOG_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/phonebook.bin"; // 通话记录 + static constexpr const char *PNG_APPLIST_COMPASS_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/compass.bin"; // 指南针 + static constexpr const char *PNG_APPLIST_WEATHER_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/weather.bin"; // 天气 + static constexpr const char *PNG_APPLIST_RECORD_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/recording.bin"; // 录音 + static constexpr const char *PNG_APPLIST_TRAINING_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/training.bin"; // 训练 + static constexpr const char *PNG_APPLIST_TRAINING_RECORD_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/record.bin"; // 训练记录 + static constexpr const char *PNG_APPLIST_STOPWATCH_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/countdown.bin"; // 秒表 + static constexpr const char *PNG_APPLIST_COUNTDOWN_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/clock.bin"; // 计时器 + static constexpr const char *PNG_APPLIST_ALIPAY_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/alipay.bin"; // 支付宝 + static constexpr const char *PNG_APPLIST_FINDPHONE_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/findphone.bin"; // 查找手机 + static constexpr const char *PNG_APPLIST_DISTURB_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/disturb.bin"; // 勿扰模式 + static constexpr const char *PNG_APPLIST_FLASHLIGHT_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/flashlight.bin"; // 手电筒 + static constexpr const char *PNG_APPLIST_BRIGHTNESSLEVEL_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/lighting.bin"; // 亮度调节 + static constexpr const char *PNG_APPLIST_SAVEELE_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/save.bin"; // 省电模式 + static constexpr const char *PNG_APPLIST_MESSAGE_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/message.bin"; // 消息通知 + static constexpr const char *PNG_APPLIST_TACKEPHOTOS_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/assistant.bin"; // 遥控拍照 + static constexpr const char *PNG_APPLIST_BLUETOOTH_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/Bluetooth.bin"; // 蓝牙 + static constexpr const char *PNG_APPLIST_BREATHE_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/breathe.bin"; // 呼吸训练 + static constexpr const char *PNG_APPLIST_GOAL_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/sport.bin"; // 每日目标 + static constexpr const char *PNG_APPLIST_VOICE_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/voice.bin"; // 声音 + static constexpr const char *PNG_APPLIST_AIVOICE_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/aivoice.bin"; // AI Voice(人工智能语音) + static constexpr const char *PNG_APPLIST_SLEEP_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/sleeping.bin"; // 睡眠 + static constexpr const char *PNG_APPLIST_INFORMATION_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/information.bin"; // 计算器 + static constexpr const char *PNG_APPLIST_MUSIC_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/music.bin"; // 音乐 + static constexpr const char *PNG_APPLIST_SCHEDULE_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/schedule.bin"; + static constexpr const char *PNG_APPLIST_SMART_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/smart.bin"; //语音助手 + static constexpr const char *PNG_APPLIST_CALENDAR_IMAGE_BIG = APP_LIST_PATH "/applist_big_icon/calendar.bin"; //日历 // AppList hexagon icon static constexpr const char *PNG_APPLIST_DEFAULT_IMG = APP_RES_PATH "/regular_hexagon.bin"; diff --git a/code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistModel.h b/code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistModel.h index 9bd793f41..864cd064a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistModel.h @@ -1,9 +1,10 @@ - /* - * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. - * Description: ApplistModel.h - * Author: - * Create: 2021-09-18 + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-11-07 11:29:18 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-11-15 11:42:31 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistModel.h + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ #ifndef _APPLIST_MODEL_H_ @@ -53,6 +54,14 @@ public: void SetPresenter(ApplistPresenter *p); AppListStyle GetCurrentStyle(void); + // 拨号盘 + void SetCircleListStartAngle(int angle); + int GetCircleListStartAngle(void); + void SetCurselectImageIndex(int index); + int GetCurselectImageIndex(void); + void SetPreselectImageIndex(int index); + int GetPreselectImageIndex(void); + private: ApplistModel(); ApplistModel(const ApplistModel &); @@ -70,6 +79,11 @@ private: uint16_t startIndex = 0; // 列表起始位置 int headItemY = 0; // 列表头部位置 bool initFlag{false}; + + // 拨号盘 + int circleListStartAngle{0}; + int curselectImageIndex{0}; + int preselectImageIndex{0}; }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistView.h b/code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistView.h index 79c613012..8d2e58323 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistView.h @@ -21,6 +21,7 @@ #include "UiConfig.h" #include "components/ui_label_ext.h" #include "components/ui_transform_list.h" +#include "components/ui_picker.h" namespace OHOS { class AppListOnDragListener : public UIView::OnDragListener { @@ -153,6 +154,18 @@ private: UITransformList * ArcScaleList_{nullptr}; ArcScaleListItemAdapter * ArcScaleListAdapter_{nullptr}; UIView::OnDragListener * ArcScaleListDragListener_{nullptr}; + + //for circleList style + void CircleListStyleOnStart(void); + void CircleListStyleOnSetUpView(void); + void CircleListStyleOnStop(void); + UIViewGroup * CircleListGroup_{nullptr}; + UIImageView * CircleListAPP[12]{nullptr}; + UIImageView * CircleListImage1{nullptr}; + UIImageView * CircleListImage2{nullptr}; + UIImageView * CircleListSelectImage{nullptr}; + UIPicker * CircleListPicker{nullptr}; + int CircleListAPPNum{0}; }; } #endif // APPLIST_VIEW_H \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp index ae71146af..b90157ac3 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp @@ -20,7 +20,7 @@ #include "ui_resource_string.h" #include "applist/include/ApplistModel.h" #include "themestyle/include/ThemeStyleModel.h" - +#include "wearable_log.h" #define HEART_APPLIST 1 namespace OHOS { @@ -53,38 +53,38 @@ namespace OHOS */ const AppItem g_nativeAppList[] = { #ifdef A5133_DEMO_CLIENT - {VIEW_OBU_MESSAGE, PNG_APPLIST_THEME_IMAGE, PNG_APPLIST_THEME_IMAGE, PNG_APPLIST_DEFAULT_IMG, "OBU", STR_OBU_MESSAGE, nullptr}, + {VIEW_OBU_MESSAGE, PNG_APPLIST_THEME_IMAGE_BIG, PNG_APPLIST_THEME_IMAGE, PNG_APPLIST_DEFAULT_IMG, "OBU", STR_OBU_MESSAGE, nullptr}, #endif - {VIEW_MAIN_PHONE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_DEFAULT_IMG, "电话", STR_TELEPHONE, nullptr}, + {VIEW_MAIN_PHONE, PNG_APPLIST_CALLER_IMAGE_BIG, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_DEFAULT_IMG, "电话", STR_TELEPHONE, nullptr}, #if HEART_APPLIST - {VIEW_HEART_CHART, PNG_APPLIST_HEART_IMAGE, PNG_APPLIST_HEART_IMAGE, PNG_APPLIST_DEFAULT_IMG, "心率", STR_HEART_RATE, nullptr}, + {VIEW_HEART_CHART, PNG_APPLIST_HEART_IMAGE_BIG, PNG_APPLIST_HEART_IMAGE, PNG_APPLIST_DEFAULT_IMG, "心率", STR_HEART_RATE, nullptr}, #endif - {VIEW_BLOOD_RESULT, PNG_APPLIST_SPO2_IMAGE, PNG_APPLIST_SPO2_IMAGE, PNG_APPLIST_DEFAULT_IMG, "血氧", STR_BLOOD_OXYGEN, nullptr}, - {VIEW_SLEEP, PNG_APPLIST_SLEEP_IMAGE, PNG_APPLIST_SLEEP_IMAGE, PNG_APPLIST_DEFAULT_IMG, "睡眠", STR_SLEEP, nullptr}, - {VIEW_TRAINING, PNG_APPLIST_TRAINING_IMAGE, PNG_APPLIST_TRAINING_IMAGE, PNG_APPLIST_DEFAULT_IMG, "运动", STR_TRAINING, nullptr}, - {VIEW_TRAINING_RECORD, PNG_APPLIST_TRAINING_RECORD_IMAGE, PNG_APPLIST_TRAINING_RECORD_IMAGE, PNG_APPLIST_DEFAULT_IMG, "运动记录", STR_TRAINING_RECORD, nullptr}, - {VIEW_GOAL, PNG_APPLIST_GOAL_IMAGE, PNG_APPLIST_GOAL_IMAGE, PNG_APPLIST_DEFAULT_IMG, "活动", STR_ACTIVITY, nullptr}, - {VIEW_AI_VOICE, PNG_APPLIST_AIVOICE_IMAGE, PNG_APPLIST_AIVOICE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "AI全家桶", STR_AI_FAMILY_MEALS, nullptr}, + {VIEW_BLOOD_RESULT, PNG_APPLIST_SPO2_IMAGE_BIG, PNG_APPLIST_SPO2_IMAGE, PNG_APPLIST_DEFAULT_IMG, "血氧", STR_BLOOD_OXYGEN, nullptr}, + {VIEW_SLEEP, PNG_APPLIST_SLEEP_IMAGE_BIG, PNG_APPLIST_SLEEP_IMAGE, PNG_APPLIST_DEFAULT_IMG, "睡眠", STR_SLEEP, nullptr}, + {VIEW_TRAINING, PNG_APPLIST_TRAINING_IMAGE_BIG, PNG_APPLIST_TRAINING_IMAGE, PNG_APPLIST_DEFAULT_IMG, "运动", STR_TRAINING, nullptr}, + {VIEW_TRAINING_RECORD, PNG_APPLIST_TRAINING_RECORD_IMAGE_BIG, PNG_APPLIST_TRAINING_RECORD_IMAGE, PNG_APPLIST_DEFAULT_IMG, "运动记录", STR_TRAINING_RECORD, nullptr}, + {VIEW_GOAL, PNG_APPLIST_GOAL_IMAGE_BIG, PNG_APPLIST_GOAL_IMAGE, PNG_APPLIST_DEFAULT_IMG, "活动", STR_ACTIVITY, nullptr}, + {VIEW_AI_VOICE, PNG_APPLIST_AIVOICE_IMAGE_BIG, PNG_APPLIST_AIVOICE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "AI全家桶", STR_AI_FAMILY_MEALS, nullptr}, #ifdef SUPPORT_ALIPAY_SEC - {VIEW_MAIN_ALIPAY, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_DEFAULT_IMG, "支付宝", STR_ALIPAY, nullptr}, + {VIEW_MAIN_ALIPAY, PNG_APPLIST_ALIPAY_IMAGE_BIG, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_DEFAULT_IMG, "支付宝", STR_ALIPAY, nullptr}, #endif - {VIEW_MESSAGE, PNG_APPLIST_MESSAGE_IMAGE, PNG_APPLIST_MESSAGE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "消息通知", STR_MESSAGE_NOTIFICATION, nullptr}, - {VIEW_COMPASS, PNG_APPLIST_COMPASS_IMAGE, PNG_APPLIST_COMPASS_IMAGE, PNG_APPLIST_DEFAULT_IMG, "指南针", STR_COMPASS, nullptr}, - {VIEW_CALCULATOR, PNG_APPLIST_INFORMATION_IMAGE, PNG_APPLIST_INFORMATION_IMAGE, PNG_APPLIST_DEFAULT_IMG, "计算器", STR_CALCULATOR, nullptr}, - {VIEW_RECORD, PNG_APPLIST_RECORD_IMAGE, PNG_APPLIST_RECORD_IMAGE, PNG_APPLIST_DEFAULT_IMG, "录音", STR_RECORD, nullptr}, - {VIEW_FLASHLIGHT, PNG_APPLIST_FLASHLIGHT_IMAGE, PNG_APPLIST_FLASHLIGHT_IMAGE, PNG_APPLIST_DEFAULT_IMG, "手电筒", STR_FLASHLIGHT, nullptr}, - {VIEW_WEATHER, PNG_APPLIST_WEATHER_IMAGE, PNG_APPLIST_WEATHER_IMAGE, PNG_APPLIST_DEFAULT_IMG, "天气", STR_WEATHER, nullptr}, - {VIEW_MAIN_STOPWATCH, PNG_APPLIST_STOPWATCH_IMAGE, PNG_APPLIST_STOPWATCH_IMAGE, PNG_APPLIST_DEFAULT_IMG, "秒表", STR_STOPWATCH, nullptr}, - {VIEW_MAIN_COUNTDOWN, PNG_APPLIST_COUNTDOWN_IMAGE, PNG_APPLIST_COUNTDOWN_IMAGE, PNG_APPLIST_DEFAULT_IMG, "计时器", STR_TIMER, nullptr}, - {VIEW_RESPIRATORY_TRAINING, PNG_APPLIST_BREATHE_IMAGE, PNG_APPLIST_BREATHE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "呼吸训练", STR_BREATH_TRAINING, nullptr}, - {VIEW_TAKEPHOTOS, PNG_APPLIST_TACKEPHOTOS_IMAGE, PNG_APPLIST_TACKEPHOTOS_IMAGE, PNG_APPLIST_DEFAULT_IMG, "遥控拍照", STR_REMOTE_SHOOTING, nullptr}, - {VIEW_MAIN_ALARM, PNG_APPLIST_ALARM_IMAGE, PNG_APPLIST_ALARM_IMAGE, PNG_APPLIST_DEFAULT_IMG, "闹钟", STR_ALARM, nullptr}, - {VIEW_FIND_PHONE, PNG_APPLIST_FINDPHONE_IMAGE, PNG_APPLIST_FINDPHONE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "查找手机", STR_FIND_PHONE, nullptr}, - {VIEW_MUSIC_PLAYER, PNG_APPLIST_MUSIC_IMAGE, PNG_APPLIST_MUSIC_IMAGE, PNG_APPLIST_DEFAULT_IMG, "音乐播放器", STR_MUSIC, nullptr}, - {VIEW_ASSISTANT, PNG_APPLIST_SMART_IMAGE, PNG_APPLIST_SMART_IMAGE, PNG_APPLIST_DEFAULT_IMG, "语音助手", STR_VOICE_ASSISTANT, nullptr}, - {VIEW_SCHEDULE, PNG_APPLIST_SCHEDULE_IMAGE, PNG_APPLIST_SCHEDULE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "schedule", STR_SCHEDULE, nullptr}, - {VIEW_CALENDAR, PNG_APPLIST_CALENDAR_IMAGE, PNG_APPLIST_CALENDAR_IMAGE, PNG_APPLIST_DEFAULT_IMG, "日历", STR_CALENDAR, nullptr}, - {VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_DEFAULT_IMG, "设置", STR_SETTINGS, nullptr}, + {VIEW_MESSAGE, PNG_APPLIST_MESSAGE_IMAGE_BIG, PNG_APPLIST_MESSAGE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "消息通知", STR_MESSAGE_NOTIFICATION, nullptr}, + {VIEW_COMPASS, PNG_APPLIST_COMPASS_IMAGE_BIG, PNG_APPLIST_COMPASS_IMAGE, PNG_APPLIST_DEFAULT_IMG, "指南针", STR_COMPASS, nullptr}, + {VIEW_CALCULATOR, PNG_APPLIST_INFORMATION_IMAGE_BIG, PNG_APPLIST_INFORMATION_IMAGE, PNG_APPLIST_DEFAULT_IMG, "计算器", STR_CALCULATOR, nullptr}, + {VIEW_RECORD, PNG_APPLIST_RECORD_IMAGE_BIG, PNG_APPLIST_RECORD_IMAGE, PNG_APPLIST_DEFAULT_IMG, "录音", STR_RECORD, nullptr}, + {VIEW_FLASHLIGHT, PNG_APPLIST_FLASHLIGHT_IMAGE_BIG, PNG_APPLIST_FLASHLIGHT_IMAGE, PNG_APPLIST_DEFAULT_IMG, "手电筒", STR_FLASHLIGHT, nullptr}, + {VIEW_WEATHER, PNG_APPLIST_WEATHER_IMAGE_BIG, PNG_APPLIST_WEATHER_IMAGE, PNG_APPLIST_DEFAULT_IMG, "天气", STR_WEATHER, nullptr}, + {VIEW_MAIN_STOPWATCH, PNG_APPLIST_STOPWATCH_IMAGE_BIG, PNG_APPLIST_STOPWATCH_IMAGE, PNG_APPLIST_DEFAULT_IMG, "秒表", STR_STOPWATCH, nullptr}, + {VIEW_MAIN_COUNTDOWN, PNG_APPLIST_COUNTDOWN_IMAGE_BIG, PNG_APPLIST_COUNTDOWN_IMAGE, PNG_APPLIST_DEFAULT_IMG, "计时器", STR_TIMER, nullptr}, + {VIEW_RESPIRATORY_TRAINING, PNG_APPLIST_BREATHE_IMAGE_BIG, PNG_APPLIST_BREATHE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "呼吸训练", STR_BREATH_TRAINING, nullptr}, + {VIEW_TAKEPHOTOS, PNG_APPLIST_TACKEPHOTOS_IMAGE_BIG, PNG_APPLIST_TACKEPHOTOS_IMAGE, PNG_APPLIST_DEFAULT_IMG, "遥控拍照", STR_REMOTE_SHOOTING, nullptr}, + {VIEW_MAIN_ALARM, PNG_APPLIST_ALARM_IMAGE_BIG, PNG_APPLIST_ALARM_IMAGE, PNG_APPLIST_DEFAULT_IMG, "闹钟", STR_ALARM, nullptr}, + {VIEW_FIND_PHONE, PNG_APPLIST_FINDPHONE_IMAGE_BIG, PNG_APPLIST_FINDPHONE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "查找手机", STR_FIND_PHONE, nullptr}, + {VIEW_MUSIC_PLAYER, PNG_APPLIST_MUSIC_IMAGE_BIG, PNG_APPLIST_MUSIC_IMAGE, PNG_APPLIST_DEFAULT_IMG, "音乐播放器", STR_MUSIC, nullptr}, + {VIEW_ASSISTANT, PNG_APPLIST_SMART_IMAGE_BIG, PNG_APPLIST_SMART_IMAGE, PNG_APPLIST_DEFAULT_IMG, "语音助手", STR_VOICE_ASSISTANT, nullptr}, + {VIEW_SCHEDULE, PNG_APPLIST_SCHEDULE_IMAGE_BIG, PNG_APPLIST_SCHEDULE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "schedule", STR_SCHEDULE, nullptr}, + {VIEW_CALENDAR, PNG_APPLIST_CALENDAR_IMAGE_BIG, PNG_APPLIST_CALENDAR_IMAGE, PNG_APPLIST_DEFAULT_IMG, "日历", STR_CALENDAR, nullptr}, + {VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE_BIG, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_DEFAULT_IMG, "设置", STR_SETTINGS, nullptr}, #if 0 /*屏蔽Slice*/ {VIEW_DNOTDISTURB, PNG_APPLIST_DISTURB_IMAGE, PNG_APPLIST_DISTURB_IMAGE, PNG_APPLIST_DEFAULT_IMG, "勿扰模式", STR_DO_NOT_DISTURB, nullptr}, @@ -274,4 +274,44 @@ namespace OHOS { return ThemeStyleModel::GetInstance().GetAppListDisplayStyle(); } + + /* ----------------------------------- 拨号盘 ---------------------------------- */ + // 设置拨号盘的起始角度 + void ApplistModel::SetCircleListStartAngle(int angle) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"SetCircleListStartAngle:%d\r\n",angle); + circleListStartAngle = angle; + } + + // 获取拨号盘的起始角度 + int ApplistModel::GetCircleListStartAngle(void) + { + return circleListStartAngle; + } + + // 设置当前选中的图片索引 + void ApplistModel::SetCurselectImageIndex(int index) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"SetCurselectImageIndex:%d\r\n",index); + curselectImageIndex = index; + } + + // 获取当前选中的图片索引 + int ApplistModel::GetCurselectImageIndex(void) + { + return curselectImageIndex; + } + + // 设置上一次选中的图片索引 + void ApplistModel::SetPreselectImageIndex(int index) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"SetPreselectImageIndex:%d\r\n",index); + preselectImageIndex = index; + } + + // 获取上一次选中的图片索引 + int ApplistModel::GetPreselectImageIndex(void) + { + return preselectImageIndex; + } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistPresenter.cpp index 0dfdc318f..25acc94f4 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistPresenter.cpp @@ -151,6 +151,18 @@ namespace OHOS viewId = itemView->GetViewId(); uid = (char *)itemView->GetAppUid(); } + else if(AppListStyle::CIRCLE_LIST_STYLE == style) + { + UIImageView *itemView = dynamic_cast(&view); + viewId = (AppViewId)itemView->GetViewIndex(); + if(viewId == VIEW_INVALID) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "VIEW_INVALID -> %d", viewId); + return false; + } + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "viewId = %d", viewId); + type = TransitionType::TRANSITION_INVALID; + } else { AppItemView *itemView = dynamic_cast(&view); diff --git a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistView.cpp b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistView.cpp index da67e40e5..103e3334e 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistView.cpp @@ -12,6 +12,8 @@ #include "common/image_cache_manager.h" #include "hal_tick.h" #include "themestyle/include/ThemeStyleModel.h" +#include "ModelListenerSample.h" +#include "cmath" namespace OHOS { static constexpr int16 NUM_2 = 2; @@ -24,7 +26,8 @@ static constexpr int16 ROTATE_FACTOR_2 = 2.0; #define ARC_SCALE_LIST_WIDTH (Screen::GetInstance().GetWidth() - ARC_SCALE_LIST_X) #define ARC_SCALE_LIST_HEIGHT (Screen::GetInstance().GetHeight()) - +class AppCircleListOnDragListener; +static AppCircleListOnDragListener *AppCircleListOnDragListener_ = nullptr; ApplistView::ApplistView() { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::ApplistView "); @@ -80,6 +83,44 @@ ApplistView::~ApplistView() delete ArcScaleListDragListener_; ArcScaleListDragListener_ = nullptr; } + if(CircleListGroup_ != nullptr) + { + delete CircleListGroup_; + CircleListGroup_ = nullptr; + } + if(CircleListImage1) + { + delete CircleListImage1; + CircleListImage1 = nullptr; + } + if(CircleListImage2) + { + delete CircleListImage2; + CircleListImage2 = nullptr; + } + if(CircleListSelectImage) + { + delete CircleListSelectImage; + CircleListSelectImage = nullptr; + } + if(CircleListPicker) + { + delete CircleListPicker; + CircleListPicker = nullptr; + } + for(int i = 0;i < CircleListAPPNum;i++) + { + if(nullptr != CircleListAPP[i]) + { + delete CircleListAPP[i]; + CircleListAPP[i] = nullptr; + } + } + if(nullptr != AppCircleListOnDragListener_) + { + delete AppCircleListOnDragListener_; + AppCircleListOnDragListener_ = nullptr; + } WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::~ApplistView end..."); } @@ -97,6 +138,9 @@ void ApplistView::OnStart() { ArcScaleListStyleOnStart(); } + else if(AppListStyle::CIRCLE_LIST_STYLE == style) { + CircleListStyleOnStart(); + } else { ListStyleOnStart(); } @@ -320,6 +364,656 @@ void ApplistView::ArcScaleListStyleOnStart(void) } } +#define NATIVE_APP_NUM_MAX 50 +static const uint8_t NATIVE_APP_ANGEL_INTERVAL = 360 / 12; +uint8_t array[NATIVE_APP_NUM_MAX]{0}; //用来标记图片数组中每个元素是大还是小(实现缩放) +static const int CIRCLE_WATCH_R = 233; //圆形手表半径 +static const double PI_OVER_180 = M_PI / 180.0; // 180度对应的弧度 +static const int native_big_app_size = 90; //大图标 +static const int native_small_app_size = 72; //小图标 +static int native_app_position_update_startflag = 0; //native_app_position_update函数开始更新的标志位 +//获取是否是正向旋转 +static bool isDirectRotate(const DragEvent& event) +{ + int startpointX = event.GetStartPoint().x; + int startpointY = event.GetStartPoint().y; + bool isDirectRotate = false; + uint8_t dragDirection = event.GetDragDirection(); + if ((dragDirection == DragEvent::DIRECTION_TOP_TO_BOTTOM && startpointX >= 233) || + (dragDirection == DragEvent::DIRECTION_BOTTOM_TO_TOP && startpointX < 233) || + (dragDirection == DragEvent::DIRECTION_LEFT_TO_RIGHT && startpointY < 233) || + (dragDirection == DragEvent::DIRECTION_RIGHT_TO_LEFT && startpointY >= 233)) + { + isDirectRotate = true; + } + return isDirectRotate; +} + +static void native_app_position_init(UIImageView ** CircleListAPP,int CircleListAPPNum,int startangle,uint8_t array[]) +{ + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "startangle:%d",startangle); + + double curangle = startangle; + double curscale = (int)curangle % NATIVE_APP_ANGEL_INTERVAL; + int x = 0; + int y = 0; + int size = native_small_app_size + curscale*0.6; + int size2 = native_big_app_size - curscale*0.6; + int index = 0; + int margin1 = 100-size;//边距 + int margin2 = 100-size2;//边距 + int R = CIRCLE_WATCH_R - size / 2 - margin1; + int R2 = CIRCLE_WATCH_R - size2 / 2 - margin2; + + if(startangle % 30 == 0) + { + int index = 0; + int appIndex = 0; + int circleIndex = 0; + + int nativeAppNum = ApplistModel::GetInstance().GetAppListNum(); + int native_app_image_start_index = 0; + + if(startangle > 0 ) + { + int numToChange = startangle / 30; + for (int i = 1; i <= numToChange; i++) + { + // 计算 index 和 appIndex + index = i % nativeAppNum + 11; + appIndex = index; + if (startangle >= 360) { + appIndex = index % nativeAppNum; + } + + // 计算 circleIndex + circleIndex = (12 - i) % 12; + if (circleIndex < 0) { + circleIndex += 12; + } + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "circleIndex:%d,appIndex:%d name:%s", circleIndex, appIndex, ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall); + CircleListAPP[circleIndex]->SetSrc(ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall); + CircleListAPP[circleIndex]->SetViewIndex(ApplistModel::GetInstance().GetApplistItems()[appIndex].id); + } + + } + else if(startangle < 0) + { + int numToChange = abs(startangle) / 30; + for (int i = 1; i <= numToChange; i++) + { + index = i % nativeAppNum + 11; + appIndex = index; + if (abs(startangle) >= 360) + { + appIndex = index % nativeAppNum; + } + circleIndex = ((abs(startangle) - 30) / 30 ) % 12; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "circleIndex:%d,appIndex:%d name:%s", circleIndex, appIndex, ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall); + CircleListAPP[circleIndex]->SetSrc(ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall); + CircleListAPP[circleIndex]->SetViewIndex(ApplistModel::GetInstance().GetApplistItems()[appIndex].id); + } + } + else + { + for(int i = 0;i < CircleListAPPNum;i++) + { + index = i % 2; // 使用取模操作实现循环列表 + if(index == 0) + { + array[i] = 0; + } + else + { + array[i] = 1; + } + } + } + } + + for(int i = 0;i < CircleListAPPNum;i++) + { + if(array[i] == 0) + { + x = ((CIRCLE_WATCH_R - cos(curangle*PI_OVER_180) * R) - size / 2); + y = ((CIRCLE_WATCH_R - sin(curangle*PI_OVER_180) * R) - size / 2); + CircleListAPP[i]->SetPosition(x, y, size,size); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "x:%d,y:%d,size:%d",x,y,size); + } + else + { + x = ((CIRCLE_WATCH_R - cos(curangle*PI_OVER_180) * R2) - size2 / 2); + y = ((CIRCLE_WATCH_R - sin(curangle*PI_OVER_180) * R2) - size2 / 2); + CircleListAPP[i]->SetPosition(x, y, size2,size2); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "x:%d,y:%d,size2:%d",x,y,size2); + } + curangle += NATIVE_APP_ANGEL_INTERVAL; + } + RootView::GetInstance()->Invalidate(); +} +static void native_app_position_update(UIImageView ** CircleListAPP,int CircleListAPPNum,UIImageView *CircleListSelectImage_,int startangle,bool isDirectRotate) +{ + // 打印起始角度 + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "startangle:%d",startangle); + + + // 当前角度 + double curangle = startangle; + // 缩放系数 + int curscale = 0; + + // 计算缩放系数 + if (startangle!= 0 && startangle % 30 == 0) { + curscale = 30; + } else { + int baseMod = startangle % 30; + if (startangle > 0) { + curscale =!isDirectRotate? 30 - baseMod : baseMod; + } else if (startangle < 0) { + curscale = isDirectRotate? 30 + baseMod : baseMod; + } else { + curscale =!isDirectRotate? 30 - baseMod : 30 + baseMod; + } + } + + int nativeAppNum = ApplistModel::GetInstance().GetAppListNum(); + + // 打印缩放系数 + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "curscale:%d",curscale); + + int xPos = 0; + int yPos = 0; + int size = native_small_app_size + abs(curscale*0.6); + int size2 = native_big_app_size - abs(curscale*0.6); + + int margin1 = 100 - size;//边距 + int margin2 = 100 - size2;//边距 + int R = CIRCLE_WATCH_R - size / 2 - margin1; + int R2 = CIRCLE_WATCH_R - size2 / 2 - margin2; + + int index = 0; + int appIndex = 0; + int circleIndex = 0; + + int curselectImageIndex = ApplistModel::GetInstance().GetCurselectImageIndex(); //当前选中图片索引 + int preselectImageIndex = ApplistModel::GetInstance().GetPreselectImageIndex(); //上一次选中图片索引 + + if(startangle % 30 == 0){ + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "startangle:%d,[curselectImageIndex,preselectImageIndex]:[%d,%d]", startangle,curselectImageIndex,preselectImageIndex); + native_app_position_update_startflag = 0;//表示可以下次更新了 + ApplistModel::GetInstance().SetCircleListStartAngle(startangle); + } + + // 根据起始角度正负和旋转方向计算索引 + if (startangle > 0) + { + //顺时针 + if(isDirectRotate) + { + if(startangle % 30 == 0) + { + int tempIndex = (startangle / 30); + // 计算 index 和 appIndex + index = tempIndex % nativeAppNum + 11; + appIndex = index; + if (startangle >= 360) { + appIndex = index % nativeAppNum; + } + + // 计算 circleIndex + circleIndex = (12 - tempIndex) % 12; + if (circleIndex < 0) { + circleIndex += 12; + } + + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "circleIndex:%d,appIndex:%d name:%s", circleIndex, appIndex, ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall); + CircleListAPP[circleIndex]->SetSrc(ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall); + CircleListAPP[circleIndex]->SetViewIndex(ApplistModel::GetInstance().GetApplistItems()[appIndex].id); + + // 选中图片计算 + if(startangle <= 180) + { + if(preselectImageIndex == 0 && curselectImageIndex == 12) + { + preselectImageIndex = 1; + curselectImageIndex = 0; + } + else + { + preselectImageIndex = curselectImageIndex; + curselectImageIndex = (curselectImageIndex - 1) % nativeAppNum; + } + } + else + { + if(preselectImageIndex == 1 && curselectImageIndex == 0) + { + preselectImageIndex = 0; + curselectImageIndex = 12; + } + else + { + preselectImageIndex = curselectImageIndex; + curselectImageIndex = (curselectImageIndex + 1) % nativeAppNum; + } + } + + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[curselectImageIndex,preselectImageIndex]:[%d,%d]", curselectImageIndex,preselectImageIndex); + CircleListSelectImage_->SetSrc(ApplistModel::GetInstance().GetApplistItems()[curselectImageIndex].iconLarge); + CircleListSelectImage_->SetViewIndex(ApplistModel::GetInstance().GetApplistItems()[curselectImageIndex].id); + ApplistModel::GetInstance().SetCurselectImageIndex(curselectImageIndex); + ApplistModel::GetInstance().SetPreselectImageIndex(preselectImageIndex); + } + } + else //逆时针处理 + { + int prevStartAngle = startangle + 3; + if(prevStartAngle % 30 == 0) + { + appIndex = (12 - (prevStartAngle) / 30) % nativeAppNum; + circleIndex = appIndex % 12; + if (circleIndex < 0) + { + circleIndex += 12; + } + if(appIndex < 0) + { + appIndex = (- appIndex + 11) % nativeAppNum; + } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "circleIndex:%d,appIndex:%d name:%s", circleIndex, appIndex, ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall); + CircleListAPP[circleIndex]->SetSrc(ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall); + CircleListAPP[circleIndex]->SetViewIndex(ApplistModel::GetInstance().GetApplistItems()[appIndex].id); + } + + if(startangle % 30 == 0) + { + // 选中图片计算 + if(startangle <= 180) + { + if(preselectImageIndex == 0 && curselectImageIndex == 12) + { + preselectImageIndex = 1; + curselectImageIndex = 0; + } + else + { + curselectImageIndex = preselectImageIndex; + preselectImageIndex = curselectImageIndex + 1; + } + } + else + { + if(preselectImageIndex == 12 && curselectImageIndex == 13) + { + preselectImageIndex = 0; + curselectImageIndex = 12; + } + else + { + curselectImageIndex = (curselectImageIndex - 1 + nativeAppNum) % nativeAppNum; + preselectImageIndex = (preselectImageIndex - 1 + nativeAppNum) % nativeAppNum; + } + } + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[curselectImageIndex->preselectImageIndex]:[%d->%d]", curselectImageIndex,preselectImageIndex); + CircleListSelectImage_->SetSrc(ApplistModel::GetInstance().GetApplistItems()[curselectImageIndex].iconLarge); + CircleListSelectImage_->SetViewIndex(ApplistModel::GetInstance().GetApplistItems()[curselectImageIndex].id); + ApplistModel::GetInstance().SetCurselectImageIndex(curselectImageIndex); + ApplistModel::GetInstance().SetPreselectImageIndex(preselectImageIndex); + } + } + } + else if (startangle < 0) + { + if(!isDirectRotate) //逆时针 + { + int absStartAngle = abs(startangle - (30 - 3)); + if(absStartAngle % 30 == 0) + { + index = (absStartAngle / 30) % nativeAppNum + 11; + appIndex = index; + if (absStartAngle >= 360) + { + appIndex = index % nativeAppNum; + } + circleIndex = ((absStartAngle - 30) / 30 ) % 12; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "circleIndex:%d,appIndex:%d name:%s", circleIndex, appIndex, ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall); + CircleListAPP[circleIndex]->SetSrc(ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall); + CircleListAPP[circleIndex]->SetViewIndex(ApplistModel::GetInstance().GetApplistItems()[appIndex].id); + + preselectImageIndex = curselectImageIndex; + curselectImageIndex = (curselectImageIndex + 1) % nativeAppNum; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[curselectImageIndex->preselectImageIndex]:[%d->%d]", curselectImageIndex,preselectImageIndex); + CircleListSelectImage_->SetSrc(ApplistModel::GetInstance().GetApplistItems()[curselectImageIndex].iconLarge); + CircleListSelectImage_->SetViewIndex(ApplistModel::GetInstance().GetApplistItems()[curselectImageIndex].id); + ApplistModel::GetInstance().SetCurselectImageIndex(curselectImageIndex); + ApplistModel::GetInstance().SetPreselectImageIndex(preselectImageIndex); + } + } + else + { + int absStartAngle = abs(startangle); + if(absStartAngle % 30 == 0) + { + appIndex = (absStartAngle / 30) % nativeAppNum ; + circleIndex = (absStartAngle / 30) % 12; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "circleIndex:%d,appIndex:%d name:%s", circleIndex, appIndex, ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall); + CircleListAPP[circleIndex]->SetSrc(ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall); + CircleListAPP[circleIndex]->SetViewIndex(ApplistModel::GetInstance().GetApplistItems()[appIndex].id); + + curselectImageIndex = preselectImageIndex; + preselectImageIndex = (preselectImageIndex - 1 + nativeAppNum) % nativeAppNum; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[curselectImageIndex->preselectImageIndex]:[%d->%d]", curselectImageIndex,preselectImageIndex); + CircleListSelectImage_->SetSrc(ApplistModel::GetInstance().GetApplistItems()[curselectImageIndex].iconLarge); + CircleListSelectImage_->SetViewIndex(ApplistModel::GetInstance().GetApplistItems()[curselectImageIndex].id); + ApplistModel::GetInstance().SetCurselectImageIndex(curselectImageIndex); + ApplistModel::GetInstance().SetPreselectImageIndex(preselectImageIndex); + } + } + } + else + { + if(!isDirectRotate) //逆时针 + { + index = 0; + appIndex = 11; + circleIndex = 11; + } + else + { + index = 0; + appIndex = 0; + circleIndex = 0; + } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "circleIndex:%d,appIndex:%d name:%s", circleIndex, appIndex, ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall); + CircleListAPP[circleIndex]->SetSrc(ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall); + + curselectImageIndex = preselectImageIndex; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[curselectImageIndex->preselectImageIndex]:[%d->%d]", curselectImageIndex,preselectImageIndex); + CircleListSelectImage_->SetSrc(ApplistModel::GetInstance().GetApplistItems()[curselectImageIndex].iconLarge); + CircleListSelectImage_->SetViewIndex(ApplistModel::GetInstance().GetApplistItems()[curselectImageIndex].id); + ApplistModel::GetInstance().SetCurselectImageIndex(curselectImageIndex); + ApplistModel::GetInstance().SetPreselectImageIndex(preselectImageIndex); + } + + //更改图片位置和大小 + for(int i = 0; i < CircleListAPPNum; i++) + { + if(array[i] == 0) + { + xPos = ((CIRCLE_WATCH_R - cos(curangle*PI_OVER_180) * R) - size / 2); + yPos = ((CIRCLE_WATCH_R - sin(curangle*PI_OVER_180) * R) - size / 2); + CircleListAPP[i]->SetPosition(xPos, yPos, size,size); + if(size == native_big_app_size && (curscale == 30)) + array[i] = 1; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "size:%d",size); + } + else + { + xPos = ((CIRCLE_WATCH_R - cos(curangle*PI_OVER_180) * R2) - size2 / 2); + yPos = ((CIRCLE_WATCH_R - sin(curangle*PI_OVER_180) * R2) - size2 / 2); + CircleListAPP[i]->SetPosition(xPos, yPos, size2,size2); + if(size2 == native_small_app_size && (curscale == 30)) + array[i] = 0; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "size2:%d",size2); + } + curangle += NATIVE_APP_ANGEL_INTERVAL ; //每个NATIVE_APP位置变化NATIVE_APP_ANGEL_INTERVAL度 + } + + // 刷新视图 + RootView::GetInstance()->Invalidate(); + /* -------------------------------------------------------------------------- */ +} +class AppCircleListOnDragListener : public UIView::OnDragListener, + public UIPicker::SelectedListener, + public UIView::OnRotateListener, + public ModelListenerSample +{ +public: + AppCircleListOnDragListener(UIImageView ** CircleListAPP_,int CircleListAPPNum_,UIImageView *CircleListSelectImage_) + { + CircleListAPP = CircleListAPP_; + CircleListAPPNum = CircleListAPPNum_; + CircleListSelectImage = CircleListSelectImage_; + angle = ApplistModel::GetInstance().GetCircleListStartAngle(); + } + ~AppCircleListOnDragListener(){} + bool OnDragStart(UIView& view, const DragEvent& event) override + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AppCircleListOnDragListener::OnDragStart"); + return true; + } + + bool OnDrag(UIView& view, const DragEvent& event) override + { + int deltaX = abs(event.GetLastPoint().x - event.GetStartPoint().x); + int deltaY = abs(event.GetLastPoint().y - event.GetStartPoint().y); + if (deltaX < 50 && deltaY < 50) + { + return false; + } + + + + return true; + } + + bool OnDragEnd(UIView& view, const DragEvent& event) override + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AppCircleListOnDragListener::OnDragEnd"); + if(native_app_position_update_startflag == 0) { + native_app_position_update_startflag = 1; + OnDragEndFlag = 1; + isDirectRotateFlag = isDirectRotate(event);//获取是否是正向旋转的标志 + } + return true; + } + + void Notify() override + { + if(OnDragEndFlag) + { + int angleIncrement = isDirectRotateFlag? 3 : -3; + angle += angleIncrement; + rotateangle += angleIncrement; + if(rotateangle >= 30 || rotateangle <= -30) + { + OnDragEndFlag = 0; + rotateangle = 0; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]", __LINE__); + } + if(native_app_position_update_startflag) + native_app_position_update(CircleListAPP,CircleListAPPNum,CircleListSelectImage,angle,isDirectRotateFlag); + } + } + void OnPickerStoped(UIPicker &picker) override + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "preOnSelectPickerIndex:%d,picker.GetSelected:%d",preOnSelectPickerIndex,picker.GetSelected()); + // 判断是否为逆时针方向 + if ((preOnSelectPickerIndex == 0 && picker.GetSelected() == 1) || + (preOnSelectPickerIndex == 1 && picker.GetSelected() == 2) || + (preOnSelectPickerIndex == 2 && picker.GetSelected() == 0)) { + isDirectRotateFlag = false; + } + // 判断是否为顺时针方向 + else if ((preOnSelectPickerIndex == 1 && picker.GetSelected() == 0) || + (preOnSelectPickerIndex == 0 && picker.GetSelected() == 2) || + (preOnSelectPickerIndex == 2 && picker.GetSelected() == 1)) { + isDirectRotateFlag = true; + } + + if (preOnSelectPickerIndex!= picker.GetSelected()) + { + if (native_app_position_update_startflag == 0) + { + native_app_position_update_startflag = 1; + OnDragEndFlag = 1; + } + // 更新之前选中的索引值为当前选中的值 + preOnSelectPickerIndex = picker.GetSelected(); + } + return; + } + private: + UIImageView **CircleListAPP{nullptr}; + UIImageView *CircleListSelectImage{nullptr}; + int CircleListAPPNum{0}; + int angle = 0; //要旋转角度 + int rotateangle{0}; //旋转累计角度 + uint8_t OnDragEndFlag{0};//是否拖拽结束的标志 + bool isDirectRotateFlag{false};//是否是正向旋转的标志 + int preOnSelectPickerIndex{1};//当前picker选中索引 +}; + +void ApplistView::CircleListStyleOnStart(void) +{ + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::CircleListStyleOnStart start!! [%d]", __LINE__); + if(nullptr == CircleListGroup_) + { + CircleListGroup_ = new UIViewGroup(); + if(nullptr == CircleListGroup_) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ApplistView::CircleListGroup_ failed!! [%d]", __LINE__); + return; + } + CircleListGroup_->SetPosition(0, 0); + CircleListGroup_->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + CircleListGroup_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + CircleListGroup_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + CircleListGroup_->SetTouchable(true); + CircleListGroup_->SetDraggable(true); + SetContainerView(CircleListGroup_); + /* -------------------------------------------------------------------------- */ + if (CircleListPicker == nullptr) + { + CircleListPicker = new UIPicker(); + if (CircleListPicker == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CircleListPicker new fail!"); + return; + } + CircleListPicker->SetPosition(213, 213, 40, 40); + CircleListPicker->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); + CircleListPicker->SetStyle(STYLE_BACKGROUND_OPA, 0x00); + CircleListPicker->SetStyle(STYLE_BORDER_RADIUS, 150); + CircleListPicker->SetItemHeight(60); + CircleListPicker->SetLoopState(true); + CircleListPicker->SetRotateFactor(1.0); + CircleListPicker->RequestFocus(); + CircleListPicker->SetLoopState(true); + CircleListPicker->SetTextColor(Color::GetColorFromRGBA(0x00, 0x00, 0x00, 0xff), Color::GetColorFromRGBA(0xff, 0x00, 0x00, 0xff)); + CircleListPicker->SetSelected(1); + int start = 1; + int end = 3; + CircleListPicker->SetValues(start,end); + // printf("---%d\n",CircleListPicker->GetSelected()); + CircleListGroup_->Add(CircleListPicker); + } + /* -------------------------------------------------------------------------- */ + if(CircleListImage1 == nullptr) + { + CircleListImage1 = new UIImageView(); + if(nullptr == CircleListImage1) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ApplistView::CircleListImage1 failed!! [%d]", __LINE__); + return; + } + CircleListImage1->SetPosition(114, 122, 220, 330); + CircleListImage1->SetSrc("/user/res/themestyle/circlelist/circleListImage1.bin"); + CircleListGroup_->Add(CircleListImage1); + } + /* -------------------------------------------------------------------------- */ + CircleListAPPNum = sizeof(CircleListAPP) / sizeof(CircleListAPP[0]);//图片显示数量 + /* -------------------------------------------------------------------------- */ + for(int i = 0;i < CircleListAPPNum ;i++) + { + if(nullptr == CircleListAPP[i]) + { + CircleListAPP[i] = new UIImageView(); + if(nullptr == CircleListAPP[i]) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ApplistView::CircleListStyleOnStart failed!! [%d]", __LINE__); + return; + } + CircleListAPP[i]->SetAutoEnable(false); + CircleListAPP[i]->SetResizeMode(UIImageView::SCALE_DOWN); + CircleListAPP[i]->SetSrc(ApplistModel::GetInstance().GetApplistItems()[i].iconSmall); + CircleListAPP[i]->SetViewIndex(ApplistModel::GetInstance().GetApplistItems()[i].id); + CircleListAPP[i]->SetTouchable(true); + CircleListAPP[i]->SetOnClickListener(presenter_); + } + CircleListGroup_->Add(CircleListAPP[i]); // Add the UIImageView to the UIViewGroup (CircleListGroup_) + } + /* -------------------------------------------------------------------------- */ + uint16_t presliceId = NativeAbility::GetInstance().GetPreSliceId(); + if (presliceId == VIEW_MAIN) //如果是从主页进入的,那么 startangle = 0 + { + ApplistModel::GetInstance().SetCircleListStartAngle(0); + ApplistModel::GetInstance().SetCurselectImageIndex(6); + ApplistModel::GetInstance().SetPreselectImageIndex(6); + } + native_app_position_init(CircleListAPP,CircleListAPPNum,ApplistModel::GetInstance().GetCircleListStartAngle() ,array); + /* -------------------------------------------------------------------------- */ + if(CircleListImage2 == nullptr) + { + CircleListImage2 = new UIImageView(); + if(nullptr == CircleListImage2) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ApplistView::CircleListImage2 failed!! [%d]", __LINE__); + return; + } + CircleListImage2->SetPosition(28, 197, 72, 72); + CircleListImage2->SetSrc("/user/res/themestyle/circlelist/circleListImage2.bin"); + CircleListImage2->SetTouchable(true); + CircleListImage2->SetOnClickListener(presenter_); + CircleListImage2->SetViewIndex(VIEW_INVALID); + CircleListGroup_->Add(CircleListImage2); + } + if(CircleListSelectImage == nullptr) + { + CircleListSelectImage = new UIImageView(); + if(nullptr == CircleListSelectImage) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ApplistView::CircleListSelectImage failed!! [%d]", __LINE__); + return; + } + CircleListSelectImage->SetPosition(CircleListImage1->GetX() + 30, CircleListImage1->GetY() + 30,160,160); + CircleListSelectImage->SetAutoEnable(false); + CircleListSelectImage->SetResizeMode(UIImageView::SCALE_DOWN); + CircleListSelectImage->SetSrc(ApplistModel::GetInstance().GetApplistItems()[ApplistModel::GetInstance().GetCurselectImageIndex()].iconLarge); + CircleListSelectImage->SetViewIndex(ApplistModel::GetInstance().GetApplistItems()[ApplistModel::GetInstance().GetCurselectImageIndex()].id); + CircleListSelectImage->SetTouchable(true); + CircleListSelectImage->SetOnClickListener(presenter_); + CircleListGroup_->Add(CircleListSelectImage); + } + /* -------------------------------------------------------------------------- */ + if(nullptr == AppCircleListOnDragListener_) + { + AppCircleListOnDragListener_ = new AppCircleListOnDragListener(CircleListAPP,CircleListAPPNum,CircleListSelectImage); + if (nullptr == AppCircleListOnDragListener_) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ApplistView::AppCircleListOnDragListener_ failed!! [%d]", __LINE__); + return; + } + } + CircleListGroup_->SetOnDragListener(static_cast(AppCircleListOnDragListener_)); + CircleListPicker->RegisterSelectedListener(static_cast(AppCircleListOnDragListener_)); + /* -------------------------------------------------------------------------- */ + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::CircleListStyleOnStart success!! [%d]", __LINE__); + } + return; +} + +void ApplistView::CircleListStyleOnSetUpView(void) +{ + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::CircleListStyleOnSetUpView [%d]", __LINE__); + return; +} +void ApplistView::CircleListStyleOnStop(void) +{ + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::CircleListStyleOnStop [%d]", __LINE__); + return; +} + void ApplistView::OnSetUpView() { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::OnSetUpView"); @@ -334,6 +1028,10 @@ void ApplistView::OnSetUpView() { ArcScaleListStyleOnSetUpView(); } + else if(AppListStyle::CIRCLE_LIST_STYLE == style) + { + CircleListStyleOnSetUpView(); + } else { ListStyleOnSetUpView(); } @@ -448,6 +1146,9 @@ void ApplistView::OnStop() } else if(AppListStyle::ARC_SCALE_LIST_STYLE == style) { ArcScaleListStyleOnStop(); //弧形 RootView::GetInstance()->ClearOnKeyActListener(); + } else if(style == AppListStyle::CIRCLE_LIST_STYLE) { + CircleListStyleOnStop();//拨号盘 + RootView::GetInstance()->ClearOnKeyActListener(); } else { ListStyleOnStop();//list RootView::GetInstance()->ClearOnKeyActListener(); @@ -463,6 +1164,9 @@ void ApplistView::OnStop() } else if(ThemeStyleModel::GetInstance().GetPreApplistStyle() == AppListStyle::FOOTBALL_STYLE) { FootballStyleOnStop(); RootView::GetInstance()->ClearOnKeyActListener(); + } else if(ThemeStyleModel::GetInstance().GetPreApplistStyle() == AppListStyle::CIRCLE_LIST_STYLE) { + CircleListStyleOnStop(); + RootView::GetInstance()->ClearOnKeyActListener(); } ThemeStyleModel::GetInstance().SetTheSameSliceChangeFlag(false); } @@ -561,6 +1265,10 @@ void ApplistView::AddAppItemToList(const AppItem &item) { ArcScaleListAdapter_->AddListItem(item); } + else if(AppListStyle::CIRCLE_LIST_STYLE == style) + { + // 拨号盘 + } else { listAdapter_->AddListItem(item); } @@ -578,6 +1286,10 @@ void ApplistView::ClearAppItemToList() { ArcScaleListStyleOnStop(); } + else if(AppListStyle::CIRCLE_LIST_STYLE == style) + { + CircleListStyleOnStop(); + } else { listAdapter_->ClearItem(); } @@ -596,6 +1308,10 @@ void ApplistView::RefreshAppList(void) { ArcScaleList_->RefreshList(); } + else if(AppListStyle::CIRCLE_LIST_STYLE == style) + { + // 拨号盘 + } else { contentList_->RefreshList(); } diff --git a/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleModel.h b/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleModel.h index ce038bf6a..d7217a7a4 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleModel.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-14 09:40:13 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-08-19 18:44:49 + * @LastEditTime: 2024-11-14 14:25:34 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleModel.h */ #ifndef SET_THEMESTYLE_MODEL_H @@ -21,13 +21,15 @@ namespace OHOS static constexpr const char *THEMESTYLE_VALUE_LIST = "list"; static constexpr const char *THEMESTYLE_VALUE_HEXAGONS = "hexagons"; static constexpr const char *THEMESTYLE_VALUE_FOOTBALL = "football"; - static constexpr const char * THEMESTYLE_VALUE_ARC_SCALE_LIST = "arc_scale_list"; + static constexpr const char *THEMESTYLE_VALUE_ARC_SCALE_LIST = "arc_scale_list"; + static constexpr const char *THEMESTYLE_VALUE_CIRCLE_LIST = "circle_list"; typedef enum : uint16_t { APPLIST_STYLE, // 列表显示 HEXAGONS_STYLE, // 蜂窝显示 ARC_SCALE_LIST_STYLE,//弧形列表 + CIRCLE_LIST_STYLE,//拨号盘 FOOTBALL_STYLE, //足球 MAX_THEME_STYLE, } ThemeStyle; @@ -38,6 +40,7 @@ namespace OHOS {ThemeStyle::HEXAGONS_STYLE, THEMESTYLE_VALUE_HEXAGONS}, {ThemeStyle::FOOTBALL_STYLE, THEMESTYLE_VALUE_FOOTBALL}, {ThemeStyle::ARC_SCALE_LIST_STYLE, THEMESTYLE_VALUE_ARC_SCALE_LIST}, + {ThemeStyle::CIRCLE_LIST_STYLE, THEMESTYLE_VALUE_CIRCLE_LIST}, // 在此处添加更多的映射关系 }; @@ -47,6 +50,7 @@ namespace OHOS {THEMESTYLE_VALUE_HEXAGONS, ThemeStyle::HEXAGONS_STYLE}, {THEMESTYLE_VALUE_FOOTBALL, ThemeStyle::FOOTBALL_STYLE}, {THEMESTYLE_VALUE_ARC_SCALE_LIST, ThemeStyle::ARC_SCALE_LIST_STYLE}, + {THEMESTYLE_VALUE_CIRCLE_LIST, ThemeStyle::CIRCLE_LIST_STYLE}, // 在此处添加更多的映射关系 }; diff --git a/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleView.h b/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleView.h index 17b093993..4db787a98 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleView.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-14 09:40:13 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-10-11 17:44:29 + * @LastEditTime: 2024-11-14 14:37:34 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleView.h */ @@ -25,16 +25,18 @@ namespace OHOS { static constexpr const uint16_t MAX_STYLE = MAX_THEME_STYLE - 1; - static constexpr char *THEME_STYLE_LIST = "themestyleList"; // 列表 - static constexpr char *THEME_STYLE_HEXAGONS = "themestyleHexagons"; // 蜂窝 - static constexpr char *THEME_STYLE_FOOTBALL = "themestyleFootball"; // 足球 - static constexpr char *THEME_STYLE_ARC_LIST = "themestyleArcList"; // 弧形列表 - static constexpr char *THEMESTYLEVIEWEXIT = "ThemeStyleViewExit"; // exit + static constexpr char *THEME_STYLE_LIST = "themestyleList"; // 列表 + static constexpr char *THEME_STYLE_HEXAGONS = "themestyleHexagons"; // 蜂窝 + static constexpr char *THEME_STYLE_FOOTBALL = "themestyleFootball"; // 足球 + static constexpr char *THEME_STYLE_ARC_LIST = "themestyleArcList"; // 弧形列表 + static constexpr char *THEME_STYLE_CIRCLE_LIST = "themestyleCircleList"; // 拨号盘 + static constexpr char *THEMESTYLEVIEWEXIT = "ThemeStyleViewExit"; // exit static constexpr char *THEMESTYLE_LIST_IMAGEPATH = "/user/res/themestyle/list.bin"; static constexpr char *THEMESTYLE_HEXAGONS_IMAGEPATH = "/user/res/themestyle/hexagons.bin"; static constexpr char *THEMESTYLE_FOOTBALL_IMAGEPATH = "/user/res/themestyle/grid.bin"; static constexpr char *THEMESTYLE_ARCLIST_IMAGEPATH = "/user/res/themestyle/arclist.bin"; + static constexpr char *THEMESTYLE_CIRCLELIST_IMAGEPATH = "/user/res/themestyle/dialplate.bin"; class ThemeStylePresenter; class ThemeStyleView : public View diff --git a/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStylePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStylePresenter.cpp index b43785e8c..43a7de702 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStylePresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStylePresenter.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-04-08 16:43:48 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-08-19 18:40:32 + * @LastEditTime: 2024-11-14 15:02:48 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/set_desktop/src/ThemeStylePresenter.cpp */ @@ -89,6 +89,10 @@ namespace OHOS { ThemeStyleModel::GetInstance().SetAppListDisplayStyle(ThemeStyle::ARC_SCALE_LIST_STYLE); } + else if (viewId == THEME_STYLE_CIRCLE_LIST) + { + ThemeStyleModel::GetInstance().SetAppListDisplayStyle(ThemeStyle::CIRCLE_LIST_STYLE); + } /* -------------------------------------------------------------------------- */ view_->UpdateSelectedStyle(); diff --git a/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp b/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp index 7d364b32b..a1bd270f0 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-14 09:40:20 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-09-20 15:36:31 + * @LastEditTime: 2024-11-14 14:55:43 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp */ @@ -11,6 +11,7 @@ #include "themestyle/include/ThemeStylePresenter.h" #include "ui_resource_string.h" #include "dock/focus_manager.h" +#include "ConfigModel.h" namespace OHOS { static ThemeStyleView *g_pThemeStyleView{nullptr}; @@ -130,7 +131,15 @@ namespace OHOS label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height); label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize); label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh); - label->SetTextId(labelconfig.textId); + TOOD: + if(labelconfig.textId == STR_GRID_DISPLAY) { + if(ConfigModel::GetInstance()->GetLanguage() == 0) + label->SetText("拨号盘");//TODO::多国语言 + else + label->SetText("Dial plate");//TODO::多国语言 + }else{ + label->SetTextId(labelconfig.textId); + } label->SetLineBreakMode(labelconfig.lineBreakMode); label->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); label->SetRollSpeed(70); @@ -183,7 +192,7 @@ namespace OHOS titleText->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); scrollView->Add(titleText); /* -------------------------------------------------------------------------- */ - int16_t textId[] = {STR_LIST_DISPLAY, STR_CELLULAR_DISPLAY, STR_ARC_SCALE_LIST_DISPLAY}; + int16_t textId[] = {STR_LIST_DISPLAY, STR_CELLULAR_DISPLAY, STR_ARC_SCALE_LIST_DISPLAY,STR_GRID_DISPLAY}; LabelConfig labelConfig = { .left = 143, .top = 153, @@ -235,7 +244,7 @@ namespace OHOS .viewId = THEME_STYLE_LIST, }; - const char *viewId[] = {THEME_STYLE_LIST, THEME_STYLE_HEXAGONS, THEME_STYLE_ARC_LIST}; + const char *viewId[] = {THEME_STYLE_LIST, THEME_STYLE_HEXAGONS, THEME_STYLE_ARC_LIST,THEME_STYLE_CIRCLE_LIST}; for (int i = 0; i < sizeof(viewId) / sizeof(viewId[0]); i++) { labelbuttonconfig.top = 120 + 120 * i; @@ -276,7 +285,7 @@ namespace OHOS .src = THEMESTYLE_LIST_IMAGEPATH, }; int y = 150; - const char *src[MAX_STYLE] = {THEMESTYLE_LIST_IMAGEPATH, THEMESTYLE_HEXAGONS_IMAGEPATH, THEMESTYLE_ARCLIST_IMAGEPATH}; + const char *src[MAX_STYLE] = {THEMESTYLE_LIST_IMAGEPATH, THEMESTYLE_HEXAGONS_IMAGEPATH, THEMESTYLE_ARCLIST_IMAGEPATH,THEMESTYLE_CIRCLELIST_IMAGEPATH}; for (int i = 0; i < sizeof(src) / sizeof(src[0]); i++) { imageconfig.y = y + 120 * i; -- 2.17.1