package org.ohmage.activity;
import android.content.Intent;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.text.TextUtils;
import android.widget.Toast;
import org.ohmage.ConfigHelper;
import org.ohmage.R;
import org.ohmage.UserPreferencesHelper;
import org.ohmage.db.Models.Campaign;
import org.ohmage.logprobe.Analytics;
import org.ohmage.logprobe.Log;
import org.ohmage.logprobe.LogProbe.Status;
public class OhmagePreferenceActivity extends PreferenceActivity {
private static final String TAG = "OhmagePreferenceActivity";
private static final String KEY_REMINDERS = "key_reminders";
private static final String KEY_ADMIN_SETTINGS = "key_admin_settings";
private static final String STATUS_CAMPAIGN_URN = "status_campaign_urn";
private static final String STATUS_SERVER_URL = "status_server_url";
private static final String STATUS_FEEDBACK_VISIBILITY = "status_feedback_visibility";
private static final String STATUS_PROFILE_VISIBILITY = "status_profile_visibility";
private static final String STATUS_UPLOAD_QUEUE_VISIBILITY = "status_upload_queue_visibility";
private static final String STATUS_MOBILITY_VISIBILITY = "status_mobility_visibility";
private static final String INFO_OHMAGE_VERSION = "info_ohmage_version";
protected static final int CODE_ADMIN_SETTINGS = 0;
private PreferenceScreen mReminders;
private PreferenceScreen mAdmin;
private UserPreferencesHelper mUserPreferenceHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceManager prefMgr = getPreferenceManager();
prefMgr.setSharedPreferencesName(UserPreferencesHelper.getPreferencesName(this));
prefMgr.setSharedPreferencesMode(MODE_PRIVATE);
mUserPreferenceHelper = new UserPreferencesHelper(this);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
mReminders = (PreferenceScreen) findPreference(KEY_REMINDERS);
mReminders.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
String urn = Campaign.getSingleCampaign(OhmagePreferenceActivity.this);
if(!TextUtils.isEmpty(urn)) {
Intent triggers = Campaign.launchTriggerIntent(OhmagePreferenceActivity.this, Campaign.getSingleCampaign(OhmagePreferenceActivity.this));
startActivity(triggers);
} else
Toast.makeText(OhmagePreferenceActivity.this, R.string.preferences_no_single_campaign, Toast.LENGTH_LONG).show();
return true;
}
});
mAdmin = (PreferenceScreen) findPreference(KEY_ADMIN_SETTINGS);
mAdmin.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivityForResult(new Intent(OhmagePreferenceActivity.this, AdminPincodeActivity.class), CODE_ADMIN_SETTINGS);
return true;
}
});
findPreference(STATUS_SERVER_URL).setSummary(ConfigHelper.serverUrl());
try {
findPreference(INFO_OHMAGE_VERSION).setSummary(getPackageManager().getPackageInfo("org.ohmage", 0).versionName);
} catch (Exception e) {
Log.e(TAG, "unable to retrieve version", e);
}
}
@Override
public void onResume() {
super.onResume();
Analytics.activity(this, Status.ON);
// Hide and show reminders setting if we are in single campaign mode or not
if(ConfigHelper.isSingleCampaignMode()) {
getPreferenceScreen().addPreference(mReminders);
} else {
getPreferenceScreen().removePreference(mReminders);
}
setStatusInfo();
}
@Override
protected void onPause() {
super.onPause();
Analytics.activity(this, Status.OFF);
}
private void setStatusInfo() {
Preference campaignUrnStatus = findPreference(STATUS_CAMPAIGN_URN);
if(ConfigHelper.isSingleCampaignMode()) {
campaignUrnStatus.setTitle(R.string.preferences_single_campaign_status);
campaignUrnStatus.setSummary(Campaign.getSingleCampaign(this));
if(campaignUrnStatus.getSummary() == null)
campaignUrnStatus.setSummary(R.string.unknown);
} else {
campaignUrnStatus.setTitle(R.string.preferences_muli_campaign_status);
campaignUrnStatus.setSummary(null);
}
findPreference(STATUS_FEEDBACK_VISIBILITY).setSummary(mUserPreferenceHelper.showFeedback() ? R.string.shown : R.string.hidden);
findPreference(STATUS_PROFILE_VISIBILITY).setSummary(mUserPreferenceHelper.showProfile() ? R.string.shown : R.string.hidden);
findPreference(STATUS_UPLOAD_QUEUE_VISIBILITY).setSummary(mUserPreferenceHelper.showUploadQueue() ? R.string.shown : R.string.hidden);
findPreference(STATUS_MOBILITY_VISIBILITY).setSummary(mUserPreferenceHelper.showMobility() ? R.string.shown : R.string.hidden);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode) {
case CODE_ADMIN_SETTINGS:
if(resultCode == RESULT_OK)
startActivity(new Intent(OhmagePreferenceActivity.this, AdminSettingsActivity.class));
break;
}
}
}