diff options
author | Adnan Begovic <adnan@cyngn.com> | 2016-04-14 16:49:15 -0700 |
---|---|---|
committer | Adnan Begovic <adnan@cyngn.com> | 2016-04-18 13:19:57 -0700 |
commit | 2c397d79b9e64a0b314426c25c52db1c4e6bc607 (patch) | |
tree | c72d6b8b2303cd0bca9a38628ca486e204b0db91 | |
parent | 80cf30c8395861bef92c6f26c34fd8cd15fe1fd0 (diff) | |
download | android_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
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 |