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,166 +42,71 @@ 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)
@Override
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");
updateAlarmPreferences();
initSummary(getPreferenceScreen());
}
private void initSummary(Preference p) {
if (p instanceof PreferenceGroup) {
PreferenceGroup pGrp = (PreferenceGroup) p;
for (int i = 0; i < pGrp.getPreferenceCount(); i++) {
initSummary(pGrp.getPreference(i));
}
} else {
updatePrefSummary(p);
}
}
@Override
public void onResume() {
super.onResume();
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
super.onPause();
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
updatePrefSummary(findPreference(key));
updateAlarmPreferences();
}
public void updateAlarmPreferences() {
ComponentName receiver = new ComponentName(getActivity().getApplicationContext(), ReminderBootReceiver.class);
PackageManager pm = getActivity().getApplicationContext().getPackageManager();
if (reminderEnable.isChecked()) {
scheduleAlarms(getActivity());
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
reminderWeekdays.setEnabled(true);
reminderTime.setEnabled(true);
reminderNotifyText.setEnabled(true);
} else {
disableAllAlarms(getActivity());
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
reminderWeekdays.setEnabled(false);
reminderTime.setEnabled(false);
reminderNotifyText.setEnabled(false);
}
}
private void updatePrefSummary(Preference p) {
if (p instanceof ListPreference) {
ListPreference listPref = (ListPreference) p;
p.setSummary(listPref.getEntry());
}
if (p instanceof EditTextPreference) {
EditTextPreference editTextPref = (EditTextPreference) p;
if (p.getTitle().toString().contains("assword"))
{ {
p.setSummary("******");
} else {
p.setSummary(editTextPref.getText());
}
}
if (p instanceof MultiSelectListPreference) {
MultiSelectListPreference editMultiListPref = (MultiSelectListPreference) p;
CharSequence[] entries = editMultiListPref.getEntries();
CharSequence[] entryValues = editMultiListPref.getEntryValues();
List<String> currentEntries = new ArrayList<>();
Set<String> currentEntryValues = editMultiListPref.getValues();
for (int i = 0; i < entries.length; i++)
if (currentEntryValues.contains(entryValues[i]))
currentEntries.add(entries[i].toString());
p.setSummary(currentEntries.toString());
}
}
public static void scheduleAlarms(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
Set<String> reminderWeekdays = prefs.getStringSet("reminderWeekdays", new HashSet<String>()); Set<String> reminderWeekdays = prefs.getStringSet(PREFERENCE_KEY_REMINDER_WEEKDAYS, new HashSet<String>());
Long reminderTimeInMillis = prefs.getLong("reminderTime", System.currentTimeMillis()); Long reminderTimeInMillis = prefs.getLong(PREFERENCE_KEY_REMINDER_TIME, System.currentTimeMillis());
Iterator iterWeekdays = reminderWeekdays.iterator(); Iterator<String> iterWeekdays = reminderWeekdays.iterator();
disableAllAlarms(context); disableAllAlarms(context);
while (iterWeekdays.hasNext()) { while (iterWeekdays.hasNext())
String strWeekdays = iterWeekdays.next().toString(); {
String strWeekdays = iterWeekdays.next();
switch (Integer.parseInt(strWeekdays)){ switch (strWeekdays)
case 0: {
case "Monday":
pendingAlarms.add(enableAlarm(context, Calendar.MONDAY, reminderTimeInMillis)); pendingAlarms.add(enableAlarm(context, Calendar.MONDAY, reminderTimeInMillis));
break; break;
case 1: case "Tuesday":
pendingAlarms.add(enableAlarm(context, Calendar.TUESDAY, reminderTimeInMillis)); pendingAlarms.add(enableAlarm(context, Calendar.TUESDAY, reminderTimeInMillis));
break; break;
case 2: case "Wednesday":
pendingAlarms.add(enableAlarm(context, Calendar.WEDNESDAY, reminderTimeInMillis)); pendingAlarms.add(enableAlarm(context, Calendar.WEDNESDAY, reminderTimeInMillis));
break; break;
case 3: case "Thursday":
pendingAlarms.add(enableAlarm(context, Calendar.THURSDAY, reminderTimeInMillis)); pendingAlarms.add(enableAlarm(context, Calendar.THURSDAY, reminderTimeInMillis));
break; break;
case 4: case "Friday":
pendingAlarms.add(enableAlarm(context, Calendar.FRIDAY, reminderTimeInMillis)); pendingAlarms.add(enableAlarm(context, Calendar.FRIDAY, reminderTimeInMillis));
break; break;
case 5: case "Saturday":
pendingAlarms.add(enableAlarm(context, Calendar.SATURDAY, reminderTimeInMillis)); pendingAlarms.add(enableAlarm(context, Calendar.SATURDAY, reminderTimeInMillis));
break; break;
case 6: case "Sunday":
pendingAlarms.add(enableAlarm(context, Calendar.SUNDAY, reminderTimeInMillis)); pendingAlarms.add(enableAlarm(context, Calendar.SUNDAY, reminderTimeInMillis));
break; break;
} }
} }
} }
public static PendingIntent enableAlarm(Context context, int dayOfWeek, long timeInMillis) { public static PendingIntent enableAlarm(Context context, int dayOfWeek, long timeInMillis)
{
Calendar alarmCal = Calendar.getInstance(); Calendar alarmCal = Calendar.getInstance();
alarmCal.setTimeInMillis(timeInMillis); alarmCal.setTimeInMillis(timeInMillis);
alarmCal.set(Calendar.DAY_OF_WEEK, dayOfWeek); alarmCal.set(Calendar.DAY_OF_WEEK, dayOfWeek);
// Check we aren't setting it in the past which would trigger it to fire instantly // Check we aren't setting it in the past which would trigger it to fire instantly
if(alarmCal.getTimeInMillis() < System.currentTimeMillis()) { if (alarmCal.getTimeInMillis() < System.currentTimeMillis())
{
alarmCal.add(Calendar.DAY_OF_YEAR, 7); alarmCal.add(Calendar.DAY_OF_YEAR, 7);
} }
@@ -212,22 +117,146 @@ public class ReminderPreferences extends PreferenceFragment implements SharedPr
Intent alarmIntent = new Intent(context, ReminderBootReceiver.class); Intent alarmIntent = new Intent(context, ReminderBootReceiver.class);
alarmIntent.putExtra("alarmIntent", true); alarmIntent.putExtra("alarmIntent", true);
PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(context, dayOfWeek, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); PendingIntent alarmPendingIntent =
PendingIntent.getBroadcast(context, dayOfWeek, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, alarmCal.getTimeInMillis(), alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, alarmCal.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7,
AlarmManager.INTERVAL_DAY * 7, alarmPendingIntent); alarmPendingIntent);
return alarmPendingIntent; return alarmPendingIntent;
} }
public static void disableAllAlarms(Context context) { public static void disableAllAlarms(Context context)
{
AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
for (int i=0; i<pendingAlarms.size(); i++) { for (int i = 0; i < pendingAlarms.size(); i++)
{
alarmMgr.cancel(pendingAlarms.get(i)); alarmMgr.cancel(pendingAlarms.get(i));
} }
pendingAlarms.clear(); pendingAlarms.clear();
} }
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.reminder_preferences);
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)
{
PreferenceGroup pGrp = (PreferenceGroup) p;
for (int i = 0; i < pGrp.getPreferenceCount(); i++)
{
initSummary(pGrp.getPreference(i));
}
}
else
{
updatePrefSummary(p);
}
}
@Override
public void onResume()
{
super.onResume();
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause()
{
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
super.onPause();
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
updatePrefSummary(findPreference(key));
updateAlarmPreferences();
}
public void updateAlarmPreferences()
{
ComponentName receiver = new ComponentName(getActivity().getApplicationContext(), ReminderBootReceiver.class);
PackageManager pm = getActivity().getApplicationContext().getPackageManager();
if (reminderEnable.isChecked())
{
scheduleAlarms(getActivity());
pm.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
reminderWeekdays.setEnabled(true);
reminderTime.setEnabled(true);
reminderNotifyText.setEnabled(true);
}
else
{
disableAllAlarms(getActivity());
pm.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
reminderWeekdays.setEnabled(false);
reminderTime.setEnabled(false);
reminderNotifyText.setEnabled(false);
}
}
private void updatePrefSummary(Preference p)
{
if (p instanceof ListPreference)
{
ListPreference listPref = (ListPreference) p;
p.setSummary(listPref.getEntry());
}
if (p instanceof EditTextPreference)
{
EditTextPreference editTextPref = (EditTextPreference) p;
if (p.getTitle().toString().contains("assword"))
{
p.setSummary("******");
}
else
{
p.setSummary(editTextPref.getText());
}
}
if (p instanceof MultiSelectListPreference)
{
MultiSelectListPreference editMultiListPref = (MultiSelectListPreference) p;
CharSequence[] entries = editMultiListPref.getEntries();
CharSequence[] entryValues = editMultiListPref.getEntryValues();
List<String> currentEntries = new ArrayList<>();
Set<String> currentEntryValues = editMultiListPref.getValues();
for (int i = 0; i < entries.length; i++)
{
if (currentEntryValues.contains(entryValues[i].toString())) currentEntries.add(entries[i].toString());
}
p.setSummary(currentEntries.toString());
}
}
} }

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>