| /* |
| * 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; |
| |
| private final String mDebugLocation; |
| |
| 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); |
| mDebugLocation = a.getString(R.styleable.CarrierText_debugLocation); |
| } 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; |
| } |
| |
| public String getDebugLocation() { |
| return mDebugLocation; |
| } |
| |
| 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; |
| } |
| } |
| } |