aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/cyanogenmod/lockclock/weather/WeatherSourceListenerService.java
diff options
context:
space:
mode:
authorLuis Vidal <lvidal@cyngn.com>2016-03-29 14:37:07 -0700
committerLuis Vidal <lvidal@cyngn.com>2016-04-22 15:18:37 -0700
commitc56159a628e4b7033cc33bac7df33a55f9b421a7 (patch)
treeabcf47dd59ec89bd2457abf5e351b8362e2d4036 /src/com/cyanogenmod/lockclock/weather/WeatherSourceListenerService.java
parent8af8dab921671bdcb0cf0472c1a96d068ac6a640 (diff)
downloadandroid_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.java83
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;
+ }
+}