[gnome-shell] weather: Track whether a location was set



commit d393ca4f09cc04d28eed92a2bc57fb01447a16b1
Author: Florian Müllner <fmuellner gnome org>
Date:   Sun Mar 19 14:42:35 2017 +0100

    weather: Track whether a location was set
    
    Setting GWeatherInfo:location to null helpfully doesn't mean
    "no location", but "NYC". This obviously isn't what we want
    to show users, so track the location validity separately and
    consider it when updating the label shown to users.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=780252

 js/misc/weather.js |    9 +++++++++
 js/ui/dateMenu.js  |    3 +++
 2 files changed, 12 insertions(+), 0 deletions(-)
---
diff --git a/js/misc/weather.js b/js/misc/weather.js
index 36346ad..775d053 100644
--- a/js/misc/weather.js
+++ b/js/misc/weather.js
@@ -17,6 +17,7 @@ const WeatherClient = new Lang.Class({
 
     _init: function() {
         this._loading = false;
+        this._locationValid = false;
         this._lastUpdate = GLib.DateTime.new_from_unix_local(0);
 
         this._useAutoLocation = false;
@@ -55,6 +56,10 @@ const WeatherClient = new Lang.Class({
         return this._loading;
     },
 
+    get hasLocation() {
+        return this._locationValid;
+    },
+
     get info() {
         return this._weatherInfo;
     },
@@ -64,6 +69,9 @@ const WeatherClient = new Lang.Class({
     },
 
     update: function() {
+        if (!this._locationValid)
+            return;
+
         let now = GLib.DateTime.new_now_local();
         // Update without loading indication if the current info is recent enough
         if (this._weatherInfo.is_valid() &&
@@ -101,6 +109,7 @@ const WeatherClient = new Lang.Class({
 
         this._weatherInfo.abort();
         this._weatherInfo.set_location(location);
+        this._locationValid = (location != null);
 
         if (location)
             this._loadInfo();
diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js
index eec1985..18b5b0b 100644
--- a/js/ui/dateMenu.js
+++ b/js/ui/dateMenu.js
@@ -296,6 +296,9 @@ const WeatherSection = new Lang.Class({
     },
 
     _getLabelText: function() {
+        if (!this._weatherClient.hasLocation)
+            return _("Select a location…");
+
         if (this._weatherClient.loading)
             return _("Loading…");
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]