实现第一次启动,需要实现弹窗切换语言的功能 114/2 114/head
authorluozheng <1732036298@qq.com>
Tue, 30 Apr 2024 04:00:09 +0000 (12:00 +0800)
committerluozheng <1732036298@qq.com>
Tue, 30 Apr 2024 04:00:09 +0000 (12:00 +0800)
code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h
code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.cpp
code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.h
code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchModel.h
code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchListAdapter.cpp
code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchModel.cpp
code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherModel.cpp
code/sdk/application/wearable/service/msg_center/src/notify/pairing_notification.cpp

index 8ce45dd..7c43bfb 100644 (file)
@@ -387,7 +387,7 @@ namespace OHOS
         TraingModel::GetInstance()->Init(); // 训练消息订阅
         // 初始化默认首页
         ScreenModels::GetInstance()->PreLoadAppimages();
-        NativeAbility::GetInstance().SetDefaultSliceId(VIEW_MAIN);
+        //NativeAbility::GetInstance().SetDefaultSliceId(VIEW_MAIN);
         // 注册长按重启或关机事件
         RebootModel::GetInstance()->RegisterLongPressEvents();
 
index 7a8ffad..ed37cf3 100644 (file)
@@ -194,7 +194,7 @@ namespace OHOS
             {ConfigDataType::DATATYPE_STRING,   "Cat1_ModemVer",            ""      },//CONFIGMODEL_ITEM_CAT1_MODEMVER,
             {ConfigDataType::DATATYPE_STRING,   "Cat1_PYVer",               ""      },//CONFIGMODEL_ITEM_CAT1_PYVER,
             {ConfigDataType::DATATYPE_INT,      "LanguageID",               "-1"    },//CONFIGMODEL_ITEM_LANGUAGE_ID, //默认没有选择语言
-            {ConfigDataType::DATATYPE_STRING,   "LanguageCode",             "zh"    },//CONFIGMODEL_ITEM_LANGUAGE_CODE, //默认没有选择语言
+            {ConfigDataType::DATATYPE_STRING,   "LanguageCode",             ""      },//CONFIGMODEL_ITEM_LANGUAGE_CODE, //默认没有选择语言
             {ConfigDataType::DATATYPE_BOOL,     "SlientMode",               "false" },//CONFIGMODEL_ITEM_SILENT_MODE,
             {ConfigDataType::DATATYPE_INT,      "VibratorSwitch",           "1"     },//CONFIGMODEL_ITEM_VIBRATOR_SWITCH, // 马达 开关,0 强,1 中,2 弱,3 关
             // {ConfigDataType::DATATYPE_BOOL,     "HRS_QuickAccess",     "false"},//CONFIGMODEL_ITEM_HRS_SPO2_QUICKACCESS,
index c9dcb39..af8a619 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-30 09:14:38
- * @LastEditors: SnickerSun snickersun@163.com
- * @LastEditTime: 2024-04-15 14:59:48
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-04-30 10:25:43
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.cpp
  */
 #include <fstream>
@@ -14,6 +14,7 @@
 #include "wearable_log.h"
 #include "language/LanguageInit.h"
 #include "config/include/ConfigModel.h"
+#include <NativeAbility.h>
 
 namespace OHOS
 {
@@ -90,23 +91,24 @@ namespace OHOS
         "user/res/font/zh.lang"// AZ,
         };
 
-    static language *g_planguage{nullptr};
+    //static language *g_planguage{nullptr};
 
     language::language()
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "language::language");
-        g_planguage = this;
+        ///g_planguage = this;
     }
 
     language::~language()
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "language::~language");
-        g_planguage = nullptr;
+        //g_planguage = nullptr;
     }
 
     language *language::GetInstance()
     {
-        return g_planguage;
+        static language instance;
+        return &instance;
     }
 
     bool language::InitLangues()
@@ -121,7 +123,12 @@ namespace OHOS
              * 如果 thelanguage = -1 证明第一次启动,需要实现弹窗切换语言的功能。
              * 在此之前,先设置成默认0
             */
-            thelanguage = 0;
+            //thelanguage = 0;
+            NativeAbility::GetInstance().SetDefaultSliceId(VIEW_LANGUAGE_SWITCH);
+        }
+        else
+        {
+            NativeAbility::GetInstance().SetDefaultSliceId(VIEW_MAIN);
         }
         FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, MAX_LANGUAGE, thelanguage);
         return true;
@@ -151,8 +158,8 @@ namespace OHOS
        // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "resFiles[language_status]:%s", resFiles[language_status]);
         return true;
     }
