mirror of https://github.com/tasks/tasks
Ability to launch a custom preference activity from UpdateMessageService
parent
3dc29fdaa9
commit
5614a9a2cc
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
** Copyright (c) 2012 Todoroo Inc
|
||||
**
|
||||
** See the file "LICENSE" for the full license governing this code.
|
||||
-->
|
||||
<PreferenceScreen
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:title="@string/EPr_title">
|
||||
</PreferenceScreen>
|
@ -0,0 +1,76 @@
|
||||
package com.todoroo.astrid.service;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.preference.CheckBoxPreference;
|
||||
import android.preference.Preference;
|
||||
import android.preference.Preference.OnPreferenceChangeListener;
|
||||
import android.preference.PreferenceActivity;
|
||||
|
||||
import com.timsu.astrid.R;
|
||||
import com.todoroo.andlib.utility.Preferences;
|
||||
import com.todoroo.astrid.activity.AstridActivity;
|
||||
|
||||
public class UpdateMessagePreference extends PreferenceActivity {
|
||||
|
||||
public static final String TOKEN_PREFS_ARRAY = "prefs_array"; //$NON-NLS-1$
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
addPreferencesFromResource(R.xml.preferences_blank);
|
||||
String prefsArray = getIntent().getStringExtra(TOKEN_PREFS_ARRAY);
|
||||
try {
|
||||
JSONArray array = new JSONArray(prefsArray);
|
||||
if (array.length() == 0)
|
||||
finish();
|
||||
|
||||
for (int i = 0; i < array.length(); i++) {
|
||||
try {
|
||||
JSONObject pref = array.getJSONObject(i);
|
||||
addPreferenceFromJSON(pref);
|
||||
} catch (JSONException e) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("nls")
|
||||
private void addPreferenceFromJSON(JSONObject obj) {
|
||||
String type = obj.optString("type", null);
|
||||
String key = obj.optString("key", null);
|
||||
String title = obj.optString("title", null);
|
||||
if (type == null || key == null || title == null)
|
||||
return;
|
||||
|
||||
Preference pref = null;
|
||||
if ("bool".equals(type)) { // We can add other types we want to support and handle the preference construction here
|
||||
pref = new CheckBoxPreference(this);
|
||||
pref.setKey(key);
|
||||
pref.setTitle(title);
|
||||
pref.setDefaultValue(Preferences.getBoolean(key, false));
|
||||
}
|
||||
|
||||
if (pref == null)
|
||||
return;
|
||||
|
||||
if (obj.optBoolean("restart")) {
|
||||
pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
setResult(AstridActivity.RESULT_RESTART_ACTIVITY);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getPreferenceScreen().addPreference(pref);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue