19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 Google Inc.
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.internal.widget;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.TypedArray;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.text.Layout;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.AttributeSet;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.TypedValue;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.TextView;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Used by dialogs to change the font size and number of lines to try to fit
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the text to the available space.
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class DialogTitle extends TextView {
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public DialogTitle(Context context, AttributeSet attrs,
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int defStyle) {
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super(context, attrs, defStyle);
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public DialogTitle(Context context, AttributeSet attrs) {
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super(context, attrs);
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public DialogTitle(Context context) {
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super(context);
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final Layout layout = getLayout();
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (layout != null) {
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            final int lineCount = layout.getLineCount();
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (lineCount > 0) {
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                final int ellipsisCount = layout.getEllipsisCount(lineCount - 1);
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                if (ellipsisCount > 0) {
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    setSingleLine(false);
565c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey                    setMaxLines(2);
575c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey
585c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey                    final TypedArray a = mContext.obtainStyledAttributes(null,
595c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey                            android.R.styleable.TextAppearance, android.R.attr.textAppearanceMedium,
60a93347a62ec9887862abb9d6f216906c533a8562Adam Powell                            android.R.style.TextAppearance_Medium);
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    final int textSize = a.getDimensionPixelSize(
625c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey                            android.R.styleable.TextAppearance_textSize, 0);
635c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey                    if (textSize != 0) {
645c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey                        // textSize is already expressed in pixels
655c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey                        setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
665c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey                    }
675c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey                    a.recycle();
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                }
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
744bdf17c69712b28e82f15f81f39482ff096b7f67Romain Guy}
75