From 2c397d79b9e64a0b314426c25c52db1c4e6bc607 Mon Sep 17 00:00:00 2001 From: Adnan Begovic Date: Thu, 14 Apr 2016 16:49:15 -0700 Subject: 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 --- app/src/main/AndroidManifest.xml | 8 +++ .../WUBasePreferenceActivity.java | 59 +++++++++++++++++++++- .../WUSettingsPreferenceFragment.java | 27 ---------- .../WundergroundModule.java | 14 +++-- .../WundergroundWeatherProviderService.java | 3 -- app/src/main/res/values/strings.xml | 6 +++ app/src/main/res/xml/preferences.xml | 26 ++++++++++ app/src/main/res/xml/weather_settings_service.xml | 3 ++ 8 files changed, 112 insertions(+), 34 deletions(-) delete mode 100644 app/src/main/java/org/cyanogenmod/wundergroundcmweatherprovider/WUSettingsPreferenceFragment.java create mode 100644 app/src/main/res/xml/preferences.xml create mode 100644 app/src/main/res/xml/weather_settings_service.xml 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 @@ + + + + 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 @@ Weather Underground CM Provider Settings + + Authentication + API key + API key to be utilized for Weather Underground authentication + Create account + Create an account to get an API key for weather data usage 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 @@ + + + + + + + + + \ 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 @@ + + \ No newline at end of file -- cgit v1.2.3