diff --git a/app/src/main/java/com/example/android/sunshine/app/ForecastAdapter.java b/app/src/main/java/com/example/android/sunshine/app/ForecastAdapter.java index 0b404e2..851167c 100644 --- a/app/src/main/java/com/example/android/sunshine/app/ForecastAdapter.java +++ b/app/src/main/java/com/example/android/sunshine/app/ForecastAdapter.java @@ -108,7 +108,7 @@ public class ForecastAdapter extends CursorAdapter { break; } } - + Glide.with(mContext) .load(Utility.getArtUrlForWeatherCondition(mContext, weatherId)) .error(fallbackIconId) diff --git a/app/src/main/java/com/example/android/sunshine/app/SettingsActivity.java b/app/src/main/java/com/example/android/sunshine/app/SettingsActivity.java index 162c9a0..afd1cac 100644 --- a/app/src/main/java/com/example/android/sunshine/app/SettingsActivity.java +++ b/app/src/main/java/com/example/android/sunshine/app/SettingsActivity.java @@ -49,6 +49,7 @@ public class SettingsActivity extends PreferenceActivity // updated when the preference changes. bindPreferenceSummaryToValue(findPreference(getString(R.string.pref_location_key))); bindPreferenceSummaryToValue(findPreference(getString(R.string.pref_units_key))); + bindPreferenceSummaryToValue(findPreference(getString(R.string.pref_art_pack_key))); } // Registers a shared preference change listener that gets notified when preferences change @@ -142,6 +143,9 @@ public class SettingsActivity extends PreferenceActivity // our location status has changed. Update the summary accordingly Preference locationPreference = findPreference(getString(R.string.pref_location_key)); bindPreferenceSummaryToValue(locationPreference); + } else if ( key.equals(getString(R.string.pref_art_pack_key)) ) { + // art pack have changed. update lists of weather entries accordingly + getContentResolver().notifyChange(WeatherContract.WeatherEntry.CONTENT_URI, null); } } diff --git a/app/src/main/java/com/example/android/sunshine/app/Utility.java b/app/src/main/java/com/example/android/sunshine/app/Utility.java index 73f424a..bad6d0c 100644 --- a/app/src/main/java/com/example/android/sunshine/app/Utility.java +++ b/app/src/main/java/com/example/android/sunshine/app/Utility.java @@ -27,6 +27,7 @@ import com.example.android.sunshine.app.sync.SunshineSyncAdapter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Locale; public class Utility { public static String getPreferredLocation(Context context) { @@ -225,30 +226,34 @@ public class Utility { * @return url for the corresponding weather artwork. null if no relation is found. */ public static String getArtUrlForWeatherCondition(Context context, int weatherId) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + String formatArtUrl = prefs.getString(context.getString(R.string.pref_art_pack_key), + context.getString(R.string.pref_art_pack_sunshine)); + // Based on weather code data found at: // http://bugs.openweathermap.org/projects/api/wiki/Weather_Condition_Codes if (weatherId >= 200 && weatherId <= 232) { - return context.getString(R.string.format_art_url, "storm"); + return String.format(Locale.US, formatArtUrl, "storm"); } else if (weatherId >= 300 && weatherId <= 321) { - return context.getString(R.string.format_art_url, "light_rain"); + return String.format(Locale.US, formatArtUrl, "light_rain"); } else if (weatherId >= 500 && weatherId <= 504) { - return context.getString(R.string.format_art_url, "rain"); + return String.format(Locale.US, formatArtUrl, "rain"); } else if (weatherId == 511) { - return context.getString(R.string.format_art_url, "snow"); + return String.format(Locale.US, formatArtUrl, "snow"); } else if (weatherId >= 520 && weatherId <= 531) { - return context.getString(R.string.format_art_url, "rain"); + return String.format(Locale.US, formatArtUrl, "rain"); } else if (weatherId >= 600 && weatherId <= 622) { - return context.getString(R.string.format_art_url, "snow"); + return String.format(Locale.US, formatArtUrl, "snow"); } else if (weatherId >= 701 && weatherId <= 761) { - return context.getString(R.string.format_art_url, "fog"); + return String.format(Locale.US, formatArtUrl, "fog"); } else if (weatherId == 761 || weatherId == 781) { - return context.getString(R.string.format_art_url, "storm"); + return String.format(Locale.US, formatArtUrl, "storm"); } else if (weatherId == 800) { - return context.getString(R.string.format_art_url, "clear"); + return String.format(Locale.US, formatArtUrl, "clear"); } else if (weatherId == 801) { - return context.getString(R.string.format_art_url, "light_clouds"); + return String.format(Locale.US, formatArtUrl, "light_clouds"); } else if (weatherId >= 802 && weatherId <= 804) { - return context.getString(R.string.format_art_url, "clouds"); + return String.format(Locale.US, formatArtUrl, "clouds"); } return null; } diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 5aa1add..54060c0 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -25,4 +25,16 @@ @string/pref_units_metric @string/pref_units_imperial + + + + @string/pref_art_pack_label_sunshine + @string/pref_art_pack_label_cute_dogs + + + + + @string/pref_art_pack_sunshine + @string/pref_art_pack_cute_dogs + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f0b386a..f330d64 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -80,9 +80,23 @@ imperial + + Icon Pack - - https://raw.githubusercontent.com/udacity/Sunshine-Version-2/sunshine_master/app/src/main/res/drawable-xxhdpi/art_%s.png + + Sunshine + + + Cute dogs + + + art_pack + + + https://raw.githubusercontent.com/udacity/Sunshine-Version-2/sunshine_master/app/src/main/res/drawable-xxhdpi/art_%s.png + + + https://raw.githubusercontent.com/udacity/Sunshine-Version-2/sunshine_master/app/src/main/res/drawable-mdpi/art_%s.png Today diff --git a/app/src/main/res/xml/pref_general.xml b/app/src/main/res/xml/pref_general.xml index a8b175b..34d1406 100644 --- a/app/src/main/res/xml/pref_general.xml +++ b/app/src/main/res/xml/pref_general.xml @@ -35,6 +35,13 @@ android:entryValues="@array/pref_units_values" android:entries="@array/pref_units_options" /> + +