package org.holoeverywhere.demo.widget;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
import org.holoeverywhere.LayoutInflater;
import org.holoeverywhere.ThemeManager;
import org.holoeverywhere.app.Activity;
import org.holoeverywhere.demo.R;
import org.holoeverywhere.widget.FrameLayout;
import org.holoeverywhere.widget.LinearLayout;
import java.util.Hashtable;
public class DemoThemePicker extends FrameLayout {
private final class ThemeChangeListener implements OnClickListener {
private final int theme;
private ThemeChangeListener(int theme) {
this.theme = theme;
}
@Override
public void onClick(View view) {
if (ThemeManager.getDefaultTheme() == theme) {
return;
}
ThemeManager.setDefaultTheme(theme);
if (mActivity != null) {
ThemeManager.restart(mActivity, false);
}
}
}
private static final Hashtable<Integer, Integer> THEME_HASHTABLE = new Hashtable<Integer, Integer>();
static {
THEME_HASHTABLE.put(ThemeManager.DARK, R.id.dark);
THEME_HASHTABLE.put(ThemeManager.LIGHT, R.id.light);
THEME_HASHTABLE.put(ThemeManager.MIXED, R.id.mixed);
}
private Activity mActivity;
public DemoThemePicker(Context context) {
this(context, null);
}
public DemoThemePicker(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public DemoThemePicker(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
int layout;
TypedArray a = context.obtainStyledAttributes(attrs, new
int[]{
android.R.attr.orientation
}, defStyleAttr, 0);
boolean horizontal = a.getInt(0, 0) == LinearLayout.HORIZONTAL;
a.recycle();
if (horizontal) {
layout = R.layout.theme_picker_horizontal;
} else {
layout = R.layout.theme_picker_vertical;
}
addView(LayoutInflater.inflate(context, layout, this, false));
findViewById(R.id.dark).setOnClickListener(new
ThemeChangeListener(ThemeManager.DARK));
findViewById(R.id.light).setOnClickListener(new
ThemeChangeListener(ThemeManager.LIGHT));
findViewById(R.id.mixed).setOnClickListener(new
ThemeChangeListener(ThemeManager.MIXED));
}
public void setActivity(Activity activity) {
if (mActivity != null) {
return;
}
mActivity = activity;
((DemoListRowView) findViewById(THEME_HASHTABLE.get(ThemeManager.getTheme(activity)
& ThemeManager.COLOR_SCHEME_MASK))).setSelectionHandlerVisiblity(true);
}
}