[Regional preferences] Add numbering system page.
- Add language selection page - Add number format page - Refactor some part for readability. Bug: b/247073388 Bug: b/246929960 Test: atest pass Change-Id: I617698a3146b6e461467a97de8c08f4c4dc6e7f2
This commit is contained in:
@@ -16,28 +16,18 @@
|
||||
|
||||
package com.android.settings.regionalpreferences;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
import android.icu.text.NumberingSystem;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.os.LocaleList;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.StringJoiner;
|
||||
|
||||
/** A controller for the entry of Numbering System's page */
|
||||
public class NumberingSystemController extends BasePreferenceController {
|
||||
private static final String TAG = NumberingSystemController.class.getSimpleName();
|
||||
|
||||
private static final String UNICODE_EXTENSION_NUMBERING_SYSTEM = "nu";
|
||||
|
||||
public NumberingSystemController(Context context, String preferenceKey) {
|
||||
super(context, preferenceKey);
|
||||
}
|
||||
@@ -55,49 +45,17 @@ public class NumberingSystemController extends BasePreferenceController {
|
||||
*/
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
// Hide this , and waiting for next implementation.
|
||||
return CONDITIONALLY_UNAVAILABLE;
|
||||
return AVAILABLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getSummary() {
|
||||
String record = Settings.System.getString(
|
||||
mContext.getContentResolver(), Settings.System.LOCALE_PREFERENCES);
|
||||
String result = "";
|
||||
if (!TextUtils.isEmpty(record)) {
|
||||
result = Locale.forLanguageTag(record)
|
||||
.getUnicodeLocaleType(UNICODE_EXTENSION_NUMBERING_SYSTEM);
|
||||
LocaleList localeList = LocaleList.getDefault();
|
||||
StringJoiner stringJoiner = new StringJoiner(", ");
|
||||
for (int i = 0; i < localeList.size(); i++) {
|
||||
Locale locale = localeList.get(i);
|
||||
stringJoiner.add(locale.stripExtensions().getDisplayName(locale));
|
||||
}
|
||||
|
||||
if (TextUtils.isEmpty(result)) {
|
||||
result = Locale.getDefault(Locale.Category.FORMAT)
|
||||
.getUnicodeLocaleType(UNICODE_EXTENSION_NUMBERING_SYSTEM);
|
||||
if (TextUtils.isEmpty(result)) {
|
||||
return mContext.getString(R.string.default_string_of_regional_preference);
|
||||
}
|
||||
}
|
||||
|
||||
Locale locale = new Locale.Builder()
|
||||
.setUnicodeLocaleKeyword(UNICODE_EXTENSION_NUMBERING_SYSTEM, result)
|
||||
.build();
|
||||
return NumberingSystem.getInstance(locale).getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handlePreferenceTreeClick(Preference preference) {
|
||||
if (!TextUtils.equals(preference.getKey(), mPreferenceKey)) {
|
||||
Log.e(TAG, "not the key " + preference.getKey() + " / " + mPreferenceKey);
|
||||
return false;
|
||||
}
|
||||
|
||||
final Bundle extra = new Bundle();
|
||||
extra.putString(RegionalPreferencesFragment.TYPE_OF_REGIONAL_PREFERENCE,
|
||||
RegionalPreferencesFragment.TYPE_NUMBERING_SYSTEM);
|
||||
new SubSettingLauncher(preference.getContext())
|
||||
.setDestination(RegionalPreferencesFragment.class.getName())
|
||||
.setSourceMetricsCategory(SettingsEnums.REGIONAL_PREFERENCE)
|
||||
.setArguments(extra)
|
||||
.launch();
|
||||
return true;
|
||||
return stringJoiner.toString();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user