Changeset View
Changeset View
Standalone View
Standalone View
applets/weather/package/contents/ui/main.qml
Show All 36 Lines | 25 | Item { | |||
---|---|---|---|---|---|
37 | 37 | | |||
38 | readonly property int invalidUnit: -1 //TODO: make KUnitConversion::InvalidUnit usable here | 38 | readonly property int invalidUnit: -1 //TODO: make KUnitConversion::InvalidUnit usable here | ||
39 | 39 | | |||
40 | // model providing final display strings for observation properties | 40 | // model providing final display strings for observation properties | ||
41 | readonly property var observationModel: { | 41 | readonly property var observationModel: { | ||
42 | var model = {}; | 42 | var model = {}; | ||
43 | var data = weatherDataSource.currentData; | 43 | var data = weatherDataSource.currentData; | ||
44 | 44 | | |||
45 | var reportTemperatureUnit = (data && data["Temperature Unit"]) || invalidUnit; | 45 | function getUnit(key) { | ||
46 | var reportPressureUnit = (data && data["Pressure Unit"]) || invalidUnit; | 46 | return (data && data[key]) || invalidUnit; | ||
47 | var reportVisibilityUnit = (data && data["Visibility Unit"]) || invalidUnit; | 47 | } | ||
48 | var reportWindSpeedUnit = (data && data["Wind Speed Unit"]) || invalidUnit; | 48 | function getString(key) { | ||
49 | return (data && data[key]) || ""; | ||||
50 | } | ||||
51 | function getNumber(key) { | ||||
52 | var number = data && data[key]; | ||||
53 | if (number !== 0) { | ||||
54 | number = number || null; | ||||
55 | } | ||||
56 | return number; | ||||
57 | } | ||||
58 | function getNumberOrString(key) { | ||||
59 | var number = data && data[key]; | ||||
60 | if (number !== 0) { | ||||
61 | number = number || null; | ||||
62 | } | ||||
63 | return number; | ||||
64 | } | ||||
65 | | ||||
66 | var reportTemperatureUnit = getUnit("Temperature Unit"); | ||||
67 | var reportPressureUnit = getUnit("Pressure Unit"); | ||||
68 | var reportVisibilityUnit = getUnit("Visibility Unit"); | ||||
69 | var reportWindSpeedUnit = getUnit("Wind Speed Unit"); | ||||
49 | 70 | | |||
50 | model["conditions"] = (data && data["Current Conditions"]) || ""; | 71 | model["conditions"] = getString("Current Conditions"); | ||
51 | 72 | | |||
52 | var conditionIconName = (data && data["Condition Icon"]) || null; | 73 | var conditionIconName = getString("Condition Icon"); | ||
53 | model["conditionIconName"] = conditionIconName ? Util.existingWeatherIconName(conditionIconName) : "weather-none-available"; | 74 | model["conditionIconName"] = conditionIconName ? Util.existingWeatherIconName(conditionIconName) : "weather-none-available"; | ||
54 | 75 | | |||
55 | var temperature = (data && data["Temperature"]) || null; | 76 | var temperature = getNumber("Temperature"); | ||
56 | model["temperature"] = temperature !== null ? Util.temperatureToDisplayString(displayTemperatureUnit, temperature, reportTemperatureUnit) : ""; | 77 | model["temperature"] = temperature !== null ? Util.temperatureToDisplayString(displayTemperatureUnit, temperature, reportTemperatureUnit) : ""; | ||
57 | 78 | | |||
58 | var windchill = (data && data["Windchill"]) || null; | 79 | var windchill = getNumber("Windchill"); | ||
59 | // Use temperature unit to convert windchill temperature | 80 | // Use temperature unit to convert windchill temperature | ||
60 | // we only show degrees symbol not actual temperature unit | 81 | // we only show degrees symbol not actual temperature unit | ||
61 | model["windchill"] = windchill !== null ? | 82 | model["windchill"] = windchill !== null ? | ||
62 | Util.temperatureToDisplayString(displayTemperatureUnit, windchill, reportTemperatureUnit, false, true) : | 83 | Util.temperatureToDisplayString(displayTemperatureUnit, windchill, reportTemperatureUnit, false, true) : | ||
63 | ""; | 84 | ""; | ||
64 | 85 | | |||
65 | var humidex = (data && data["Humidex"]) || null; | 86 | var humidex = getNumber("Humidex"); | ||
66 | // TODO: this seems wrong, does the humidex have temperature as units? | 87 | // TODO: this seems wrong, does the humidex have temperature as units? | ||
67 | // Use temperature unit to convert humidex temperature | 88 | // Use temperature unit to convert humidex temperature | ||
68 | // we only show degrees symbol not actual temperature unit | 89 | // we only show degrees symbol not actual temperature unit | ||
69 | model["humidex"] = humidex !== null ? | 90 | model["humidex"] = humidex !== null ? | ||
70 | Util.temperatureToDisplayString(displayTemperatureUnit, humidex, reportTemperatureUnit, false, true) : | 91 | Util.temperatureToDisplayString(displayTemperatureUnit, humidex, reportTemperatureUnit, false, true) : | ||
71 | ""; | 92 | ""; | ||
72 | 93 | | |||
73 | var dewpoint = (data && data["Dewpoint"]) || null; | 94 | var dewpoint = getNumber("Dewpoint"); | ||
74 | model["dewpoint"] = dewpoint !== null ? | 95 | model["dewpoint"] = dewpoint !== null ? | ||
75 | Util.temperatureToDisplayString(displayTemperatureUnit, dewpoint, reportTemperatureUnit) : ""; | 96 | Util.temperatureToDisplayString(displayTemperatureUnit, dewpoint, reportTemperatureUnit) : ""; | ||
76 | 97 | | |||
77 | var pressure = (data && data["Pressure"]) || null; | 98 | var pressure = getNumber("Pressure"); | ||
78 | model["pressure"] = pressure ? | 99 | model["pressure"] = pressure ? | ||
79 | Util.valueToDisplayString(displayPressureUnit, pressure, reportPressureUnit, 2) : ""; | 100 | Util.valueToDisplayString(displayPressureUnit, pressure, reportPressureUnit, 2) : ""; | ||
80 | 101 | | |||
81 | var pressureTendency = (data && data["Pressure Tendency"]) || null; | 102 | var pressureTendency = (data && data["Pressure Tendency"]) || null; | ||
82 | model["pressureTendency"] = pressureTendency ? i18nc("pressure tendency", pressureTendency) : ""; | 103 | model["pressureTendency"] = pressureTendency ? i18nc("pressure tendency", pressureTendency) : ""; | ||
83 | 104 | | |||
84 | var visibility = (data && data["Visibility"]) || null; | 105 | var visibility = getNumberOrString("Visibility"); | ||
85 | model["visibility"] = visibility ? | 106 | model["visibility"] = visibility ? | ||
86 | ((reportVisibilityUnit !== invalidUnit) ? | 107 | ((reportVisibilityUnit !== invalidUnit) ? | ||
87 | Util.valueToDisplayString(displayVisibilityUnit, visibility, reportVisibilityUnit, 1) : visibility) : | 108 | Util.valueToDisplayString(displayVisibilityUnit, visibility, reportVisibilityUnit, 1) : visibility) : | ||
88 | ""; | 109 | ""; | ||
89 | 110 | | |||
90 | var humidity = (data && data["Humidity"]) || null; | 111 | var humidity = getNumber("Humidity"); | ||
91 | model["humidity"] = humidity ? Util.percentToDisplayString(humidity) : ""; | 112 | model["humidity"] = humidity ? Util.percentToDisplayString(humidity) : ""; | ||
92 | 113 | | |||
93 | // TODO: missing check for windDirection validness | 114 | // TODO: missing check for windDirection validness | ||
94 | var windDirection = (data && data["Wind Direction"]) || null; | 115 | var windDirection = getString("Wind Direction"); | ||
95 | var windSpeed = (data && data["Wind Speed"]) || null; | 116 | var windSpeed = getNumberOrString("Wind Speed"); | ||
96 | var windSpeedText; | 117 | var windSpeedText; | ||
97 | if (windSpeed !== null && windSpeed !== "") { | 118 | if (windSpeed !== null && windSpeed !== "") { | ||
98 | var windSpeedNumeric = (typeof windSpeed !== 'number') ? parseFloat(windSpeed) : windSpeed; | 119 | var windSpeedNumeric = (typeof windSpeed !== 'number') ? parseFloat(windSpeed) : windSpeed; | ||
99 | if (!isNaN(windSpeedNumeric)) { | 120 | if (!isNaN(windSpeedNumeric)) { | ||
100 | if (windSpeedNumeric !== 0) { | 121 | if (windSpeedNumeric !== 0) { | ||
101 | windSpeedText = Util.valueToDisplayString(displaySpeedUnit, windSpeedNumeric, reportWindSpeedUnit, 1); | 122 | windSpeedText = Util.valueToDisplayString(displaySpeedUnit, windSpeedNumeric, reportWindSpeedUnit, 1); | ||
102 | } else { | 123 | } else { | ||
103 | windSpeedText = i18nc("Wind condition", "Calm"); | 124 | windSpeedText = i18nc("Wind condition", "Calm"); | ||
104 | } | 125 | } | ||
105 | } else { | 126 | } else { | ||
106 | // TODO: i18n? | 127 | // TODO: i18n? | ||
107 | windSpeedText = windSpeed; | 128 | windSpeedText = windSpeed; | ||
108 | } | 129 | } | ||
109 | } | 130 | } | ||
110 | model["windSpeed"] = windSpeedText || ""; | 131 | model["windSpeed"] = windSpeedText || ""; | ||
111 | model["windDirectionId"] = windDirection || ""; | 132 | model["windDirectionId"] = windDirection; | ||
112 | model["windDirection"] = windDirection ? i18nc("wind direction", windDirection) : ""; | 133 | model["windDirection"] = windDirection ? i18nc("wind direction", windDirection) : ""; | ||
113 | 134 | | |||
114 | var windGust = (data && data["Wind Gust"]) || null; | 135 | var windGust = getNumber("Wind Gust"); | ||
115 | model["windGust"] = windGust ? Util.valueToDisplayString(displaySpeedUnit, windGust, reportWindSpeedUnit, 1) : ""; | 136 | model["windGust"] = windGust ? Util.valueToDisplayString(displaySpeedUnit, windGust, reportWindSpeedUnit, 1) : ""; | ||
116 | 137 | | |||
117 | return model; | 138 | return model; | ||
118 | } | 139 | } | ||
119 | 140 | | |||
120 | readonly property var generalModel: { | 141 | readonly property var generalModel: { | ||
121 | var model = {}; | 142 | var model = {}; | ||
122 | var data = weatherDataSource.currentData; | 143 | var data = weatherDataSource.currentData; | ||
123 | 144 | | |||
124 | var todayForecastTokens = ((data && data["Short Forecast Day 0"]) || "").split("|"); | 145 | function getString(key) { | ||
146 | return (data && data[key]) || ""; | ||||
147 | } | ||||
125 | 148 | | |||
126 | model["location"] = (data && data["Place"]) || ""; | 149 | var todayForecastTokens = getString("Short Forecast Day 0").split("|"); | ||
127 | model["courtesy"] = (data && data["Credit"]) || ""; | | |||
128 | model["creditUrl"] = (data && data["Credit Url"]) || ""; | | |||
129 | 150 | | |||
130 | var forecastDayCount = parseInt((data && data["Total Weather Days"]) || ""); | 151 | model["location"] = getString("Place"); | ||
152 | model["courtesy"] = getString("Credit"); | ||||
153 | model["creditUrl"] = getString("Credit Url"); | ||||
154 | | ||||
155 | var forecastDayCount = parseInt(getString("Total Weather Days")); | ||||
131 | var forecastTitle; | 156 | var forecastTitle; | ||
132 | if (!isNaN(forecastDayCount) && forecastDayCount > 0) { | 157 | if (!isNaN(forecastDayCount) && forecastDayCount > 0) { | ||
133 | forecastTitle = i18ncp("Forecast period timeframe", "1 Day", "%1 Days", forecastDayCount); | 158 | forecastTitle = i18ncp("Forecast period timeframe", "1 Day", "%1 Days", forecastDayCount); | ||
134 | } | 159 | } | ||
135 | model["forecastTitle"] = forecastTitle || ""; | 160 | model["forecastTitle"] = forecastTitle || ""; | ||
136 | 161 | | |||
137 | var conditionIconName = observationModel.conditionIconName; | 162 | var conditionIconName = observationModel.conditionIconName; | ||
138 | if (!conditionIconName || | 163 | if (!conditionIconName || | ||
▲ Show 20 Lines • Show All 295 Lines • Show Last 20 Lines |