package org.wikipedia.settings;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceFragmentCompat;
import org.wikipedia.BuildConfig;
import org.wikipedia.R;
import org.wikipedia.WikipediaApp;
import static org.apache.commons.lang3.StringUtils.defaultString;
/** UI code for app settings used by PreferenceFragment. */
public class SettingsPreferenceLoader extends BasePreferenceLoader {
/*package*/ SettingsPreferenceLoader(@NonNull PreferenceFragmentCompat fragment) {
super(fragment);
}
@Override
public void loadPreferences() {
loadPreferences(R.xml.preferences);
if (!Prefs.isZeroTutorialEnabled()) {
loadPreferences(R.xml.preferences_zero);
findPreference(R.string.preference_key_zero_interstitial)
.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue == Boolean.FALSE) {
WikipediaApp.getInstance().getWikipediaZeroHandler().getZeroFunnel().logExtLinkAlways();
}
return true;
}
});
}
loadPreferences(R.xml.preferences_about);
updateLanguagePrefSummary();
Preference contentLanguagePref = findPreference(R.string.preference_key_language);
if (!Prefs.getMediaWikiBaseUriSupportsLangCode()) {
contentLanguagePref.setVisible(false);
} else {
contentLanguagePref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
LanguagePreferenceDialog langPrefDialog = new LanguagePreferenceDialog(getActivity(), false);
langPrefDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
String name = defaultString(WikipediaApp.getInstance().getAppOrSystemLanguageLocalizedName());
if (getActivity() != null && !findPreference(R.string.preference_key_language).getSummary().equals(name)) {
findPreference(R.string.preference_key_language).setSummary(name);
getActivity().setResult(SettingsActivity.ACTIVITY_RESULT_LANGUAGE_CHANGED);
}
}
});
langPrefDialog.show();
return true;
}
});
}
if (!BuildConfig.APPLICATION_ID.equals("org.wikipedia")) {
overridePackageName();
}
}
/**
* Needed for beta release since the Gradle flavors applicationId changes don't get reflected
* to the preferences.xml
* See https://code.google.com/p/android/issues/detail?id=57460
*/
private void overridePackageName() {
Preference aboutPref = findPreference("about");
aboutPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClass(getActivity(), AboutActivity.class);
getActivity().startActivity(intent);
return true;
}
});
}
private void updateLanguagePrefSummary() {
Preference languagePref = findPreference(R.string.preference_key_language);
languagePref.setSummary(WikipediaApp.getInstance().getAppOrSystemLanguageLocalizedName());
}
}