package com.hourlyweather.appwidget; import java.text.DecimalFormat; import org.joda.time.MutableDateTime; import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.DateTimeFormatterBuilder; import android.content.ContentResolver; import com.hourlyweather.SettingsManager; import com.hourlyweather.forecast.ForecastHour; /** * Formats the Forecast details based on the current settings * @author dhgonsalves * */ public class WidgetForecastFormatter { private SettingsManager settingsManager; private DateTimeFormatter twelveHourClockFormat; private DateTimeFormatter twentyFourHourClockFormat; private DecimalFormat oneDecimalFormat; public WidgetForecastFormatter(SettingsManager settingsManager) { this.settingsManager = settingsManager; //setup the clock type formatters twelveHourClockFormat = new DateTimeFormatterBuilder().appendPattern("hh aa").toFormatter(); twentyFourHourClockFormat = new DateTimeFormatterBuilder().appendPattern("HH:00").toFormatter(); oneDecimalFormat = new DecimalFormat("#.#"); } /** * Returns a string thats is formatted to meet the current settings * * @param forecastTime * @return */ public String formatTemperature(ForecastHour forecastHour) { //convert celcius to farenheit and format if (settingsManager.isTemperatureUnitFarenheit()) return oneDecimalFormat.format(1.8 * forecastHour.getTemp() + 32) + "\u2109"; //if not format as celcius return forecastHour.getTemp() + "\u2103"; } /** * Returns a string thats is formatted to meet the current settings * * @param forecastTime * @return */ public String formatTime(MutableDateTime forecastTime, ContentResolver contentResolver) { //format as 12 hour clock if configured if (settingsManager.isClockType12(contentResolver)) return twelveHourClockFormat.print(forecastTime); //if not then format as a 24 hour clock return twentyFourHourClockFormat.print(forecastTime); } }