Skip to content
This repository has been archived by the owner on Jan 11, 2021. It is now read-only.

Namedaylocale enhancement #88

Merged
merged 4 commits into from
Feb 11, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion common/src/main/res/values-cs/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ Andrejs Kotovs - lotyšský překlad"</string>
<string name="Birthday_date">Datum narození</string>
<string name="Contact_name">Jméno</string>
<string name="Themes">Motiv</string>
<string name="romanian">Rumunsko</string>
<string name="Romanian">Rumunsko</string>
<string name="Configure_widget">Konfigurace widgetu</string>
<string name="Done">Hotovo</string>
<string name="Transparency">Průhlednost</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-el/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ as the name makes more sense. If there is a local specific name, make sure to wr
<string name="Birthday_date">Ημερομηνία γενεθλίων</string>
<string name="Contact_name">Όνομα επαφής</string>
<string name="Themes">Θέματα</string>
<string name="romanian">Ρωμάνικα</string>
<string name="Romanian">Ρωμάνικα</string>
<string name="Configure_widget">Ρύθμιση Γρ. Στοιχείου</string>
<string name="Done">Αποθήκευση</string>
<string name="Transparency">Διαφάνεια</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-it/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ Andrejs Kotovs per la traduzione in Lituano"</string>
<string name="Birthday_date">Compleanno</string>
<string name="Contact_name">Nome contatto</string>
<string name="Themes">Temi</string>
<string name="romanian">Rumeno</string>
<string name="Romanian">Rumeno</string>
<string name="Configure_widget">Configura il widget</string>
<string name="Done">Fatto</string>
<string name="Transparency">Trasparenza</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-lv-rLV/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ as the name makes more sense. If there is a local specific name, make sure to wr
<string name="Birthday_date">Dzimšanas datums</string>
<string name="Contact_name">Kontaktpersonas vārds</string>
<string name="Themes">Tēmas</string>
<string name="romanian">Rumāņu</string>
<string name="Romanian">Rumāņu</string>
<string name="Configure_widget">Konfigurēt logrīku</string>
<string name="Done">Darīts</string>
<string name="Transparency">Caurspīdīgums</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-nl/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ Bert Van Dooren voor de Nederlandse vertaling"</string>
<string name="Birthday_date">Geboortedatum</string>
<string name="Contact_name">Naam contactpersoon</string>
<string name="Themes">Thema\'s</string>
<string name="romanian">Roemeens</string>
<string name="Romanian">Roemeens</string>
<string name="Configure_widget">Stel widget in</string>
<string name="Done">Klaar</string>
<string name="Transparency">Transparantie</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ as the name makes more sense. If there is a local specific name, make sure to wr
<string name="Birthday_date">Birthday date</string>
<string name="Contact_name">Contact name</string>
<string name="Themes">Themes</string>
<string name="romanian">Romanian</string>
<string name="Romanian">Romanian</string>
<string name="Configure_widget">Configure Widget</string>
<string name="Done">Done</string>
<string name="Transparency">Transparency</string>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

package com.alexstyl.specialdates.ui.widget;
package com.alexstyl.android.preferences.widget;

import android.content.Context;
import android.content.res.TypedArray;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,32 +1,37 @@
package com.alexstyl.specialdates.events.namedays;

import android.support.annotation.RawRes;
import android.support.annotation.StringRes;

import com.alexstyl.specialdates.R;
import com.novoda.notils.exception.DeveloperError;