-
-    bool language::ChangeLanguage( char *language_code)
+    
+    bool language::ChangeLanguage(std::string language_code)
     {
         if (!FontGlobalManager::GetInstance() || !UIFont::GetInstance())
         {
@@ -162,11 +169,11 @@ namespace OHOS
 
         // 获取语言Code对应的语言Id
         LanguageId currentLanguageId = LanguageManager::GetInstance().GetLanguageIdByCode(language_code);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d %s", currentLanguageId, language_code);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d %s", currentLanguageId, language_code.c_str());
         FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, MAX_LANGUAGE, currentLanguageId);
         UIFont::GetInstance()->SetCurrentLangId(currentLanguageId);
 
-        ConfigModel::GetInstance()->SetLanguageCode(language_code);
+        ConfigModel::GetInstance()->SetLanguageCode(language_code.c_str());
         ConfigModel::GetInstance()->SetLanguage(currentLanguageId);
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "resFiles[%d]:%s", currentLanguageId, resFiles[currentLanguageId]);
         return true;
index 1e6a343..02164a7 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-30 09:30:03
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-01 16:00:57
+ * @LastEditTime: 2024-04-30 10:03:25
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.h
  */
 #ifndef LANGUAGE_INIT_H
@@ -66,7 +66,7 @@ namespace OHOS
         static language *GetInstance();
         bool InitLangues();
         bool ChangeLanguage(uint32_t);
-        bool ChangeLanguage(char *language_code);
+        bool ChangeLanguage(std::string language_code);
         bool fileExists(const char *fileName);
     };
 
index 7b43737..b3c0bab 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-28 16:36:58
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-03-30 21:10:24
+ * @LastEditTime: 2024-04-30 11:34:16
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchModel.h
  */
 
@@ -10,7 +10,6 @@
 #define LANGUAGE_SWITCH_MODEL_H
 
 #include "language/include/LanguageSwitchListAdapter.h"
-#include "config/include/ConfigModel.h"
 namespace OHOS
 {
 
@@ -19,9 +18,9 @@ namespace OHOS
     public:
         static LanguageSwitchModel &GetInstance();
         void SetCurLanguageCode(char *curlanguageid);
-        char *GetCurLanguageCode(void);
-        void SetLastLanguageCode(char *prelanguageid);
-        char *GetLastLanguageCode(void);
+        const char *GetCurLanguageCode(void);
+        void SetLastLanguageCode(std::string prelanguageid);
+        const char *GetLastLanguageCode(void);
 
     private:
         LanguageSwitchModel();
@@ -30,8 +29,7 @@ namespace OHOS
         const LanguageSwitchModel &operator=(const LanguageSwitchModel &) = delete;
         static const uint16_t LANGUAGE_ITEM_MAX = MAX_LANGUAGE; // 语言总数
         char *CurLanguageCode = "zh";                           // 当前语言,默认简体中文
-        char *PreLanguageCode = nullptr;                        // 上一次切换的语言
-        ConfigModel *p_ConfigModel{nullptr};
+        std::string PreLanguageCode;                        // 上一次切换的语言
     };
 
 }
index 880b781..97d8731 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-28 14:27:05
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-03-30 17:37:29
+ * @LastEditTime: 2024-04-30 11:40:50
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchListAdapter.cpp
  */
 #include "language/include/LanguageSwitchListAdapter.h"
@@ -106,6 +106,7 @@ namespace OHOS
                 // 设置未选中
                 item->GetUILabelButtonExt()->SetImageSrc(NotSelectedImg, NotSelectedImg);
             }
+            item->GetUILabelButtonExt()->Invalidate();
         }
         return item;
     }
index 10932b2..d0090b6 100644 (file)
@@ -2,23 +2,19 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-28 16:36:46
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-01 11:52:27
+ * @LastEditTime: 2024-04-30 11:58:38
  * @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"
+#include "config/include/ConfigModel.h"
 namespace OHOS
 {
 
     LanguageSwitchModel::LanguageSwitchModel()
     {
-        p_ConfigModel = ConfigModel::GetInstance();
-        // if (p_ConfigModel->GetLanguageCode().c_str() != nullptr)
-        {
-            //printf("%s\n", p_ConfigModel->GetLanguageCode());
-            CurLanguageCode = const_cast<char *>(p_ConfigModel->GetLanguageCode().c_str());
-        }
+        // CurLanguageCode = const_cast<char *>(ConfigModel::GetInstance()->GetLanguageCode().c_str());
     }
 
     LanguageSwitchModel::~LanguageSwitchModel()
@@ -36,21 +32,23 @@ namespace OHOS
      */
     void LanguageSwitchModel::SetCurLanguageCode(char *curlanguagecode)
     {
-        CurLanguageCode = curlanguagecode;
+        // CurLanguageCode = curlanguagecode;
+        ConfigModel::GetInstance()->SetLanguageCode(curlanguagecode);
     }
 
     /*
      * @brief 获取当前设置的语言code
      */
-    char *LanguageSwitchModel::GetCurLanguageCode(void)
+    const char *LanguageSwitchModel::GetCurLanguageCode(void)
     {
-        return CurLanguageCode;
+        // return CurLanguageCode;
+        return ConfigModel::GetInstance()->GetLanguageCode().c_str();
     }
 
     /*
      * @brief 设置上一次语言code
      */
-    void LanguageSwitchModel::SetLastLanguageCode(char *prelanguagecode)
+    void LanguageSwitchModel::SetLastLanguageCode(std::string prelanguagecode)
     {
         PreLanguageCode = prelanguagecode;
     }
@@ -58,8 +56,8 @@ namespace OHOS
     /*
      * @brief 获取上一次设置的语言code
      */
-    char *LanguageSwitchModel::GetLastLanguageCode(void)
+    const char *LanguageSwitchModel::GetLastLanguageCode(void)
     {
-        return PreLanguageCode;
+        return PreLanguageCode.c_str();
     }
 }
