11f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project/* 21f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 31f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * 41f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 51f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * you may not use this file except in compliance with the License. 61f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * You may obtain a copy of the License at 71f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * 81f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 91f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * 101f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 111f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 121f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * See the License for the specific language governing permissions and 141f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * limitations under the License. 151f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project */ 161f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 171f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectpackage com.android.internal.policy.impl; 181f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 191f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectimport android.content.Context; 201f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectimport android.util.AttributeSet; 211f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectimport android.view.View; 221f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectimport android.view.LayoutInflater; 231f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 241f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectpublic class PhoneLayoutInflater extends LayoutInflater { 251f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project private static final String[] sClassPrefixList = { 261f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project "android.widget.", 274504de5d5a8e1c7dfb306b16282f348856c24764Craig Mautner "android.webkit.", 284504de5d5a8e1c7dfb306b16282f348856c24764Craig Mautner "android.app." 291f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project }; 301f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 311f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project /** 321f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * Instead of instantiating directly, you should retrieve an instance 331f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * through {@link Context#getSystemService} 341f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * 351f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * @param context The Context in which in which to find resources and other 361f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * application-specific things. 371f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * 381f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * @see Context#getSystemService 391f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project */ 401f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project public PhoneLayoutInflater(Context context) { 411f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project super(context); 421f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } 431f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 441f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project protected PhoneLayoutInflater(LayoutInflater original, Context newContext) { 451f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project super(original, newContext); 461f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } 471f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 481f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project /** Override onCreateView to instantiate names that correspond to the 491f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project widgets known to the Widget factory. If we don't find a match, 501f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project call through to our super class. 511f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project */ 521f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project @Override protected View onCreateView(String name, AttributeSet attrs) throws ClassNotFoundException { 531f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project for (String prefix : sClassPrefixList) { 541f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project try { 551f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project View view = createView(name, prefix, attrs); 561f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project if (view != null) { 571f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project return view; 581f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } 591f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } catch (ClassNotFoundException e) { 601f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project // In this case we want to let the base class take a crack 611f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project // at it. 621f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } 631f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } 641f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 651f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project return super.onCreateView(name, attrs); 661f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } 671f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 681f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project public LayoutInflater cloneInContext(Context newContext) { 691f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project return new PhoneLayoutInflater(this, newContext); 701f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } 711f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project} 721f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 73