1.解決合并文件后字体不显示问题 1708/1 1708/head 1709/target/1 1710/target/1
authorluozheng <1732036298@qq.com>
Wed, 26 Mar 2025 02:28:48 +0000 (10:28 +0800)
committerluozheng <1732036298@qq.com>
Wed, 26 Mar 2025 02:28:48 +0000 (10:28 +0800)
2.新增RegisterMenuPro函数支持多国语言

code/sdk/application/wearable/fd230/nativeapp/CMakeLists.txt
code/sdk/application/wearable/fd230/nativeapp/nativelauncher/include/NativeRegisterManager.h
code/sdk/application/wearable/fd230/nativeapp/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/fd230/nativeapp/nativelauncher/src/NativeRegisterManager.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/applist/include/ApplistModel.h

index 458348e..dc7b0a0 100644 (file)
@@ -96,6 +96,8 @@ set(PRIVATE_HEADER
 
     ${ROOT_DIR}/zhihui/UI/CustomUIComponentTool/
     ${ROOT_DIR}/application/wearable/fd230/nativeabilityfwk/include
+    ${NativeApp}/nativeui/
+
 )
 
 file(GLOB_RECURSE SOURCES "${NativeApp}/nativeui/*.cpp")
index 0a12786..343fbac 100644 (file)
@@ -50,6 +50,7 @@ public:
     void RegisterNative(const AppItem &nativeAppList, NativeRegisterCallback* native);
     void RegisterSlice(const uint16_t id, SliceProxy* slice);
     void RegisterMenu(const uint16_t id, const char *icon, const char *iconHexagon, const char *label);
+    void RegisterMenuPro(const uint16_t id, const char *iconLarge, const char *iconSmall,const char *iconHexagon, const char *label, uint16_t TextId);
 
 private:
     NativeRegisterManager() {};
@@ -82,6 +83,21 @@ public:
         NativeRegisterManager::GetInstance().RegisterMenu(id, icon, iconHexagon, label);
     }
 };
+
+//新增的
+class SliceRegister_Pro {
+public:
+    SliceRegister_Pro(const uint16_t id, SliceProxy* sliceProxy,
+        const char *iconLarge, const char *iconSmall, const char *iconHexagon, 
+        const char *text, uint16_t textId)
+    {
+        NativeRegisterManager::GetInstance().RegisterSlice(id, sliceProxy);
+        NativeRegisterManager::GetInstance().RegisterMenuPro(id, iconLarge, iconSmall, 
+                                                            iconHexagon, text, textId);
+    }
+};
+
+
 } // namespace OHOS
 
 #define REGIST_NATIVE(nativeAppList, func) \
@@ -91,4 +107,8 @@ public:
 #define REGIST_MENU(id, V, P, icon, iconHexagon, label) \
     const static OHOS::SliceRegister (STATIC_VAR)(static_cast<uint16_t>(id), new AbilitySliceProxy<V, P>(), \
                                                   icon, iconHexagon, label)
+//新增的
+#define REGIST_MENU_PRO(id, V, P, iconLarge,iconSmall, iconHexagon, text,textId) \
+    const static OHOS::SliceRegister_Pro (STATIC_VAR)(static_cast<uint16_t>(id), new AbilitySliceProxy<V, P>(), \
+                                                  iconLarge,iconSmall, iconHexagon, text,textId)
 #endif // NATIVE_MANAGER_H
\ No newline at end of file
index 5b92f3b..128d6dd 100644 (file)
 #include "product_adapter.h"
 #endif
 
