package net.osmand.plus.search.listitems;
import android.graphics.drawable.Drawable;
import android.support.annotation.NonNull;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
import android.view.View;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
public class QuickSearchButtonListItem extends QuickSearchListItem {
private int iconId;
private String title;
private Spannable spannableTitle;
private View.OnClickListener onClickListener;
private int colorId;
public QuickSearchButtonListItem(OsmandApplication app, int iconId, @NonNull String title, View.OnClickListener onClickListener) {
super(app, null);
this.iconId = iconId;
this.title = title.toUpperCase();
this.onClickListener = onClickListener;
this.colorId = app.getSettings().isLightContent() ? R.color.color_dialog_buttons_light : R.color.color_dialog_buttons_dark;
}
public QuickSearchButtonListItem(OsmandApplication app, int iconId, @NonNull Spannable title, View.OnClickListener onClickListener) {
super(app, null);
this.iconId = iconId;
this.spannableTitle = spannedToUpperCase(title);
this.onClickListener = onClickListener;
this.colorId = app.getSettings().isLightContent() ? R.color.color_dialog_buttons_light : R.color.color_dialog_buttons_dark;
}
public QuickSearchListItemType getType() {
return QuickSearchListItemType.BUTTON;
}
@Override
public Drawable getIcon() {
if (iconId != 0) {
return app.getIconsCache().getIcon(iconId, colorId);
} else {
return null;
}
}
@Override
public String getName() {
return title;
}
@Override
public Spannable getSpannableName() {
return spannableTitle;
}
public View.OnClickListener getOnClickListener() {
return onClickListener;
}
private static Spannable spannedToUpperCase(@NonNull Spanned s) {
Object[] spans = s.getSpans(0, s.length(), Object.class);
SpannableString spannableString = new SpannableString(s.toString().toUpperCase());
// reapply the spans to the now uppercase string
for (Object span : spans) {
spannableString.setSpan(span, s.getSpanStart(span), s.getSpanEnd(span), s.getSpanFlags(span));
}
return spannableString;
}
}