Skip to content

Commit e9be140

Browse files
author
Jim Miller
committed
Add configurable em-dash separator for all concatenated keyguard strings
Fixes bug 7459426 Change-Id: I2e4944f25f3e4e62b734bc57db628f1b3ce263cd
1 parent d259263 commit e9be140

File tree

4 files changed

+23
-13
lines changed

4 files changed

+23
-13
lines changed

core/res/res/values/strings.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3976,6 +3976,9 @@
39763976
you will be asked to unlock your phone using an email account.\n\n
39773977
Try again in <xliff:g id="number">%d</xliff:g> seconds.
39783978
</string>
3979+
<!-- Sequence of characters used to separate message strings in keyguard. Typically just em-dash
3980+
with spaces on either side. [CHAR LIMIT=3] -->
3981+
<string name="kg_text_message_separator" product="default"> \u2014 </string>
39793982

39803983
<!-- Message shown in dialog when user is attempting to set the music volume above the
39813984
recommended maximum level for headphones -->

core/res/res/values/symbols.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1478,6 +1478,7 @@
14781478
<java-symbol type="string" name="kg_failed_attempts_almost_at_login" />
14791479
<java-symbol type="string" name="kg_enter_confirm_pin_hint" />
14801480
<java-symbol type="string" name="kg_invalid_confirm_pin_hint" />
1481+
<java-symbol type="string" name="kg_text_message_separator" />
14811482

14821483
<!-- From services -->
14831484
<java-symbol type="anim" name="screen_rotate_0_enter" />

policy/src/com/android/internal/policy/impl/keyguard/CarrierText.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import com.android.internal.widget.LockPatternUtils;
2828

2929
public class CarrierText extends TextView {
30+
private static CharSequence mSeparator;
31+
3032
private LockPatternUtils mLockPatternUtils;
3133

3234
private KeyguardUpdateMonitorCallback mCallback = new KeyguardUpdateMonitorCallback() {
@@ -82,6 +84,7 @@ protected void updateCarrierText(State simState, CharSequence plmn, CharSequence
8284
@Override
8385
protected void onFinishInflate() {
8486
super.onFinishInflate();
87+
mSeparator = getResources().getString(R.string.kg_text_message_separator);
8588
KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mCallback);
8689
setSelected(true); // Allow marquee to work.
8790
}
@@ -202,7 +205,7 @@ private static CharSequence concatenate(CharSequence plmn, CharSequence spn) {
202205
final boolean plmnValid = !TextUtils.isEmpty(plmn);
203206
final boolean spnValid = !TextUtils.isEmpty(spn);
204207
if (plmnValid && spnValid) {
205-
return plmn + "|" + spn;
208+
return new StringBuilder().append(plmn).append(mSeparator).append(spn).toString();
206209
} else if (plmnValid) {
207210
return plmn;
208211
} else if (spnValid) {

policy/src/com/android/internal/policy/impl/keyguard/KeyguardMessageArea.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ class KeyguardMessageArea extends TextView {
4343

4444
static final int SECURITY_MESSAGE_DURATION = 5000;
4545
protected static final int FADE_DURATION = 750;
46-
static final String SEPARATOR = " ";
4746

4847
// are we showing battery information?
4948
boolean mShowingBatteryInfo = false;
@@ -143,6 +142,8 @@ public void onRefreshBatteryInfo(KeyguardUpdateMonitor.BatteryStatus status) {
143142
}
144143
};
145144

145+
private CharSequence mSeparator;
146+
146147
public KeyguardMessageArea(Context context) {
147148
this(context, null);
148149
}
@@ -158,6 +159,8 @@ public KeyguardMessageArea(Context context, AttributeSet attrs) {
158159
mUpdateMonitor.registerCallback(mInfoCallback);
159160
mHandler = new Handler(Looper.myLooper());
160161

162+
mSeparator = getResources().getString(R.string.kg_text_message_separator);
163+
161164
update();
162165
}
163166

@@ -186,23 +189,23 @@ void update() {
186189
setText(status);
187190
}
188191

189-
190-
private CharSequence concat(Object... args) {
192+
private CharSequence concat(CharSequence... args) {
191193
StringBuilder b = new StringBuilder();
192-
for (int i = 0; i < args.length; i++) {
193-
final Object arg = args[i];
194-
if (arg instanceof CharSequence) {
195-
b.append((CharSequence)args[i]);
196-
b.append(SEPARATOR);
197-
} else if (arg instanceof String) {
198-
b.append((String)args[i]);
199-
b.append(SEPARATOR);
194+
if (!TextUtils.isEmpty(args[0])) {
195+
b.append(args[0]);
196+
}
197+
for (int i = 1; i < args.length; i++) {
198+
CharSequence text = args[i];
199+
if (!TextUtils.isEmpty(text)) {
200+
if (b.length() > 0) {
201+
b.append(mSeparator);
202+
}
203+
b.append(text);
200204
}
201205
}
202206
return b.toString();
203207
}
204208

205-
206209
CharSequence getCurrentMessage() {
207210
return mShowingMessage ? mMessage : null;
208211
}

0 commit comments

Comments
 (0)