package de.westnordost.streetcomplete.quests.road_surface;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.Arrays;
import de.westnordost.streetcomplete.R;
import de.westnordost.streetcomplete.quests.AbstractQuestFormAnswerFragment;
import de.westnordost.streetcomplete.view.GroupedImageSelectAdapter;
public class AddRoadSurfaceForm extends AbstractQuestFormAnswerFragment
{
public static final String SURFACE = "surface";
private final Surface[] SURFACES = new Surface[] {
new Surface("paved", R.drawable.panorama_surface_paved, R.string.quest_surface_value_paved, new Surface[]{
new Surface("asphalt", R.drawable.surface_asphalt, R.string.quest_surface_value_asphalt),
new Surface("concrete", R.drawable.surface_concrete, R.string.quest_surface_value_concrete),
new Surface("sett", R.drawable.surface_sett, R.string.quest_surface_value_sett),
new Surface("paving_stones", R.drawable.surface_paving_stones, R.string.quest_surface_value_paving_stones),
new Surface("cobblestone", R.drawable.surface_cobblestone, R.string.quest_surface_value_cobblestone),
new Surface("wood", R.drawable.surface_wood, R.string.quest_surface_value_wood),
}),
new Surface("unpaved", R.drawable.panorama_surface_unpaved, R.string.quest_surface_value_unpaved, new Surface[]{
new Surface("compacted", R.drawable.surface_compacted, R.string.quest_surface_value_compacted),
new Surface("gravel", R.drawable.surface_gravel, R.string.quest_surface_value_gravel),
new Surface("fine_gravel", R.drawable.surface_fine_gravel, R.string.quest_surface_value_fine_gravel),
new Surface("pebblestone", R.drawable.surface_pebblestone, R.string.quest_surface_value_pebblestone),
new Surface("grass_paver", R.drawable.surface_grass_paver, R.string.quest_surface_value_grass_paver),
}),
new Surface("ground", R.drawable.panorama_surface_ground, R.string.quest_surface_value_ground, new Surface[]{
new Surface("dirt", R.drawable.surface_dirt, R.string.quest_surface_value_dirt),
new Surface("grass", R.drawable.surface_grass, R.string.quest_surface_value_grass),
new Surface("sand", R.drawable.surface_sand, R.string.quest_surface_value_sand),
}),
};
private GroupedImageSelectAdapter imageSelector;
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = super.onCreateView(inflater, container, savedInstanceState);
setTitle(R.string.quest_streetSurface_title);
View contentView = setContentView(R.layout.quest_street_surface);
RecyclerView surfaceSelect = (RecyclerView) contentView.findViewById(R.id.surfaceSelect);
imageSelector = new GroupedImageSelectAdapter(Arrays.<GroupedImageSelectAdapter.Item>asList(SURFACES));
surfaceSelect.setAdapter(imageSelector);
surfaceSelect.setNestedScrollingEnabled(false);
return view;
}
@Override protected void onClickOk()
{
Bundle answer = new Bundle();
if(getSelectedSurface() != null)
{
answer.putString(SURFACE, getSelectedSurface().value);
}
applyFormAnswer(answer);
}
@Override public boolean hasChanges()
{
return getSelectedSurface() != null;
}
private Surface getSelectedSurface()
{
return (Surface) imageSelector.getSelectedItem();
}
private static class Surface extends GroupedImageSelectAdapter.Item
{
public final String value;
public Surface(String value, int drawableId, int titleId)
{
super(drawableId, titleId);
this.value = value;
}
public Surface(String value, int drawableId, int titleId, GroupedImageSelectAdapter.Item[] items)
{
super(drawableId, titleId, items);
this.value = value;
}
}
}