diff --git a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java index b1ac93232..5d5dab2e7 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java @@ -336,19 +336,19 @@ public class KiwixSettingsActivity extends AppCompatActivity { String selectedLang = sharedPreferences.getString(PREF_LANG, Locale.getDefault().toString()); new LanguageSelectDialog.Builder(getActivity(), dialogStyle()) - .setLanguages(languageUtils.getLanguageList()) - .setSingleSelect(true) - .setSelectedLanguage(selectedLang) - .setOnLanguageSelectedListener((languageCode -> { - SharedPreferences.Editor editor = sharedPreferences.edit(); - editor.putString(PREF_LANG, languageCode); - editor.apply(); + .setLanguages(languageUtils.getLanguageList()) + .setSingleSelect(true) + .setSelectedLanguage(selectedLang) + .setOnLanguageSelectedListener((languageCode -> { + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putString(PREF_LANG, languageCode); + editor.apply(); - LanguageUtils.handleLocaleChange(getActivity(), languageCode); - // Request a restart when the user returns to the Activity, that called this Activity - restartActivity(); - })) - .show(); + LanguageUtils.handleLocaleChange(getActivity(), languageCode); + // Request a restart when the user returns to the Activity, that called this Activity + restartActivity(); + })) + .show(); } public void openFolderSelect(){ diff --git a/app/src/main/java/org/kiwix/kiwixmobile/views/LanguageSelectDialog.java b/app/src/main/java/org/kiwix/kiwixmobile/views/LanguageSelectDialog.java index 447c5ca32..0a74291a9 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/views/LanguageSelectDialog.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/views/LanguageSelectDialog.java @@ -24,28 +24,28 @@ import java.util.Map; */ public class LanguageSelectDialog extends AlertDialog { - protected LanguageSelectDialog(@NonNull Context context) { - super(context); - } + protected LanguageSelectDialog(@NonNull Context context) { + super(context); + } - public static class Builder extends AlertDialog.Builder { - private List languages; - private Map languageCounts; - private boolean singleSelect = false; - private String selectedLanguage; - private OnLanguageSelectedListener languageSelectedListener; + public static class Builder extends AlertDialog.Builder { + private List languages; + private Map languageCounts; + private boolean singleSelect = false; + private String selectedLanguage; + private OnLanguageSelectedListener languageSelectedListener; - public Builder(@NonNull Context context) { - super(context); - } + public Builder(@NonNull Context context) { + super(context); + } - public Builder(@NonNull Context context, int themeResId) { - super(context, themeResId); - } + public Builder(@NonNull Context context, int themeResId) { + super(context, themeResId); + } - public Builder setLanguages(List languages) { - this.languages = languages; - return this; + public Builder setLanguages(List languages) { + this.languages = languages; + return this; } public Builder setLanguageCounts(Map languageCounts) { @@ -54,44 +54,42 @@ public class LanguageSelectDialog extends AlertDialog { } public Builder setSingleSelect(boolean singleSelect) { - this.singleSelect = singleSelect; - return this; + this.singleSelect = singleSelect; + return this; } // Should only be called if setSingleSelect has previously been called with a value of true public Builder setSelectedLanguage(String languageCode) { - this.selectedLanguage = languageCode; - return this; + this.selectedLanguage = languageCode; + return this; } // Should only be called if setSingleSelect has previously been called with a value of true public Builder setOnLanguageSelectedListener(OnLanguageSelectedListener listener) { - languageSelectedListener = listener; - return this; + languageSelectedListener = listener; + return this; } - @Override - public AlertDialog create() { - LinearLayout view = (LinearLayout) View.inflate(getContext(), R.layout.language_selection, null); - ListView listView = view.findViewById(R.id.language_check_view); - int size = 0; - try { - size = languages.size(); - } catch (NullPointerException e) { - e.printStackTrace(); + @Override + public AlertDialog create() { + LinearLayout view = (LinearLayout) View + .inflate(getContext(), R.layout.language_selection, null); + ListView listView = view.findViewById(R.id.language_check_view); + int size = 0; + try { + size = languages.size(); + } catch (NullPointerException e) { + e.printStackTrace(); } - if (size == 0) { - Toast.makeText(getContext(), getContext().getResources().getString(R.string.wait_for_load), Toast.LENGTH_LONG).show(); - } - LanguageArrayAdapter languageArrayAdapter = new LanguageArrayAdapter(getContext(), - 0, - languages, - languageCounts, - singleSelect, - selectedLanguage); - listView.setAdapter(languageArrayAdapter); - setView(view); + if (size == 0) { + Toast.makeText(getContext(), getContext().getResources().getString(R.string.wait_for_load), + Toast.LENGTH_LONG).show(); + } + LanguageArrayAdapter languageArrayAdapter = new LanguageArrayAdapter(getContext(), 0, + languages, languageCounts, singleSelect, selectedLanguage); + listView.setAdapter(languageArrayAdapter); + setView(view); if (languageSelectedListener != null) { setPositiveButton(android.R.string.ok, ((dialog, which) -> { @@ -99,73 +97,69 @@ public class LanguageSelectDialog extends AlertDialog { })); } - return super.create(); - } - } + return super.create(); + } + } - private static class LanguageArrayAdapter extends ArrayAdapter { - private Map languageCounts; - private Context context; - private boolean singleSelect; + private static class LanguageArrayAdapter extends ArrayAdapter { + private Map languageCounts; + private Context context; + private boolean singleSelect; private String selectedLanguage; - public LanguageArrayAdapter(Context context, - int textViewResourceId, - List languages, - Map languageCounts, - boolean singleSelect, - String selectedLanguage) { - super(context, textViewResourceId, languages); - this.languageCounts = languageCounts; - this.context = context; - this.singleSelect = singleSelect; + public LanguageArrayAdapter(Context context, int textViewResourceId, List languages, + Map languageCounts, boolean singleSelect, String selectedLanguage) { + super(context, textViewResourceId, languages); + this.languageCounts = languageCounts; + this.context = context; + this.singleSelect = singleSelect; this.selectedLanguage = selectedLanguage; } - @NonNull + @NonNull @Override - public View getView(int position, View convertView, @NonNull ViewGroup parent) { - LanguageArrayAdapter.ViewHolder holder; + public View getView(int position, View convertView, @NonNull ViewGroup parent) { + LanguageArrayAdapter.ViewHolder holder; - if (convertView == null) { - convertView = View.inflate(getContext(), R.layout.language_check_item, null); - holder = new LanguageArrayAdapter.ViewHolder(); - holder.row = convertView.findViewById(R.id.language_row); - holder.checkBox = convertView.findViewById(R.id.language_checkbox); - holder.language = convertView.findViewById(R.id.language_name); - holder.languageLocalized = convertView.findViewById(R.id.language_name_localized); - holder.languageEntriesCount = convertView.findViewById(R.id.language_entries_count); - convertView.setTag(holder); - } else { - holder = (LanguageArrayAdapter.ViewHolder) convertView.getTag(); - } - - // Set event listeners first, since updating the default values can trigger them. - holder.row.setOnClickListener((view) -> holder.checkBox.toggle()); - holder.checkBox.setOnCheckedChangeListener((compoundButton, b) -> getItem(position).active = b); - - LibraryAdapter.Language language = getItem(position); - holder.language.setText(language.language); - holder.languageLocalized.setText(language.languageLocalized); - - if (languageCounts != null) { - holder.languageEntriesCount.setText( - context.getString(R.string.language_count, - languageCounts.get(language.languageCode))); + if (convertView == null) { + convertView = View.inflate(getContext(), R.layout.language_check_item, null); + holder = new LanguageArrayAdapter.ViewHolder(); + holder.row = convertView.findViewById(R.id.language_row); + holder.checkBox = convertView.findViewById(R.id.language_checkbox); + holder.language = convertView.findViewById(R.id.language_name); + holder.languageLocalized = convertView.findViewById(R.id.language_name_localized); + holder.languageEntriesCount = convertView.findViewById(R.id.language_entries_count); + convertView.setTag(holder); } else { - holder.languageEntriesCount.setVisibility(View.GONE); + holder = (LanguageArrayAdapter.ViewHolder) convertView.getTag(); + } + + // Set event listeners first, since updating the default values can trigger them. + holder.row.setOnClickListener((view) -> holder.checkBox.toggle()); + holder.checkBox + .setOnCheckedChangeListener((compoundButton, b) -> getItem(position).active = b); + + LibraryAdapter.Language language = getItem(position); + holder.language.setText(language.language); + holder.languageLocalized.setText(language.languageLocalized); + + if (languageCounts != null) { + holder.languageEntriesCount.setText(context.getString(R.string.language_count, + languageCounts.get(language.languageCode))); + } else { + holder.languageEntriesCount.setVisibility(View.GONE); } if (!singleSelect) { holder.checkBox.setChecked(language.active); } else { - holder.checkBox.setClickable(false); - holder.checkBox.setFocusable(false); + holder.checkBox.setClickable(false); + holder.checkBox.setFocusable(false); - if (getSelectedLanguage().equalsIgnoreCase(language.languageCodeISO2)) { - holder.checkBox.setChecked(true); + if (getSelectedLanguage().equalsIgnoreCase(language.languageCodeISO2)) { + holder.checkBox.setChecked(true); } else { - holder.checkBox.setChecked(false); + holder.checkBox.setChecked(false); } convertView.setOnClickListener((v -> { @@ -174,8 +168,8 @@ public class LanguageSelectDialog extends AlertDialog { })); } - return convertView; - } + return convertView; + } public String getSelectedLanguage() { return selectedLanguage; @@ -185,19 +179,19 @@ public class LanguageSelectDialog extends AlertDialog { this.selectedLanguage = selectedLanguage; } - // We are using the ViewHolder pattern in order to optimize the ListView by reusing - // Views and saving them to this mLibrary class, and not inflating the layout every time - // we need to create a row. - private class ViewHolder { - ViewGroup row; - CheckBox checkBox; - TextView language; - TextView languageLocalized; - TextView languageEntriesCount; - } - } + // We are using the ViewHolder pattern in order to optimize the ListView by reusing + // Views and saving them to this mLibrary class, and not inflating the layout every time + // we need to create a row. + private class ViewHolder { + ViewGroup row; + CheckBox checkBox; + TextView language; + TextView languageLocalized; + TextView languageEntriesCount; + } + } - public interface OnLanguageSelectedListener { - void onLanguageSelected(String languageCode); + public interface OnLanguageSelectedListener { + void onLanguageSelected(String languageCode); } } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.java index 352a46550..c330d5db3 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/ZimManageActivity.java @@ -224,13 +224,13 @@ public class ZimManageActivity extends AppCompatActivity { private void showLanguageSelect() { new LanguageSelectDialog.Builder(this, dialogStyle()) - .setLanguages(mSectionsPagerAdapter.libraryFragment.libraryAdapter.languages) - .setLanguageCounts(mSectionsPagerAdapter.libraryFragment.libraryAdapter.languageCounts) - .setPositiveButton(android.R.string.ok, (dialogInterface, i) -> { - mSectionsPagerAdapter.libraryFragment.libraryAdapter.updateNetworkLanguages(); - mSectionsPagerAdapter.libraryFragment.libraryAdapter.getFilter().filter(searchQuery); - }) - .show(); + .setLanguages(mSectionsPagerAdapter.libraryFragment.libraryAdapter.languages) + .setLanguageCounts(mSectionsPagerAdapter.libraryFragment.libraryAdapter.languageCounts) + .setPositiveButton(android.R.string.ok, (dialogInterface, i) -> { + mSectionsPagerAdapter.libraryFragment.libraryAdapter.updateNetworkLanguages(); + mSectionsPagerAdapter.libraryFragment.libraryAdapter.getFilter().filter(searchQuery); + }) + .show(); } /**