+//头文件加下面
+#include "languagecode/include/LanguageSwitchModel.h"
+#include "graphic_config.h"
+
 namespace OHOS {
 
 NativeLauncher::NativeLauncher() {}
@@ -49,22 +53,113 @@ void NativeLauncher::InitNativeLauncher(LaunchMode mode)
 #ifdef JS_ENABLE
     ACELite::ProductAdapter::SetScreenSize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
 #endif
-    GraphicStartUp::InitFontEngine(MEM_POOL_UI_FONT, MEM_POOL_UI_FONT_SIZE,
-        OHOS::VECTOR_FONT_DIR, DEFAULT_VECTOR_FONT_FILENAME);
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_LAUNCHER_FWK, "NativeLauncher::InitNativeLauncher");
-    // 初始化所有预加载slice
-    InitBtHeadsetEvent(); // 蓝牙ct和tg适配初始化
-    InitAllNativeSlices();
-    CallerLogModel::GetInstance()->InitPhoneService();
-    PlayersModel::GetInstance()->AudioInit();
-    ActivityModel::GetInstance()->Init();
-    ScreenModels::GetInstance()->InitKvStorage();
-    VocassistModel::GetInstance()->Init();
-    HeartModel::GetInstance()->Init();
-    BluetoothModel::GetInstance()->Init();
-    // 初始化默认首页
-    ScreenModels::GetInstance()->PreLoadAppimages();
-    NativeAbility::GetInstance().SetDefaultSliceId(VIEW_MAIN);
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_LAUNCHER_FWK, "c %d", mode);
+    if (mode == LaunchMode::SAFE_MODE)
+    {
+        GraphicStartUp::InitFontEngine(MEM_POOL_UI_FONT, MEM_POOL_UI_FONT_SIZE, OHOS::NEW_FONT_DIR, GILROY_BOLD_FONT); // 注册字体
+        set_current_global_font_name(GILROY_BOLD_FONT);
+        if (language::GetInstance()->InitLangues() == false)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLangues error");
+        }
+        /*加载安全模式Slice*/
+        #ifdef FD230_650
+        InitSafeModeSlice();
+        #endif
+        NativeAbility::GetInstance().SetDefaultSliceId(VIEW_SAFE_MODE);
+        // PresenterTask::GetInstance()->Init();
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "safe_mode is enter!");
+    }
+    else if (mode == LaunchMode::NORMAL_MODE)
+    {
+        // 初始化语言
+        GraphicStartUp::InitFontEngine(MEM_POOL_UI_FONT, MEM_POOL_UI_FONT_SIZE, OHOS::VECTOR_FONT_DIR, HARMONYOS_VECTOR_FONT_FILENAME);
+        GraphicStartUp::InitFontEngine(MEM_POOL_UI_FONT, MEM_POOL_UI_FONT_SIZE, OHOS::NEW_FONT_DIR, GILROY_BOLD_FONT);       // 注册字体
+        GraphicStartUp::InitFontEngine(MEM_POOL_UI_FONT, MEM_POOL_UI_FONT_SIZE, OHOS::NEW_FONT_DIR, AUDIOWIDE_REGULAR_FONT); // 注册字体
+
+        // 默认设置全局字体为HarmonyOSFont,其他时候根据语言选择字体名字
+        set_current_global_font_name(HARMONYOS_VECTOR_FONT_FILENAME);
+
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_LAUNCHER_FWK, "NativeLauncher::InitNativeLauncher  fontname %s", DEFAULT_VECTOR_FONT_FILENAME);
+        /* -------------------------------------------------------------------------- */
+        // 从语言json配置里面读取语言包
+        if (language::GetInstance()->InitLangues() == false)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLangues error");
+        }
+        // 初始化所有预加载slice
+        InitAllNativeSlices();
+        #ifdef FD230_650
+        CallerLogModel::GetInstance()->InitPhoneService();
+        GoalModel::GetInstance().GoalModelInitdata();//活动数据初始化
+        // PresenterTask::GetInstance()->Init();
+        PlayersModel::GetInstance()->AudioInit();
+        ActivityModel::GetInstance()->Init();
+        ScreenModels::GetInstance()->InitKvStorage();
+        VocassistModel::GetInstance()->Init();
+        HeartModel::GetInstance()->Init();
+        // BluetoothModel::GetInstance()->Init();
+        TraingModel::GetInstance()->Init();     // 训练消息订阅
+        TakephotosModel::GetInstance()->Init(); // 拍照消息订阅
+        MessageModel::GetInstance().Init();     // 消息订阅监听
+        AssistantModel::GetInstance()->Init();  // 语音助手消息订阅
+        //音乐列表初始化,放在nativelauncher 初始化,防止手表连接耳机时,操控耳机控制手表音乐造成死机
+        do_custom_fileoperate_service_check_msg(CUSTOM_FILEOPERATE_MSG_TYPE_MUSICNAME_READ, nullptr, 0);
+
+        // 初始化默认首页
+        ScreenModels::GetInstance()->PreLoadAppimages();
+        // NativeAbility::GetInstance().SetDefaultSliceId(VIEW_MAIN);
+        //  注册按键事件
+        RebootAndShutdownModel::GetInstance().RegisterAllKeyEvents();
+
+        // 开机检测充电状态
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "get_charge_stat is %d", get_charge_stat());
+        if (get_charge_stat())
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Power is Charging!");
+            DialModelCharge::GetInstance()->UpdatechargeStatus(1);
+        }
+
+        /*开机读取天气历史数据*/
+        C_ScheduleDataReadFromFile();
+        mmi_sleep_mode_switch_read();
+
+        /*开机读取消息历史数据*/
+        if(!MessageModel::GetInstance().LoadMessagesFromStorage())
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LoadMessagesFromStorage failed!");
+        }
+
+        /*开机读取睡眠数据*/
+        SleepModel::GetInstance().read_sleep_file_data();
+
+        //更新主表盘配置
+        MainModel::GetInstance().InitDialState();
+
+        // 初始化屏幕亮度
+        cm_initScreenBrightness();
+
+        // 初始化屏幕时长
+        cm_initializeScreenDuration();
+
+        // 开机增加震动 页面启动震动一次
+        // ui_api_vibrate_once_func();
+        #endif
+    }
+    #ifdef FD230_650
+    // 注册开机时间  
+    SystemLogData systemlog;  
+    systemlog.timestamp = SystemLogModel::GetInstance()->GetCurrentTime();  
+    systemlog.type = SystemLogType::POWER_ON;   
+    // 先读取日志
+    SystemLogModel::GetInstance()->loadLog();
+    // 再存储日志
+    SystemLogModel::GetInstance()->saveLog(systemlog);
+    // 读取nextday日志
+    SystemLogModel::GetInstance()->load_nextday_log();
+    // 读取popup_windows日志
+    SystemLogModel::GetInstance()->load_popup_windows_log();
+    #endif
 }
 
 void NativeLauncher::InitAllNativeSlices(void)
