applist显示方式 默认直列,排序使用名称排序 1949/2 1949/head 1952/target/3 1957/target/1
authorluozheng <1732036298@qq.com>
Mon, 14 Jul 2025 03:34:38 +0000 (11:34 +0800)
committerluozheng <1732036298@qq.com>
Mon, 14 Jul 2025 03:34:38 +0000 (11:34 +0800)
code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistConfigModel.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistModel.h
code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp
code/sdk/drivers/peripheral/config/include/ConfigModel.h

diff --git a/code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistConfigModel.h b/code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistConfigModel.h
new file mode 100644 (file)
index 0000000..2befa20
--- /dev/null
@@ -0,0 +1,94 @@
+#include "ui_resource_string.h"
+#include "AppViewIDs.h"
+#include "UiConfig.h"
+
+namespace OHOS
+{
+        typedef struct
+        {
+                AppViewId id;
+                const char *iconLarge;
+                const char *iconSmall;
+                const char *iconHexagon;
+                const char *label;
+                uint16_t TextId;
+                const char *uid;
+                const char *zh_name; // 大写英文字母
+                const char *en_name; // 英语名称
+        } AppItem;
+
+        const AppItem g_nativeAppList[] = {
+#ifdef A5133_DEMO_CLIENT
+            {VIEW_OBU_MESSAGE, PNG_APPLIST_THEME_IMAGE_BIG, PNG_APPLIST_THEME_IMAGE, PNG_APPLIST_DEFAULT_IMG, "OBU", STR_OBU_MESSAGE, nullptr, "O", "OBU"},
+#endif
+            {VIEW_MAIN_PHONE, PNG_APPLIST_CALLER_IMAGE_BIG, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_DEFAULT_IMG, "电话", STR_TELEPHONE, nullptr, "D", "TELEPHONE"},
+#if HEART_APPLIST
+            {VIEW_HEART_CHART, PNG_APPLIST_HEART_IMAGE_BIG, PNG_APPLIST_HEART_IMAGE, PNG_APPLIST_DEFAULT_IMG, "心率", STR_HEART_RATE, nullptr, "X", "HEART_RATE"},
+#endif
+            {VIEW_BLOOD_RESULT, PNG_APPLIST_SPO2_IMAGE_BIG, PNG_APPLIST_SPO2_IMAGE, PNG_APPLIST_DEFAULT_IMG, "血氧", STR_BLOOD_OXYGEN, nullptr, "X", "BLOOD_OXYGEN"},
+#if defined(BOARD_W9)
+            /*W9Slice写宏里面*/
+            {VIEW_BLOOD_PRESSURE_CHECK, PNG_APPLIST_BP_MESSURE_IMAGE_BIG, PNG_APPLIST_BP_MESSURE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "血压测量", STR_BP_CHECK, nullptr, "X", "BP_CHECK"},
+#endif
+#if defined(BOARD_W9) || defined(BOARD_N9) && 0
+            // ECG
+            {VIEW_ECG, PNG_APPLIST_ECG_IMAGE_BIG, PNG_APPLIST_ECG_IMAGE, PNG_APPLIST_DEFAULT_IMG, "ECG", STR_ECG, nullptr, "E", "ECG"},
+            // 情绪
+            {VIEW_EMOTION, PNG_APPLIST_EMOTION_IMAGE_BIG, PNG_APPLIST_EMOTION_IMAGE, PNG_APPLIST_DEFAULT_IMG, "情绪", STR_EMOTION, nullptr, "Q", "EMOTION"},
+            // 压力
+            {VIEW_PRESSURE, PNG_APPLIST_STRESS_IMAGE_BIG, PNG_APPLIST_STRESS_IMAGE, PNG_APPLIST_DEFAULT_IMG, "压力", STR_PRESSURE, nullptr, "Y", "PRESSURE"},
+            // 疲劳度
+            {VIEW_FATIGUE, PNG_APPLIST_FATIGUE_IMAGE_BIG, PNG_APPLIST_FATIGUE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "疲劳度", STR_FATIGUE_LEVEL, nullptr, "P", "FATIGUE"},
+#endif
+            {VIEW_SLEEP, PNG_APPLIST_SLEEP_IMAGE_BIG, PNG_APPLIST_SLEEP_IMAGE, PNG_APPLIST_DEFAULT_IMG, "睡眠", STR_SLEEP, nullptr, "S", "SLEEP"},
+            {VIEW_TRAINING, PNG_APPLIST_TRAINING_IMAGE_BIG, PNG_APPLIST_TRAINING_IMAGE, PNG_APPLIST_DEFAULT_IMG, "运动", STR_TRAINING, nullptr, "Y", "TRAINING"},
+            {VIEW_TRAINING_RECORD, PNG_APPLIST_TRAINING_RECORD_IMAGE_BIG, PNG_APPLIST_TRAINING_RECORD_IMAGE, PNG_APPLIST_DEFAULT_IMG, "运动记录", STR_TRAINING_RECORD, nullptr, "Y", "TRAINING_RECORD"},
+            {VIEW_GOAL, PNG_APPLIST_GOAL_IMAGE_BIG, PNG_APPLIST_GOAL_IMAGE, PNG_APPLIST_DEFAULT_IMG, "活动", STR_ACTIVITY, nullptr, "H", "ACTIVITY"},
+#if defined(BOARD_N9)
+            {VIEW_AI_VOICE, PNG_APPLIST_AIVOICE_IMAGE_BIG, PNG_APPLIST_AIVOICE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "星辰AI", STR_START_AI, nullptr, "X", "START_AI"},
+#else
+            {VIEW_AI_VOICE, PNG_APPLIST_AIVOICE_IMAGE_BIG, PNG_APPLIST_AIVOICE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "AI全家桶", STR_AI_FAMILY_MEALS, nullptr, "A", "AI_FAMILY_MEALS"},
+// {VIEW_AI_VOICE, "/user/res/AIVoice/aimodels/aimodels_lingxi.bin", "/user/res/AIVoice/aimodels/aimodels_lingxi.bin", PNG_APPLIST_DEFAULT_IMG, "九天大模型", STR_JIUTIAN, nullptr, "J","JIUTIAN"},
+#endif
+#ifdef SUPPORT_ALIPAY_SEC
+            {VIEW_MAIN_ALIPAY, PNG_APPLIST_ALIPAY_IMAGE_BIG, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_DEFAULT_IMG, "支付宝", STR_ALIPAY, nullptr, "Z", "ALIPAY"},
+#endif
+            {VIEW_MESSAGE, PNG_APPLIST_MESSAGE_IMAGE_BIG, PNG_APPLIST_MESSAGE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "消息通知", STR_MESSAGE_NOTIFICATION, nullptr, "X", "MESSAGE_NOTIFICATION"},
+            {VIEW_COMPASS, PNG_APPLIST_COMPASS_IMAGE_BIG, PNG_APPLIST_COMPASS_IMAGE, PNG_APPLIST_DEFAULT_IMG, "指南针", STR_COMPASS, nullptr, "Z", "COMPASS"},
+            {VIEW_CALCULATOR, PNG_APPLIST_INFORMATION_IMAGE_BIG, PNG_APPLIST_INFORMATION_IMAGE, PNG_APPLIST_DEFAULT_IMG, "计算器", STR_CALCULATOR, nullptr, "J", "CALCULATOR"},
+            {VIEW_RECORD, PNG_APPLIST_RECORD_IMAGE_BIG, PNG_APPLIST_RECORD_IMAGE, PNG_APPLIST_DEFAULT_IMG, "录音", STR_RECORD, nullptr, "L", "RECORD"},
+            {VIEW_FLASHLIGHT, PNG_APPLIST_FLASHLIGHT_IMAGE_BIG, PNG_APPLIST_FLASHLIGHT_IMAGE, PNG_APPLIST_DEFAULT_IMG, "手电筒", STR_FLASHLIGHT, nullptr, "S", "FLASHLIGHT"},
+            {VIEW_WEATHER, PNG_APPLIST_WEATHER_IMAGE_BIG, PNG_APPLIST_WEATHER_IMAGE, PNG_APPLIST_DEFAULT_IMG, "天气", STR_WEATHER, nullptr, "T", "WEATHER"},
+            {VIEW_MAIN_STOPWATCH, PNG_APPLIST_STOPWATCH_IMAGE_BIG, PNG_APPLIST_STOPWATCH_IMAGE, PNG_APPLIST_DEFAULT_IMG, "秒表", STR_STOPWATCH, nullptr, "M", "STOPWATCH"},
+            {VIEW_MAIN_COUNTDOWN, PNG_APPLIST_COUNTDOWN_IMAGE_BIG, PNG_APPLIST_COUNTDOWN_IMAGE, PNG_APPLIST_DEFAULT_IMG, "计时器", STR_TIMER, nullptr, "J", "COUNTDOWN"},
+            {VIEW_RESPIRATORY_TRAINING, PNG_APPLIST_BREATHE_IMAGE_BIG, PNG_APPLIST_BREATHE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "呼吸训练", STR_BREATH_TRAINING, nullptr, "H", "BREATH_TRAINING"},
+            {VIEW_TAKEPHOTOS, PNG_APPLIST_TACKEPHOTOS_IMAGE_BIG, PNG_APPLIST_TACKEPHOTOS_IMAGE, PNG_APPLIST_DEFAULT_IMG, "遥控拍照", STR_REMOTE_SHOOTING, nullptr, "Y", "REMOTE_SHOOTING"},
+            {VIEW_MAIN_ALARM, PNG_APPLIST_ALARM_IMAGE_BIG, PNG_APPLIST_ALARM_IMAGE, PNG_APPLIST_DEFAULT_IMG, "闹钟", STR_ALARM, nullptr, "N", "ALARM"},
+            {VIEW_FIND_PHONE, PNG_APPLIST_FINDPHONE_IMAGE_BIG, PNG_APPLIST_FINDPHONE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "查找手机", STR_FIND_PHONE, nullptr, "C", "FIND_PHONE"},
+            {VIEW_MUSIC_PLAYER, PNG_APPLIST_MUSIC_IMAGE_BIG, PNG_APPLIST_MUSIC_IMAGE, PNG_APPLIST_DEFAULT_IMG, "音乐播放器", STR_MUSIC, nullptr, "Y", "PLAYER"},
+            {VIEW_ASSISTANT, PNG_APPLIST_SMART_IMAGE_BIG, PNG_APPLIST_SMART_IMAGE, PNG_APPLIST_DEFAULT_IMG, "语音助手", STR_VOICE_ASSISTANT, nullptr, "Y", "VOICE_ASSISTANT"},
+            {VIEW_SCHEDULE, PNG_APPLIST_SCHEDULE_IMAGE_BIG, PNG_APPLIST_SCHEDULE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "schedule", STR_SCHEDULE, nullptr, "S", "SCHEDULE"},
+            {VIEW_CALENDAR, PNG_APPLIST_CALENDAR_IMAGE_BIG, PNG_APPLIST_CALENDAR_IMAGE, PNG_APPLIST_DEFAULT_IMG, "日历", STR_CALENDAR, nullptr, "R", "CALENDAR"},
+            {VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE_BIG, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_DEFAULT_IMG, "设置", STR_SETTINGS, nullptr, "S", "SETTINGS"},
+        // {VIEW_CANVAS_TEST, PNG_APPLIST_DISTURB_IMAGE, PNG_APPLIST_DISTURB_IMAGE, PNG_APPLIST_DEFAULT_IMG, "勿扰模式", STR_DO_NOT_DISTURB, nullptr},
+#if 0
+        /*屏蔽Slice*/
+        {VIEW_DNOTDISTURB, PNG_APPLIST_DISTURB_IMAGE, PNG_APPLIST_DISTURB_IMAGE, PNG_APPLIST_DEFAULT_IMG, "勿扰模式", STR_DO_NOT_DISTURB, nullptr},
+        {VIEW_ADD_CARD, PNG_APPLIST_CARDSET_IMAGE, PNG_APPLIST_CARDSET_IMAGE, PNG_APPLIST_DEFAULT_IMG, "卡片管理", STR_CARD_MANAGEMENT, nullptr},
+        {VIEW_SET_DIAL_STYLE, PNG_APPLIST_CHANGEDIAL_IMAGE, PNG_APPLIST_CHANGEDIAL_IMAGE, PNG_APPLIST_DEFAULT_IMG, "更换表盘", STR_WATCH_FACE, nullptr},
+        {VIEW_SAVEELE, PNG_APPLIST_SAVEELE_IMAGE, PNG_APPLIST_SAVEELE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "省电模式", STR_POWER_SAVE_MODE, nullptr},
+        {VIEW_SOUND_VIBRATION, PNG_APPLIST_VOICE_IMAGE, PNG_APPLIST_VOICE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "声音", STR_SOUND, nullptr},
+        {VIEW_PHONEDIR, PNG_APPLIST_CALLLOG_IMAGE, PNG_APPLIST_CALLLOG_IMAGE, PNG_APPLIST_DEFAULT_IMG, "常用联系人", STR_FAVORITE_CONTACTS, nullptr},
+        {VIEW_THEME_STYLE, PNG_APPLIST_THEME_IMAGE, PNG_APPLIST_THEME_IMAGE, PNG_APPLIST_DEFAULT_IMG, "显示方式", STR_DISPLAY_MODE, nullptr},
+        {VIEW_BRIGHTNESSLEVEL, PNG_APPLIST_BRIGHTNESSLEVEL_IMAGE, PNG_APPLIST_BRIGHTNESSLEVEL_IMAGE, PNG_APPLIST_DEFAULT_IMG, "亮度调节", STR_BRIGHTNESS_ADJUSTMENT, nullptr},
+        {VIEW_CLASSIC_BLUETOOTH, PNG_APPLIST_BLUETOOTH_IMAGE, PNG_APPLIST_BLUETOOTH_IMAGE, PNG_APPLIST_DEFAULT_IMG, "蓝牙", STR_BLUETOOTH, nullptr},
+        {VIEW_LANGUAGE_SWITCH, PNG_CONNECT_PHONE_IMAGE, PNG_CONNECT_PHONE_IMAGE, PNG_APPLIST_DEFAULT_IMG,"语言切换", nullptr},
+        {VIEW_MAIN_TEMP, PNG_APPLIST_TEMP_IMAGE, PNG_APPLIST_TEMP_IMAGE, PNG_APPLIST_DEFAULT_IMG,"体温", nullptr},
+        {VIEW_OFFLINEVOICE, PNG_APPLIST_VOCASSIST_IMAGE, PNG_APPLIST_VOCASSIST_IMAGE, PNG_APPLIST_DEFAULT_IMG,"语音助手", nullptr},
+        {VIEW_UISAMPLE, PNG_APPLIST_UI_SAMPLE_IMAGE, PNG_APPLIST_UI_SAMPLE_IMAGE, PNG_APPLIST_DEFAULT_IMG,"示例", nullptr},
+        {VIEW_MESSAGE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_DEFAULT_IMG,"信息通知", nullptr},
+        {VIEW_INDOORWALK, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_DEFAULT_IMG,"室内步行", nullptr},
+        {VIEW_INDOORWALK, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_DEFAULT_IMG,"室内步行",STR_ACTIVITY, nullptr},
+#endif
+        };
+}
\ No newline at end of file
index c6f4462..fdbc7ed 100644 (file)
@@ -11,7 +11,7 @@
 #define _APPLIST_MODEL_H_
 
 #include "bundle_info.h"
