From: luozheng <1732036298@qq.com> Date: Sat, 30 Mar 2024 09:18:03 +0000 (+0800) Subject: 添加切换语言slice切换功能实现 X-Git-Tag: release_V1.2.70_20241020_135402~1245^2~6 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=f2d6b7b88b88a0c6a4d76fbab591cb06d447c7c3;p=mirrors%2FFD230.git 添加切换语言slice切换功能实现 --- diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index 0eb2c53b4..c334b0d07 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -252,6 +252,11 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/src/HeartCardView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/health_service/health_service.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/src/LanguageSwitchListAdapter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/src/LanguageSwitchListitemView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/src/LanguageSwitchPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/src/LanguageSwitchView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/src/LanguageSwitchModel.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/LanguageInit.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/config/src/ConfigModel.cpp diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h index 10a3c047b..83875d21e 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h @@ -55,6 +55,7 @@ typedef enum : uint16_t VIEW_FAST_TRAINING, // 快速训练 VIEW_FAST_TRAINING_ATTENTION, // 快速训练项目选择超出提示 VIEW_FIND_PHONE, // 查找手机 + VIEW_LANGUAGE_SWITCH, // 语言切换 /* ----------------------------------- 录音 ----------------------------------- */ VIEW_RECORD, /* ---------------------------------- 界面 ---------------------------------- */ diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h index dddba6b0c..59c4144f4 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h @@ -44,6 +44,7 @@ namespace OHOS void InitDisplayBrightnessSlice(void); void InitClassicBluetoothSlice(void); void InitFindPhoneSlice(void); + void InitLanguageSwitchSlice(void); /* --------------------------------界面------------------------------------ */ void InitRotateSlice(void); void InitBloodSlice(void); diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp index e40352415..6ed5ba071 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp +++ b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp @@ -141,6 +141,8 @@ #include "findphone/include/FindPhonePresenter.h" #include "findphone/include/FindPhoneView.h" +#include "language/include/LanguageSwitchPresenter.h" +#include "language/include/LanguageSwitchView.h" /* -------------------------------------------------------------------------- */ #include "traing/include/TraingView.h" #include "traing/include/TraingPresenter.h" @@ -258,6 +260,7 @@ namespace OHOS {VIEW_RECORD, &NativeLauncher::InitRecordingSlice}, // 录音实例化地址 {VIEW_FIND_PHONE, &NativeLauncher::InitFindPhoneSlice}, + {VIEW_LANGUAGE_SWITCH,&NativeLauncher::InitLanguageSwitchSlice}, {VIEW_MESSAGE, &NativeLauncher::InitMessageSlice}, {VIEW_ROTATE, &NativeLauncher::InitRotateSlice}, {VIEW_DIALUPDATE, &NativeLauncher::InitDialUpdateSlice}, @@ -1084,4 +1087,18 @@ namespace OHOS } NativeAbility::GetInstance().AddSliceProxy(VIEW_FIND_PHONE, findphoneview); } + + //语言切换 + void NativeLauncher::InitLanguageSwitchSlice(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitLanguageSwitchSlice"); + SliceProxy *languageswitchview = new AbilitySliceProxy; + if (languageswitchview == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "languageswitchview"); + return; + } + NativeAbility::GetInstance().AddSliceProxy(VIEW_LANGUAGE_SWITCH, languageswitchview); + } + } 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 5cfa7ec02..50d158867 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp @@ -37,6 +37,7 @@ namespace OHOS {VIEW_CALLER_LOG, PNG_APPLIST_CALLLOG_IMAGE, PNG_APPLIST_CALLLOG_IMAGE, "通话记录", nullptr}, {VIEW_PHONE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_CALLER_IMAGE, "电话", nullptr}, {VIEW_CONNECT_PHONE, PNG_CONNECT_PHONE_IMAGE, PNG_CONNECT_PHONE_IMAGE, "连接手机", nullptr}, + {VIEW_LANGUAGE_SWITCH, PNG_CONNECT_PHONE_IMAGE, PNG_CONNECT_PHONE_IMAGE, "语言切换", nullptr}, #ifdef SUPPORT_ALIPAY_SEC {VIEW_MAIN_ALIPAY, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_ALIPAY_IMAGE, "支付宝", nullptr}, #endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.cpp b/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.cpp index 86570cf6c..b141cabf5 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.cpp @@ -1,3 +1,10 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-03-30 09:14:38 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-03-30 16:10:56 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.cpp + */ #include #include #include @@ -10,74 +17,47 @@ namespace OHOS { - // 定义语言结构体 - struct Language - { - const char *code; - const char *name; - const char *description; - }; - // 初始化 languages 数组 struct Language languages[] = { - {"zh_CN", "中文", "中文"}, - {"en", "English", "英语"}, - {"ja", "日本語", "日语"}, - {"ko", "한국어", "韩语"}, - {"es", "Español", "西班牙语"}, - {"ru", "Русский", "俄语"}, - {"hr", "Hrvatski", "克罗地亚语"}, - {"de", "Deutsch", "德语"}, - {"pt", "Português", "葡萄牙语"}, - {"fr", "Français", "法语"}, - {"nl", "Nederlands", "荷兰语"}, - {"it", "Italiano", "意大利语"}, - {"cs", "ČeÅ¡tina", "捷克语"}, - {"el", "Ελληνικά", "希腊语"}, - {"hi", "हिन्दी", "印地语"}, - {"id", "Bahasa Indonesia", "印尼语"}, - {"ms", "Bahasa Melayu", "马来语"}, - {"pl", "Polski", "波兰语"}, - {"th", "ไทย", "泰语"}, - {"vi", "Tiếng Việt", "越南语"}, - {"fi", "Suomi", "芬兰语"}, - {"ro", "Română", "罗马尼亚语"}, - {"tr", "Türkçe", "土耳其语"}, - {"fa", "فارسی", "波斯语"}, - {"ar", "العربية", "阿拉伯语"}, - {"he", "עברית", "希伯来语"}, - {"uk", "Українська", "乌克兰语"}, - {"sv", "Svenska", "瑞典语"}, - {"uz", "O‘zbek", "乌兹别克语"}, - {"az", "Azərbaycan dili", "阿塞拜疆语"}}; + {ZH_CN, "zh", "中文", "中文"}, + {EN, "en", "English", "英语"}, + {JA, "ja", "日本語", "日语"}, + {KO, "ko", "한국어", "韩语"}, + {ES, "es", "Español", "西班牙语"}, + {RU, "ru", "Русский", "俄语"}, + {HR, "hr", "Hrvatski", "克罗地亚语"}, + {DE, "de", "Deutsch", "德语"}, + {PT, "pt", "Português", "葡萄牙语"}, + {FR, "fr", "Français", "法语"}, + {NL, "nl", "Nederlands", "荷兰语"}, + {IT, "it", "Italiano", "意大利语"}, + {CS, "cs", "ČeÅ¡tina", "捷克语"}, + {EL, "el", "Ελληνικά", "希腊语"}, + {HI, "hi", "हिन्दी", "印地语"}, + {ID, "id", "Bahasa Indonesia", "印尼语"}, + {MS, "ms", "Bahasa Melayu", "马来语"}, + {PL, "pl", "Polski", "波兰语"}, + {TH, "th", "ไทย", "泰语"}, + {VI, "vi", "Tiếng Việt", "越南语"}, + {FI, "fi", "Suomi", "芬兰语"}, + {RO, "ro", "Română", "罗马尼亚语"}, + {TR, "tr", "Türkçe", "土耳其语"}, + {FA, "fa", "فارسی", "波斯语"}, + {AR, "ar", "العربية", "阿拉伯语"}, + {HE, "he", "עברית", "希伯来语"}, + {UK, "uk", "Українська", "乌克兰语"}, + {SV, "sv", "Svenska", "瑞典语"}, + {UZ, "uz", "O‘zbek", "乌兹别克语"}, + {AZ, "az", "Azərbaycan dili", "阿塞拜疆语"}, + }; static const char *en = "user/res/font/en.lang"; - static const char *zh_CN = "user/res/font/zh.lang"; + static const char *zh = "user/res/font/zh.lang"; static const uint8_t langcount = 2; - const char *resFiles[langcount] = {zh_CN, en}; + const char *resFiles[langcount] = {zh, en}; static language *g_planguage{nullptr}; - /*** - * @description: 通过元素找下标 - * @param {char} *arr - * @param {int} size - * @param {char} *target - * @return {*} - * @brief - */ - int FindIndex(const char *arr[], int size, const char *target) - { - for (int i = 0; i < size; i++) - { - if (strcmp(arr[i], target) == 0) - { - return i; // 返回找到的元素的下标 - } - } - return -1; // 如果未找到目标元素,返回-1 - } - language::language() { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "language::language"); @@ -94,6 +74,7 @@ namespace OHOS { return g_planguage; } + bool language::InitLangues() { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLangues"); diff --git a/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.h b/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.h index 590f1c2ae..a3934b8b4 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.h +++ b/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.h @@ -1,16 +1,15 @@ -/*** - * @Author: Caisking 3449750381@qq.com - * @Date: 2024-02-20 11:47:35 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-03-27 16:05:02 - * @FilePath: /sdk/application/wearable/fd230app/nativeui/language/LanguageInit.h - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-03-30 09:30:03 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-03-30 15:57:41 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.h */ #ifndef LANGUAGE_INIT_H #define LANGUAGE_INIT_H #include - +#include namespace OHOS { // 定义语言ID的枚举类 @@ -45,8 +44,20 @@ namespace OHOS UK, SV, UZ, - AZ + AZ, + MAX_LANGUAGE, + }; + // 定义语言结构体 + struct Language + { + LanguageId languageid; + const char *code; + const char *name; + const char *description; }; + + // 声明 languages 数组为外部变量 + extern Language languages[]; class language { public: @@ -57,6 +68,40 @@ namespace OHOS bool ChangeLanguage(int language_status); bool fileExists(const char *fileName); }; + + class LanguageManager + { + public: + static LanguageManager &GetInstance() + { + static LanguageManager instance; + return instance; + } + LanguageManager() + { + // 初始化语言代码到语言ID的映射关系 + for (int i = 0; i < MAX_LANGUAGE; i++) + { + codeToIdMap[languages->code] = languages->languageid; + } + } + // 根据语言代码查找对应的语言ID + LanguageId GetLanguageIdByCode(const std::string &code) const + { + auto it = codeToIdMap.find(code); + if (it != codeToIdMap.end()) + { + return it->second; + } + // 如果找不到对应的语言ID,返回一个默认值 + return LanguageId::EN; // 这里假设默认返回英语 + } + ~LanguageManager() {} + + private: + // 假设有一个存储所有语言的容器 languages + std::map codeToIdMap; + }; } #endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchListAdapter.h b/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchListAdapter.h new file mode 100644 index 000000000..eeb912009 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchListAdapter.h @@ -0,0 +1,64 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-03-28 14:26:55 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-03-29 19:42:38 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchListAdapter.h + */ +#ifndef LANGUAGE_SWITCH_LIST_ADAPTER_H +#define LANGUAGE_SWITCH_LIST_ADAPTER_H + +#include "components/abstract_adapter.h" +#include "components/ui_label_button_ext.h" +#include "components/ui_list.h" +#include "language/LanguageInit.h" +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include +#include "language/LanguageInit.h" +namespace OHOS +{ + class LanguageSwitchListAdapter : public AbstractAdapter + { + public: + explicit LanguageSwitchListAdapter(); + virtual ~LanguageSwitchListAdapter(); + + /* * + * @brief Sets the UIView adapter data, which is a Language linked list. + * + * @param data Indicates the Language linked list data. + * @since 1.0 + * @version 1.0 + */ + void SetData(std::list &data); + + void ClearData(void); + /* * + * @brief Obtains the data size of the UILabel adapter. + * + * @return Returns the data size of the UILabel adapter. + * @since 1.0 + * @version 1.0 + */ + virtual uint16_t GetCount(void) override; + + virtual UIView *GetView(UIView *inView, int16_t index) override; + + virtual void AddListItem(const Language &item); + + void SetItemClickListener(UIView::OnClickListener *itemclicklistener) + { + itemClickListener = itemclicklistener; + } + + private: + std::list listData; + UIView::OnClickListener *itemClickListener{nullptr}; + ImageInfo *NotSelectedImg; + ImageInfo *SelectedImg; + }; + +} + +#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchListitemView.h b/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchListitemView.h new file mode 100644 index 000000000..babd0ae53 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchListitemView.h @@ -0,0 +1,32 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-03-28 14:28:25 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-03-30 11:12:28 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchListitemView.h + */ +#ifndef LANGUAGE_SWITCH_LIST_ITEM_VIEW +#define LANGUAGE_SWITCH_LIST_ITEM_VIEW + +#include "components/ui_view_group.h" +#include "components/ui_label_button_ext.h" +#include "language/include/LanguageSwitchListAdapter.h" + +namespace OHOS +{ + class LanguageSwitchListitemView : public UIViewGroup + { + public: + LanguageSwitchListitemView(); + virtual ~LanguageSwitchListitemView(); + virtual void SetItemInfo(const Language itemInfo); + virtual void SetUpChild(); + UILabelButtonExt *GetUILabelButtonExt(void); + private: + LanguageSwitchListitemView(const LanguageSwitchListitemView &); + UILabelButtonExt m_LabelButtonExt; + }; + +} + +#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchModel.h b/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchModel.h new file mode 100644 index 000000000..93b43f5b6 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchModel.h @@ -0,0 +1,37 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-03-28 16:36:58 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-03-30 15:31:58 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchModel.h + */ + +#ifndef LANGUAGE_SWITCH_MODEL_H +#define LANGUAGE_SWITCH_MODEL_H + +#include "language/include/LanguageSwitchListAdapter.h" + +namespace OHOS +{ + + class LanguageSwitchModel + { + public: + static LanguageSwitchModel &GetInstance(); + void SetCurLanguageCode(char * curlanguageid); + char * GetCurLanguageCode(void); + void SetLastLanguageCode(char * prelanguageid); + char * GetLastLanguageCode(void); + + private: + LanguageSwitchModel() {} + ~LanguageSwitchModel() {} + LanguageSwitchModel(const LanguageSwitchModel &) = delete; + const LanguageSwitchModel &operator=(const LanguageSwitchModel &) = delete; + static const uint16_t LANGUAGE_ITEM_MAX = MAX_LANGUAGE; // 语言总数 + char *CurLanguageCode = "zh"; // 当前语言,默认简体中文 + char *PreLanguageCode = nullptr; // 上一次切换的语言 + }; + +} +#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchPresenter.h new file mode 100644 index 000000000..c0015eb07 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchPresenter.h @@ -0,0 +1,49 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-03-28 14:16:52 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-03-30 16:15:40 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchPresenter.h + */ +#ifndef LANGUAGE_SWITCH_PRESENTER_H +#define LANGUAGE_SWITCH_PRESENTER_H + +#include "Presenter.h" +#include "View.h" +#include "language/include/LanguageSwitchModel.h" +#include "LanguageSwitchView.h" +#include "language/include/LanguageSwitchListitemView.h" +namespace OHOS +{ + + class LanguageSwitchView; + class LanguageSwitchPresenter : public Presenter, + public UIView::OnClickListener, + public RootView::OnKeyActListener, + public UIView::OnDragListener + { + public: + LanguageSwitchPresenter(); + virtual ~LanguageSwitchPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static LanguageSwitchPresenter *GetInstance(); + void SetLabelExt(UILabelExt *label); + private: + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(UIView &view, const DragEvent &event) override; + bool OnDragEnd(UIView &view, const DragEvent &event) override; + bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 + LanguageSwitchModel *p_LanguageSwitchModel{nullptr}; + UILabelButtonExt *LabelButton[MAX_LANGUAGE]{nullptr}; + ImageInfo *NotSelectedImg; + ImageInfo *SelectedImg; + UILabelExt *m_labelext{nullptr}; + }; +} + +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchView.h b/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchView.h new file mode 100644 index 000000000..5ca6432dc --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchView.h @@ -0,0 +1,48 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-03-28 11:58:38 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-03-30 16:33:22 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchView.h + */ +#ifndef LANGUAGE_SWITCH_VIEW_H +#define LANGUAGE_SWITCH_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include "components/ui_scroll_view.h" +#include "components/ui_label_ext.h" +#include "components/ui_list.h" +#include "language/include/LanguageSwitchListAdapter.h" + +namespace OHOS +{ + class LanguageSwitchPresenter; + class LanguageSwitchView : public View + { + + public: + LanguageSwitchView(); + virtual ~LanguageSwitchView(); + static LanguageSwitchView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void AddLanguageItemToList(const Language &item); + UIList *GetLanguageList(void); + private: + void LanguageSwitchViewInit(void); + void ClearAll(void); + bool LanguageSwitchViewScrollViewInit(void); + bool LanguageSwitchViewTitleLabelInit(void); + bool LanguageListInit(void); + UIScrollView *LanguageSwitchScrollView{nullptr}; + UILabelExt *LanguageSwitchViewTitleLabel{nullptr}; // "语言" + UIList *LanguageList{nullptr}; // 语言列表 + LanguageSwitchListAdapter *p_LanguageSwitchListAdapter{nullptr}; // 语言列表适配器 + bool viewInitStatus{false}; + }; +} +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchListAdapter.cpp b/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchListAdapter.cpp new file mode 100644 index 000000000..1eea53e91 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchListAdapter.cpp @@ -0,0 +1,118 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-03-28 14:27:05 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-03-30 16:32:43 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchListAdapter.cpp + */ +#include "language/include/LanguageSwitchListAdapter.h" +#include "language/include/LanguageSwitchListitemView.h" +#include "wearable_log.h" +#include "language/include/LanguageSwitchModel.h" +#include "language/include/LanguageSwitchPresenter.h" +#include "language/LanguageInit.h" + +namespace OHOS +{ + + LanguageSwitchListAdapter::LanguageSwitchListAdapter() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListAdapter::LanguageSwitchListAdapter"); + NotSelectedImg = ImageCacheManager::GetInstance().LoadSingleRes(PNG_CHECKBOX_OFF_IMAGE); + SelectedImg = ImageCacheManager::GetInstance().LoadSingleRes(PNG_CHECKBOX_ON_IMAGE); + } + + LanguageSwitchListAdapter::~LanguageSwitchListAdapter() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListAdapter::~LanguageSwitchListAdapter"); + listData.clear(); + } + + uint16_t LanguageSwitchListAdapter::GetCount(void) + { + return listData.size(); + } + + void LanguageSwitchListAdapter::SetData(std::list &data) + { + if (!listData.empty()) + { + listData.clear(); + } + std::list::iterator it; + for (it = data.begin(); it != data.end(); it++) + { + listData.push_back(*it); + } + } + + void LanguageSwitchListAdapter::ClearData(void) + { + if (!listData.empty()) + { + listData.clear(); + } + } + + UIView *LanguageSwitchListAdapter::GetView(UIView *inView, int16_t index) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListAdapter::GetView,index %d", index); + // 1.先检查列表数据是否为空,若为空则返回空指针 + if (listData.empty()) + { + return nullptr; + } + // 2.接着检查索引是否小于0,若小于0则返回空指针 + if (index < 0) + { + return nullptr; + } + // 3.检查是否超出列表数据大小,若超出则返回空指针 + size_t uindex = index; + if (uindex >= listData.size()) + { + return nullptr; + } + // 4.通过迭代器访问列表中指定索引位置的元素,将其赋值给itemData变量 + std::list::iterator it = listData.begin(); + for (int i = 0; i < index; i++) + { + it++; + } + Language itemData = *it; + LanguageSwitchListitemView *item = nullptr; + // 5.根据传入的inView参数是否已经存在一个视图对象,若为空则创建一个新的LanguageSwitchListItemView对象,否则将inView转换成LanguageSwitchListItemView类型的指针 + if (inView == nullptr) + { + item = new LanguageSwitchListitemView(); + } + else + { + item = dynamic_cast(inView); + } + item->SetItemInfo(itemData); + item->GetUILabelButtonExt()->SetOnClickListener(itemClickListener); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GetView, id = %s", item->GetUILabelButtonExt()->GetViewId()); + if (item->GetUILabelButtonExt()->GetViewId() != nullptr) + { + char *view_languageid = const_cast(item->GetUILabelButtonExt()->GetViewId()); + if (strcmp(LanguageSwitchModel::GetInstance().GetCurLanguageCode(), view_languageid) == 0) + { + // 设置选中 + item->GetUILabelButtonExt()->SetImageSrc(SelectedImg, SelectedImg); + } + else + { + // 设置未选中 + item->GetUILabelButtonExt()->SetImageSrc(NotSelectedImg, NotSelectedImg); + } + } + return item; + } + + void LanguageSwitchListAdapter::AddListItem(const Language &item) + { + listData.push_back(item); + } + +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchListitemView.cpp b/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchListitemView.cpp new file mode 100644 index 000000000..71b0771bb --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchListitemView.cpp @@ -0,0 +1,58 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-03-28 14:28:03 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-03-30 14:51:46 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchListitemView.cpp + */ +#include "language/include/LanguageSwitchListitemView.h" +#include "wearable_log.h" + +namespace OHOS +{ + + LanguageSwitchListitemView::LanguageSwitchListitemView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListitemView::LanguageSwitchListitemView"); + SetPosition(43, 120, 380, 120); + SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + SetStyle(STYLE_BACKGROUND_OPA, 255); + // SetTouchable(true); + SetUpChild(); + Add(&m_LabelButtonExt); + } + + LanguageSwitchListitemView::~LanguageSwitchListitemView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListitemView::~LanguageSwitchListitemView"); + Remove(&m_LabelButtonExt); + } + + void LanguageSwitchListitemView::SetItemInfo(const Language itemInfo) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListitemView::SetItemInfo"); + m_LabelButtonExt.SetViewId(itemInfo.code); + m_LabelButtonExt.SetText(itemInfo.name); + } + + void LanguageSwitchListitemView::SetUpChild() + { + m_LabelButtonExt.SetPosition(0, 0, 380, 100); + m_LabelButtonExt.SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + m_LabelButtonExt.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + m_LabelButtonExt.SetStyle(STYLE_LINE_HEIGHT, 35); + m_LabelButtonExt.SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff000000, UIButton::PRESSED); + m_LabelButtonExt.SetAlign(TEXT_ALIGNMENT_LEFT); + m_LabelButtonExt.SetLabelPosition(47, 0); + m_LabelButtonExt.SetImagePosition(290, 30); + m_LabelButtonExt.SetTouchable(true); + ImageInfo *unSelectedImg = ImageCacheManager::GetInstance().LoadSingleRes(PNG_CHECKBOX_OFF_IMAGE); + m_LabelButtonExt.SetImageSrc(unSelectedImg, unSelectedImg); + } + + UILabelButtonExt *LanguageSwitchListitemView::GetUILabelButtonExt(void) + { + return &m_LabelButtonExt; + } + +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchModel.cpp new file mode 100644 index 000000000..41cc8258f --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchModel.cpp @@ -0,0 +1,52 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-03-28 16:36:46 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-03-30 15:29:41 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchModel.cpp + */ +#include "language/include/LanguageSwitchModel.h" +#include "wearable_log.h" +#include "language/LanguageInit.h" + +namespace OHOS +{ + + LanguageSwitchModel &LanguageSwitchModel::GetInstance() + { + static LanguageSwitchModel instance; + return instance; + } + + /* + * @brief: 设置当前语言code + */ + void LanguageSwitchModel::SetCurLanguageCode(char * curlanguagecode) + { + CurLanguageCode = curlanguagecode; + } + + /* + * @brief 获取当前设置的语言code + */ + char * LanguageSwitchModel::GetCurLanguageCode(void) + { + return CurLanguageCode; + } + + /* + * @brief 设置上一次语言code + */ + void LanguageSwitchModel::SetLastLanguageCode(char * prelanguagecode) + { + PreLanguageCode = prelanguagecode; + } + + /* + * @brief 获取上一次设置的语言code + */ + char * LanguageSwitchModel::GetLastLanguageCode(void) + { + return PreLanguageCode; + } +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchPresenter.cpp new file mode 100644 index 000000000..2e5828d03 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchPresenter.cpp @@ -0,0 +1,150 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-03-28 14:17:43 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-03-30 16:35:37 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchPresenter.cpp + */ +#include "AppViewIDs.h" +#include "NativeAbility.h" +#include "language/include/LanguageSwitchPresenter.h" +#include "language/include/LanguageSwitchListitemView.h" +#include "language/include/LanguageSwitchModel.h" +#include "common/key_code.h" +#include +#include "language/LanguageInit.h" + +namespace OHOS +{ + extern Language languages[]; + + // 当前Presenter属性实例化的内存指针 + static LanguageSwitchPresenter *g_pLanguageSwitchPresenter = nullptr; + + LanguageSwitchPresenter::LanguageSwitchPresenter() + { + p_LanguageSwitchModel = &LanguageSwitchModel::GetInstance(); + g_pLanguageSwitchPresenter = this; + NotSelectedImg = ImageCacheManager::GetInstance().LoadSingleRes(PNG_CHECKBOX_OFF_IMAGE); + SelectedImg = ImageCacheManager::GetInstance().LoadSingleRes(PNG_CHECKBOX_ON_IMAGE); + } + + LanguageSwitchPresenter::~LanguageSwitchPresenter() + { + g_pLanguageSwitchPresenter = nullptr; + ImageCacheManager::GetInstance().UnloadSingleRes(PNG_CHECKBOX_OFF_IMAGE); + ImageCacheManager::GetInstance().UnloadSingleRes(PNG_CHECKBOX_ON_IMAGE); + } + + LanguageSwitchPresenter *LanguageSwitchPresenter::GetInstance() + { + return g_pLanguageSwitchPresenter; + } + + void LanguageSwitchPresenter::OnStart() + { + Presenter::OnStart(); + } + + void LanguageSwitchPresenter::OnResume(void) + { + Presenter::OnResume(); + if (view_ == nullptr) + { + return; + } + for (uint8_t i = 0; i < MAX_LANGUAGE; i++) + { + view_->AddLanguageItemToList(languages[i]); + } + } + + void LanguageSwitchPresenter::OnPause(void) + { + Presenter::OnPause(); + } + + void LanguageSwitchPresenter::OnStop(void) + { + Presenter::OnStop(); + } + + bool LanguageSwitchPresenter::OnDrag(UIView &view, const DragEvent &event) + { + UNUSED(view); + UNUSED(event); + return true; + } + + bool LanguageSwitchPresenter::OnDragEnd(UIView &view, const DragEvent &event) + { + UNUSED(view); + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST); + } + return true; + } + + bool LanguageSwitchPresenter::OnClick(UIView &view, const ClickEvent &event) + { + UNUSED(event); + char *lastLanguageCode = p_LanguageSwitchModel->GetLastLanguageCode(); + UILabelButtonExt *p_UILabelButtonExt = dynamic_cast(&view); + char *id = const_cast(p_UILabelButtonExt->GetViewId()); + language *g_planguage = new language(); + + if (p_UILabelButtonExt != nullptr) + { + char *currentLanguageCode = id; + p_LanguageSwitchModel->SetCurLanguageCode(currentLanguageCode); // 设置新的当前语言Code + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_UILabelButtonExt is nullptr !!"); + return false; + } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lastLanguageCode = %s , CurrLanguageCode = %s", p_LanguageSwitchModel->GetLastLanguageCode(), p_LanguageSwitchModel->GetCurLanguageCode()); + // 检查当前语言ID是否已经是点击的语言ID,否则重复点击同一语言不响应切换 + if (p_LanguageSwitchModel->GetCurLanguageCode() == lastLanguageCode) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Do not ChangeLanguage!!"); + return true; + } + else + { + LanguageId currentLanguageId = LanguageManager::GetInstance().GetLanguageIdByCode(p_LanguageSwitchModel->GetCurLanguageCode()); + g_planguage->ChangeLanguage(currentLanguageId); + + m_labelext->SetTextId(0); + m_labelext->ForceResetText();// 强制刷新 + + p_UILabelButtonExt->SetImageSrc(SelectedImg, SelectedImg); + p_UILabelButtonExt->Invalidate(); + LanguageSwitchView::GetInstance()->GetLanguageList()->RefreshList(); + // 更新上一个语言ID + p_LanguageSwitchModel->SetLastLanguageCode(p_LanguageSwitchModel->GetCurLanguageCode()); + } + return true; + } + + bool LanguageSwitchPresenter::OnKeyAct(UIView &view, const KeyEvent &event) // 增加按键事件 + { + UNUSED(view); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchPresenter::OnKeyAct"); + unsigned short keyID = event.GetKeyId(); + unsigned short keyState = event.GetState(); + // 如果是power键,且是亮屏状态,按键释放就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) + { + uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + NativeAbility::GetInstance().ChangeSlice(preSlice); + } + return true; + } + + void LanguageSwitchPresenter::SetLabelExt(UILabelExt *labelext) + { + m_labelext = labelext; + } +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchView.cpp b/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchView.cpp new file mode 100644 index 000000000..763e649f9 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchView.cpp @@ -0,0 +1,185 @@ +#include "language/include/LanguageSwitchView.h" +#include "language/include/LanguageSwitchPresenter.h" +#include "wearable_log.h" +namespace OHOS +{ + + static constexpr int16_t LANGUAGE_LIST_X = 43; + static constexpr int16_t LANGUAGE_LIST_Y = 120; + static constexpr int16_t NUM_2 = 2; + static constexpr int16_t MAX_SCROLL_DIS = 1000; + static constexpr int16_t MAX_REBOUND_SIZE = 40; + static LanguageSwitchView *g_pLanguageSwitchView{nullptr}; + LanguageSwitchView::LanguageSwitchView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::LanguageSwitchView"); + g_pLanguageSwitchView = this; + } + + LanguageSwitchView::~LanguageSwitchView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::~LanguageSwitchView"); + ClearAll(); + g_pLanguageSwitchView = nullptr; + } + + LanguageSwitchView *LanguageSwitchView::GetInstance() + { + + return g_pLanguageSwitchView; + } + + void LanguageSwitchView::ClearAll(void) + { + if (viewInitStatus == true) + { + LanguageSwitchScrollView->RemoveAll(); + + delete LanguageSwitchViewTitleLabel; + LanguageSwitchViewTitleLabel = nullptr; + + delete p_LanguageSwitchListAdapter; + p_LanguageSwitchListAdapter = nullptr; + + delete LanguageList; + LanguageList = nullptr; + + delete LanguageSwitchScrollView; + LanguageSwitchScrollView = nullptr; + } + } + + bool LanguageSwitchView::LanguageSwitchViewScrollViewInit(void) + { + LanguageSwitchScrollView = new UIScrollView(); + if (LanguageSwitchScrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::LanguageSwitchScrollView new fail!"); + return false; + } + LanguageSwitchScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); + UIView::OnDragListener *draglistener = static_cast(LanguageSwitchPresenter::GetInstance()); + if (draglistener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::draglistener can not be nullptr!"); + return false; + } + LanguageSwitchScrollView->SetOnDragListener(draglistener); + LanguageSwitchScrollView->SetTouchable(true); + LanguageSwitchScrollView->SetDraggable(true); + + return true; + } + + bool LanguageSwitchView::LanguageSwitchViewTitleLabelInit(void) + { + LanguageSwitchViewTitleLabel = new UILabelExt(); + if (LanguageSwitchViewTitleLabel == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::LanguageSwitchViewTitleLabel new fail!"); + return false; + } + LanguageSwitchViewTitleLabel->SetPosition(133, 52, 200, 40); + LanguageSwitchViewTitleLabel->SetStyle(STYLE_TEXT_FONT, 30); + LanguageSwitchViewTitleLabel->SetStyle(STYLE_LINE_HEIGHT, 35); + // LanguageSwitchViewTitleLabel->SetText("语言"); + LanguageSwitchViewTitleLabel->SetTextId(0); + LanguageSwitchViewTitleLabel->ForceResetText(); + LanguageSwitchViewTitleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); + LanguageSwitchViewTitleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + LanguageSwitchViewTitleLabel->SetRollSpeed(40); + LanguageSwitchViewTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + LanguageSwitchPresenter::GetInstance()->SetLabelExt(LanguageSwitchViewTitleLabel); + return true; + } + + bool LanguageSwitchView::LanguageListInit(void) + { + // UIList 的适配器 + p_LanguageSwitchListAdapter = new LanguageSwitchListAdapter(); + if (p_LanguageSwitchListAdapter == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::p_LanguageSwitchListAdapter is nullptr!"); + return false; + } + p_LanguageSwitchListAdapter->SetItemClickListener(LanguageSwitchPresenter::GetInstance()); + LanguageList = new UIList(UIList::VERTICAL); + if (LanguageList == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::LanguageList is nullptr!"); + return false; + } + LanguageList->SetPosition(LANGUAGE_LIST_X, LANGUAGE_LIST_Y, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + LanguageList->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); + LanguageList->SetScrollBlankSize(MAX_REBOUND_SIZE); + LanguageList->EnableAutoAlign(true); // 设置此列表的自动对齐状态。当滚动停止时,子视图被选中,其位置自动与预设位置对齐 + LanguageList->SetThrowDrag(true); // 设置手指抬起屏幕后是否继续滚动。 + LanguageList->SetMaxScrollDistance(MAX_SCROLL_DIS); // 设置手指抬起屏幕后的最大滚动距离。 + LanguageList->SetReboundSize(MAX_REBOUND_SIZE); + return true; + } + + void LanguageSwitchView::LanguageSwitchViewInit(void) + { + if (!LanguageSwitchViewScrollViewInit()) + { + return; + } + if (!LanguageSwitchViewTitleLabelInit()) + { + return; + } + if (!LanguageListInit()) + { + return; + } + viewInitStatus = true; + } + + void LanguageSwitchView::OnStart() + { + View::OnStart(); + LanguageSwitchViewInit(); + + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::LanguageSwitchPresenter::GetInstance(); + RootView::GetInstance()->SetOnKeyActListener(keyactListener); + } + + void LanguageSwitchView::OnSetUpView() + { + View::OnSetUpView(); + LanguageSwitchScrollView->Add(LanguageSwitchViewTitleLabel); + LanguageSwitchScrollView->Add(LanguageList); + RootView::GetInstance()->Add(LanguageSwitchScrollView); + LanguageList->SetAdapter(p_LanguageSwitchListAdapter); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "%d", p_LanguageSwitchListAdapter->GetCount()); + + Draw(); + } + + void LanguageSwitchView::OnTearDownView() + { + View::OnTearDownView(); + return; + } + + void LanguageSwitchView::OnStop() + { + + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + RootView::GetInstance()->ClearOnKeyActListener(); + return; + } + + void LanguageSwitchView::AddLanguageItemToList(const Language &item) + { + p_LanguageSwitchListAdapter->AddListItem(item); + } + + UIList *LanguageSwitchView::GetLanguageList(void) + { + return LanguageList; + } + +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/settings/src/SettingPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/settings/src/SettingPresenter.cpp index c4f465ace..80c802dae 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/settings/src/SettingPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/settings/src/SettingPresenter.cpp @@ -10,6 +10,7 @@ #include "SettingPresenter.h" #include "RebootModel.h" #include "common/key_code.h" +#include namespace OHOS { @@ -86,7 +87,7 @@ namespace OHOS uint16 keyID = event.GetKeyId(); uint16 keyState = event.GetState(); // 如果是power键就返回上一级 - if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0) + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0) { uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); if (preSlice == VIEW_APPLIST) diff --git a/code/sdk/application/wearable/service/msg_center/include/notify/pairing_notification.h b/code/sdk/application/wearable/service/msg_center/include/notify/pairing_notification.h index b1e980a78..2db50e1f9 100644 --- a/code/sdk/application/wearable/service/msg_center/include/notify/pairing_notification.h +++ b/code/sdk/application/wearable/service/msg_center/include/notify/pairing_notification.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-03-22 09:48:07 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-03-25 10:14:52 + * @LastEditTime: 2024-03-28 10:29:29 * @FilePath: /FD230/code/sdk/application/wearable/service/msg_center/include/notify/pairing_notification.h */ #ifndef PAIRING_NOTIFICATION_H @@ -26,12 +26,14 @@ namespace OHOS const char **CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages); void FreeImagePathsArray(const char **imagePaths, const int numImages); bool OnClick(OHOS::UIView &view, const OHOS::ClickEvent &event) override; - + void SetDeviceName(const char *Name); + const char *GetDeviceName(); private: PairingViewEventListener(); ~PairingViewEventListener(); PairingViewEventListener(const PairingViewEventListener &) = delete; const PairingViewEventListener &operator=(const PairingViewEventListener &) = delete; + const char *DeviceName{nullptr}; }; } diff --git a/code/sdk/application/wearable/service/msg_center/src/notify/pairing_notification.cpp b/code/sdk/application/wearable/service/msg_center/src/notify/pairing_notification.cpp index 95e2f7929..e471c2afd 100644 --- a/code/sdk/application/wearable/service/msg_center/src/notify/pairing_notification.cpp +++ b/code/sdk/application/wearable/service/msg_center/src/notify/pairing_notification.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-03-22 10:04:36 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-03-25 17:00:39 + * @LastEditTime: 2024-03-30 09:28:18 * @FilePath: /FD230/code/sdk/application/wearable/service/msg_center/src/notify/pairing_notification.cpp */ #include "notification_manager.h" @@ -177,8 +177,12 @@ namespace OHOS return button; } + void PairingViewEventListener::SetDeviceName(const char *Name) + { + DeviceName = Name; + } /*获取设备名称*/ - static const char *GetDeviceName(void) + const char *PairingViewEventListener::GetDeviceName(void) { return "Iphone 13 pro"; //先用固定字符串测试 } @@ -458,7 +462,7 @@ namespace OHOS DeviceUnbindingRequestViewLabel[0]->SetStyle(STYLE_LINE_HEIGHT, 40); char str[512]; memcpy(str, 0, 512); - sprintf(str, "当前设备已经与 %s 绑定", GetDeviceName()); + sprintf(str, "当前设备已经与 %s 绑定", PairingViewEventListener::GetInstance().GetDeviceName()); DeviceUnbindingRequestViewLabel[0]->SetText(str); DeviceUnbindingRequestViewLabel[0]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); DeviceUnbindingRequestViewLabel[0]->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); @@ -477,7 +481,7 @@ namespace OHOS DeviceUnbindingRequestViewLabel[1]->SetStyle(STYLE_TEXT_FONT, 30); DeviceUnbindingRequestViewLabel[1]->SetStyle(STYLE_LINE_HEIGHT, 40); memcpy(str, 0, 512); - sprintf(str, "继续连接操作会解除与%s的绑定并将手表恢复出厂设置(会清空手表数据)\n\n是否继续此操作\n", GetDeviceName()); + sprintf(str, "继续连接操作会解除与%s的绑定并将手表恢复出厂设置(会清空手表数据)\n\n是否继续此操作\n", PairingViewEventListener::GetInstance().GetDeviceName()); // str = "继续连接操作会解除与 " + GetDeviceName() + " 的绑定并将手表恢复出厂设置(会清空手表数据)\n\n是否继续此操作\n"; DeviceUnbindingRequestViewLabel[1]->SetText(str); DeviceUnbindingRequestViewLabel[1]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);