From 63132a1830fae71a4277c3bdd0ae2712e75e86f0 Mon Sep 17 00:00:00 2001 From: wolkenschieber Date: Sun, 5 Mar 2017 13:03:21 +0100 Subject: [PATCH] Interationalize weekday names --- android_app/app/app.iml | 3 + .../gui/preferences/ReminderPreferences.java | 237 ++++++++++-------- .../app/src/main/res/values-de/strings.xml | 7 + .../app/src/main/res/values/strings.xml | 8 + .../app/src/main/res/values/type_weekdays.xml | 22 +- 5 files changed, 162 insertions(+), 115 deletions(-) diff --git a/android_app/app/app.iml b/android_app/app/app.iml index 8b876c4d..6477ca1b 100644 --- a/android_app/app/app.iml +++ b/android_app/app/app.iml @@ -77,12 +77,15 @@ + + + diff --git a/android_app/app/src/main/java/com/health/openscale/gui/preferences/ReminderPreferences.java b/android_app/app/src/main/java/com/health/openscale/gui/preferences/ReminderPreferences.java index fee72e4b..f90f88f4 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/preferences/ReminderPreferences.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/preferences/ReminderPreferences.java @@ -42,79 +42,176 @@ import java.util.Iterator; import java.util.List; import java.util.Set; -public class ReminderPreferences extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { +public class ReminderPreferences extends PreferenceFragment + implements SharedPreferences.OnSharedPreferenceChangeListener +{ + private static final String PREFERENCE_KEY_REMINDER_ENABLE = "reminderEnable"; + private static final String PREFERENCE_KEY_REMINDER_WEEKDAYS = "reminderWeekdays"; + private static final String PREFERENCE_KEY_REMINDER_TIME = "reminderTime"; + private static final String PREFERENCE_KEY_REMINDER_NOTIFY_TEXT = "reminderNotifyText"; + + private static ArrayList pendingAlarms = new ArrayList<>(); private CheckBoxPreference reminderEnable; private MultiSelectListPreference reminderWeekdays; private TimePreferenceDialog reminderTime; private EditTextPreference reminderNotifyText; - private static ArrayList pendingAlarms = new ArrayList<>(); + public static void scheduleAlarms(Context context) + { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + + Set reminderWeekdays = prefs.getStringSet(PREFERENCE_KEY_REMINDER_WEEKDAYS, new HashSet()); + Long reminderTimeInMillis = prefs.getLong(PREFERENCE_KEY_REMINDER_TIME, System.currentTimeMillis()); + + Iterator iterWeekdays = reminderWeekdays.iterator(); + + disableAllAlarms(context); + + while (iterWeekdays.hasNext()) + { + String strWeekdays = iterWeekdays.next(); + switch (strWeekdays) + { + case "Monday": + pendingAlarms.add(enableAlarm(context, Calendar.MONDAY, reminderTimeInMillis)); + break; + case "Tuesday": + pendingAlarms.add(enableAlarm(context, Calendar.TUESDAY, reminderTimeInMillis)); + break; + case "Wednesday": + pendingAlarms.add(enableAlarm(context, Calendar.WEDNESDAY, reminderTimeInMillis)); + break; + case "Thursday": + pendingAlarms.add(enableAlarm(context, Calendar.THURSDAY, reminderTimeInMillis)); + break; + case "Friday": + pendingAlarms.add(enableAlarm(context, Calendar.FRIDAY, reminderTimeInMillis)); + break; + case "Saturday": + pendingAlarms.add(enableAlarm(context, Calendar.SATURDAY, reminderTimeInMillis)); + break; + case "Sunday": + pendingAlarms.add(enableAlarm(context, Calendar.SUNDAY, reminderTimeInMillis)); + break; + } + } + } + + public static PendingIntent enableAlarm(Context context, int dayOfWeek, long timeInMillis) + { + Calendar alarmCal = Calendar.getInstance(); + alarmCal.setTimeInMillis(timeInMillis); + alarmCal.set(Calendar.DAY_OF_WEEK, dayOfWeek); + + // Check we aren't setting it in the past which would trigger it to fire instantly + if (alarmCal.getTimeInMillis() < System.currentTimeMillis()) + { + alarmCal.add(Calendar.DAY_OF_YEAR, 7); + } + + //Log.d("ReminderPreferences", "Set alarm to " + calendar.getTime()); + + AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); + + Intent alarmIntent = new Intent(context, ReminderBootReceiver.class); + alarmIntent.putExtra("alarmIntent", true); + + PendingIntent alarmPendingIntent = + PendingIntent.getBroadcast(context, dayOfWeek, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); + + alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, alarmCal.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, + alarmPendingIntent); + + return alarmPendingIntent; + } + + public static void disableAllAlarms(Context context) + { + AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); + + for (int i = 0; i < pendingAlarms.size(); i++) + { + alarmMgr.cancel(pendingAlarms.get(i)); + } + + pendingAlarms.clear(); + } @Override - public void onCreate(Bundle savedInstanceState) { + public void onCreate(Bundle savedInstanceState) + { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.reminder_preferences); - reminderEnable = (CheckBoxPreference)findPreference("reminderEnable"); - reminderWeekdays = (MultiSelectListPreference)findPreference("reminderWeekdays"); - reminderTime = (TimePreferenceDialog)findPreference("reminderTime"); - reminderNotifyText = (EditTextPreference)findPreference("reminderNotifyText"); + reminderEnable = (CheckBoxPreference) findPreference(PREFERENCE_KEY_REMINDER_ENABLE); + reminderWeekdays = (MultiSelectListPreference) findPreference(PREFERENCE_KEY_REMINDER_WEEKDAYS); + reminderTime = (TimePreferenceDialog) findPreference(PREFERENCE_KEY_REMINDER_TIME); + reminderNotifyText = (EditTextPreference) findPreference(PREFERENCE_KEY_REMINDER_NOTIFY_TEXT); updateAlarmPreferences(); initSummary(getPreferenceScreen()); } - private void initSummary(Preference p) { - if (p instanceof PreferenceGroup) { + private void initSummary(Preference p) + { + if (p instanceof PreferenceGroup) + { PreferenceGroup pGrp = (PreferenceGroup) p; - for (int i = 0; i < pGrp.getPreferenceCount(); i++) { + for (int i = 0; i < pGrp.getPreferenceCount(); i++) + { initSummary(pGrp.getPreference(i)); } - } else { + } + else + { updatePrefSummary(p); } } @Override - public void onResume() { + public void onResume() + { super.onResume(); getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); - } @Override - public void onPause() { + public void onPause() + { getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); super.onPause(); } @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) + { updatePrefSummary(findPreference(key)); updateAlarmPreferences(); } - public void updateAlarmPreferences() { + public void updateAlarmPreferences() + { ComponentName receiver = new ComponentName(getActivity().getApplicationContext(), ReminderBootReceiver.class); PackageManager pm = getActivity().getApplicationContext().getPackageManager(); - if (reminderEnable.isChecked()) { + if (reminderEnable.isChecked()) + { scheduleAlarms(getActivity()); - pm.setComponentEnabledSetting(receiver, - PackageManager.COMPONENT_ENABLED_STATE_ENABLED, + pm.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); reminderWeekdays.setEnabled(true); reminderTime.setEnabled(true); reminderNotifyText.setEnabled(true); - } else { + } + else + { disableAllAlarms(getActivity()); - pm.setComponentEnabledSetting(receiver, - PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + pm.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); reminderWeekdays.setEnabled(false); @@ -123,23 +220,29 @@ public class ReminderPreferences extends PreferenceFragment implements SharedPr } } - private void updatePrefSummary(Preference p) { - if (p instanceof ListPreference) { + private void updatePrefSummary(Preference p) + { + if (p instanceof ListPreference) + { ListPreference listPref = (ListPreference) p; p.setSummary(listPref.getEntry()); } - if (p instanceof EditTextPreference) { + if (p instanceof EditTextPreference) + { EditTextPreference editTextPref = (EditTextPreference) p; if (p.getTitle().toString().contains("assword")) { p.setSummary("******"); - } else { + } + else + { p.setSummary(editTextPref.getText()); } } - if (p instanceof MultiSelectListPreference) { + if (p instanceof MultiSelectListPreference) + { MultiSelectListPreference editMultiListPref = (MultiSelectListPreference) p; CharSequence[] entries = editMultiListPref.getEntries(); @@ -148,86 +251,12 @@ public class ReminderPreferences extends PreferenceFragment implements SharedPr Set currentEntryValues = editMultiListPref.getValues(); for (int i = 0; i < entries.length; i++) - if (currentEntryValues.contains(entryValues[i])) - currentEntries.add(entries[i].toString()); + { + if (currentEntryValues.contains(entryValues[i].toString())) currentEntries.add(entries[i].toString()); + } p.setSummary(currentEntries.toString()); } } - - public static void scheduleAlarms(Context context) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - - Set reminderWeekdays = prefs.getStringSet("reminderWeekdays", new HashSet()); - Long reminderTimeInMillis = prefs.getLong("reminderTime", System.currentTimeMillis()); - - Iterator iterWeekdays = reminderWeekdays.iterator(); - - disableAllAlarms(context); - - while (iterWeekdays.hasNext()) { - String strWeekdays = iterWeekdays.next().toString(); - - switch (Integer.parseInt(strWeekdays)){ - case 0: - pendingAlarms.add(enableAlarm(context, Calendar.MONDAY, reminderTimeInMillis)); - break; - case 1: - pendingAlarms.add(enableAlarm(context, Calendar.TUESDAY, reminderTimeInMillis)); - break; - case 2: - pendingAlarms.add(enableAlarm(context, Calendar.WEDNESDAY, reminderTimeInMillis)); - break; - case 3: - pendingAlarms.add(enableAlarm(context, Calendar.THURSDAY, reminderTimeInMillis)); - break; - case 4: - pendingAlarms.add(enableAlarm(context, Calendar.FRIDAY, reminderTimeInMillis)); - break; - case 5: - pendingAlarms.add(enableAlarm(context, Calendar.SATURDAY, reminderTimeInMillis)); - break; - case 6: - pendingAlarms.add(enableAlarm(context, Calendar.SUNDAY, reminderTimeInMillis)); - break; - } - } - - } - - public static PendingIntent enableAlarm(Context context, int dayOfWeek, long timeInMillis) { - Calendar alarmCal = Calendar.getInstance(); - alarmCal.setTimeInMillis(timeInMillis); - alarmCal.set(Calendar.DAY_OF_WEEK, dayOfWeek); - - // Check we aren't setting it in the past which would trigger it to fire instantly - if(alarmCal.getTimeInMillis() < System.currentTimeMillis()) { - alarmCal.add(Calendar.DAY_OF_YEAR, 7); - } - - //Log.d("ReminderPreferences", "Set alarm to " + calendar.getTime()); - - AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); - - Intent alarmIntent = new Intent(context, ReminderBootReceiver.class); - alarmIntent.putExtra("alarmIntent", true); - - PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(context, dayOfWeek, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); - - alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, alarmCal.getTimeInMillis(), - AlarmManager.INTERVAL_DAY * 7, alarmPendingIntent); - - return alarmPendingIntent; - } - - public static void disableAllAlarms(Context context) { - AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); - - for (int i=0; iLöschbestätigung Wollen Sie wirklich den Datenbankeintrag löschen? Punkt auf den Datenpunkt + Montag + Dienstag + Mittwoch + Donnerstag + Freitag + Samstag + Sonntag \ No newline at end of file diff --git a/android_app/app/src/main/res/values/strings.xml b/android_app/app/src/main/res/values/strings.xml index 985019cc..585e147d 100644 --- a/android_app/app/src/main/res/values/strings.xml +++ b/android_app/app/src/main/res/values/strings.xml @@ -132,4 +132,12 @@ Your waist circumference was Your hip circumference was on + + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + Sunday diff --git a/android_app/app/src/main/res/values/type_weekdays.xml b/android_app/app/src/main/res/values/type_weekdays.xml index 68aecbf4..2b14f1b4 100644 --- a/android_app/app/src/main/res/values/type_weekdays.xml +++ b/android_app/app/src/main/res/values/type_weekdays.xml @@ -1,6 +1,16 @@ + @string/Monday + @string/Tuesday + @string/Wednesday + @string/Thursday + @string/Friday + @string/Saturday + @string/Sunday + + + Monday Tuesday Wednesday @@ -10,15 +20,5 @@ Sunday - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - - - + \ No newline at end of file