\ No newline at end of file
index 5e4e4f0..7148bba 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-28 14:17:43
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-08 11:21:43
+ * @LastEditTime: 2024-04-30 11:27:38
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchPresenter.cpp
  */
 #include "AppViewIDs.h"
@@ -82,7 +82,7 @@ namespace OHOS
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
         {
             uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
-            NativeAbility::GetInstance().ChangeSlice(preSlice);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
@@ -90,10 +90,10 @@ namespace OHOS
     bool LanguageSwitchPresenter::OnClick(UIView &view, const ClickEvent &event)
     {
         UNUSED(event);
-        char *lastLanguageCode = p_LanguageSwitchModel->GetLastLanguageCode();
+        const char *lastLanguageCode = p_LanguageSwitchModel->GetLastLanguageCode();
         UILabelButtonExt *p_UILabelButtonExt = dynamic_cast<UILabelButtonExt *>(&view);
         char *id = const_cast<char *>(p_UILabelButtonExt->GetViewId());
-        language *g_planguage = new language();
+        language *g_planguage = language::GetInstance();
 
         if (p_UILabelButtonExt != nullptr)
         {
@@ -106,8 +106,8 @@ namespace OHOS
             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)
+        //  检查当前语言ID是否已经是点击的语言ID,否则重复点击同一语言不响应切换
+        if (strcmp(p_LanguageSwitchModel->GetCurLanguageCode(), lastLanguageCode) == 0)
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Do not ChangeLanguage!!");
             return true;
@@ -124,6 +124,7 @@ namespace OHOS
             // 更新上一个语言ID
             p_LanguageSwitchModel->SetLastLanguageCode(p_LanguageSwitchModel->GetCurLanguageCode());
         }
+        NativeAbility::GetInstance().SetDefaultSliceId(VIEW_MAIN);//暂定选完语言后设置默认的Sliceid为主界面
         return true;
     }
 
@@ -136,8 +137,7 @@ namespace OHOS
         // 如果是power键,且是亮屏状态,按键释放就返回上一级
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)
         {
-            uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
-            NativeAbility::GetInstance().ChangeSlice(preSlice);
+            NativeAbility::GetInstance().Back();
         }
         return true;
     }
index 432e40f..6829336 100644 (file)
@@ -152,7 +152,7 @@ namespace OHOS
 \r
         if (strcmp(view.GetViewId(), "SystemLanguageButton") == 0)\r
         {\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_LANGUAGE_SWITCH);\r
+            NativeAbility::GetInstance().EnterSlice(VIEW_LANGUAGE_SWITCH);\r
             return true;\r
         }\r
 \r
@@ -209,7 +209,7 @@ namespace OHOS
         if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT))\r
         {\r
             SystemPresenter::GetInstance()->set_key_falg(false);\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
+            NativeAbility::GetInstance().Back();\r
         }\r
         return true;\r
     }\r
@@ -241,38 +241,38 @@ namespace OHOS
 \r
     /* -------------------------------------------------------------------------- */\r
     // 获取语言类\r
