package de.blau.android.prefs;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceFragmentCompat;
import android.util.Log;
import de.blau.android.Main;
import de.blau.android.R;
import de.blau.android.dialogs.DataLossActivity;
public class AdvancedPrefEditorFragment extends PreferenceFragmentCompat {
private Resources r;
private String KEY_PREFAPI;
private String KEY_PREFPRESET;
private String KEY_PREFFULLSCREEN;
private String KEY_PREFLOGIN;
private String KEY_PREFGEOCODER;
@Override
public void onCreatePreferences(Bundle arg0, String arg1) {
addPreferencesFromResource(R.xml.advancedpreferences);
r = getResources();
KEY_PREFAPI = r.getString(R.string.config_api_button_key);
KEY_PREFPRESET = r.getString(R.string.config_presetbutton_key);
KEY_PREFFULLSCREEN = r.getString(R.string.config_fullscreenMode_key);
KEY_PREFLOGIN = r.getString(R.string.config_loginbutton_key);
KEY_PREFGEOCODER = r.getString(R.string.config_geocoder_button_key);
fixUpPrefs();
}
@Override
public void onResume() {
Log.d("AdvancedPrefEditor", "onResume");
super.onResume();
// final Preferences prefs = new Preferences(getActivity());
Preference apipref = getPreferenceScreen().findPreference(KEY_PREFAPI);
AdvancedPrefDatabase db = new AdvancedPrefDatabase(getActivity());
API current = db.getCurrentAPI();
if (current.id.equals(AdvancedPrefDatabase.ID_DEFAULT)) {
apipref.setSummary(R.string.config_apibutton_summary);
} else {
apipref.setSummary(current.name.equals("") ? current.url : current.name);
}
Preference loginpref = getPreferenceScreen().findPreference(KEY_PREFLOGIN);
loginpref.setSummary(current.user != null && !"".equals(current.user)?current.user:r.getString(R.string.config_username_summary));
}
/** Perform initialization of the advanced preference buttons (API/Presets) */
private void fixUpPrefs() {
Preference presetPref = getPreferenceScreen().findPreference(KEY_PREFPRESET);
presetPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Log.d("AdvancedPrefEditor", "onPreferenceClick");
PresetEditorActivity.start(getActivity());
return true;
}
});
Preference apiPref = getPreferenceScreen().findPreference(KEY_PREFAPI);
apiPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Log.d("AdvancedPrefEditor", "onPreferenceClick 2");
Intent intent = new Intent(getActivity(), APIEditorActivity.class);
if (Main.hasChanges()) {
DataLossActivity.showDialog(getActivity(), intent, -1);
} else {
startActivity(intent);
}
return true;
}
});
Preference geocoderPref = getPreferenceScreen().findPreference(KEY_PREFGEOCODER);
geocoderPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Log.d("AdvancedPrefEditor", "onPreferenceClick");
GeocoderEditorActivity.start(getActivity());
return true;
}
});
}
@Override
public void onDisplayPreferenceDialog(Preference preference) {
DialogFragment fragment;
if (preference instanceof LoginDataPreference) {
fragment = LoginDataPreferenceFragment.newInstance(preference);
fragment.setTargetFragment(this, 0);
fragment.show(getFragmentManager(),
"android.support.v7.preference.PreferenceFragment.LOGINDATA");
} else if (preference instanceof MultiSelectListPreference) {
fragment = MultiSelectListPreferenceDialogFragment.newInstance(preference.getKey());
fragment.setTargetFragment(this, 0);
fragment.show(getFragmentManager(),
"android.support.v7.preference.PreferenceFragment.MULTISELECTLIST");
} else super.onDisplayPreferenceDialog(preference);
}
}