1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-20 07:21:40 +02:00

Interationalize weekday names

This commit is contained in:
wolkenschieber
2017-03-05 13:03:21 +01:00
parent 5e25f6a1a6
commit 63132a1830
5 changed files with 162 additions and 115 deletions

View File

@@ -77,12 +77,15 @@
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" /> <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content> </content>
<orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" /> <orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />

View File

@@ -42,79 +42,176 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Set; 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<PendingIntent> pendingAlarms = new ArrayList<>();
private CheckBoxPreference reminderEnable; private CheckBoxPreference reminderEnable;
private MultiSelectListPreference reminderWeekdays; private MultiSelectListPreference reminderWeekdays;
private TimePreferenceDialog reminderTime; private TimePreferenceDialog reminderTime;
private EditTextPreference reminderNotifyText; private EditTextPreference reminderNotifyText;
private static ArrayList<PendingIntent> pendingAlarms = new ArrayList<>(); public static void scheduleAlarms(Context context)
{
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
Set<String> reminderWeekdays = prefs.getStringSet(PREFERENCE_KEY_REMINDER_WEEKDAYS, new HashSet<String>());
Long reminderTimeInMillis = prefs.getLong(PREFERENCE_KEY_REMINDER_TIME, System.currentTimeMillis());
Iterator<String> 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 @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.reminder_preferences); addPreferencesFromResource(R.xml.reminder_preferences);
reminderEnable = (CheckBoxPreference)findPreference("reminderEnable"); reminderEnable = (CheckBoxPreference) findPreference(PREFERENCE_KEY_REMINDER_ENABLE);
reminderWeekdays = (MultiSelectListPreference)findPreference("reminderWeekdays"); reminderWeekdays = (MultiSelectListPreference) findPreference(PREFERENCE_KEY_REMINDER_WEEKDAYS);
reminderTime = (TimePreferenceDialog)findPreference("reminderTime"); reminderTime = (TimePreferenceDialog) findPreference(PREFERENCE_KEY_REMINDER_TIME);
reminderNotifyText = (EditTextPreference)findPreference("reminderNotifyText"); reminderNotifyText = (EditTextPreference) findPreference(PREFERENCE_KEY_REMINDER_NOTIFY_TEXT);
updateAlarmPreferences(); updateAlarmPreferences();
initSummary(getPreferenceScreen()); initSummary(getPreferenceScreen());
} }
private void initSummary(Preference p) { private void initSummary(Preference p)
if (p instanceof PreferenceGroup) { {
if (p instanceof PreferenceGroup)
{
PreferenceGroup pGrp = (PreferenceGroup) p; PreferenceGroup pGrp = (PreferenceGroup) p;
for (int i = 0; i < pGrp.getPreferenceCount(); i++) { for (int i = 0; i < pGrp.getPreferenceCount(); i++)
{
initSummary(pGrp.getPreference(i)); initSummary(pGrp.getPreference(i));
} }
} else { }
else
{
updatePrefSummary(p); updatePrefSummary(p);
} }
} }
@Override @Override
public void onResume() { public void onResume()
{
super.onResume(); super.onResume();
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
} }
@Override @Override
public void onPause() { public void onPause()
{
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
super.onPause(); super.onPause();
} }
@Override @Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
updatePrefSummary(findPreference(key)); updatePrefSummary(findPreference(key));
updateAlarmPreferences(); updateAlarmPreferences();
} }
public void updateAlarmPreferences() { public void updateAlarmPreferences()
{
ComponentName receiver = new ComponentName(getActivity().getApplicationContext(), ReminderBootReceiver.class); ComponentName receiver = new ComponentName(getActivity().getApplicationContext(), ReminderBootReceiver.class);
PackageManager pm = getActivity().getApplicationContext().getPackageManager(); PackageManager pm = getActivity().getApplicationContext().getPackageManager();
if (reminderEnable.isChecked()) { if (reminderEnable.isChecked())
{
scheduleAlarms(getActivity()); scheduleAlarms(getActivity());
pm.setComponentEnabledSetting(receiver, pm.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP); PackageManager.DONT_KILL_APP);
reminderWeekdays.setEnabled(true); reminderWeekdays.setEnabled(true);
reminderTime.setEnabled(true); reminderTime.setEnabled(true);
reminderNotifyText.setEnabled(true); reminderNotifyText.setEnabled(true);
} else { }
else
{
disableAllAlarms(getActivity()); disableAllAlarms(getActivity());
pm.setComponentEnabledSetting(receiver, pm.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP); PackageManager.DONT_KILL_APP);
reminderWeekdays.setEnabled(false); reminderWeekdays.setEnabled(false);
@@ -123,23 +220,29 @@ public class ReminderPreferences extends PreferenceFragment implements SharedPr
} }
} }
private void updatePrefSummary(Preference p) { private void updatePrefSummary(Preference p)
if (p instanceof ListPreference) { {
if (p instanceof ListPreference)
{
ListPreference listPref = (ListPreference) p; ListPreference listPref = (ListPreference) p;
p.setSummary(listPref.getEntry()); p.setSummary(listPref.getEntry());
} }
if (p instanceof EditTextPreference) { if (p instanceof EditTextPreference)
{
EditTextPreference editTextPref = (EditTextPreference) p; EditTextPreference editTextPref = (EditTextPreference) p;
if (p.getTitle().toString().contains("assword")) if (p.getTitle().toString().contains("assword"))
{ {
p.setSummary("******"); p.setSummary("******");
} else { }
else
{
p.setSummary(editTextPref.getText()); p.setSummary(editTextPref.getText());
} }
} }
if (p instanceof MultiSelectListPreference) { if (p instanceof MultiSelectListPreference)
{
MultiSelectListPreference editMultiListPref = (MultiSelectListPreference) p; MultiSelectListPreference editMultiListPref = (MultiSelectListPreference) p;
CharSequence[] entries = editMultiListPref.getEntries(); CharSequence[] entries = editMultiListPref.getEntries();
@@ -148,86 +251,12 @@ public class ReminderPreferences extends PreferenceFragment implements SharedPr
Set<String> currentEntryValues = editMultiListPref.getValues(); Set<String> currentEntryValues = editMultiListPref.getValues();
for (int i = 0; i < entries.length; i++) 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()); p.setSummary(currentEntries.toString());
} }
} }
public static void scheduleAlarms(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
Set<String> reminderWeekdays = prefs.getStringSet("reminderWeekdays", new HashSet<String>());
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; i<pendingAlarms.size(); i++) {
alarmMgr.cancel(pendingAlarms.get(i));
}
pendingAlarms.clear();
}
} }

