mirror of
https://github.com/gsantner/dandelion
synced 2024-11-22 04:12:08 +01:00
Make use of opoc/LanguagePreference (fixes #169)
This commit is contained in:
parent
4ba1b8671d
commit
184de1931e
3 changed files with 38 additions and 17 deletions
|
@ -32,6 +32,7 @@ android {
|
||||||
|
|
||||||
buildConfigField "boolean", "IS_TEST_BUILD", "false"
|
buildConfigField "boolean", "IS_TEST_BUILD", "false"
|
||||||
buildConfigField "boolean", "IS_GPLAY_BUILD", "false"
|
buildConfigField "boolean", "IS_GPLAY_BUILD", "false"
|
||||||
|
buildConfigField("String[]", "APPLICATION_LANGUAGES", '{' + getUsedAndroidLanguages().collect {"\"${it}\""}.join(",") + '}')
|
||||||
|
|
||||||
vectorDrawables.useSupportLibrary = true
|
vectorDrawables.useSupportLibrary = true
|
||||||
}
|
}
|
||||||
|
@ -92,6 +93,23 @@ dependencies {
|
||||||
annotationProcessor "com.jakewharton:butterknife-compiler:${version_lib.butterknife}"
|
annotationProcessor "com.jakewharton:butterknife-compiler:${version_lib.butterknife}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings(["UnnecessaryQualifiedReference", "SpellCheckingInspection"])
|
||||||
|
static String[] getUsedAndroidLanguages() {
|
||||||
|
Set<String> langs = new HashSet<>()
|
||||||
|
new File('.').eachFileRecurse(groovy.io.FileType.DIRECTORIES) {
|
||||||
|
final foldername = it.name
|
||||||
|
if (foldername.startsWith('values-') && !it.canonicalPath.contains("build" + File.separator + "intermediates")) {
|
||||||
|
new File(it.toString()).eachFileRecurse(groovy.io.FileType.FILES) {
|
||||||
|
if (it.name.toLowerCase().endsWith(".xml") && it.getCanonicalFile().getText('UTF-8').contains("<string")) {
|
||||||
|
langs.add(foldername.replace("values-", ""))
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return langs.toArray(new String[langs.size()])
|
||||||
|
}
|
||||||
|
|
||||||
// #####################
|
// #####################
|
||||||
// Groovy Coding Area
|
// Groovy Coding Area
|
||||||
// #####################
|
// #####################
|
||||||
|
|
|
@ -39,10 +39,8 @@ static String[] getUsedAndroidLanguages() {
|
||||||
* Summary: Change language of this app. Restart app for changes to take effect
|
* Summary: Change language of this app. Restart app for changes to take effect
|
||||||
|
|
||||||
* Define element in Preferences-XML:
|
* Define element in Preferences-XML:
|
||||||
<!--suppress AndroidDomInspection -->
|
|
||||||
<net.gsantner.opoc.ui.LanguagePreference
|
<net.gsantner.opoc.ui.LanguagePreference
|
||||||
android:icon="@drawable/ic_language_black_24dp"
|
android:icon="@drawable/ic_language_black_24dp"
|
||||||
android:defaultValue=""
|
|
||||||
android:key="@string/pref_key__language"
|
android:key="@string/pref_key__language"
|
||||||
android:summary="@string/pref_desc__language"
|
android:summary="@string/pref_desc__language"
|
||||||
android:title="@string/pref_title__language"/>
|
android:title="@string/pref_title__language"/>
|
||||||
|
@ -55,18 +53,25 @@ import android.os.Build;
|
||||||
import android.preference.ListPreference;
|
import android.preference.ListPreference;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
|
|
||||||
|
import net.gsantner.opoc.util.ContextUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import net.gsantner.opoc.util.ContextUtils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A {@link android.preference.ListPreference} that displays a list of languages to select from
|
* A {@link android.preference.ListPreference} that displays a list of languages to select from
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({"unused", "SpellCheckingInspection"})
|
@SuppressWarnings({"unused", "SpellCheckingInspection", "WeakerAccess"})
|
||||||
public class LanguagePreference extends ListPreference {
|
public class LanguagePreference extends ListPreference {
|
||||||
|
private static final String SYSTEM_LANGUAGE_CODE = "";
|
||||||
|
public static String SYSTEM_LANGUAGE_NAME = "System";
|
||||||
|
|
||||||
|
// The language of res/values/ -> (usually English)
|
||||||
|
public static String DEFAULT_LANGUAGE_NAME = "English";
|
||||||
|
public static String DEFAULT_LANGUAGE_CODE = "en";
|
||||||
|
|
||||||
public LanguagePreference(Context context) {
|
public LanguagePreference(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
init(context, null);
|
init(context, null);
|
||||||
|
@ -99,13 +104,15 @@ public class LanguagePreference extends ListPreference {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void init(Context context, AttributeSet attrs) {
|
private void init(Context context, AttributeSet attrs) {
|
||||||
|
setDefaultValue(SYSTEM_LANGUAGE_CODE);
|
||||||
|
|
||||||
// Fetch readable details
|
// Fetch readable details
|
||||||
ContextUtils ContextUtils = new ContextUtils(context);
|
ContextUtils contextUtils = new ContextUtils(context);
|
||||||
List<String> languages = new ArrayList<>();
|
List<String> languages = new ArrayList<>();
|
||||||
Object bcof = ContextUtils.getBuildConfigValue("APPLICATION_LANGUAGES");
|
Object bcof = contextUtils.getBuildConfigValue("APPLICATION_LANGUAGES");
|
||||||
if (bcof instanceof String[]) {
|
if (bcof instanceof String[]) {
|
||||||
for (String langId : (String[]) bcof) {
|
for (String langId : (String[]) bcof) {
|
||||||
Locale locale = ContextUtils.getLocaleByAndroidCode(langId);
|
Locale locale = contextUtils.getLocaleByAndroidCode(langId);
|
||||||
languages.add(summarizeLocale(locale) + ";" + langId);
|
languages.add(summarizeLocale(locale) + ";" + langId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -120,10 +127,10 @@ public class LanguagePreference extends ListPreference {
|
||||||
entries[i + 2] = languages.get(i).split(";")[0];
|
entries[i + 2] = languages.get(i).split(";")[0];
|
||||||
entryval[i + 2] = languages.get(i).split(";")[1];
|
entryval[i + 2] = languages.get(i).split(";")[1];
|
||||||
}
|
}
|
||||||
entries[0] = "System";
|
entries[0] = SYSTEM_LANGUAGE_NAME;
|
||||||
entryval[0] = "";
|
entryval[0] = SYSTEM_LANGUAGE_CODE;
|
||||||
entries[1] = "English";
|
entries[1] = DEFAULT_LANGUAGE_NAME;
|
||||||
entryval[1] = "en";
|
entryval[1] = DEFAULT_LANGUAGE_CODE;
|
||||||
|
|
||||||
setEntries(entries);
|
setEntries(entries);
|
||||||
setEntryValues(entryval);
|
setEntryValues(entryval);
|
||||||
|
|
|
@ -17,16 +17,12 @@
|
||||||
android:summary="@string/pref_desc__sub_nav_slider"
|
android:summary="@string/pref_desc__sub_nav_slider"
|
||||||
android:title="@string/pref_title__sub_nav_slider"/>
|
android:title="@string/pref_title__sub_nav_slider"/>
|
||||||
|
|
||||||
<ListPreference
|
<net.gsantner.opoc.ui.LanguagePreference
|
||||||
android:defaultValue=""
|
|
||||||
android:entries="@array/pref_arrdisp__language"
|
|
||||||
android:entryValues="@array/pref_arrkeys__language"
|
|
||||||
android:icon="@drawable/ic_language_black_48px"
|
android:icon="@drawable/ic_language_black_48px"
|
||||||
android:key="@string/pref_key__language"
|
android:key="@string/pref_key__language"
|
||||||
android:summary="@string/pref_desc__language"
|
android:summary="@string/pref_desc__language"
|
||||||
android:title="@string/pref_title__language"/>
|
android:title="@string/pref_title__language"/>
|
||||||
|
|
||||||
|
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:dialogTitle="@string/pref_title__font_size"
|
android:dialogTitle="@string/pref_title__font_size"
|
||||||
android:entries="@array/pref_entries__font_size"
|
android:entries="@array/pref_entries__font_size"
|
||||||
|
|
Loading…
Reference in a new issue