weather: Disentangle _useAutoLocation from Weather setting

We currently use automatic location for weather forecasts if the
corresponding Weather setting is set, however we should take other
factors into account as well:

 - whether location services are enabled at all
 - whether Weather has been authorized to use them

In preparation of these changes, track the setting's value in a
separate property and make _useAutoLocation a getter, so we can
extend it with additional conditions easily.

https://bugzilla.gnome.org/show_bug.cgi?id=780252
This commit is contained in:
Florian Müllner 2017-03-19 16:34:53 +01:00
parent d393ca4f09
commit 7c9f76944b

View File

@ -20,7 +20,7 @@ const WeatherClient = new Lang.Class({
this._locationValid = false;
this._lastUpdate = GLib.DateTime.new_from_unix_local(0);
this._useAutoLocation = false;
this._autoLocationRequested = false;
this._mostRecentLocation = null;
this._gclueService = null;
@ -81,6 +81,10 @@ const WeatherClient = new Lang.Class({
this._loadInfo();
},
get _useAutoLocation() {
return this._autoLocationRequested;
},
_loadInfo: function() {
let id = this._weatherInfo.connect('updated', () => {
this._weatherInfo.disconnect(id);
@ -165,10 +169,10 @@ const WeatherClient = new Lang.Class({
_onAutomaticLocationChanged: function(settings, key) {
let useAutoLocation = settings.get_boolean(key);
if (this._useAutoLocation == useAutoLocation)
if (this._autoLocationRequested == useAutoLocation)
return;
this._useAutoLocation = useAutoLocation;
this._autoLocationRequested = useAutoLocation;
this._updateLocationMonitoring();