package org.mtransit.android.ui.fragment;
import org.mtransit.android.R;
import org.mtransit.android.commons.PreferenceUtils;
import org.mtransit.android.commons.StoreUtils;
import org.mtransit.android.util.VendingUtils;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
public class PreferencesFragment extends MTPreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener,
VendingUtils.OnVendingResultListener {
private static final String TAG = PreferenceFragment.class.getSimpleName();
@Override
public String getLogTag() {
return TAG;
}
private static final String SUPPORT_SUBSCRIPTIONS_PREF = "pSupportSubs";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
findPreference(SUPPORT_SUBSCRIPTIONS_PREF).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Activity activity = getActivity();
if (activity == null) {
return false; // not handled
}
Boolean hasSubscription = VendingUtils.isHasSubscription(activity);
if (hasSubscription == null) {
} else if (hasSubscription) {
StoreUtils.viewAppPage(activity, activity.getPackageName(), activity.getString(R.string.google_play));
} else {
VendingUtils.purchase(activity);
}
return true; // handled
}
});
}
@Override
public void onVendingResult(Boolean hasSubscription) {
Preference supportSubsPref = findPreference(SUPPORT_SUBSCRIPTIONS_PREF);
if (hasSubscription == null) {
supportSubsPref.setTitle(R.string.ellipsis);
supportSubsPref.setSummary(R.string.ellipsis);
supportSubsPref.setEnabled(false);
} else if (hasSubscription) {
supportSubsPref.setTitle(R.string.support_subs_cancel_pref_title);
supportSubsPref.setSummary(R.string.support_subs_cancel_pref_summary);
supportSubsPref.setEnabled(true);
} else {
supportSubsPref.setTitle(R.string.support_subs_pref_title);
supportSubsPref.setSummary(R.string.support_subs_pref_summary);
supportSubsPref.setEnabled(true);
}
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (PreferenceUtils.PREFS_UNITS.equals(key)) {
setUnitSummary(getActivity());
} else if (PreferenceUtils.PREFS_USE_INTERNAL_WEB_BROWSER.equals(key)) {
setUseInternalWebBrowserSummary(getActivity());
}
}
private void setUnitSummary(Context context) {
if (context == null) {
return;
}
Preference unitPref = findPreference(PreferenceUtils.PREFS_UNITS);
if (unitPref == null) {
return;
}
String units = PreferenceUtils.getPrefDefault(context, PreferenceUtils.PREFS_UNITS, null);
if (PreferenceUtils.PREFS_UNITS_METRIC.equals(units)) {
unitPref.setSummary(R.string.unit_pref_meter);
} else if (PreferenceUtils.PREFS_UNITS_IMPERIAL.equals(units)) {
unitPref.setSummary(R.string.unit_pref_imperial);
} else {
unitPref.setSummary(R.string.unit_pref_summary);
}
}
private void setUseInternalWebBrowserSummary(Context context) {
if (context == null) {
return;
}
Preference useIntenalWebBrowserPref = findPreference(PreferenceUtils.PREFS_USE_INTERNAL_WEB_BROWSER);
if (useIntenalWebBrowserPref == null) {
return;
}
boolean useInternalWebBrowser = PreferenceUtils.getPrefDefault(context, PreferenceUtils.PREFS_USE_INTERNAL_WEB_BROWSER,
PreferenceUtils.PREFS_USE_INTERNAL_WEB_BROWSER_DEFAULT);
if (useInternalWebBrowser) {
useIntenalWebBrowserPref.setSummary(R.string.use_internal_web_browser_pref_summary_on);
} else {
useIntenalWebBrowserPref.setSummary(R.string.use_internal_web_browser_pref_summary_off);
}
}
@Override
public void onResume() {
super.onResume();
VendingUtils.onResume(getActivity(), this);
PreferenceUtils.getPrefDefault(getActivity()).registerOnSharedPreferenceChangeListener(this);
setUnitSummary(getActivity());
setUseInternalWebBrowserSummary(getActivity());
}
@Override
public void onPause() {
super.onPause();
PreferenceUtils.getPrefDefault(getActivity()).unregisterOnSharedPreferenceChangeListener(this);
VendingUtils.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
VendingUtils.destroyBilling(this);
}
}