index 9d2459a..7e13cd7 100644 (file)
@@ -87,4 +87,23 @@ void NativeRegisterManager::RegisterMenu(const uint16_t id, const char *icon, co
     }
     nativeAppLists_.PushBack(item);
 }
+
+void NativeRegisterManager::RegisterMenuPro(const uint16_t id, const char *iconLarge, const char *iconSmall,
+    const char *iconHexagon, const char *label, uint16_t TextId)
+{
+    AppItem item = {id, iconLarge, iconSmall, iconHexagon, label, nullptr,TextId};
+    ListNode<AppItem>* appNode = nativeAppLists_.Head();
+    while (appNode != nativeAppLists_.End()) {
+        if (id == appNode->data_.id) {
+            GRAPHIC_LOGE("Register menu failed because id %d already registered.", id);
+            return;
+        }
+        if (id < appNode->data_.id) {
+            nativeAppLists_.Insert(appNode, item);
+            return;
+        }
+        appNode = appNode->next_;
+    }
+    nativeAppLists_.PushBack(item);
+}
 } // namespace OHOS
index fdf1a34..35e69a8 100644 (file)
@@ -22,6 +22,7 @@ typedef struct {
     const char *iconHexagon;
     const char *label;
     const char *uid;
+    uint16_t TextId;
 } AppItem;
 
 enum AppListStyle {
@@ -56,7 +57,7 @@ private:
     virtual ~ApplistModel();
     ApplistPresenter *presenter{nullptr};
 
-    AppItem applist[APP_MAX_NUM] = { VIEW_INVALID, nullptr, nullptr, nullptr, nullptr, nullptr };
+    AppItem applist[APP_MAX_NUM] = { VIEW_INVALID, nullptr, nullptr, nullptr, nullptr, nullptr ,0};
     BundleInfo *bundleInfos = nullptr;
     int32 bundleLen = 0;
     uint8 appLen = 0;