18107bfde515c183354e288ea69cf3815e9c0403fDavid Brown/* 28107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * Copyright (C) 2011 The Android Open Source Project 38107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * 48107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * Licensed under the Apache License, Version 2.0 (the "License"); 58107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * you may not use this file except in compliance with the License. 68107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * You may obtain a copy of the License at 78107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * 88107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * http://www.apache.org/licenses/LICENSE-2.0 98107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * 108107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * Unless required by applicable law or agreed to in writing, software 118107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * distributed under the License is distributed on an "AS IS" BASIS, 128107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * See the License for the specific language governing permissions and 148107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * limitations under the License. 158107bfde515c183354e288ea69cf3815e9c0403fDavid Brown */ 168107bfde515c183354e288ea69cf3815e9c0403fDavid Brown 178107bfde515c183354e288ea69cf3815e9c0403fDavid Brownpackage com.android.phone; 188107bfde515c183354e288ea69cf3815e9c0403fDavid Brown 198107bfde515c183354e288ea69cf3815e9c0403fDavid Brownimport android.content.Context; 208107bfde515c183354e288ea69cf3815e9c0403fDavid Brownimport android.preference.EditTextPreference; 218107bfde515c183354e288ea69cf3815e9c0403fDavid Brownimport android.util.AttributeSet; 228107bfde515c183354e288ea69cf3815e9c0403fDavid Brownimport android.view.View; 238107bfde515c183354e288ea69cf3815e9c0403fDavid Brownimport android.widget.TextView; 248107bfde515c183354e288ea69cf3815e9c0403fDavid Brown 258107bfde515c183354e288ea69cf3815e9c0403fDavid Brown/** 268107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * Ultra-simple subclass of EditTextPreference that allows the "title" to wrap 278107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * onto multiple lines. 288107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * 298107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * (By default, the title of an EditTextPreference is singleLine="true"; see 308107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * preference_holo.xml under frameworks/base. But in the "Respond via SMS" 318107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * settings UI we want titles to be multi-line, since the customized messages 328107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * might be fairly long, and should be able to wrap.) 338107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * 348107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * TODO: This is pretty cumbersome; it would be nicer for the framework to 358107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * either allow modifying the title's attributes in XML, or at least provide 368107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * some way from Java (given an EditTextPreference) to reach inside and get a 378107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * handle to the "title" TextView. 388107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * 398107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * TODO: Also, it would reduce clutter if this could be an inner class in 408107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * RespondViaSmsManager.java, but then there would be no way to reference the 418107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * class from XML. That's because 428107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * <com.android.phone.RespondViaSmsManager$MultiLineTitleEditTextPreference ... /> 438107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * isn't valid XML syntax due to the "$" character. And Preference 448107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * elements don't have a "class" attribute, so you can't do something like 458107bfde515c183354e288ea69cf3815e9c0403fDavid Brown * <view class="com.android.phone.Foo$Bar"> as you can with regular views. 468107bfde515c183354e288ea69cf3815e9c0403fDavid Brown */ 478107bfde515c183354e288ea69cf3815e9c0403fDavid Brownpublic class MultiLineTitleEditTextPreference extends EditTextPreference { 488107bfde515c183354e288ea69cf3815e9c0403fDavid Brown public MultiLineTitleEditTextPreference(Context context, AttributeSet attrs, int defStyle) { 498107bfde515c183354e288ea69cf3815e9c0403fDavid Brown super(context, attrs, defStyle); 508107bfde515c183354e288ea69cf3815e9c0403fDavid Brown } 518107bfde515c183354e288ea69cf3815e9c0403fDavid Brown 528107bfde515c183354e288ea69cf3815e9c0403fDavid Brown public MultiLineTitleEditTextPreference(Context context, AttributeSet attrs) { 538107bfde515c183354e288ea69cf3815e9c0403fDavid Brown super(context, attrs); 548107bfde515c183354e288ea69cf3815e9c0403fDavid Brown } 558107bfde515c183354e288ea69cf3815e9c0403fDavid Brown 568107bfde515c183354e288ea69cf3815e9c0403fDavid Brown public MultiLineTitleEditTextPreference(Context context) { 578107bfde515c183354e288ea69cf3815e9c0403fDavid Brown super(context); 588107bfde515c183354e288ea69cf3815e9c0403fDavid Brown } 598107bfde515c183354e288ea69cf3815e9c0403fDavid Brown 608107bfde515c183354e288ea69cf3815e9c0403fDavid Brown // The "title" TextView inside an EditTextPreference defaults to 618107bfde515c183354e288ea69cf3815e9c0403fDavid Brown // singleLine="true" (see preference_holo.xml under frameworks/base.) 628107bfde515c183354e288ea69cf3815e9c0403fDavid Brown // We override onBindView() purely to look up that TextView and call 638107bfde515c183354e288ea69cf3815e9c0403fDavid Brown // setSingleLine(false) on it. 648107bfde515c183354e288ea69cf3815e9c0403fDavid Brown @Override 658107bfde515c183354e288ea69cf3815e9c0403fDavid Brown protected void onBindView(View view) { 668107bfde515c183354e288ea69cf3815e9c0403fDavid Brown super.onBindView(view); 678107bfde515c183354e288ea69cf3815e9c0403fDavid Brown 688107bfde515c183354e288ea69cf3815e9c0403fDavid Brown TextView textView = (TextView) view.findViewById(com.android.internal.R.id.title); 698107bfde515c183354e288ea69cf3815e9c0403fDavid Brown if (textView != null) { 708107bfde515c183354e288ea69cf3815e9c0403fDavid Brown textView.setSingleLine(false); 718107bfde515c183354e288ea69cf3815e9c0403fDavid Brown } 728107bfde515c183354e288ea69cf3815e9c0403fDavid Brown } 738107bfde515c183354e288ea69cf3815e9c0403fDavid Brown} 74