package de.westnordost.streetcomplete.statistics;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.util.AttributeSet;
import android.widget.TextView;
import javax.inject.Inject;
import de.westnordost.streetcomplete.Injector;
import de.westnordost.streetcomplete.data.QuestStatus;
import de.westnordost.streetcomplete.data.osm.persist.OsmQuestDao;
import de.westnordost.streetcomplete.data.statistics.QuestStatisticsDao;
public class AnswersCounter extends TextView
{
@Inject QuestStatisticsDao questStatisticsDB;
@Inject OsmQuestDao questDB;
private int answeredQuests;
private int solvedQuests;
public AnswersCounter(Context context)
{
super(context);
init();
}
public AnswersCounter(Context context, AttributeSet attrs)
{
super(context, attrs);
init();
}
public AnswersCounter(Context context, AttributeSet attrs, int defStyleAttr)
{
super(context, attrs, defStyleAttr);
init();
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public AnswersCounter(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
{
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
private void init()
{
Injector.instance.getApplicationComponent().inject(this);
}
public void answeredQuest()
{
answeredQuests++;
updateText();
}
public void update()
{
new AsyncTask<Void, Void, Void>()
{
@Override protected Void doInBackground(Void... params)
{
answeredQuests = questDB.getCount(null, QuestStatus.ANSWERED);
solvedQuests = questStatisticsDB.getTotalAmount();
return null;
}
@Override protected void onPostExecute(Void result)
{
updateText();
}
}.execute();
}
private void updateText()
{
String text = "" + solvedQuests;
if(answeredQuests != 0)
{
text += " (+" + answeredQuests + ")";
}
// min ems = number of digits in solved quests plus the "(+XX)" for answered quests
setMinEms((int) Math.floor(Math.log10(solvedQuests)) + 4 + 2);
setText(text);
}
}