public enum NamedayLocale {
GREEK("gr", true, R.raw.gr_namedays),
ROMANIAN("ro", false, R.raw.ro_namedays),
RUSSIAN("ru", false, R.raw.ru_namedays),
LATVIAN("lv", false, R.raw.lv_namedays),
SLOVAK("sk", false, R.raw.sk_namedays),
ITALIAN("it", false, R.raw.it_namedays),
CZECH("cs", false, R.raw.cs_namedays);
GREEK("gr", true, R.string.Greek, R.raw.gr_namedays),
ROMANIAN("ro", false, R.string.Romanian, R.raw.ro_namedays),
RUSSIAN("ru", false, R.string.Russian, R.raw.ru_namedays),
LATVIAN("lv", false, R.string.Latvian, R.raw.lv_namedays),
SLOVAK("sk", false, R.string.Slovak, R.raw.sk_namedays),
ITALIAN("it", false, R.string.Italian, R.raw.it_namedays),
CZECH("cs", false, R.string.Czech, R.raw.cs_namedays);

private final String shortCode;
private final boolean soundCompared;
@StringRes
private int languageName;
@RawRes
private final int rawResId;

NamedayLocale(String shortCode, boolean soundCompared, @RawRes int rawResId) {
NamedayLocale(String shortCode, boolean soundCompared, @StringRes int languageName, @RawRes int rawResId) {
this.shortCode = shortCode;
this.soundCompared = soundCompared;
this.languageName = languageName;
this.rawResId = rawResId;
}

public static NamedayLocale from(String displayLanguage) {
for (NamedayLocale locale : values()) {
if (locale.getShortCode().equalsIgnoreCase(displayLanguage)) {
if (locale.getCountryCode().equalsIgnoreCase(displayLanguage)) {
return locale;
}
}
Expand All @@ -41,7 +46,12 @@ public boolean isComparedBySound() {
return soundCompared;
}

public String getShortCode() {
public String getCountryCode() {
return shortCode;
}

@StringRes
public int getLanguageNameResId() {
return languageName;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

public class NamedayPreferences {

private static final String DEFAULT_LOCALE = NamedayLocale.GREEK.getShortCode();
private static final String DEFAULT_LOCALE = NamedayLocale.GREEK.getCountryCode();

private final boolean enabledByDefault;
private final EasyPreferences preferences;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import com.alexstyl.specialdates.dailyreminder.DailyReminderScheduler;
import com.alexstyl.specialdates.permissions.PermissionChecker;
import com.alexstyl.specialdates.ui.base.MementoPreferenceFragment;
import com.alexstyl.specialdates.ui.widget.TimePreference;
import com.alexstyl.android.preferences.widget.TimePreference;

import java.util.Calendar;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import android.app.Activity;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;

import com.alexstyl.specialdates.ErrorTracker;
Expand All @@ -17,20 +16,16 @@
import com.alexstyl.specialdates.theming.ThemingPreferences;
import com.alexstyl.specialdates.ui.base.MementoPreferenceFragment;
import com.novoda.notils.caster.Classes;
import com.novoda.notils.exception.DeveloperError;

final public class MainPreferenceFragment extends MementoPreferenceFragment {

private final String FM_THEME_TAG = "fm_theme";

private ListPreference namedayLanguageListPreferences;
private NamedayListPreference namedayLanguageListPreferences;
private NamedayPreferences namedaysPreferences;
private ThemingPreferences themingPreferences;

private Preference appThemePreference;

private MainPreferenceActivity activity;

private Analytics analytics;

@Override
Expand Down Expand Up @@ -83,27 +78,16 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
findPreference(R.string.key_namedays_contacts_only).setOnPreferenceChangeListener(onPreferenceChangeListener);
namedayLanguageListPreferences = findPreference(R.string.key_namedays_language);

namedayLanguageListPreferences.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
namedayLanguageListPreferences.setOnNamedayLocaleChangeListener(
new NamedayListPreference.OnNamedayLocaleChangeListener() {

@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String selectedLanguage = (String) newValue;
String summary = getNamedaySummary(selectedLanguage);
preference.setSummary(summary);
namedaysPreferences.setSelectedLanguage(selectedLanguage);
public boolean onNamedayChanged(NamedayLocale locale) {
namedaysPreferences.setSelectedLanguage(locale.getCountryCode());
namedayLanguageListPreferences.setSummary(locale.getLanguageNameResId());
return true;
}

private String getNamedaySummary(String newValue) {
int index = 0;
for (CharSequence entry : namedayLanguageListPreferences.getEntryValues()) {
if (entry.equals(newValue)) {
return namedayLanguageListPreferences.getEntries()[index].toString();
}
index++;
}
throw new DeveloperError(newValue + " is not a supported Locale");
}
}
);
reattachThemeDialogIfNeeded();
Expand All @@ -120,16 +104,10 @@ private NamedayLocale getLocale() {
return namedaysPreferences.getSelectedLanguage();
}

@Override
public void onStart() {
super.onStart();
namedayLanguageListPreferences.setValue(namedaysPreferences.getSelectedLanguage().toString());
}

@Override
public void onResume() {
super.onResume();
namedayLanguageListPreferences.setSummary(namedayLanguageListPreferences.getEntry());
namedayLanguageListPreferences.setSummary(namedaysPreferences.getSelectedLanguage().getLanguageNameResId());
appThemePreference.setSummary(themingPreferences.getSelectedTheme().getThemeName());

}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@

package com.alexstyl.specialdates.settings;

import android.content.Context;
import android.preference.ListPreference;
import android.preference.Preference;
import android.support.annotation.StringRes;
import android.util.AttributeSet;

import com.alexstyl.specialdates.events.namedays.NamedayLocale;
import com.alexstyl.specialdates.events.namedays.NamedayPreferences;

import java.util.Arrays;
import java.util.Comparator;

public class NamedayListPreference extends ListPreference {

public NamedayListPreference(Context context, AttributeSet attrs) {
super(context, attrs);

NamedayLocale[] locales = NamedayLocale.values();
Arrays.sort(locales, COUNTRY_CODE_COMPARATOR);
setEntriesAndValues(locales);

NamedayLocale defaultLocale = NamedayPreferences.newInstance(context).getSelectedLanguage();
setDefaultValue(defaultLocale.getCountryCode());
}

private void setEntriesAndValues(NamedayLocale[] locales) {
CharSequence[] entries = new CharSequence[locales.length];
CharSequence[] entryValues = new CharSequence[locales.length];
for (int i = 0; i < locales.length; i++) {
entries[i] = locales[i].getCountryCode();
entryValues[i] = getString(locales[i].getLanguageNameResId());
}
setEntries(entryValues);
setEntryValues(entries);
}

private CharSequence getString(@StringRes int nameResId) {
return getContext().getString(nameResId);
}

private static final Comparator<NamedayLocale> COUNTRY_CODE_COMPARATOR = new Comparator<NamedayLocale>() {
@Override
public int compare(NamedayLocale o1, NamedayLocale o2) {
return o1.getCountryCode().compareTo(o2.getCountryCode());
}
};

void setOnNamedayLocaleChangeListener(final OnNamedayLocaleChangeListener onNamedayLocaleChangeListener) {
setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
NamedayLocale namedayLocale = NamedayLocale.from((String) newValue);
return onNamedayLocaleChangeListener.onNamedayChanged(namedayLocale);
}
});
}

interface OnNamedayLocaleChangeListener {
boolean onNamedayChanged(NamedayLocale locale);
}
}
Loading