package de.westnordost.streetcomplete.quests.sport;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List;
import de.westnordost.streetcomplete.R;
import de.westnordost.streetcomplete.quests.ImageListQuestAnswerFragment;
import de.westnordost.streetcomplete.view.dialogs.AlertDialogBuilder;
public class AddSportForm extends ImageListQuestAnswerFragment
{
private static final OsmItem[] SPORTS_VALUES = new OsmItem[]{
new OsmItem("soccer", R.drawable.ic_sport_soccer, R.string.quest_sport_soccer),
new OsmItem("tennis", R.drawable.ic_sport_tennis, R.string.quest_sport_tennis),
new OsmItem("baseball", R.drawable.ic_sport_baseball, R.string.quest_sport_baseball),
new OsmItem("basketball", R.drawable.ic_sport_basketball, R.string.quest_sport_basketball),
new OsmItem("golf", R.drawable.ic_sport_golf, R.string.quest_sport_golf),
new OsmItem("equestrian", R.drawable.ic_sport_equestrian, R.string.quest_sport_equestrian),
new OsmItem("athletics", R.drawable.ic_sport_athletics, R.string.quest_sport_athletics),
new OsmItem("volleyball", R.drawable.ic_sport_volleyball, R.string.quest_sport_volleyball),
new OsmItem("beachvolleyball", R.drawable.ic_sport_beachvolleyball, R.string.quest_sport_beachvolleyball),
new OsmItem("american_football", R.drawable.ic_sport_american_football, R.string.quest_sport_american_football),
new OsmItem("skateboard", R.drawable.ic_sport_skateboard, R.string.quest_sport_skateboard),
new OsmItem("bowls", R.drawable.ic_sport_bowls, R.string.quest_sport_bowls),
new OsmItem("boules", R.drawable.ic_sport_boules, R.string.quest_sport_boules),
new OsmItem("shooting", R.drawable.ic_sport_shooting, R.string.quest_sport_shooting),
new OsmItem("cricket", R.drawable.ic_sport_cricket, R.string.quest_sport_cricket),
new OsmItem("table_tennis", R.drawable.ic_sport_table_tennis, R.string.quest_sport_table_tennis),
new OsmItem("gymnastics", R.drawable.ic_sport_gymnastics, R.string.quest_sport_gymnastics),
new OsmItem("archery", R.drawable.ic_sport_archery, R.string.quest_sport_archery),
new OsmItem("australian_football", R.drawable.ic_sport_australian_football, R.string.quest_sport_australian_football),
new OsmItem("badminton", R.drawable.ic_sport_badminton, R.string.quest_sport_badminton),
new OsmItem("canadian_football", R.drawable.ic_sport_canadian_football, R.string.quest_sport_canadian_football),
new OsmItem("field_hockey", R.drawable.ic_sport_field_hockey, R.string.quest_sport_field_hockey),
new OsmItem("handball", R.drawable.ic_sport_handball, R.string.quest_sport_handball),
new OsmItem("ice_hockey", R.drawable.ic_sport_ice_hockey, R.string.quest_sport_ice_hockey),
new OsmItem("netball", R.drawable.ic_sport_netball, R.string.quest_sport_netball),
new OsmItem("rugby", R.drawable.ic_sport_rugby, R.string.quest_sport_rugby),
};
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = super.onCreateView(inflater, container, savedInstanceState);
setTitle(R.string.quest_sport_title);
imageSelector.setCellLayout(R.layout.icon_select_cell_with_label_below);
return view;
}
@Override protected void onClickOk()
{
if(imageSelector.getSelectedIndices().size() > 3)
{
DialogInterface.OnClickListener onSpecific = new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
applyAnswer();
}
};
DialogInterface.OnClickListener onGeneric = new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
applyMultiAnswer();
}
};
new AlertDialogBuilder(getActivity())
.setTitle(R.string.quest_sport_manySports_confirmation_title)
.setMessage(R.string.quest_sport_manySports_confirmation_description)
.setPositiveButton(R.string.quest_manySports_confirmation_specific, onSpecific)
.setNegativeButton(R.string.quest_manySports_confirmation_generic, onGeneric)
.show();
}
else
{
applyAnswer();
}
}
@Override protected int getMaxSelectableItems()
{
return -1;
}
@Override protected int getMaxNumberOfInitiallyShownItems()
{
return 8;
}
@Override protected OsmItem[] getItems()
{
return SPORTS_VALUES;
}
@Override protected List<Integer> getOtherAnswerResourceIds()
{
List<Integer> answers = super.getOtherAnswerResourceIds();
answers.add(R.string.quest_sport_answer_multi);
return answers;
}
@Override protected boolean onClickOtherAnswer(int itemResourceId)
{
if(super.onClickOtherAnswer(itemResourceId)) return true;
if(itemResourceId == R.string.quest_sport_answer_multi)
{
applyMultiAnswer();
return true;
}
return false;
}
private void applyMultiAnswer()
{
Bundle answer = new Bundle();
ArrayList<String> strings = new ArrayList<>(1);
strings.add("multi");
answer.putStringArrayList(OSM_VALUES, strings);
applyImmediateAnswer(answer);
}
}