-#include "AppViewIDs.h"
+#include "ApplistConfigModel.h"
 
 #include "ohos_types.h"
 #include "components/ui_label_ext.h"
 #define APP_MAX_NUM 50
 
 namespace OHOS {
-typedef struct {
-    AppViewId id;
-    const char *iconLarge;
-    const char *iconSmall;
-    const char *iconHexagon;
-    const char *label;
-    uint16_t TextId;
-    const char *uid;
-} AppItem;
-
 
 #define AppListStyle ThemeStyle
 
@@ -61,6 +51,7 @@ public:
     int GetCurselectImageIndex(void);
     void SetPreselectImageIndex(int index);
     int GetPreselectImageIndex(void);
+    void sortAppItemsByZhName(AppItem applist_n9[], int appLen);
        
        void SetInitFlag(bool flag);
 private:
@@ -70,7 +61,12 @@ private:
     virtual ~ApplistModel();
     ApplistPresenter *presenter{nullptr};
 
-    AppItem applist[APP_MAX_NUM] = { VIEW_INVALID, nullptr, nullptr, nullptr,nullptr,STR_EXERCISE_GENERAL, nullptr };
+#if defined(BOARD_N9)
+    AppItem applist_n9[APP_MAX_NUM] = { VIEW_INVALID, nullptr, nullptr, nullptr,nullptr,STR_EXERCISE_GENERAL, nullptr ,nullptr,nullptr};
+#elif defined(BOARD_W9)
+    AppItem applist_w9[APP_MAX_NUM] = { VIEW_INVALID, nullptr, nullptr, nullptr,nullptr,STR_EXERCISE_GENERAL, nullptr ,nullptr,nullptr};
+    #endif
+    AppItem applist[APP_MAX_NUM] = { VIEW_INVALID, nullptr, nullptr, nullptr,nullptr,STR_EXERCISE_GENERAL, nullptr ,nullptr,nullptr};
     BundleInfo *bundleInfos = nullptr;
     int32 bundleLen = 0;
     uint8 appLen = 0;
index f4e199f..921064d 100644 (file)
 #define HEART_APPLIST 1
 namespace OHOS
 {
-    /**- APPLSIT
-     * - 手机
-     * - 心率
-     * - 血氧
-     * - 训练
-     * - 训练记录
-     * - 活动
-     * - AI全家桶
-     * - 支付宝
-     * - 消息通知
-     * - 指南针
-     * - 录音
-     * - 手电筒
-     * - 天气
-     * - 秒表
-     * - 计时器
-     * - 呼吸训练
-     * - 遥控拍照
-     * - 闹钟
-     * - 声音
-     * - 查找手机
-     * - 勿扰模式
-     * - 卡片管理
-     * - 更换表盘
-     * - 省电模式
-     * - 设置
-     */
-    const AppItem g_nativeAppList[] = {
-#ifdef A5133_DEMO_CLIENT
-        {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_BIG, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_DEFAULT_IMG, "电话", STR_TELEPHONE, nullptr},
-#if HEART_APPLIST
-        {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_BIG, PNG_APPLIST_SPO2_IMAGE, PNG_APPLIST_DEFAULT_IMG, "血氧", STR_BLOOD_OXYGEN, nullptr},
-#if defined(BOARD_W9)
-        /*W9Slice写宏里面*/
-        {VIEW_BLOOD_PRESSURE_CHECK, PNG_APPLIST_BP_MESSURE_IMAGE_BIG, PNG_APPLIST_BP_MESSURE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "血压测量", STR_BP_CHECK, nullptr},
-#endif
-// #if defined(BOARD_N9) 
-//         /*N9Slice写宏里面*
-// #endif
-    #if defined(BOARD_W9) || defined(BOARD_N9) && 0
-        //ECG
-        {VIEW_ECG, PNG_APPLIST_ECG_IMAGE_BIG, PNG_APPLIST_ECG_IMAGE, PNG_APPLIST_DEFAULT_IMG, "ECG", STR_ECG, nullptr},
-        //情绪
-        {VIEW_EMOTION, PNG_APPLIST_EMOTION_IMAGE_BIG, PNG_APPLIST_EMOTION_IMAGE, PNG_APPLIST_DEFAULT_IMG, "情绪", STR_EMOTION, nullptr},
-        //压力
-        {VIEW_PRESSURE, PNG_APPLIST_STRESS_IMAGE_BIG, PNG_APPLIST_STRESS_IMAGE, PNG_APPLIST_DEFAULT_IMG, "压力", STR_PRESSURE, nullptr},
-        //疲劳度
-        {VIEW_FATIGUE, PNG_APPLIST_FATIGUE_IMAGE_BIG, PNG_APPLIST_FATIGUE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "疲劳度", STR_FATIGUE_LEVEL, nullptr},
-#endif
-        {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_BIG, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_DEFAULT_IMG, "支付宝", STR_ALIPAY, nullptr},
-#endif
-        {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},
-        // {VIEW_CANVAS_TEST, PNG_APPLIST_DISTURB_IMAGE, PNG_APPLIST_DISTURB_IMAGE, PNG_APPLIST_DEFAULT_IMG, "勿扰模式", STR_DO_NOT_DISTURB, nullptr},
-#if 0
-/*屏蔽Slice*/
-        {VIEW_DNOTDISTURB, PNG_APPLIST_DISTURB_IMAGE, PNG_APPLIST_DISTURB_IMAGE, PNG_APPLIST_DEFAULT_IMG, "勿扰模式", STR_DO_NOT_DISTURB, nullptr},
-        {VIEW_ADD_CARD, PNG_APPLIST_CARDSET_IMAGE, PNG_APPLIST_CARDSET_IMAGE, PNG_APPLIST_DEFAULT_IMG, "卡片管理", STR_CARD_MANAGEMENT, nullptr},
-        {VIEW_SET_DIAL_STYLE, PNG_APPLIST_CHANGEDIAL_IMAGE, PNG_APPLIST_CHANGEDIAL_IMAGE, PNG_APPLIST_DEFAULT_IMG, "更换表盘", STR_WATCH_FACE, nullptr},
-        {VIEW_SAVEELE, PNG_APPLIST_SAVEELE_IMAGE, PNG_APPLIST_SAVEELE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "省电模式", STR_POWER_SAVE_MODE, nullptr},
-        {VIEW_SOUND_VIBRATION, PNG_APPLIST_VOICE_IMAGE, PNG_APPLIST_VOICE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "声音", STR_SOUND, nullptr},
-        {VIEW_PHONEDIR, PNG_APPLIST_CALLLOG_IMAGE, PNG_APPLIST_CALLLOG_IMAGE, PNG_APPLIST_DEFAULT_IMG, "常用联系人", STR_FAVORITE_CONTACTS, nullptr},
-        {VIEW_THEME_STYLE, PNG_APPLIST_THEME_IMAGE, PNG_APPLIST_THEME_IMAGE, PNG_APPLIST_DEFAULT_IMG, "显示方式", STR_DISPLAY_MODE, nullptr},
-        {VIEW_BRIGHTNESSLEVEL, PNG_APPLIST_BRIGHTNESSLEVEL_IMAGE, PNG_APPLIST_BRIGHTNESSLEVEL_IMAGE, PNG_APPLIST_DEFAULT_IMG, "亮度调节", STR_BRIGHTNESS_ADJUSTMENT, nullptr},
-        {VIEW_CLASSIC_BLUETOOTH, PNG_APPLIST_BLUETOOTH_IMAGE, PNG_APPLIST_BLUETOOTH_IMAGE, PNG_APPLIST_DEFAULT_IMG, "蓝牙", STR_BLUETOOTH, nullptr},
-        {VIEW_LANGUAGE_SWITCH, PNG_CONNECT_PHONE_IMAGE, PNG_CONNECT_PHONE_IMAGE, PNG_APPLIST_DEFAULT_IMG,"语言切换", nullptr},
-        {VIEW_MAIN_TEMP, PNG_APPLIST_TEMP_IMAGE, PNG_APPLIST_TEMP_IMAGE, PNG_APPLIST_DEFAULT_IMG,"体温", nullptr},
-        {VIEW_OFFLINEVOICE, PNG_APPLIST_VOCASSIST_IMAGE, PNG_APPLIST_VOCASSIST_IMAGE, PNG_APPLIST_DEFAULT_IMG,"语音助手", nullptr},
-        {VIEW_UISAMPLE, PNG_APPLIST_UI_SAMPLE_IMAGE, PNG_APPLIST_UI_SAMPLE_IMAGE, PNG_APPLIST_DEFAULT_IMG,"示例", nullptr},
-        {VIEW_MESSAGE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_DEFAULT_IMG,"信息通知", nullptr},
-        {VIEW_INDOORWALK, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_DEFAULT_IMG,"室内步行", nullptr},
-        {VIEW_INDOORWALK, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_DEFAULT_IMG,"室内步行",STR_ACTIVITY, nullptr},
-#endif
-    };
-
     ApplistModel &ApplistModel::GetInstance(void)
     {
         static ApplistModel instance;
@@ -153,6 +53,58 @@ namespace OHOS
     {
            initFlag = flag;
     }
+    void ApplistModel::sortAppItemsByZhName(AppItem applist_n9[], int appLen) 
+    {
+        typedef struct {
+            char letter;
+            int index;
+        } LetterInfo;
+        
+        LetterInfo temp[APP_MAX_NUM];
+        int count = 0;
+        
+        // 提取zh_name中的大写字母并记录原始位置
+        for (int i = 0; i < appLen; i++) {
+            if (applist_n9[i].zh_name && applist_n9[i].zh_name[0] >= 'A' && 
+                applist_n9[i].zh_name[0] <= 'Z') {
+                temp[count].letter = applist_n9[i].zh_name[0];
+                temp[count].index = i;
+                count++;
+            }
+        }
+        
+        // 自定义排序:先按字母顺序,再按原始位置
+        for (int i = 0; i < count - 1; i++) {
+            for (int j = i + 1; j < count; j++) {
+                if (temp[i].letter > temp[j].letter || 
+                    (temp[i].letter == temp[j].letter && temp[i].index > temp[j].index)) {
+                    LetterInfo t = temp[i];
+                    temp[i] = temp[j];
+                    temp[j] = t;
+                }
+            }
+        }
+        
+        // 创建排序后的AppItem临时数组
+        AppItem sortedItems[APP_MAX_NUM];
+        int sortedIndex = 0;
+        
+        // 先放入排序后的大写字母项
+        for (int i = 0; i < count; i++) {
+            sortedItems[sortedIndex++] = applist_n9[temp[i].index];
+        }
+        
+        // 再放入非大写字母项(保持原顺序)
+        for (int i = 0; i < appLen; i++) {
+            if (!applist_n9[i].zh_name || applist_n9[i].zh_name[0] < 'A' || 
+                applist_n9[i].zh_name[0] > 'Z') {
+                sortedItems[sortedIndex++] = applist_n9[i];
+            }
+        }
+        
+        // 更新原数组
+        memcpy(applist_n9, sortedItems, sizeof(AppItem) * appLen);
+    }
 
     void ApplistModel::ResolvingJSAppItems(void)
     {
@@ -187,6 +139,29 @@ namespace OHOS
             nativeAppNum = 0;
         }
         appLen = nativeAppNum;
+
+#if defined(BOARD_N9)
+        //将applist中数据复制到applist_n9中,applist_n9中数据与applist中数据相同
+        memcpy_s(applist_n9, sizeof(AppItem) * APP_MAX_NUM, applist, sizeof(AppItem) * appLen);
+        //按照英文字母排序
+        sortAppItemsByZhName(applist_n9, appLen);
+        //大写字母按字母表顺序排列,相同字母按原始出现顺序排列
+        //打印排序结果
+        for (uint8_t i = 0; i < appLen; i++)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "applist_n9[%d].zh_name = %s", i, applist_n9[i].zh_name);
+        }
+#elif defined(BOARD_W9)
+        //将applist中数据复制到applist_w9中,applist_w9中数据与applist中数据相同
+        memcpy_s(applist_w9, sizeof(AppItem) * APP_MAX_NUM, applist, sizeof(AppItem) * appLen);
+        //按照英文单词排序
+        sortAppItemsByZhName(applist_w9, appLen);
+        for (uint8_t i = 0; i < appLen; i++)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "applist_w9[%d].en_name = %s", i, applist_w9[i].en_name);
+        }
+#endif
+
 #ifdef JS_ENABLE
         int32_t len = 0;
         ret = BundleMsClient::GetInstance().GetBundleInfos(0, &bundleInfos, &len);
