package org.commcare.preferences; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.MenuItem; import org.commcare.CommCareApp; import org.commcare.CommCareApplication; import org.commcare.activities.SessionAwarePreferenceActivity; import org.commcare.dalvik.BuildConfig; import org.commcare.dalvik.R; import org.commcare.google.services.analytics.GoogleAnalyticsFields; import org.commcare.google.services.analytics.GoogleAnalyticsUtils; import org.javarosa.core.services.locale.Localization; import java.util.HashMap; import java.util.Map; /** * Sub-menu for managing server addresses * * @author Phillip Mates (pmates@dimagi.com) */ public class CommCareServerPreferences extends SessionAwarePreferenceActivity { public final static String PREFS_APP_SERVER_KEY = "default_app_server"; public final static String PREFS_DATA_SERVER_KEY = "ota-restore-url"; public final static String PREFS_SUBMISSION_URL_KEY = "PostURL"; public final static String PREFS_LOG_POST_URL_KEY = "log_receiver_url"; private final static String PREFS_KEY_SERVER_KEY = "default_key_server"; public final static String PREFS_FORM_RECORD_KEY = "form-record-url"; public final static String PREFS_HEARTBEAT_URL_KEY = "heartbeat-url"; public final static String PREFS_SUPPORT_ADDRESS_KEY = "support-email-address"; private static final Map<String, String> prefKeyToAnalyticsEvent = new HashMap<>(); static { prefKeyToAnalyticsEvent.put(PREFS_APP_SERVER_KEY, GoogleAnalyticsFields.LABEL_APP_SERVER); prefKeyToAnalyticsEvent.put(PREFS_DATA_SERVER_KEY, GoogleAnalyticsFields.LABEL_DATA_SERVER); prefKeyToAnalyticsEvent.put(PREFS_SUBMISSION_URL_KEY, GoogleAnalyticsFields.LABEL_SUBMISSION_SERVER); prefKeyToAnalyticsEvent.put(PREFS_KEY_SERVER_KEY, GoogleAnalyticsFields.LABEL_KEY_SERVER); prefKeyToAnalyticsEvent.put(PREFS_FORM_RECORD_KEY, GoogleAnalyticsFields.LABEL_FORM_RECORD_SERVER); prefKeyToAnalyticsEvent.put(PREFS_SUPPORT_ADDRESS_KEY, GoogleAnalyticsFields.LABEL_SUPPORT_EMAIL); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PreferenceManager prefMgr = getPreferenceManager(); prefMgr.setSharedPreferencesName(CommCareApplication.instance().getCurrentApp().getPreferencesFilename()); addPreferencesFromResource(R.xml.server_preferences); GoogleAnalyticsUtils.reportPrefActivityEntry(GoogleAnalyticsFields.CATEGORY_SERVER_PREFS); setTitle(Localization.get("settings.server.title")); CommCarePreferences.addBackButtonToActionBar(this); GoogleAnalyticsUtils.createPreferenceOnClickListeners(prefMgr, prefKeyToAnalyticsEvent, GoogleAnalyticsFields.CATEGORY_SERVER_PREFS); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Respond to the action bar's Up/Home button case android.R.id.home: finish(); return true; } return super.onOptionsItemSelected(item); } public static String getSupportEmailAddress() { return getServerProperty(PREFS_SUPPORT_ADDRESS_KEY, CommCareApplication.instance().getString(R.string.support_email_address_default)) ; } private static String getServerProperty(String key, String defaultValue) { CommCareApp app = CommCareApplication.instance().getCurrentApp(); if (app == null) { return defaultValue; } SharedPreferences properties = app.getAppPreferences(); return properties.getString(key, defaultValue); } }