static uint32_t getCapabilities(uint16_t maxInboxSize) { uint32_t serializedCapabilities = 0; serializedCapabilities |= PBL_IF_MICROPHONE_ELSE(0x01, 0x00); serializedCapabilities |= PBL_IF_COLOR_ELSE(0x02, 0x00); serializedCapabilities |= PBL_IF_ROUND_ELSE(0x04, 0x00); serializedCapabilities |= PBL_IF_SMARTSTRAP_ELSE(0x08, 0x00); serializedCapabilities |= PBL_IF_HEALTH_ELSE(0x10, 0x00); serializedCapabilities |= maxInboxSize << 16; return serializedCapabilities; }
/* * Load the saved color settings, or if they don't exist load defaults */ void Settings_loadFromStorage() { // load the default colors globalSettings.timeBgColor = GColorBlack; globalSettings.sidebarTextColor = GColorBlack; #ifdef PBL_COLOR globalSettings.timeColor = GColorOrange; globalSettings.sidebarColor = GColorOrange; #else globalSettings.timeColor = GColorWhite; globalSettings.sidebarColor = GColorLightGray; #endif // set the default widgets globalSettings.widgets[0] = PBL_IF_HEALTH_ELSE(HEALTH, BATTERY_METER); globalSettings.widgets[1] = EMPTY; globalSettings.widgets[2] = DATE; // set default disconnect icon activation globalSettings.activateDisconnectIcon = true; strncpy(globalSettings.altclockName, "ALT", sizeof(globalSettings.altclockName)); globalSettings.decimalSeparator = '.'; globalSettings.showBatteryPct = true; int current_settings_version = persist_exists(SETTINGS_VERSION_KEY) ? persist_read_int(SETTINGS_VERSION_KEY) : -1; APP_LOG(APP_LOG_LEVEL_DEBUG,"current_settings_version: %d", current_settings_version); if( current_settings_version > 5 ) { // new settings format StoredSettings storedSettings; memset(&storedSettings,0,sizeof(StoredSettings)); // if previous version settings are used than only first part of settings would be overwritten, // all the other fields will left filled with zeroes persist_read_data(SETTING_VERSION6_AND_HIGHER, &storedSettings, sizeof(StoredSettings)); globalSettings.timeColor = storedSettings.timeColor; globalSettings.timeBgColor = storedSettings.timeBgColor; globalSettings.sidebarColor = storedSettings.sidebarColor; globalSettings.sidebarTextColor = storedSettings.sidebarTextColor; globalSettings.languageId = storedSettings.languageId; globalSettings.showLeadingZero = storedSettings.showLeadingZero; globalSettings.clockFontId = storedSettings.clockFontId; globalSettings.btVibe = storedSettings.btVibe; globalSettings.hourlyVibe = storedSettings.hourlyVibe; globalSettings.widgets[0] = storedSettings.widgets[0]; globalSettings.widgets[1] = storedSettings.widgets[1]; globalSettings.widgets[2] = storedSettings.widgets[2]; globalSettings.sidebarOnLeft = storedSettings.sidebarOnLeft; globalSettings.useLargeFonts = storedSettings.useLargeFonts; globalSettings.useMetric = storedSettings.useMetric; globalSettings.showBatteryPct = storedSettings.showBatteryPct; globalSettings.disableAutobattery = storedSettings.disableAutobattery; globalSettings.healthUseDistance = storedSettings.healthUseDistance; globalSettings.healthUseRestfulSleep = storedSettings.healthUseRestfulSleep; globalSettings.decimalSeparator = storedSettings.decimalSeparator; memcpy(globalSettings.altclockName, storedSettings.altclockName, 8); globalSettings.altclockOffset = storedSettings.altclockOffset; globalSettings.activateDisconnectIcon = storedSettings.activateDisconnectIcon; } else if( current_settings_version >= 0 ) { // old settings format if(persist_exists(SETTING_TIME_COLOR_KEY) && persist_exists(SETTING_TIME_BG_COLOR_KEY) && persist_exists(SETTING_SIDEBAR_COLOR_KEY) && persist_exists(SETTING_SIDEBAR_TEXT_COLOR_KEY)) { // if the color data exists, load the colors persist_read_data(SETTING_TIME_COLOR_KEY, &globalSettings.timeColor, sizeof(GColor)); persist_read_data(SETTING_TIME_BG_COLOR_KEY, &globalSettings.timeBgColor, sizeof(GColor)); persist_read_data(SETTING_SIDEBAR_COLOR_KEY, &globalSettings.sidebarColor, sizeof(GColor)); persist_read_data(SETTING_SIDEBAR_TEXT_COLOR_KEY, &globalSettings.sidebarTextColor, sizeof(GColor)); } // load widgets if(persist_exists(SETTING_SIDEBAR_WIDGET0_KEY)) { globalSettings.widgets[0] = persist_read_int(SETTING_SIDEBAR_WIDGET0_KEY); globalSettings.widgets[1] = persist_read_int(SETTING_SIDEBAR_WIDGET1_KEY); globalSettings.widgets[2] = persist_read_int(SETTING_SIDEBAR_WIDGET2_KEY); } if(persist_exists(SETTING_ALTCLOCK_NAME_KEY)) { persist_read_string(SETTING_ALTCLOCK_NAME_KEY, globalSettings.altclockName, sizeof(globalSettings.altclockName)); } // load the rest of the settings, using default settings if none exist // all settings except colors automatically return "0" or "false" if // they haven't been set yet, so we don't need to check if they exist globalSettings.useMetric = persist_read_bool(SETTING_USE_METRIC_KEY); globalSettings.sidebarOnLeft = persist_read_bool(SETTING_SIDEBAR_LEFT_KEY); globalSettings.btVibe = persist_read_bool(SETTING_BT_VIBE_KEY); globalSettings.languageId = persist_read_int(SETTING_LANGUAGE_ID_KEY); globalSettings.showLeadingZero = persist_read_int(SETTING_LEADING_ZERO_KEY); globalSettings.showBatteryPct = persist_read_bool(SETTING_SHOW_BATTERY_PCT_KEY); globalSettings.disableAutobattery = persist_read_bool(SETTING_DISABLE_AUTOBATTERY); globalSettings.disableWeather = persist_read_bool(SETTING_DISABLE_WEATHER_KEY); globalSettings.clockFontId = persist_read_int(SETTING_CLOCK_FONT_ID_KEY); globalSettings.hourlyVibe = persist_read_int(SETTING_HOURLY_VIBE_KEY); globalSettings.useLargeFonts = persist_read_bool(SETTING_USE_LARGE_FONTS_KEY); globalSettings.altclockOffset = persist_read_int(SETTING_ALTCLOCK_OFFSET_KEY); globalSettings.healthUseDistance = persist_read_bool(SETTING_HEALTH_USE_DISTANCE); globalSettings.healthUseRestfulSleep = persist_read_bool(SETTING_HEALTH_USE_RESTFUL_SLEEP); if(persist_exists(SETTING_DECIMAL_SEPARATOR_KEY)) { globalSettings.decimalSeparator = (char)persist_read_int(SETTING_DECIMAL_SEPARATOR_KEY); } } Settings_updateDynamicSettings(); }