Esempio n. 1
0
void inbox_received_callback(DictionaryIterator *iterator, void *context) {
    // does this message contain weather information?
    Tuple *weatherTemp_tuple = dict_find(iterator, KEY_TEMPERATURE);
    Tuple *weatherConditions_tuple = dict_find(iterator, KEY_CONDITION_CODE);
    Tuple *weatherIsNight_tuple = dict_find(iterator, KEY_USE_NIGHT_ICON);

    // forecast info
    Tuple *weatherForecastCondition_tuple = dict_find(iterator, KEY_FORECAST_CONDITION);
    Tuple *weatherForecastHigh_tuple = dict_find(iterator, KEY_FORECAST_TEMP_HIGH);
    Tuple *weatherForecastLow_tuple = dict_find(iterator, KEY_FORECAST_TEMP_LOW);

    if(weatherTemp_tuple != NULL && weatherConditions_tuple != NULL && weatherIsNight_tuple != NULL) {
        bool isNight = (bool)weatherIsNight_tuple->value->int32;

        // now set the weather conditions properly
        Weather_weatherInfo.currentTemp = (int)weatherTemp_tuple->value->int32;
        Weather_weatherForecast.highTemp = (int)weatherForecastHigh_tuple->value->int32;
        Weather_weatherForecast.lowTemp = (int)weatherForecastLow_tuple->value->int32;

        Weather_setConditions(weatherConditions_tuple->value->int32, isNight,
                              weatherForecastCondition_tuple->value->int32);

        Weather_saveData();
    }

    // does this message contain new config information?
    Tuple *timeColor_tuple = dict_find(iterator, KEY_SETTING_COLOR_TIME);
    Tuple *bgColor_tuple = dict_find(iterator, KEY_SETTING_COLOR_BG);
    Tuple *sidebarColor_tuple = dict_find(iterator, KEY_SETTING_COLOR_SIDEBAR);
    Tuple *sidebarPos_tuple = dict_find(iterator, KEY_SETTING_SIDEBAR_LEFT);
    Tuple *sidebarTextColor_tuple = dict_find(iterator, KEY_SETTING_SIDEBAR_TEXT_COLOR);
    Tuple *useMetric_tuple = dict_find(iterator, KEY_SETTING_USE_METRIC);
    Tuple *btVibe_tuple = dict_find(iterator, KEY_SETTING_BT_VIBE);
    Tuple *language_tuple = dict_find(iterator, KEY_SETTING_LANGUAGE_ID);
    Tuple *leadingZero_tuple = dict_find(iterator, KEY_SETTING_SHOW_LEADING_ZERO);
    Tuple *batteryPct_tuple = dict_find(iterator, KEY_SETTING_SHOW_BATTERY_PCT);
    Tuple *disableWeather_tuple = dict_find(iterator, KEY_SETTING_DISABLE_WEATHER);
    Tuple *clockFont_tuple = dict_find(iterator, KEY_SETTING_CLOCK_FONT_ID);
    Tuple *hourlyVibe_tuple = dict_find(iterator, KEY_SETTING_HOURLY_VIBE);
    Tuple *onlyShowBatteryWhenLow_tuple = dict_find(iterator, KEY_SETTING_ONLY_SHOW_BATTERY_WHEN_LOW);
    Tuple *useLargeFonts_tuple = dict_find(iterator, KEY_SETTING_USE_LARGE_FONTS);

    Tuple *widget0Id_tuple = dict_find(iterator, KEY_WIDGET_0_ID);
    Tuple *widget1Id_tuple = dict_find(iterator, KEY_WIDGET_1_ID);
    Tuple *widget2Id_tuple = dict_find(iterator, KEY_WIDGET_2_ID);

    Tuple *altclockName_tuple = dict_find(iterator, KEY_SETTING_ALTCLOCK_NAME);
    Tuple *altclockOffset_tuple = dict_find(iterator, KEY_SETTING_ALTCLOCK_OFFSET);

    if(timeColor_tuple != NULL) {
        globalSettings.timeColor = GColorFromHEX(timeColor_tuple->value->int32);
    }

    if(bgColor_tuple != NULL) {
        globalSettings.timeBgColor = GColorFromHEX(bgColor_tuple->value->int32);
    }

    if(sidebarColor_tuple != NULL) {
        globalSettings.sidebarColor = GColorFromHEX(sidebarColor_tuple->value->int32);
    }

    if(sidebarTextColor_tuple != NULL) {
        // text can only be black or white, so we'll enforce that here
        globalSettings.sidebarTextColor = GColorFromHEX(sidebarTextColor_tuple->value->int32);
    }

    if(sidebarPos_tuple != NULL) {
        globalSettings.sidebarOnLeft = (bool)sidebarPos_tuple->value->int8;
    }

    if(useMetric_tuple != NULL) {
        globalSettings.useMetric = (bool)useMetric_tuple->value->int8;
    }

    if(btVibe_tuple != NULL) {
        globalSettings.btVibe = (bool)btVibe_tuple->value->int8;
    }

    if(leadingZero_tuple != NULL) {
        globalSettings.showLeadingZero = (bool)leadingZero_tuple->value->int8;
    }

    if(batteryPct_tuple != NULL) {
        globalSettings.showBatteryPct = (bool)batteryPct_tuple->value->int8;
    }

    if(onlyShowBatteryWhenLow_tuple != NULL) {
        globalSettings.onlyShowBatteryWhenLow = (bool)onlyShowBatteryWhenLow_tuple->value->int8;
    }

    if(disableWeather_tuple != NULL) {
        globalSettings.disableWeather = (bool)disableWeather_tuple->value->int8;
    }

    if(clockFont_tuple != NULL) {
        globalSettings.clockFontId = (bool)clockFont_tuple->value->int8;
    }

    if(useLargeFonts_tuple != NULL) {
        globalSettings.useLargeFonts = (bool)useLargeFonts_tuple->value->int8;
    }

    if(hourlyVibe_tuple != NULL) {
        globalSettings.hourlyVibe = hourlyVibe_tuple->value->int8;
    }

    if(language_tuple != NULL) {
        globalSettings.languageId = language_tuple->value->int8;
    }

    if(language_tuple != NULL) {
        globalSettings.languageId = language_tuple->value->int8;
    }

    if(widget0Id_tuple != NULL) {
        globalSettings.widgets[0] = widget0Id_tuple->value->int8;
    }

    if(widget1Id_tuple != NULL) {
        globalSettings.widgets[1] = widget1Id_tuple->value->int8;
    }

    if(widget2Id_tuple != NULL) {
        globalSettings.widgets[2] = widget2Id_tuple->value->int8;
    }

    if(altclockName_tuple != NULL) {
        strncpy(globalSettings.altclockName, altclockName_tuple->value->cstring, sizeof(globalSettings.altclockName));
    }

    if(altclockOffset_tuple != NULL) {
        globalSettings.altclockOffset = altclockOffset_tuple->value->int8;
    }

    // save the new settings to persistent storage
    Settings_saveToStorage();

    // notify the main screen, in case something changed
    message_processed_callback();
}
Esempio n. 2
0
void Settings_deinit() {
  // write all settings to storage
  Settings_saveToStorage();
}