-    language *g_planguage = new language;\r
+    //language *g_planguage = new language();\r
     /* -------------------------------------------------------------------------- */\r
     // 用来监听语言切换\r
     bool RadiobuttonOnChangeListener::OnChange(UICheckBox::UICheckBoxState state)\r
     {\r
-        language *g_planguage;\r
-        // static const char *en = "user/res/font/en.lang";\r
-        // static const char *zh_CN = "user/res/font/zh.lang";\r
-        switch (state)\r
-        {\r
-        case UICheckBox::SELECTED:\r
-            if (isChineseRadioButtonSelected())\r
-            {\r
-                // 中文文本\r
-                g_planguage->ChangeLanguage(LanguageId::ZH_CN);\r
-            }\r
-            else if (isEnglishRadioButtonSelected())\r
-            {\r
-                // 英语文本\r
-                g_planguage->ChangeLanguage(LanguageId::EN);\r
-            }\r
-            m_label->SetTextId(0);\r
-            // 强制刷新\r
-            m_label->ForceResetText();\r
-            RootView::GetInstance()->Invalidate();\r
-            break;\r
-        case UICheckBox::UNSELECTED:\r
-            // Handle unselected state if needed\r
-            break;\r
-        default:\r
-            break;\r
-        }\r
+        // language *g_planguage;\r
+        // // static const char *en = "user/res/font/en.lang";\r
+        // // static const char *zh_CN = "user/res/font/zh.lang";\r
+        // switch (state)\r
+        // {\r
+        // case UICheckBox::SELECTED:\r
+        //     if (isChineseRadioButtonSelected())\r
+        //     {\r
+        //         // 中文文本\r
+        //         g_planguage->ChangeLanguage(LanguageId::ZH_CN);\r
+        //     }\r
+        //     else if (isEnglishRadioButtonSelected())\r
+        //     {\r
+        //         // 英语文本\r
+        //         g_planguage->ChangeLanguage(LanguageId::EN);\r
+        //     }\r
+        //     m_label->SetTextId(0);\r
+        //     // 强制刷新\r
+        //     m_label->ForceResetText();\r
+        //     RootView::GetInstance()->Invalidate();\r
+        //     break;\r
+        // case UICheckBox::UNSELECTED:\r
+        //     // Handle unselected state if needed\r
+        //     break;\r
+        // default:\r
+        //     break;\r
+        // }\r
         return true;\r
     }\r
 \r
@@ -288,12 +288,7 @@ namespace OHOS
             if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)\r
             {\r
                 uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
-                if (preSlice == VIEW_LANGUAGE_SWITCH)\r
-                {\r
-                    NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
-                    return true;\r
-                }\r
-                NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+                NativeAbility::GetInstance().Back();\r
             }\r
         }\r
         return true;\r
index 2fd144f..473a6d2 100644 (file)
@@ -130,12 +130,13 @@ namespace OHOS
 
     void WeatherModel::TimestampToMonthDayString(time_t timestamp, char *buffer)
     {
-        // 将时间戳转换成tm结构
-        struct tm *timeinfo = localtime(&timestamp);
+       // 将时间戳转换成tm结构
+        struct tm timeinfo;
+        localtime_r(&timestamp, &timeinfo);
 
         // 格式化输出月份和日期
         // 注意: 月份tm_mon从0开始计数,所以显示时需要加1
-        sprintf(buffer, "%02d.%02d", timeinfo->tm_mon + 1, timeinfo->tm_mday);
+        sprintf(buffer, "%02d.%02d", timeinfo.tm_mon + 1, timeinfo.tm_mday);
     }
 
     // 获取天气图片
index 8def5ba..9226f70 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-22 10:04:36
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-03-30 09:28:18
+ * @LastEditTime: 2024-04-29 20:09:47
  * @FilePath: /FD230/code/sdk/application/wearable/service/msg_center/src/notify/pairing_notification.cpp
  */
 #include "notification_manager.h"
@@ -472,7 +472,7 @@ namespace OHOS
             DeviceUnbindingRequestViewLabel[0]->SetStyle(STYLE_TEXT_FONT, 30);
             DeviceUnbindingRequestViewLabel[0]->SetStyle(STYLE_LINE_HEIGHT, 40);
             char str[512];
-            memcpy(str, 0, 512);
+            memset(str, 0, 512);
             sprintf(str, "当前设备已经与 %s 绑定", PairingViewEventListener::GetInstance().GetDeviceName());
             DeviceUnbindingRequestViewLabel[0]->SetText(str);
             DeviceUnbindingRequestViewLabel[0]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
@@ -491,7 +491,7 @@ namespace OHOS
             DeviceUnbindingRequestViewLabel[1]->SetPosition(33, y, 400, 300);
             DeviceUnbindingRequestViewLabel[1]->SetStyle(STYLE_TEXT_FONT, 30);
             DeviceUnbindingRequestViewLabel[1]->SetStyle(STYLE_LINE_HEIGHT, 40);
-            memcpy(str, 0, 512);
+            memset(str, 0, 512);
             sprintf(str, "继续连接操作会解除与%s的绑定并将手表恢复出厂设置(会清空手表数据)\n\n是否继续此操作\n", PairingViewEventListener::GetInstance().GetDeviceName());
             // str = "继续连接操作会解除与 " + GetDeviceName() + " 的绑定并将手表恢复出厂设置(会清空手表数据)\n\n是否继续此操作\n";
             DeviceUnbindingRequestViewLabel[1]->SetText(str);