189208232f3b5d1451408d787872504a190bc7ee0Chris Banes/*
289208232f3b5d1451408d787872504a190bc7ee0Chris Banes * Copyright (C) 2013 The Android Open Source Project
389208232f3b5d1451408d787872504a190bc7ee0Chris Banes *
489208232f3b5d1451408d787872504a190bc7ee0Chris Banes * Licensed under the Apache License, Version 2.0 (the "License");
589208232f3b5d1451408d787872504a190bc7ee0Chris Banes * you may not use this file except in compliance with the License.
689208232f3b5d1451408d787872504a190bc7ee0Chris Banes * You may obtain a copy of the License at
789208232f3b5d1451408d787872504a190bc7ee0Chris Banes *
889208232f3b5d1451408d787872504a190bc7ee0Chris Banes *      http://www.apache.org/licenses/LICENSE-2.0
989208232f3b5d1451408d787872504a190bc7ee0Chris Banes *
1089208232f3b5d1451408d787872504a190bc7ee0Chris Banes * Unless required by applicable law or agreed to in writing, software
1189208232f3b5d1451408d787872504a190bc7ee0Chris Banes * distributed under the License is distributed on an "AS IS" BASIS,
1289208232f3b5d1451408d787872504a190bc7ee0Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1389208232f3b5d1451408d787872504a190bc7ee0Chris Banes * See the License for the specific language governing permissions and
1489208232f3b5d1451408d787872504a190bc7ee0Chris Banes * limitations under the License.
1589208232f3b5d1451408d787872504a190bc7ee0Chris Banes */
1689208232f3b5d1451408d787872504a190bc7ee0Chris Banes
1789208232f3b5d1451408d787872504a190bc7ee0Chris Banespackage android.support.v7.internal.widget;
1889208232f3b5d1451408d787872504a190bc7ee0Chris Banes
1989208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.content.Context;
2089208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.content.res.TypedArray;
2189208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.graphics.Rect;
2289208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.support.v7.appcompat.R;
23415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banesimport android.support.v7.internal.text.AllCapsTransformationMethod;
2489208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.text.method.TransformationMethod;
2589208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.util.AttributeSet;
2689208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.view.View;
2789208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.widget.TextView;
2889208232f3b5d1451408d787872504a190bc7ee0Chris Banes
2989208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport java.util.Locale;
3089208232f3b5d1451408d787872504a190bc7ee0Chris Banes
3189208232f3b5d1451408d787872504a190bc7ee0Chris Banes/**
3289208232f3b5d1451408d787872504a190bc7ee0Chris Banes * @hide
3389208232f3b5d1451408d787872504a190bc7ee0Chris Banes */
3489208232f3b5d1451408d787872504a190bc7ee0Chris Banespublic class CompatTextView extends TextView {
3589208232f3b5d1451408d787872504a190bc7ee0Chris Banes
3689208232f3b5d1451408d787872504a190bc7ee0Chris Banes    public CompatTextView(Context context) {
3789208232f3b5d1451408d787872504a190bc7ee0Chris Banes        this(context, null);
3889208232f3b5d1451408d787872504a190bc7ee0Chris Banes    }
3989208232f3b5d1451408d787872504a190bc7ee0Chris Banes
4089208232f3b5d1451408d787872504a190bc7ee0Chris Banes    public CompatTextView(Context context, AttributeSet attrs) {
4189208232f3b5d1451408d787872504a190bc7ee0Chris Banes        this(context, attrs, 0);
4289208232f3b5d1451408d787872504a190bc7ee0Chris Banes    }
4389208232f3b5d1451408d787872504a190bc7ee0Chris Banes
4489208232f3b5d1451408d787872504a190bc7ee0Chris Banes    public CompatTextView(Context context, AttributeSet attrs, int defStyle) {
4589208232f3b5d1451408d787872504a190bc7ee0Chris Banes        super(context, attrs, defStyle);
4689208232f3b5d1451408d787872504a190bc7ee0Chris Banes
4789208232f3b5d1451408d787872504a190bc7ee0Chris Banes        boolean allCaps = false;
4889208232f3b5d1451408d787872504a190bc7ee0Chris Banes
4989208232f3b5d1451408d787872504a190bc7ee0Chris Banes        TypedArray style = context
5089208232f3b5d1451408d787872504a190bc7ee0Chris Banes                .obtainStyledAttributes(attrs, R.styleable.CompatTextView, defStyle, 0);
5189208232f3b5d1451408d787872504a190bc7ee0Chris Banes        allCaps = style.getBoolean(R.styleable.CompatTextView_textAllCaps, false);
5289208232f3b5d1451408d787872504a190bc7ee0Chris Banes        style.recycle();
5389208232f3b5d1451408d787872504a190bc7ee0Chris Banes
5489208232f3b5d1451408d787872504a190bc7ee0Chris Banes        // Framework impl also checks TextAppearance for textAllCaps. This isn't needed for our
5589208232f3b5d1451408d787872504a190bc7ee0Chris Banes        // purposes so has been omitted.
5689208232f3b5d1451408d787872504a190bc7ee0Chris Banes
5789208232f3b5d1451408d787872504a190bc7ee0Chris Banes        if (allCaps) {
5889208232f3b5d1451408d787872504a190bc7ee0Chris Banes            setTransformationMethod(new AllCapsTransformationMethod(context));
5989208232f3b5d1451408d787872504a190bc7ee0Chris Banes        }
6089208232f3b5d1451408d787872504a190bc7ee0Chris Banes    }
6189208232f3b5d1451408d787872504a190bc7ee0Chris Banes}
62