[gnome-shell] dateMenu: Use non-capitalized forecasts where appropriate
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] dateMenu: Use non-capitalized forecasts where appropriate
- Date: Mon, 21 Aug 2017 13:46:18 +0000 (UTC)
commit 23393514997161a0f2565a1afbab0e55130386e4
Author: Florian Müllner <fmuellner gnome org>
Date: Sat Feb 25 18:25:07 2017 +0100
dateMenu: Use non-capitalized forecasts where appropriate
GWeather now provides us with API to request strings that don't
use sentence capitalization, so we can use it for summaries that
don't start a sentence to make for more natural phrases.
https://bugzilla.gnome.org/show_bug.cgi?id=779873
js/ui/dateMenu.js | 27 ++++++++++++++++++---------
1 files changed, 18 insertions(+), 9 deletions(-)
---
diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js
index 4f9cf70..18f2f0e 100644
--- a/js/ui/dateMenu.js
+++ b/js/ui/dateMenu.js
@@ -233,11 +233,16 @@ var WeatherSection = new Lang.Class({
this._sync();
},
- _getSummary: function(info) {
- let summary = info.get_conditions();
- if (summary == '-')
- return info.get_sky();
- return summary;
+ _getSummary: function(info, capitalize=false) {
+ let options = capitalize ? GWeather.FormatOptions.SENTENCE_CAPITALIZATION
+ : GWeather.FormatOptions.NO_CAPITALIZATION;
+
+ let [ok, phenom, qualifier] = info.get_value_conditions();
+ if (ok)
+ return GWeather.conditions_to_string_full(phenom, qualifier, options);
+
+ let [, sky] = info.get_value_sky();
+ return GWeather.sky_to_string_full(sky, options);
},
_sameSummary: function(info1, info2) {
@@ -255,10 +260,10 @@ var WeatherSection = new Lang.Class({
let info = this._weatherClient.info;
let forecasts = info.get_forecast_list();
if (forecasts.length == 0) // No forecasts, just current conditions
- return '%s.'.format(this._getSummary(info));
+ return '%s.'.format(this._getSummary(info, true));
let current = info;
- let summaries = [this._getSummary(info)];
+ let infos = [info];
for (let i = 0; i < forecasts.length; i++) {
let [ok, timestamp] = forecasts[i].get_value_update();
if (!_isToday(new Date(timestamp * 1000)))
@@ -268,12 +273,12 @@ var WeatherSection = new Lang.Class({
continue; // Ignore consecutive runs of equal summaries
current = forecasts[i];
- if (summaries.push(this._getSummary(current)) == 3)
+ if (infos.push(current) == 3)
break; // Use a maximum of three summaries
}
let fmt;
- switch(summaries.length) {
+ switch(infos.length) {
/* Translators: %s is a weather condition like "Clear sky"; see
libgweather for the possible condition strings. If at all
possible, the sentence should match the grammatical case etc. of
@@ -292,6 +297,10 @@ var WeatherSection = new Lang.Class({
the inserted conditions. */
case 3: fmt = _("%s, then %s, followed by %s later."); break;
}
+ let summaries = infos.map((info, i) => {
+ let capitalize = i == 0 && fmt.startsWith('%s');
+ return this._getSummary(info, capitalize);
+ });
return String.prototype.format.apply(fmt, summaries);
},
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]