@@ -199,6 +174,22 @@ namespace OHOS
             }
             while (len--)
             {
+                #if defined(BOARD_N9)
+                applist_n9[appLen].id = VIEW_EXTERN_APP;
+                applist_n9[appLen].iconLarge = bundleInfos[len].smallIconPath;
+                applist_n9[appLen].iconSmall = bundleInfos[len].smallIconPath;
+                applist_n9[appLen].iconHexagon = bundleInfos[len].bigIconPath;
+                applist_n9[appLen].label = bundleInfos[len].label;
+                applist_n9[appLen].uid = bundleInfos[len].bundleName;
+                #elif defined(BOARD_W9)
+                applist_w9[appLen].id = VIEW_EXTERN_APP;
+                applist_w9[appLen].iconLarge = bundleInfos[len].smallIconPath;
+                applist_w9[appLen].iconSmall = bundleInfos[len].smallIconPath;
+                applist_w9[appLen].iconHexagon = bundleInfos[len].bigIconPath;
+                applist_w9[appLen].label = bundleInfos[len].label;
+                applist_w9[appLen].uid = bundleInfos[len].bundleName;
+                #endif
+                
                 applist[appLen].id = VIEW_EXTERN_APP;
                 applist[appLen].iconLarge = bundleInfos[len].smallIconPath;
                 applist[appLen].iconSmall = bundleInfos[len].smallIconPath;
@@ -223,7 +214,13 @@ namespace OHOS
 
     const AppItem *ApplistModel::GetApplistItems() const
     {
+        #if defined(BOARD_N9)
+        return applist_n9;
+        #elif defined(BOARD_W9)
+        return applist_w9;
+        #else
         return applist;
+        #endif
     }
 
     uint8 ApplistModel::GetAppListNum() const
index 0481217..6bfbe4a 100644 (file)
@@ -412,8 +412,12 @@ namespace OHOS
                        {ConfigDataType::DATATYPE_STRING,     "dmp_china_mobile_address", "b.fxltsbl.com"},//CONFIGMOFEL_ITEM_DMP_CHINA_MOBILE_ADDRESS 移动入库地址 测试使用适配地址 IP = b.fxltsbl.com 出正式使用商用地址 IP = a.fxltsbl.com
             {ConfigDataType::DATATYPE_INT,     "select_aimodel",       "0"          },//CONFIGMODEL_ITEM_SELECT_AIMODEL
             {ConfigDataType::DATATYPE_BOOL,     "is_first_time_start",       "true"    }, //CONFIGMODEL_ITEM_FIRSTTIMESTART true :手表第一次启动,否则不是
-            {ConfigDataType::DATATYPE_STRING,     "open_ai_api_keys",       "-1"    }, //CONFIGMODEL_ITEM_OPEN_AI_API_KEYS 
+            {ConfigDataType::DATATYPE_STRING,     "open_ai_api_keys",       "-1"    }, //CONFIGMODEL_ITEM_OPEN_AI_API_KEYS
+            #if defined(BOARD_N9)
+            {ConfigDataType::DATATYPE_STRING,     "applist_style",       "list"    }, //CONFIGMODEL_ITEM_APPLIST_STYLE 
+            #else
             {ConfigDataType::DATATYPE_STRING,     "applist_style",       "arc_scale_list"    }, //CONFIGMODEL_ITEM_APPLIST_STYLE 
+            #endif 
             {ConfigDataType::DATATYPE_INT,     "android_or_ios",       "0"    },//CONFIGMODEL_ITEM_BLE_IOS_OR_ANDROID
             {ConfigDataType::DATATYPE_INT,         "br_pari"            ,     "0"},
             {ConfigDataType::DATATYPE_INT,         "ota_upgrade"            ,     "0"},// CONFIGMODEL_ITEM_OTA_UPGRADE