package org.emdev.ui.preference;
import org.sufficientlysecure.viewer.R;
import android.content.Context;
import android.preference.ListPreference;
import android.util.AttributeSet;
import java.util.ArrayList;
import java.util.List;
import org.emdev.common.fonts.FontManager;
import org.emdev.common.fonts.data.FontFamily;
import org.emdev.common.fonts.data.FontFamilyType;
import org.emdev.common.fonts.data.FontPack;
import org.emdev.utils.WidgetUtils;
import org.emdev.utils.enums.EnumUtils;
public class FontPickerPreference extends ListPreference {
private final FontFamilyType type;
public FontPickerPreference(final Context context, final AttributeSet attrs) {
super(context, attrs);
final String fontFamily = WidgetUtils.getStringAttribute(context, attrs, WidgetUtils.EBOOKDROID_NS,
WidgetUtils.ATTR_FONT_FAMILY, null);
type = EnumUtils.getByResValue(FontFamilyType.class, fontFamily, null);
final List<String> values = new ArrayList<String>();
final List<String> entries = new ArrayList<String>();
if (type != null) {
final String suffix = ", " + type.getResValue();
values.add("");
entries.add(context.getString(R.string.pref_systemfontpack) + suffix);
for (final FontPack fp : FontManager.external) {
final FontFamily family = fp.getFamily(type);
if (family != null) {
values.add(fp.name);
entries.add(fp.name + suffix);
}
}
} else {
for (final FontPack fp : FontManager.system) {
for (FontFamily family : fp) {
if (family.type != FontFamilyType.SYMBOL && family.type != FontFamilyType.DINGBAT) {
values.add(fp.name + ", " + family.toString());
entries.add(fp.name + ", " + family.toString());
}
}
}
for (final FontPack fp : FontManager.external) {
for (final FontFamily family : fp) {
if (family.type != FontFamilyType.SYMBOL && family.type != FontFamilyType.DINGBAT) {
values.add(fp.name + ", " + family.toString());
entries.add(fp.name + ", " + family.toString());
}
}
}
}
setEntries(entries.toArray(new CharSequence[entries.size()]));
setEntryValues(values.toArray(new CharSequence[values.size()]));
}
}