diff options
author | Luis Vidal <lvidal@cyngn.com> | 2016-03-29 14:37:07 -0700 |
---|---|---|
committer | Luis Vidal <lvidal@cyngn.com> | 2016-04-22 15:18:37 -0700 |
commit | c56159a628e4b7033cc33bac7df33a55f9b421a7 (patch) | |
tree | abcf47dd59ec89bd2457abf5e351b8362e2d4036 /src/com/cyanogenmod/lockclock/weather/WeatherSourceListenerService.java | |
parent | 8af8dab921671bdcb0cf0472c1a96d068ac6a640 (diff) | |
download | android_packages_apps_LockClock-c56159a628e4b7033cc33bac7df33a55f9b421a7.tar.gz android_packages_apps_LockClock-c56159a628e4b7033cc33bac7df33a55f9b421a7.tar.bz2 android_packages_apps_LockClock-c56159a628e4b7033cc33bac7df33a55f9b421a7.zip |
Refactor cLock to use the new Weather API
- Content provider was removed
- Weather sources (Yahoo and OpenWeatherMap) were removed. Those
providers will reside in their own package.
- cLock was refactored to use the Weather API to process weather
updates and city name disambiguation
- cLock will let the active weather service provider decide
whether back to back requests are OK. In other words, cLock
does not enforce the 10 min wait period between requests anymore
TICKET: CYNGNOS-2116
Change-Id: I87ccd5727013dbbd7e96ce0a8e3d4f766f823072
Diffstat (limited to 'src/com/cyanogenmod/lockclock/weather/WeatherSourceListenerService.java')
-rw-r--r-- | src/com/cyanogenmod/lockclock/weather/WeatherSourceListenerService.java | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/com/cyanogenmod/lockclock/weather/WeatherSourceListenerService.java b/src/com/cyanogenmod/lockclock/weather/WeatherSourceListenerService.java new file mode 100644 index 0000000..4bc816a --- /dev/null +++ b/src/com/cyanogenmod/lockclock/weather/WeatherSourceListenerService.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2016 The CyanogenMod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.cyanogenmod.lockclock.weather; + +import android.app.Service; +import android.content.Context; +import android.content.Intent; +import android.os.IBinder; +import android.util.Log; +import com.cyanogenmod.lockclock.ClockWidgetService; +import com.cyanogenmod.lockclock.misc.Constants; +import com.cyanogenmod.lockclock.misc.Preferences; +import cyanogenmod.weather.CMWeatherManager; + +public class WeatherSourceListenerService extends Service + implements CMWeatherManager.WeatherServiceProviderChangeListener { + + private static final String TAG = WeatherSourceListenerService.class.getSimpleName(); + private static final boolean D = Constants.DEBUG; + private Context mContext; + + @Override + public void onWeatherServiceProviderChanged(String providerLabel) { + if (D) Log.d(TAG, "Weather Source changed " + providerLabel); + Preferences.setWeatherSource(mContext, providerLabel); + Preferences.setCachedWeatherInfo(mContext, 0, null); + //The data contained in WeatherLocation is tightly coupled to the weather provider + //that generated that data, so we need to clear the cached weather location and let the new + //weather provider regenerate the data if the user decides to use custom location again + Preferences.setCustomWeatherLocationCity(mContext, null); + Preferences.setCustomWeatherLocation(mContext, null); + Preferences.setUseCustomWeatherLocation(mContext, false); + + //Refresh the widget + mContext.startService(new Intent(mContext, ClockWidgetService.class) + .setAction(ClockWidgetService.ACTION_REFRESH)); + + if (providerLabel != null) { + mContext.startService(new Intent(mContext, WeatherUpdateService.class) + .putExtra(WeatherUpdateService.ACTION_FORCE_UPDATE, true)); + } + } + + @Override + public void onCreate() { + mContext = getApplicationContext(); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + final CMWeatherManager weatherManager + = CMWeatherManager.getInstance(mContext); + weatherManager.registerWeatherServiceProviderChangeListener(this); + if (D) Log.d(TAG, "Listener registered"); + return START_STICKY; + } + + @Override + public void onDestroy() { + final CMWeatherManager weatherManager = CMWeatherManager.getInstance(mContext); + weatherManager.unregisterWeatherServiceProviderChangeListener(this); + if (D) Log.d(TAG, "Listener unregistered"); + } + + @Override + public IBinder onBind(Intent intent) { + return null; + } +} |