cae8b8aed323d47aadbd0f02d8c31a95489869b2
[pub/Android/ownCloud.git] / actionbarsherlock / src / com / actionbarsherlock / internal / widget / CapitalizingTextView.java
1 package com.actionbarsherlock.internal.widget;
2
3 import android.content.Context;
4 import android.content.res.TypedArray;
5 import android.os.Build;
6 import android.util.AttributeSet;
7 import android.widget.TextView;
8
9 import java.util.Locale;
10
11 public class CapitalizingTextView extends TextView {
12 private static final boolean SANS_ICE_CREAM = Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH;
13 private static final boolean IS_GINGERBREAD = Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD;
14
15 private static final int[] R_styleable_TextView = new int[] {
16 android.R.attr.textAllCaps
17 };
18 private static final int R_styleable_TextView_textAllCaps = 0;
19
20 private boolean mAllCaps;
21
22 public CapitalizingTextView(Context context, AttributeSet attrs) {
23 this(context, attrs, 0);
24 }
25
26 public CapitalizingTextView(Context context, AttributeSet attrs, int defStyle) {
27 super(context, attrs, defStyle);
28
29 TypedArray a = context.obtainStyledAttributes(attrs, R_styleable_TextView, defStyle, 0);
30 mAllCaps = a.getBoolean(R_styleable_TextView_textAllCaps, true);
31 a.recycle();
32 }
33
34 public void setTextCompat(CharSequence text) {
35 if (SANS_ICE_CREAM && mAllCaps && text != null) {
36 if (IS_GINGERBREAD) {
37 try {
38 setText(text.toString().toUpperCase(Locale.ROOT));
39 } catch (NoSuchFieldError e) {
40 //Some manufacturer broke Locale.ROOT. See #572.
41 setText(text.toString().toUpperCase());
42 }
43 } else {
44 setText(text.toString().toUpperCase());
45 }
46 } else {
47 setText(text);
48 }
49 }
50 }