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 java.util.Map; 201f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 211f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectimport android.content.Context; 221f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectimport android.util.AttributeSet; 231f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectimport android.view.View; 241f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectimport android.view.LayoutInflater; 251f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 261f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectpublic class PhoneLayoutInflater extends LayoutInflater { 271f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project private static final String[] sClassPrefixList = { 281f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project "android.widget.", 291f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project "android.webkit." 301f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project }; 311f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 321f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project /** 331f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * Instead of instantiating directly, you should retrieve an instance 341f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * through {@link Context#getSystemService} 351f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * 361f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * @param context The Context in which in which to find resources and other 371f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * application-specific things. 381f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * 391f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * @see Context#getSystemService 401f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project */ 411f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project public PhoneLayoutInflater(Context context) { 421f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project super(context); 431f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } 441f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 451f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project protected PhoneLayoutInflater(LayoutInflater original, Context newContext) { 461f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project super(original, newContext); 471f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } 481f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 491f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project /** Override onCreateView to instantiate names that correspond to the 501f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project widgets known to the Widget factory. If we don't find a match, 511f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project call through to our super class. 521f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project */ 531f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project @Override protected View onCreateView(String name, AttributeSet attrs) throws ClassNotFoundException { 541f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project for (String prefix : sClassPrefixList) { 551f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project try { 561f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project View view = createView(name, prefix, attrs); 571f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project if (view != null) { 581f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project return view; 591f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } 601f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } catch (ClassNotFoundException e) { 611f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project // In this case we want to let the base class take a crack 621f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project // at it. 631f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } 641f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } 651f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 661f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project return super.onCreateView(name, attrs); 671f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } 681f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 691f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project public LayoutInflater cloneInContext(Context newContext) { 701f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project return new PhoneLayoutInflater(this, newContext); 711f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project } 721f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project} 731f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project 74