94 lines
3.0 KiB
Java
94 lines
3.0 KiB
Java
/*
|
|
* Copyright (C) 2012 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package com.android.keyguard;
|
|
|
|
import android.content.Context;
|
|
import android.content.res.TypedArray;
|
|
import android.text.TextUtils;
|
|
import android.text.method.SingleLineTransformationMethod;
|
|
import android.util.AttributeSet;
|
|
import android.view.View;
|
|
import android.widget.TextView;
|
|
|
|
import com.android.systemui.R;
|
|
|
|
import java.util.Locale;
|
|
|
|
public class CarrierText extends TextView {
|
|
private final boolean mShowMissingSim;
|
|
|
|
private final boolean mShowAirplaneMode;
|
|
|
|
public CarrierText(Context context) {
|
|
this(context, null);
|
|
}
|
|
|
|
public CarrierText(Context context, AttributeSet attrs) {
|
|
super(context, attrs);
|
|
boolean useAllCaps;
|
|
TypedArray a = context.getTheme().obtainStyledAttributes(
|
|
attrs, R.styleable.CarrierText, 0, 0);
|
|
try {
|
|
useAllCaps = a.getBoolean(R.styleable.CarrierText_allCaps, false);
|
|
mShowAirplaneMode = a.getBoolean(R.styleable.CarrierText_showAirplaneMode, false);
|
|
mShowMissingSim = a.getBoolean(R.styleable.CarrierText_showMissingSim, false);
|
|
} finally {
|
|
a.recycle();
|
|
}
|
|
setTransformationMethod(new CarrierTextTransformationMethod(mContext, useAllCaps));
|
|
}
|
|
@Override
|
|
protected void onVisibilityChanged(View changedView, int visibility) {
|
|
super.onVisibilityChanged(changedView, visibility);
|
|
// Only show marquee when visible
|
|
if (visibility == VISIBLE) {
|
|
setEllipsize(TextUtils.TruncateAt.MARQUEE);
|
|
} else {
|
|
setEllipsize(TextUtils.TruncateAt.END);
|
|
}
|
|
}
|
|
|
|
public boolean getShowAirplaneMode() {
|
|
return mShowAirplaneMode;
|
|
}
|
|
|
|
public boolean getShowMissingSim() {
|
|
return mShowMissingSim;
|
|
}
|
|
|
|
private static class CarrierTextTransformationMethod extends SingleLineTransformationMethod {
|
|
private final Locale mLocale;
|
|
private final boolean mAllCaps;
|
|
|
|
public CarrierTextTransformationMethod(Context context, boolean allCaps) {
|
|
mLocale = context.getResources().getConfiguration().locale;
|
|
mAllCaps = allCaps;
|
|
}
|
|
|
|
@Override
|
|
public CharSequence getTransformation(CharSequence source, View view) {
|
|
source = super.getTransformation(source, view);
|
|
|
|
if (mAllCaps && source != null) {
|
|
source = source.toString().toUpperCase(mLocale);
|
|
}
|
|
|
|
return source;
|
|
}
|
|
}
|
|
}
|