aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdnan Begovic <adnan@cyngn.com>2016-04-14 16:49:15 -0700
committerAdnan Begovic <adnan@cyngn.com>2016-04-18 13:19:57 -0700
commit2c397d79b9e64a0b314426c25c52db1c4e6bc607 (patch)
treec72d6b8b2303cd0bca9a38628ca486e204b0db91
parent80cf30c8395861bef92c6f26c34fd8cd15fe1fd0 (diff)
downloadandroid_packages_apps_WundergroundWeatherProvider-2c397d79b9e64a0b314426c25c52db1c4e6bc607.tar.gz
android_packages_apps_WundergroundWeatherProvider-2c397d79b9e64a0b314426c25c52db1c4e6bc607.tar.bz2
android_packages_apps_WundergroundWeatherProvider-2c397d79b9e64a0b314426c25c52db1c4e6bc607.zip
WundergroundCM: Add settings activity.
The settings activity contains means to introduce an api key as well as intent out to a browser to create an account to get an api key. Change-Id: Ied3606e5abf99331d5e0e61cd4d9872ea5e4bb52
-rw-r--r--app/src/main/AndroidManifest.xml8
-rw-r--r--app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WUBasePreferenceActivity.java59
-rw-r--r--app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WUSettingsPreferenceFragment.java27
-rw-r--r--app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WundergroundModule.java14
-rw-r--r--app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WundergroundWeatherProviderService.java3
-rw-r--r--app/src/main/res/values/strings.xml6
-rw-r--r--app/src/main/res/xml/preferences.xml26
-rw-r--r--app/src/main/res/xml/weather_settings_service.xml3
8 files changed, 112 insertions, 34 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2375ced..ff36cc9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -36,11 +36,19 @@
</intent-filter>
</activity>
+ <activity android:name=".WUBasePreferenceActivity"
+ android:exported="true"
+ android:label="@string/app_name"/>
+
<service android:name=".WundergroundWeatherProviderService"
android:permission="cyanogenmod.permission.BIND_WEATHER_PROVIDER_SERVICE">
<intent-filter>
<action android:name="cyanogenmod.weatherservice.WeatherProviderService" />
</intent-filter>
+
+ <meta-data
+ android:name="cyanogenmod.weatherservice"
+ android:resource="@xml/weather_settings_service" />
</service>
</application>
diff --git a/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WUBasePreferenceActivity.java b/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WUBasePreferenceActivity.java
index 31fdacc..f49f73a 100644
--- a/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WUBasePreferenceActivity.java
+++ b/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WUBasePreferenceActivity.java
@@ -15,13 +15,70 @@
*/
package org.cyanogenmod.wundergroundcmweatherprovider;
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.net.Uri;
import android.os.Bundle;
+import android.preference.EditTextPreference;
+import android.preference.Preference;
import android.preference.PreferenceActivity;
+import android.text.Editable;
+
+public class WUBasePreferenceActivity extends PreferenceActivity implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener {
+
+ private static final String CREATE_ACCOUNT_KEY = "create_account";
+ private static final String API_KEY_KEY = "api_key";
+
+ private static final String WU_CREATE_ACCOUNT_URL =
+ "https://www.wunderground.com/weather/api/d/login.html";
+
+ private Preference mCreateAccountPreference;
+ private EditTextPreference mApiKeyPreference;
-public class WUBasePreferenceActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WundergroundCMApplication.get(this).inject(this);
+ addPreferencesFromResource(R.xml.preferences);
+
+ mCreateAccountPreference = findPreference(CREATE_ACCOUNT_KEY);
+ mApiKeyPreference = (EditTextPreference) findPreference(API_KEY_KEY);
+ mApiKeyPreference.setOnPreferenceChangeListener(this);
+ mCreateAccountPreference.setOnPreferenceClickListener(this);
+ }
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object o) {
+ switch (preference.getKey()) {
+ case API_KEY_KEY:
+ Editable editText = mApiKeyPreference.getEditText().getText();
+ if (editText != null) {
+ String text = editText.toString();
+ SharedPreferences sharedPreferences = getSharedPreferences(
+ WundergroundModule.SHARED_PREFS_KEY, Context.MODE_PRIVATE);
+ sharedPreferences.edit().putString(WundergroundModule.API_KEY, text).commit();
+ }
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ switch (preference.getKey()) {
+ case CREATE_ACCOUNT_KEY:
+ Intent createAccountIntent = new Intent();
+ createAccountIntent.setAction(Intent.ACTION_VIEW);
+ createAccountIntent.setData(Uri.parse(WU_CREATE_ACCOUNT_URL));
+ try {
+ startActivity(createAccountIntent);
+ } catch (ActivityNotFoundException e) {
+ e.printStackTrace();
+ }
+ return true;
+ }
+ return false;
}
}
diff --git a/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WUSettingsPreferenceFragment.java b/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WUSettingsPreferenceFragment.java
deleted file mode 100644
index b6c855a..0000000
--- a/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WUSettingsPreferenceFragment.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * 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 org.cyanogenmod.wundergroundcmweatherprovider;
-
-import android.os.Bundle;
-import android.preference.PreferenceFragment;
-
-public class WUSettingsPreferenceFragment extends PreferenceFragment {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- //TODO: Implement
- }
-}
diff --git a/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WundergroundModule.java b/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WundergroundModule.java
index c07de64..553e03c 100644
--- a/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WundergroundModule.java
+++ b/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WundergroundModule.java
@@ -16,6 +16,9 @@
package org.cyanogenmod.wundergroundcmweatherprovider;
+import android.content.Context;
+import android.content.SharedPreferences;
+
import org.cyanogenmod.wundergroundcmweatherprovider.wunderground.WundergroundServiceManager;
import javax.inject.Singleton;
@@ -26,12 +29,14 @@ import dagger.Provides;
@Module(
injects = {
DebugActivity.class,
- WundergroundWeatherProviderService.class
+ WundergroundWeatherProviderService.class,
+ WUBasePreferenceActivity.class
}
)
public class WundergroundModule {
- private static final String API_KEY = "API_KEY";
+ public static final String SHARED_PREFS_KEY = "WU_SHARED_PREFS";
+ public static final String API_KEY = "API_KEY";
private WundergroundCMApplication mWeatherviewApplication;
public WundergroundModule(WundergroundCMApplication weatherviewApplication) {
@@ -41,6 +46,9 @@ public class WundergroundModule {
@Provides
@Singleton
public WundergroundServiceManager providesWundergroundServiceManager() {
- return new WundergroundServiceManager(API_KEY);
+ SharedPreferences sharedPreferences = mWeatherviewApplication.getSharedPreferences(
+ SHARED_PREFS_KEY, Context.MODE_PRIVATE);
+ String apikey = sharedPreferences.getString(API_KEY, null);
+ return new WundergroundServiceManager(apikey);
}
}
diff --git a/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WundergroundWeatherProviderService.java b/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WundergroundWeatherProviderService.java
index e54ee88..2c3d7d0 100644
--- a/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WundergroundWeatherProviderService.java
+++ b/app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WundergroundWeatherProviderService.java
@@ -224,9 +224,6 @@ public class WundergroundWeatherProviderService extends WeatherProviderService
currentObservationResponse.getTempF(),
WeatherContract.WeatherColumns.TempUnit.FAHRENHEIT);
- weatherInfoBuilder.setWeatherCondition(
- WeatherContract.WeatherColumns.WeatherCode.CLOUDY);
-
DisplayLocationResponse displayLocationResponse =
currentObservationResponse.getDisplayLocation();
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index cac1f4e..c11c699 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -13,4 +13,10 @@
<resources>
<string name="app_name">Weather Underground CM Provider</string>
<string name="action_settings">Settings</string>
+
+ <string name="authentication_preference_category_title">Authentication</string>
+ <string name="authentication_preference_api_key">API key</string>
+ <string name="authentication_preference_api_key_summary">API key to be utilized for Weather Underground authentication</string>
+ <string name="authentication_preference_account_create">Create account</string>
+ <string name="authentication_preference_account_create_summary">Create an account to get an API key for weather data usage</string>
</resources>
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
new file mode 100644
index 0000000..3f2ce3c
--- /dev/null
+++ b/app/src/main/res/xml/preferences.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ 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.
+-->
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+ <PreferenceCategory android:title="@string/authentication_preference_category_title">
+ <Preference
+ android:key="create_account"
+ android:title="@string/authentication_preference_account_create"
+ android:summary="@string/authentication_preference_account_create_summary"/>
+ <EditTextPreference
+ android:key="api_key"
+ android:title="@string/authentication_preference_api_key"
+ android:summary="@string/authentication_preference_api_key_summary"/>
+ </PreferenceCategory>
+
+</PreferenceScreen> \ No newline at end of file
diff --git a/app/src/main/res/xml/weather_settings_service.xml b/app/src/main/res/xml/weather_settings_service.xml
new file mode 100644
index 0000000..73e557e
--- /dev/null
+++ b/app/src/main/res/xml/weather_settings_service.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<weather-provider-service xmlns:android="http://schemas.android.com/apk/res/android"
+ android:settingsActivity="org.cyanogenmod.wundergroundcmweatherprovider.WUBasePreferenceActivity" /> \ No newline at end of file