Skip to content

Commit cff471e

Browse files
author
maskara
committed
Fix language spinner
1 parent e57444d commit cff471e

File tree

5 files changed

+19
-211
lines changed

5 files changed

+19
-211
lines changed

app/src/main/java/fr/free/nrw/commons/upload/Description.java

+7-9
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package fr.free.nrw.commons.upload;
22

3-
import android.text.TextUtils;
4-
53
import java.util.List;
64

75
/**
@@ -16,36 +14,36 @@ class Description {
1614
/**
1715
* @return The language code ie. "en" or "fr"
1816
*/
19-
public String getLanguageCode() {
17+
String getLanguageCode() {
2018
return languageCode;
2119
}
2220

2321
/**
2422
* @param languageCode The language code ie. "en" or "fr"
2523
*/
26-
public void setLanguageCode(String languageCode) {
24+
void setLanguageCode(String languageCode) {
2725
this.languageCode = languageCode;
2826
}
2927

30-
public String getDescriptionText() {
28+
String getDescriptionText() {
3129
return descriptionText;
3230
}
3331

34-
public void setDescriptionText(String descriptionText) {
32+
void setDescriptionText(String descriptionText) {
3533
this.descriptionText = descriptionText;
3634
}
3735

3836
/**
3937
* @return the index of the language selected in a spinner with {@link SpinnerLanguagesAdapter}
4038
*/
41-
public int getSelectedLanguageIndex() {
39+
int getSelectedLanguageIndex() {
4240
return selectedLanguageIndex;
4341
}
4442

4543
/**
4644
* @param selectedLanguageIndex the index of the language selected in a spinner with {@link SpinnerLanguagesAdapter}
4745
*/
48-
public void setSelectedLanguageIndex(int selectedLanguageIndex) {
46+
void setSelectedLanguageIndex(int selectedLanguageIndex) {
4947
this.selectedLanguageIndex = selectedLanguageIndex;
5048
}
5149

@@ -56,7 +54,7 @@ public void setSelectedLanguageIndex(int selectedLanguageIndex) {
5654
* @param descriptions the list of descriptions, description is ignored if text is null.
5755
* @return a string with the pattern of {{en|1=descriptionText}}
5856
*/
59-
public static String formatList(List<Description> descriptions) {
57+
static String formatList(List<Description> descriptions) {
6058
StringBuilder descListString = new StringBuilder();
6159
for (Description description : descriptions) {
6260
if (!description.isEmpty()) {

app/src/main/java/fr/free/nrw/commons/upload/Language.java

-27
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,7 @@
22

33
import java.util.Locale;
44

5-
import fr.free.nrw.commons.R;
6-
75
class Language {
8-
9-
public static int[] languageGroups={R.string.desc_language_Worldwide,
10-
R.string.desc_language_America,
11-
R.string.desc_language_Europe,
12-
R.string.desc_language_Middle_East,
13-
R.string.desc_language_Africa,
14-
R.string.desc_language_Asia,
15-
R.string.desc_language_Pacific };
16-
public static int[] languageNames={R.array.desc_languages_Worldwide,
17-
R.array.desc_languages_America,
18-
R.array.desc_languages_Europe,
19-
R.array.desc_languages_Middle_East,
20-
R.array.desc_languages_Africa,
21-
R.array.desc_languages_Asia,
22-
R.array.desc_languages_Pacific
23-
};
24-
public static int[] languageCodes={R.array.desc_language_codes_Worldwide,
25-
R.array.desc_language_codes_America,
26-
R.array.desc_language_codes_Europe,
27-
R.array.desc_language_codes_Middle_East,
28-
R.array.desc_language_codes_Africa,
29-
R.array.desc_language_codes_Asia,
30-
R.array.desc_language_codes_Pacific
31-
};
32-
336
private Locale locale;
347
private boolean isSet = false;
358

app/src/main/java/fr/free/nrw/commons/upload/SpinnerLanguagesAdapter.java

+12-15
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package fr.free.nrw.commons.upload;
22

33
import android.content.Context;
4-
import android.content.res.Resources;
54
import android.graphics.Color;
65
import android.os.Build;
76
import android.support.annotation.NonNull;
@@ -15,7 +14,7 @@
1514
import android.widget.TextView;
1615

1716
import java.util.ArrayList;
18-
import java.util.Arrays;
17+
import java.util.Collections;
1918
import java.util.List;
2019
import java.util.Locale;
2120

@@ -42,23 +41,18 @@ public SpinnerLanguagesAdapter(@NonNull Context context,
4241
this.layoutInflater = LayoutInflater.from(context);
4342
languageNamesList = new ArrayList<>();
4443
languageCodesList = new ArrayList<>();
45-
prepareLanguages(context);
44+
prepareLanguages();
4645
this.selectedLanguages = selectedLanguages;
4746
}
4847

49-
private void prepareLanguages(Context context) {
50-
Resources resources = context.getResources();
48+
private void prepareLanguages() {
5149
List<Language> languages = getLocaleSupportedByDevice();
5250

5351
for(Language language: languages) {
54-
languageNamesList.add(language.getLocale().getDisplayName());
55-
languageCodesList.add(language.getLocale().getDisplayScript());
56-
}
57-
for (int i = 0; i < languages.size(); i++) {
58-
languageNamesList.add(resources.getString(Language.languageGroups[i]));
59-
languageCodesList.add("");
60-
languageNamesList.addAll(Arrays.asList(resources.getStringArray(Language.languageNames[i])));
61-
languageCodesList.addAll(Arrays.asList(resources.getStringArray(Language.languageCodes[i])));
52+
if(!languageCodesList.contains(language.getLocale().getLanguage())) {
53+
languageNamesList.add(language.getLocale().getDisplayName());
54+
languageCodesList.add(language.getLocale().getLanguage());
55+
}
6256
}
6357
}
6458

@@ -68,6 +62,9 @@ private List<Language> getLocaleSupportedByDevice() {
6862
for (Locale locale : localesArray) {
6963
languages.add(new Language(locale));
7064
}
65+
66+
Collections.sort(languages, (language, t1) -> language.getLocale().getDisplayName()
67+
.compareTo(t1.getLocale().getDisplayName()));
7168
return languages;
7269
}
7370

@@ -146,11 +143,11 @@ public void init(int position, boolean isDropDownView) {
146143
}
147144
}
148145

149-
public String getLanguageCode(int position) {
146+
String getLanguageCode(int position) {
150147
return languageCodesList.get(position);
151148
}
152149

153-
public int getIndexOfUserDefaultLocale(Context context) {
150+
int getIndexOfUserDefaultLocale(Context context) {
154151
return languageCodesList.indexOf(context.getResources().getConfiguration().locale.getLanguage());
155152
}
156153

app/src/main/res/values/lang_codes.xml

-80
This file was deleted.

app/src/main/res/values/lang_names.xml

-80
This file was deleted.

0 commit comments

Comments
 (0)