package cgeo.geocaching.settings;
import cgeo.geocaching.R;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.IConnector;
import org.apache.commons.lang3.StringUtils;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
/**
* Preference for displaying the supported capabilities of an {@link IConnector} implementation.
*/
public class CapabilitiesPreference extends AbstractAttributeBasedPreference {
private String connectorCode;
public CapabilitiesPreference(final Context context) {
super(context);
}
public CapabilitiesPreference(final Context context, final AttributeSet attrs) {
super(context, attrs);
}
public CapabilitiesPreference(final Context context, final AttributeSet attrs, final int defStyle) {
super(context, attrs, defStyle);
}
private String createCapabilitiesMessage() {
// TODO: this needs a better key for the connectors
final IConnector connector = ConnectorFactory.getConnector(connectorCode + "1234");
return StringUtils.join(connector.getCapabilities(), "\n");
}
@Override
protected void processAttributeValues(final TypedArray values) {
connectorCode = values.getString(0);
setSummary(StringUtils.EMPTY);
}
@Override
protected int[] getAttributeNames() {
return new int[] { R.attr.connector };
}
@Override
public void setSummary(final CharSequence summary) {
super.setSummary(createCapabilitiesMessage());
}
}