package de.westnordost.streetcomplete.settings;
import android.app.FragmentManager;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import javax.inject.Inject;
import de.westnordost.streetcomplete.Injector;
import de.westnordost.streetcomplete.Prefs;
import de.westnordost.streetcomplete.data.QuestStatus;
import de.westnordost.streetcomplete.data.osmnotes.OsmNoteQuest;
import de.westnordost.streetcomplete.data.osmnotes.OsmNoteQuestDao;
import de.westnordost.streetcomplete.oauth.OAuth;
import de.westnordost.streetcomplete.R;
import de.westnordost.streetcomplete.oauth.OAuthWebViewDialogFragment;
public class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener
{
@Inject SharedPreferences prefs;
@Inject OsmNoteQuestDao osmNoteQuestDao;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Injector.instance.getApplicationComponent().inject(this);
addPreferencesFromResource(R.xml.preferences);
Preference oauth = getPreferenceScreen().findPreference("oauth");
oauth.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener()
{
@Override
public boolean onPreferenceClick(Preference preference)
{
final FragmentManager fm = getFragmentManager();
OAuthWebViewDialogFragment dlg = OAuthWebViewDialogFragment.create(
OAuth.createConsumer(), OAuth.createProvider()
);
dlg.show(fm, OAuthWebViewDialogFragment.TAG);
return true;
}
});
}
@Override
public void onStart()
{
super.onStart();
updateOsmAuthSummary();
}
private void updateOsmAuthSummary()
{
Preference oauth = getPreferenceScreen().findPreference("oauth");
if (OAuth.isAuthorized(prefs))
{
oauth.setSummary(R.string.pref_title_authorized_summary);
}
else
{
oauth.setSummary(R.string.pref_title_not_authorized_summary);
}
}
@Override
public void onResume() {
super.onResume();
prefs.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
prefs.unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
if(key.equals(Prefs.OAUTH_ACCESS_TOKEN_SECRET))
{
updateOsmAuthSummary();
}
else if(key.equals(Prefs.SHOW_NOTES_NOT_PHRASED_AS_QUESTIONS))
{
final Preference pref = getPreferenceScreen().findPreference(Prefs.SHOW_NOTES_NOT_PHRASED_AS_QUESTIONS);
pref.setEnabled(false);
new AsyncTask<Void, Void, Void>()
{
@Override protected Void doInBackground(Void... params)
{
for(OsmNoteQuest quest : osmNoteQuestDao.getAll(null,null))
{
if (quest.getStatus() == QuestStatus.NEW || quest.getStatus() == QuestStatus.INVISIBLE)
{
boolean showNonQuestionNotes = prefs.getBoolean(Prefs.SHOW_NOTES_NOT_PHRASED_AS_QUESTIONS, false);
boolean visible = quest.probablyContainsQuestion() || showNonQuestionNotes;
QuestStatus newQuestStatus = visible ? QuestStatus.NEW : QuestStatus.INVISIBLE;
if (quest.getStatus() != newQuestStatus)
{
quest.setStatus(newQuestStatus);
osmNoteQuestDao.update(quest);
}
}
}
return null;
}
@Override protected void onPostExecute(Void result)
{
pref.setEnabled(true);
}
}.execute();
}
}
}