package com.madisp.pretty;
import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import com.android.internal.policy.impl.PhoneLayoutInflater;
public class PrettyLayoutInflater extends PhoneLayoutInflater {
private LayoutInflater.Factory2 wrappedFactory;
private Pretty pretty;
public PrettyLayoutInflater(Pretty pretty, final Activity activity) {
super(activity);
this.pretty = pretty;
// if the activity is a FragmentActivity from the support lib then lets wrap it
// so the <fragment> tags still work
try {
Class<?> fragAct = Class.forName("android.support.v4.app.FragmentActivity");
if (fragAct != null && fragAct.isInstance(activity)) {
// FragmentActivity is a Factory1, not Factory2
wrappedFactory = new LayoutInflater.Factory2() {
@Override
public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {
return onCreateView(name, context, attrs);
}
@Override
public View onCreateView(String name, Context context, AttributeSet attrs) {
return activity.onCreateView(name, context, attrs);
}
};
}
} catch (Exception ignored) { /* ignored */ }
super.setFactory2(new PrettyLayoutFactory(this, wrappedFactory, pretty));
}
protected PrettyLayoutInflater(LayoutInflater original, Context newContext, LayoutInflater.Factory2 wrappedFactory, Pretty pretty) {
super(original, newContext);
this.pretty = pretty;
super.setFactory2(new PrettyLayoutFactory(this, wrappedFactory, pretty));
}
@Override
public LayoutInflater cloneInContext(Context newContext) {
return new PrettyLayoutInflater(this, newContext, wrappedFactory, pretty);
}
@Override
public void setFactory(Factory factory) {
// outright evil, warn here?
}
@Override
public void setFactory2(Factory2 factory) {
// outright evil, warn here?
}
}