Android 13: prepare appcompat language

This commit is contained in:
M66B 2022-06-13 09:43:41 +02:00
parent 0dcb1ce1ec
commit cd13f1096f
2 changed files with 24 additions and 67 deletions

View File

@ -86,6 +86,7 @@ import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.SortedMap;
import io.requery.android.database.sqlite.SQLiteDatabase;
@ -110,7 +111,6 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
private TextView tvFtsIndexed;
private TextView tvFtsPro;
private Spinner spLanguage;
private ImageButton ibResetLanguage;
private SwitchCompat swDeepL;
private ImageButton ibDeepL;
private TextView tvSdcard;
@ -284,7 +284,6 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
tvFtsIndexed = view.findViewById(R.id.tvFtsIndexed);
tvFtsPro = view.findViewById(R.id.tvFtsPro);
spLanguage = view.findViewById(R.id.spLanguage);
ibResetLanguage = view.findViewById(R.id.ibResetLanguage);
swDeepL = view.findViewById(R.id.swDeepL);
ibDeepL = view.findViewById(R.id.ibDeepL);
tvSdcard = view.findViewById(R.id.tvSdcard);
@ -524,57 +523,26 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
spLanguage.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
if (position == 0)
onNothingSelected(adapterView);
else {
String tag = languages.get(position - 1).first;
if (tag.equals(spLanguage.getTag()))
return;
String current = prefs.getString("language", null);
String selected = (position == 0 ? null : languages.get(position - 1).first);
if (Objects.equals(current, selected))
return;
new AlertDialog.Builder(view.getContext())
.setIcon(R.drawable.twotone_help_24)
.setTitle(languages.get(position - 1).second)
.setMessage(R.string.title_advanced_english_hint)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
prefs.edit().putString("language", tag).commit(); // apply won't work here
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Do nothing
}
})
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
setOptions();
}
})
.show();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
prefs.edit().remove("language").commit(); // apply won't work here
}
});
ibResetLanguage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Locale system = Resources.getSystem().getConfiguration().locale;
new AlertDialog.Builder(v.getContext())
String title = (position == 0
? getString(R.string.title_advanced_language_system)
: languages.get(position - 1).second);
new AlertDialog.Builder(adapterView.getContext())
.setIcon(R.drawable.twotone_help_24)
.setTitle(system.getDisplayName(system))
.setMessage(Helper.getString(v.getContext(), system, R.string.title_advanced_english_hint))
.setTitle(title)
.setMessage(R.string.title_advanced_english_hint)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
prefs.edit().remove("language").commit(); // apply won't work here
// apply won't work here
if (selected == null)
prefs.edit().remove("language").commit();
else
prefs.edit().putString("language", selected).commit();
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@ -591,6 +559,11 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
})
.show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
prefs.edit().remove("language").commit();
}
});
swDeepL.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@ -1725,8 +1698,6 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
selected = pos + 1;
}
spLanguage.setTag(language);
ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, android.R.id.text1, display);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spLanguage.setAdapter(adapter);

View File

@ -287,25 +287,11 @@
<Spinner
android:id="@+id/spLanguage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:layout_marginEnd="12dp"
app:layout_constraintEnd_toStartOf="@+id/ibResetLanguage"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvLanguage" />
<ImageButton
android:id="@+id/ibResetLanguage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/title_reset"
android:tooltipText="@string/title_reset"
app:layout_constraintBottom_toBottomOf="@id/spLanguage"
app:layout_constraintEnd_toEndOf="parent"
app:srcCompat="@drawable/twotone_cancel_24" />
android:layout_marginTop="12dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvLanguage" />
<TextView
android:id="@+id/tvLanguageHint"