From 28fe6951f2caea0779171bf341a8b70e9382b9af Mon Sep 17 00:00:00 2001 From: Caesar2011 Date: Thu, 2 Aug 2018 23:42:02 +0200 Subject: [PATCH] Implemented Preference for Canteen Price --- .../fuplanner/fragments/PrefsFragment.java | 30 ++++++++++++++++++- .../fragments/canteen/MealAdapter.java | 17 ++++++++++- .../de/sebse/fuplanner/tools/Preferences.java | 12 ++++++++ app/src/main/res/values-de/arrays.xml | 9 ++++++ app/src/main/res/values-de/strings.xml | 2 ++ app/src/main/res/values/arrays.xml | 18 +++++++++++ app/src/main/res/values/preferences.xml | 9 ++++++ app/src/main/res/values/strings.xml | 5 ++++ app/src/main/res/xml/preferences.xml | 14 ++++++--- 9 files changed, 110 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/de/sebse/fuplanner/tools/Preferences.java create mode 100644 app/src/main/res/values-de/arrays.xml create mode 100644 app/src/main/res/values/arrays.xml create mode 100644 app/src/main/res/values/preferences.xml diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/PrefsFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/PrefsFragment.java index d2dbc1f..f229b7b 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/PrefsFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/PrefsFragment.java @@ -1,11 +1,17 @@ package de.sebse.fuplanner.fragments; +import android.content.SharedPreferences; import android.os.Bundle; +import android.support.v7.preference.ListPreference; +import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceFragmentCompat; import de.sebse.fuplanner.R; +import de.sebse.fuplanner.tools.logging.Logger; -public class PrefsFragment extends PreferenceFragmentCompat { +public class PrefsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { + + private Logger log = new Logger(this); public static PrefsFragment newInstance() { PrefsFragment fragment = new PrefsFragment(); @@ -18,5 +24,27 @@ public class PrefsFragment extends PreferenceFragmentCompat { public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { // Load the preferences from an XML resource setPreferencesFromResource(R.xml.preferences, rootKey); + for (String s : getPreferenceScreen().getSharedPreferences().getAll().keySet()) { + onSharedPreferenceChanged(getPreferenceScreen().getSharedPreferences(), s); + } + } + + @Override + public void onResume() { + super.onResume(); + getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); + } + + @Override + public void onPause() { + super.onPause(); + getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); + } + + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { + Preference preference = getPreferenceScreen().findPreference(s); + if (preference instanceof ListPreference) + preference.setSummary(((ListPreference) preference).getEntry()); } } \ No newline at end of file diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealAdapter.java index b40c05e..dfa0d54 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealAdapter.java @@ -9,6 +9,7 @@ import android.widget.BaseExpandableListAdapter; import de.sebse.fuplanner.R; import de.sebse.fuplanner.services.Canteen.types.Day; import de.sebse.fuplanner.services.Canteen.types.Meal; +import de.sebse.fuplanner.tools.Preferences; import de.sebse.fuplanner.tools.ui.ItemViewHolder; import de.sebse.fuplanner.tools.ui.StringViewHolder; @@ -93,7 +94,21 @@ class MealAdapter extends BaseExpandableListAdapter { ItemViewHolder itemHolder = new ItemViewHolder(convertView); itemHolder.mTitle.setText(meal.getName()); itemHolder.mSubLeft.setText(meal.getCategory()); - itemHolder.mSubRight.setText(mContext.getResources().getString(R.string.prices, meal.getPriceStdnt(), meal.getPriceEmply(), meal.getPriceOther())); + String value; + switch (Preferences.getString(mContext, R.array.pref_price_group)) { + case "student": + value = mContext.getString(R.string.price, meal.getPriceStdnt()); + break; + case "employee": + value = mContext.getString(R.string.price, meal.getPriceEmply()); + break; + case "other": + value = mContext.getString(R.string.price, meal.getPriceOther()); + break; + default: + value = mContext.getString(R.string.prices, meal.getPriceStdnt(), meal.getPriceEmply(), meal.getPriceOther()); + } + itemHolder.mSubRight.setText(value); return convertView; } diff --git a/app/src/main/java/de/sebse/fuplanner/tools/Preferences.java b/app/src/main/java/de/sebse/fuplanner/tools/Preferences.java new file mode 100644 index 0000000..b3c6985 --- /dev/null +++ b/app/src/main/java/de/sebse/fuplanner/tools/Preferences.java @@ -0,0 +1,12 @@ +package de.sebse.fuplanner.tools; + +import android.content.Context; +import android.support.annotation.ArrayRes; +import android.support.v7.preference.PreferenceManager; + +public class Preferences { + public static String getString(Context context, @ArrayRes int key) { + String[] strings = context.getResources().getStringArray(key); + return PreferenceManager.getDefaultSharedPreferences(context).getString(strings[0], strings[1]); + } +} diff --git a/app/src/main/res/values-de/arrays.xml b/app/src/main/res/values-de/arrays.xml new file mode 100644 index 0000000..33b0bdc --- /dev/null +++ b/app/src/main/res/values-de/arrays.xml @@ -0,0 +1,9 @@ + + + + Alle + Student + Angestellter + Andere + + \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 50cbcd0..0f88eef 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -41,4 +41,6 @@ Ort: %1$s Modul: %1$s Schließen + Datenschutzrichtlinie + Öffne die Datenschutzrichtlinie nach DSGVO \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml new file mode 100644 index 0000000..747e97b --- /dev/null +++ b/app/src/main/res/values/arrays.xml @@ -0,0 +1,18 @@ + + + + All + Student + Employee + Other + + + all + student + employee + other + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/preferences.xml b/app/src/main/res/values/preferences.xml new file mode 100644 index 0000000..e8305a6 --- /dev/null +++ b/app/src/main/res/values/preferences.xml @@ -0,0 +1,9 @@ + + + + @string/pref_price_group + @string/pref_price_group_default + + pref_price_group + all + \ 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 327a85f..d767135 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -48,4 +48,9 @@ Module: %1$s Close root_preferences + Data Policy (German) + Open Data Policy according to GDPR + Canteen Price Group + Only show specific price category + Price Group Selection diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index c3068ea..1bddf83 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -1,12 +1,18 @@ + - + android:title="@string/open_data_policy" + android:summary="@string/open_data_policy_summary"> - \ No newline at end of file