View File

@@ -114,4 +114,11 @@
<string name="label_delete_confirmation">Löschbestätigung</string> <string name="label_delete_confirmation">Löschbestätigung</string>
<string name="question_really_delete">Wollen Sie wirklich den Datenbankeintrag löschen?</string> <string name="question_really_delete">Wollen Sie wirklich den Datenbankeintrag löschen?</string>
<string name="label_enable_points">Punkt auf den Datenpunkt</string> <string name="label_enable_points">Punkt auf den Datenpunkt</string>
<string name="Monday">Montag</string>
<string name="Tuesday">Dienstag</string>
<string name="Wednesday">Mittwoch</string>
<string name="Thursday">Donnerstag</string>
<string name="Friday">Freitag</string>
<string name="Saturday">Samstag</string>
<string name="Sunday">Sonntag</string>
</resources> </resources>

View File

@@ -132,4 +132,12 @@
<string name="info_your_waist">Your waist circumference was</string> <string name="info_your_waist">Your waist circumference was</string>
<string name="info_your_hip">Your hip circumference was</string> <string name="info_your_hip">Your hip circumference was</string>
<string name="info_on_date">on</string> <string name="info_on_date">on</string>
<string name="Monday">Monday</string>
<string name="Tuesday">Tuesday</string>
<string name="Wednesday">Wednesday</string>
<string name="Thursday">Thursday</string>
<string name="Friday">Friday</string>
<string name="Saturday">Saturday</string>
<string name="Sunday">Sunday</string>
</resources> </resources>

View File

@@ -1,6 +1,16 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string-array name="weekdays_entries"> <string-array name="weekdays_entries">
<item>@string/Monday</item>
<item>@string/Tuesday</item>
<item>@string/Wednesday</item>
<item>@string/Thursday</item>
<item>@string/Friday</item>
<item>@string/Saturday</item>
<item>@string/Sunday</item>
</string-array>
<string-array name="weekdays_values">
<item>Monday</item> <item>Monday</item>
<item>Tuesday</item> <item>Tuesday</item>
<item>Wednesday</item> <item>Wednesday</item>
@@ -10,15 +20,5 @@
<item>Sunday</item> <item>Sunday</item>
</string-array> </string-array>
<string-array name="weekdays_values"> <string-array name="weekdays_default"/>
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
</string-array>
<string-array name="weekdays_default"></string-array>
</resources> </resources>