Use existing localizations for formatting data usage [DO NOT MERGE]
This partially reverts I5be9bb7ce3b11709117da698d6c03610f4e5e40e in order to use existing localizations and also avoid hard to localize strings. Also, we now bidi wrap the usage value, since it may break in the RTL locales otherwise. Bug: 28747101 Change-Id: Ibc03632cccfe671164cfbb670a423ada1177db65
This commit is contained in:
@@ -7238,13 +7238,13 @@
|
||||
<string name="ethernet">Ethernet</string>
|
||||
|
||||
<!-- Format string for amount of cellular data used [CHAR LIMIT=30] -->
|
||||
<string name="cell_data_template"><xliff:g id="number" example="128">^1</xliff:g><small><small> <xliff:g id="unit" example="KB">^2</xliff:g></small></small><small><small> cellular data</small></small></string>
|
||||
<string name="cell_data_template"><xliff:g name="units" example="GB">%1$s</xliff:g> cellular data</string>
|
||||
|
||||
<!-- Format string for amount of wifi data used [CHAR LIMIT=30] -->
|
||||
<string name="wifi_data_template"><xliff:g id="number" example="128">^1</xliff:g><small><small> <xliff:g id="unit" example="KB">^2</xliff:g></small></small><small><small> Wi-Fi data</small></small></string>
|
||||
<string name="wifi_data_template"><xliff:g name="units" example="GB">%1$s</xliff:g> Wi-Fi data</string>
|
||||
|
||||
<!-- Format string for amount of ethernet data used [CHAR LIMIT=30] -->
|
||||
<string name="ethernet_data_template"><xliff:g id="number" example="128">^1</xliff:g><small><small> <xliff:g id="unit" example="KB">^2</xliff:g></small></small><small><small> ethernet data</small></small></string>
|
||||
<string name="ethernet_data_template"><xliff:g name="units" example="GB">%1$s</xliff:g> ethernet data</string>
|
||||
|
||||
<!-- Format for a summary describing the amount of data before the user is warned [CHAR LIMIT=NONE] -->
|
||||
<string name="cell_warning_only"><xliff:g name="amount" example="1 GB">%1$s</xliff:g> Data warning</string>
|
||||
|
@@ -32,8 +32,12 @@ import android.support.v7.preference.PreferenceScreen;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.text.BidiFormatter;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableString;
|
||||
import android.text.TextUtils;
|
||||
import android.text.format.Formatter;
|
||||
import android.text.style.RelativeSizeSpan;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
@@ -183,15 +187,46 @@ public class DataUsageSummary extends DataUsageBase implements Indexable {
|
||||
updateState();
|
||||
}
|
||||
|
||||
private static void verySmallSpanExcept(SpannableString s, CharSequence exception) {
|
||||
final float SIZE = 0.8f * 0.8f;
|
||||
final int FLAGS = Spannable.SPAN_INCLUSIVE_INCLUSIVE;
|
||||
final int exceptionStart = TextUtils.indexOf(s, exception);
|
||||
if (exceptionStart == -1) {
|
||||
s.setSpan(new RelativeSizeSpan(SIZE), 0, s.length(), FLAGS);
|
||||
} else {
|
||||
if (exceptionStart > 0) {
|
||||
s.setSpan(new RelativeSizeSpan(SIZE), 0, exceptionStart, FLAGS);
|
||||
}
|
||||
final int exceptionEnd = exceptionStart + exception.length();
|
||||
if (exceptionEnd < s.length()) {
|
||||
s.setSpan(new RelativeSizeSpan(SIZE), exceptionEnd, s.length(), FLAGS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static CharSequence formatTitle(Context context, String template, long usageLevel) {
|
||||
final SpannableString amountTemplate = new SpannableString(
|
||||
context.getString(com.android.internal.R.string.fileSizeSuffix)
|
||||
.replace("%1$s", "^1").replace("%2$s", "^2"));
|
||||
verySmallSpanExcept(amountTemplate, "^1");
|
||||
final Formatter.BytesResult usedResult = Formatter.formatBytes(context.getResources(),
|
||||
usageLevel, Formatter.FLAG_SHORTER);
|
||||
final CharSequence formattedUsage = TextUtils.expandTemplate(amountTemplate,
|
||||
usedResult.value, usedResult.units);
|
||||
|
||||
final SpannableString fullTemplate = new SpannableString(template.replace("%1$s", "^1"));
|
||||
verySmallSpanExcept(fullTemplate, "^1");
|
||||
return TextUtils.expandTemplate(fullTemplate,
|
||||
BidiFormatter.getInstance().unicodeWrap(formattedUsage));
|
||||
}
|
||||
|
||||
private void updateState() {
|
||||
DataUsageController.DataUsageInfo info = mDataUsageController.getDataUsageInfo(
|
||||
mDefaultTemplate);
|
||||
Context context = getContext();
|
||||
if (mSummaryPreference != null) {
|
||||
Formatter.BytesResult usedResult = Formatter.formatBytes(context.getResources(),
|
||||
info.usageLevel, Formatter.FLAG_SHORTER);
|
||||
mSummaryPreference.setTitle(TextUtils.expandTemplate(getText(mDataUsageTemplate),
|
||||
usedResult.value, usedResult.units));
|
||||
mSummaryPreference.setTitle(
|
||||
formatTitle(context, getString(mDataUsageTemplate), info.usageLevel));
|
||||
long limit = info.limitLevel;
|
||||
if (limit <= 0) {
|
||||
limit = info.warningLevel;
|
||||
|
Reference in New Issue
Block a user