static const int DIAL_SETTING_VALUE_LEN = 64;\r
// 更新主界面卡片需要更新Map\r
const CardInfo cardInfoMap[] = {\r
- {SETCARD, PNG_SET_CARD_MAIN},\r
- {HEART_RATE, PNG_SET_CARD_HEART},\r
- {COMPASS, PNG_SET_CARD_COMPASS},\r
- {MUSIC_PLAYER, PNG_SET_CARD_PLAYER},\r
- {BLOODOXGEN, PNG_SET_CARD_BLOOD},\r
- {WEATHER, PNG_SET_CARD_WEATHER},\r
- {TRAINING, PNG_SET_CARD_TRAIN},\r
- {GOAL, PNG_SET_CARD_ACTIVITY},\r
- {SLEEP, PNG_SET_CARD_SLEEP},\r
+ {HEART_RATE, PNG_SET_CARD_HEART, true},\r
+ {COMPASS, PNG_SET_CARD_COMPASS, true},\r
+ {MUSIC_PLAYER, PNG_SET_CARD_PLAYER, true},\r
+ {BLOODOXGEN, PNG_SET_CARD_BLOOD, false},\r
+ {WEATHER, PNG_SET_CARD_WEATHER, false},\r
+ {TRAINING, PNG_SET_CARD_TRAIN, false},\r
+ {GOAL, PNG_SET_CARD_ACTIVITY, false},\r
+ {SLEEP, PNG_SET_CARD_SLEEP, false},\r
+ /*在前方增加卡片*/\r
+ {SETCARD, PNG_SET_CARD_MAIN, true},\r
+ };\r
+ /*维护卡片*/\r
+ CardInfoSet cardInfoSet[] =\r
+ {\r
+ {HEART_RATE, true},\r
+ {COMPASS, true},\r
+ {MUSIC_PLAYER, true},\r
+ {BLOODOXGEN, false},\r
+ {WEATHER, false},\r
+ {TRAINING, false},\r
+ {GOAL, false},\r
+ {SLEEP, false},\r
+ {SETCARD, true},\r
};\r
/*自定义map?*/\r
const DialInfo dialInfoMap[] = {\r
{DIAL_CLOCK, "KUMI", DEFAULT_DIALPER_PATH, DEFAULT_TASK_PERIOD},\r
};\r
\r
+ const CardInfo printfMap[] = {\r
+ {HEART_RATE, "心率卡片"},\r
+ {COMPASS, "指南针"},\r
+ {MUSIC_PLAYER, "音乐"},\r
+ {BLOODOXGEN, "血氧"},\r
+ {WEATHER, "天气"},\r
+ {TRAINING, "训练"},\r
+ {GOAL, "每日目标"},\r
+ {SLEEP, "睡眠"},\r
+ {SETCARD, "设置卡片"},\r
+ };\r
MainModel::MainModel() {}\r
\r
MainModel::~MainModel() {}\r
static MainModel instance;\r
return instance;\r
}\r
+ /* ---------------------------------- 卡片配置 ---------------------------------- */\r
+ void MainModel::printCardSettings(void)\r
+ {\r
+ uint8_t i;\r
+ printf("_____________________________________________________\r\n");\r
+ for (i = 0; i < cardSettingCount; i++)\r
+ {\r
+ uint8_t cardId = cardSettings[i];\r
+ const char *cardname = getCardNameFromMap(cardId);\r
+ printf("cardSettings[%d]:Id: %d, CardName: %s\r\n", i, cardId, cardname);\r
+ }\r
\r
- const CardInfo *MainModel::GetCardInfo(CardId card) const\r
+ for (uint8_t m = 0; m < (sizeof(cardInfoSet) / sizeof(cardInfoSet[0])); m++)\r
+ {\r
+ // printf("cardInfoSet[%d]:Id %d, Visible: %s\n", m, cardInfoSet[m].id, cardInfoSet[m].isVisible ? "true" : "false");\r
+ }\r
+ printf("_____________________________________________________\r\n");\r
+ }\r
+\r
+ const char *MainModel::getCardNameFromMap(uint8_t cardId) const\r
{\r
- for (uint8_t i = 0; i < (sizeof(cardInfoMap) / sizeof(cardInfoMap[0])); i++)\r
+ for (uint8_t i = 0; i < (sizeof(printfMap) / sizeof(printfMap[0])); i++)\r
{\r
- if (card == cardInfoMap[i].id)\r
+ if (cardId == printfMap[i].id)\r
{\r
- return &cardInfoMap[i];\r
+ return printfMap[i].cardImg;\r
}\r
}\r
- return nullptr;\r
+ return "Unknown";\r
}\r
-\r
- const DialInfo *MainModel::GetDialInfo(DialId dialId) const\r
+ const CardInfo *MainModel::GetCardInfo(CardId card) const\r
{\r
- for (uint8_t i = 0; i < (sizeof(dialInfoMap) / sizeof(dialInfoMap[0])); i++)\r
+ for (uint8_t i = 0; i < (sizeof(cardInfoMap) / sizeof(cardInfoMap[0])); i++)\r
{\r
- if (dialId == dialInfoMap[i].id)\r
+ if (card == cardInfoMap[i].id)\r
{\r
- return &dialInfoMap[i];\r
+ printf("cardInfoMap[%d]:%d\n", i, cardInfoMap[i].id);\r
+ return &cardInfoMap[i];\r
}\r
}\r
return nullptr;\r
}\r
-\r
void MainModel::InitCardSettings(void)\r
{\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitCardSettings");\r
char temp[CARD_SETTING_VALUE_LEN] = {0};\r
int len;\r
int index = 0;\r
len = UtilsGetValue("card_setting", temp, CARD_SETTING_VALUE_LEN);\r
if (len >= 0)\r
{\r
- /* 读取用户card配置 */\r
+ // 更新用户卡片配置及更新卡片可见性\r
char *setBuffer = nullptr;\r
char *setValue = strtok_s(temp, ",", &setBuffer);\r
+ index = 0; // 重置 index\r
while (setValue != nullptr)\r
{\r
if (index >= CARD_SETTING_COUNT_MAX)\r
setValue = strtok_s(nullptr, ",", &setBuffer);\r
}\r
cardSettingCount = index;\r
+\r
+ // 更新卡片可见性\r
+ for (size_t i = 0; i < sizeof(cardInfoSet) / sizeof(cardInfoSet[0]); i++)\r
+ {\r
+ bool visible = false;\r
+ for (size_t j = 0; j < cardSettingCount; j++)\r
+ {\r
+ if (cardInfoSet[i].id == cardSettings[j])\r
+ {\r
+ printf("CardSettings:cardInfoSet[%d] is set cardSettings[%d]\r\n", i, j);\r
+ visible = true;\r
+ break;\r
+ }\r
+ }\r
+ cardInfoSet[i].isVisible = visible;\r
+ }\r
}\r
else\r
{\r
- /* 使用默认card配置 */\r
- cardSettings[index++] = SETCARD; // 默认卡片增加设置卡片\r
- cardSettings[index++] = WATCH_FACE;\r
- cardSettings[index++] = HEART_RATE;\r
- cardSettings[index++] = COMPASS;\r
- cardSettings[index++] = MUSIC_PLAYER;\r
+ for (uint8_t i = 0; i < (sizeof(cardInfoMap) / sizeof(cardInfoMap[0])); i++)\r
+ {\r
+ if (index == 0)\r
+ {\r
+ /* 表盘卡片[不被卡片管理,必须设置] */\r
+ cardSettings[index++] = WATCH_FACE;\r
+ printf("cardSettings[%d] is set [%d]\r\n", index, i, WATCH_FACE);\r
+ }\r
+ if (cardInfoMap[i].isVisible)\r
+ {\r
+ printf("cardSettings[%d] is set cardInfoMap[%d]:%d\r\n", index, i, cardInfoMap[i].id);\r
+ cardSettings[index++] = cardInfoMap[i].id;\r
+ }\r
+ }\r
cardSettingCount = index;\r
}\r
- }\r
\r
+ printCardSettings();\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitCardSettings");\r
+ }\r
void MainModel::DeleteCardSetting(uint8_t index)\r
{\r
+ /*设置卡片类型为false cardsetting 重新遍历map里面为ture的卡片{表盘必须存在}*/\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DeleteCardSetting");\r
+ printf("删除卡片:cardSettings[%d] is %d \r\n", index + 1, cardSettings[index + 1]);\r
+ // printCardSettings();\r
char temp[CARD_SETTING_VALUE_LEN] = {0};\r
- for (uint8_t i = 0; i < cardSettingCount; i++)\r
+\r
+ if (cardSettingCount > CARD_SETTING_COUNT_MAX)\r
{\r
- if (i == index + 1)\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cardSettingCount %d is error", cardSettingCount);\r
+ return;\r
+ }\r
+ // 检查要插入的位置是否有效\r
+ if (index < 0 || index > cardSettingCount)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "index %d is error or cardSettingCount %d is error", index, cardSettingCount);\r
+ return;\r
+ }\r
+ int count = sizeof(cardInfoSet) / sizeof(cardInfoSet[0]);\r
+ printf("count:%d\r\n", count);\r
+ // 设置map里面的属性\r
+ for (uint8_t i = 0; i < count; i++)\r
+ {\r
+ // 需要被删除的卡片\r
+ if (cardSettings[index + 1] == cardInfoSet[i].id)\r
{\r
- uint8_t j = i;\r
- for (; j < cardSettingCount - 1; j++)\r
- {\r
- cardSettings[j] = cardSettings[j + 1];\r
- }\r
- cardSettings[j] = MAX_CARD;\r
- cardSettingCount--;\r
+ cardInfoSet[i].isVisible = false;\r
+ printf("删除卡片:cardSettings[%d] is %d \r\n", index + 1, cardSettings[index + 1]);\r
+ printf("设置删除卡片属性:cardInfoSet[%d] is %d \r\n", i, cardInfoSet[i].isVisible);\r
+ }\r
+ printf("cardInfoSet[%d]:id%d\r\n", i, cardInfoSet[i].id);\r
+ }\r
+ int mapindex = 0;\r
+ // 重新生成cardSettings\r
+ for (uint8_t i = 0; i < CARD_SETTING_COUNT_MAX; i++)\r
+ {\r
+ cardSettings[i] = MAX_CARD;\r
+ }\r
+ printCardSettings();\r
+ for (uint8_t i = 0; i < (sizeof(cardInfoSet) / sizeof(cardInfoSet[0])); i++)\r
+ {\r
+ if (mapindex == 0)\r
+ {\r
+ /* 表盘卡片[不被卡片管理,必须设置] */\r
+ cardSettings[mapindex++] = WATCH_FACE;\r
+ }\r
+ // 设置其他卡片\r
+ if (cardInfoSet[i].isVisible)\r
+ {\r
+ // printf("cardSettings[%d]\r\n", i);\r
+ cardSettings[mapindex++] = cardInfoSet[i].id;\r
}\r
}\r
\r
- for (uint8_t i = 0; i < cardSettingCount; i++)\r
+ cardSettingCount = mapindex;\r
+\r
+ // 更新存储内容\r
+ for (uint8_t k = 0; k < cardSettingCount; k++)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cardSettings[%d] = %d", i, cardSettings[i]);\r
- (void)sprintf_s(temp + strlen(temp), CARD_SETTING_VALUE_LEN, "%d,", cardSettings[i]);\r
+ (void)sprintf_s(temp + strlen(temp), CARD_SETTING_VALUE_LEN, "%d,", cardSettings[k]);\r
}\r
(void)UtilsSetValue("card_setting", temp);\r
+\r
+ // printf("index:%d\r\n", index);\r
+ printCardSettings();\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DeleteCardSetting");\r
}\r
\r
void MainModel::AddCardSetting(uint8_t index)\r
{\r
+ /*设置卡片类型为ture cardsetting 重新遍历map里面为ture的卡片{表盘必须存在}*/\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AddCardSetting");\r
char temp[CARD_SETTING_VALUE_LEN] = {0};\r
- if (cardSettingCount >= CARD_SETTING_COUNT_MAX)\r
+\r
+ if (cardSettingCount > CARD_SETTING_COUNT_MAX)\r
{\r
return;\r
}\r
- for (int i = 0; i < cardSettingCount; i++)\r
+\r
+ // 检查要插入的位置是否有效\r
+ if (index < 0 || index > cardSettingCount)\r
{\r
- if (cardSettings[i] == cardInfoMap[index].id)\r
+ return;\r
+ }\r
+\r
+ // 设置map里面的属性\r
+ int mapindex = 0;\r
+\r
+ for (uint8_t i = 0; i < (sizeof(cardInfoSet) / sizeof(cardInfoSet[0])); i++)\r
+ {\r
+ if (mapindex == 0)\r
{\r
- return;\r
+ /* 表盘卡片[不被卡片管理,必须设置] */\r
+ cardSettings[mapindex++] = WATCH_FACE;\r
+ }\r
+ // 需要被添加的卡片 因为添加是显示所有卡片,所以是使用map\r
+ if (cardInfoMap[index].id == cardInfoSet[i].id)\r
+ {\r
+ cardInfoSet[i].isVisible = true;\r
+ printf("添加卡片:cardSettings[%d] is %d \r\n", index, cardInfoMap[index].id);\r
+ printf("设置添加卡片属性:cardInfoSet[%d] is %d \r\n", i, cardInfoSet[i].isVisible);\r
+ }\r
+ // 设置其他卡片\r
+ if (cardInfoSet[i].isVisible)\r
+ {\r
+ cardSettings[mapindex++] = cardInfoSet[i].id;\r
+ printf("set cardInfoSet[%d]\r\n", i);\r
}\r
}\r
- cardSettings[cardSettingCount++] = cardInfoMap[index].id;\r
- for (uint8_t i = 0; i < cardSettingCount; i++)\r
+ cardSettingCount = mapindex;\r
+\r
+ // 更新存储内容\r
+ for (uint8_t j = 0; j < cardSettingCount; j++)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cardSettings[%d] = %d", i, cardSettings[i]);\r
- (void)sprintf_s(temp + strlen(temp), CARD_SETTING_VALUE_LEN, "%d,", cardSettings[i]);\r
+ (void)sprintf_s(temp + strlen(temp), CARD_SETTING_VALUE_LEN, "%d,", cardSettings[j]);\r
}\r
(void)UtilsSetValue("card_setting", temp);\r
- }\r
\r
+ printf("index:%d\r\n", index);\r
+ printCardSettings();\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AddCardSetting");\r
+ }\r
uint8_t MainModel::GetCardSettingCount(void)\r
{\r
return cardSettingCount;\r
{\r
return cardSettings;\r
}\r
+ bool MainModel::IsFromSetCardView(void) const\r
+ {\r
+ return isFromSetCardView;\r
+ }\r
+\r
+ void MainModel::SetFromSetCardView(bool isFrom)\r
+ {\r
+ isFromSetCardView = isFrom;\r
+ }\r
\r
+ void MainModel::SetFromCardId(uint8_t cardId)\r
+ {\r
+ fromCardId = cardId;\r
+ }\r
+\r
+ uint8_t MainModel::GetFromCardId(void)\r
+ {\r
+ return fromCardId;\r
+ }\r
+\r
+ /* ---------------------------------- 表盘配置 ---------------------------------- */\r
+ const DialInfo *MainModel::GetDialInfo(DialId dialId) const\r
+ {\r
+ for (uint8_t i = 0; i < (sizeof(dialInfoMap) / sizeof(dialInfoMap[0])); i++)\r
+ {\r
+ if (dialId == dialInfoMap[i].id)\r
+ {\r
+ return &dialInfoMap[i];\r
+ }\r
+ }\r
+ return nullptr;\r
+ }\r
void MainModel::InitDialSettingDefault(void)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitDialSettingDefault");\r
return dialSetting;\r
}\r
\r
- bool MainModel::IsFromSetCardView(void) const\r
- {\r
- return isFromSetCardView;\r
- }\r
+}\r
\r
- void MainModel::SetFromSetCardView(bool isFrom)\r
+#if 0\r
+ void MainModel::DeleteCardSetting(uint8_t index)\r
{\r
- isFromSetCardView = isFrom;\r
+ char temp[CARD_SETTING_VALUE_LEN] = {0};\r
+ for (uint8_t i = 0; i < cardSettingCount; i++)\r
+ {\r
+ if (i == index + 1)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "i:%d index:%d", i, index);\r
+ uint8_t j = i;\r
+ for (; j < cardSettingCount - 1; j++)\r
+ {\r
+ cardSettings[j] = cardSettings[j + 1];\r
+ }\r
+ cardSettings[j] = MAX_CARD;\r
+ cardSettingCount--;\r
+ }\r
+ }\r
+\r
+ for (uint8_t i = 0; i < cardSettingCount; i++)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cardSettings[%d] = %d", i, cardSettings[i]);\r
+ (void)sprintf_s(temp + strlen(temp), CARD_SETTING_VALUE_LEN, "%d,", cardSettings[i]);\r
+ }\r
+ (void)UtilsSetValue("card_setting", temp);\r
+\r
+ printf("\r\n***************DeleteCardSetting********************\r\n");\r
+ printCardSettings();\r
+ printf("\r\n_____________________________________________________\r\n");\r
}\r
\r
- void MainModel::SetFromCardId(uint8_t cardId)\r
+ void MainModel::AddCardSetting(uint8_t index)\r
{\r
- fromCardId = cardId;\r
+ char temp[CARD_SETTING_VALUE_LEN] = {0};\r
+ if (cardSettingCount >= CARD_SETTING_COUNT_MAX)\r
+ {\r
+ return;\r
+ }\r
+ for (int i = 0; i < cardSettingCount; i++)\r
+ {\r
+ if (cardSettings[i] == cardInfoMap[index].id)\r
+ {\r
+ return;\r
+ }\r
+ }\r
+ cardSettings[cardSettingCount++] = cardInfoMap[index].id;\r
+ for (uint8_t i = 0; i < cardSettingCount; i++)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cardSettings[%d] = %d", i, cardSettings[i]);\r
+ (void)sprintf_s(temp + strlen(temp), CARD_SETTING_VALUE_LEN, "%d,", cardSettings[i]);\r
+ }\r
+ (void)UtilsSetValue("card_setting", temp);\r
+\r
+ printf("\r\n***************AddCardSetting********************\r\n");\r
+ printCardSettings();\r
}\r
\r
- uint8_t MainModel::GetFromCardId(void)\r
+ else\r
{\r
- return fromCardId;\r
+ /* 使用默认card配置 */\r
+ cardSettings[index++] = WATCH_FACE;\r
+ cardSettings[index++] = HEART_RATE;\r
+ cardSettings[index++] = COMPASS;\r
+ cardSettings[index++] = MUSIC_PLAYER;\r
+ cardSettings[index++] = SETCARD; // 默认卡片增加设置卡片\r
+ cardSettingCount = index;\r
}\r
-}
\ No newline at end of file
+#endif\r