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