From 16a9207ded8e94b1613eb79388311ffdbe665379 Mon Sep 17 00:00:00 2001 From: Graham Jones Date: Tue, 17 Nov 2015 17:07:13 +0000 Subject: [PATCH] Split preferences into different screens to make them simpler, and enable and disable screens depending on options selected. --- .../org/openseizuredetector/PrefActivity.java | 130 +++++++++++++++++- app/src/main/res/values/datasource_list.xml | 12 ++ app/src/main/res/xml/alarm_prefs.xml | 58 ++++++++ app/src/main/res/xml/camera_prefs.xml | 47 +++++++ app/src/main/res/xml/general_prefs.xml | 43 ++++++ .../main/res/xml/network_datasource_prefs.xml | 58 ++++++++ .../main/res/xml/pebble_datasource_prefs.xml | 70 ++++++++++ app/src/main/res/xml/preference_headers.xml | 31 +++++ 8 files changed, 446 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/values/datasource_list.xml create mode 100644 app/src/main/res/xml/alarm_prefs.xml create mode 100644 app/src/main/res/xml/camera_prefs.xml create mode 100644 app/src/main/res/xml/general_prefs.xml create mode 100644 app/src/main/res/xml/network_datasource_prefs.xml create mode 100644 app/src/main/res/xml/pebble_datasource_prefs.xml create mode 100644 app/src/main/res/xml/preference_headers.xml diff --git a/app/src/main/java/uk/org/openseizuredetector/PrefActivity.java b/app/src/main/java/uk/org/openseizuredetector/PrefActivity.java index 13b5fc1..0832765 100644 --- a/app/src/main/java/uk/org/openseizuredetector/PrefActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/PrefActivity.java @@ -24,14 +24,138 @@ */ package uk.org.openseizuredetector; + +import android.content.SharedPreferences; import android.preference.PreferenceActivity; import android.os.Bundle; +import android.preference.PreferenceFragment; +import android.preference.PreferenceManager; +import android.util.Log; +import android.widget.Toast; + +import java.util.List; public class PrefActivity extends PreferenceActivity { + private String TAG = "PreferenceActivity"; + @Override - public void onCreate(Bundle savedInstanceState) { + protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - addPreferencesFromResource(R.xml.prefs); } + + /** + * Populate the activity with the top-level headers. + */ + @Override + public void onBuildHeaders(List
target) { + loadHeadersFromResource(R.xml.preference_headers, target); + + SharedPreferences SP = PreferenceManager + .getDefaultSharedPreferences(this.getApplicationContext()); + String dataSourceStr = SP.getString("DataSource", "pebble"); + Log.v(TAG, "onBuildHeaders DataSource = " + dataSourceStr); + + Boolean cameraEnabled = SP.getBoolean("UseIpCamera", false); + Log.v(TAG, "onBuildHeaders cameraEnabled = " + cameraEnabled); + + for (int i = 0; i < target.size(); i++) { + Header h = target.get(i); + Log.v(TAG,"found - "+h.title.toString()); + if (h.title.toString().equals("Pebble Datasource")) { + Log.v(TAG, "found Pebble Datasource Header"); + if (!dataSourceStr.equals("pebble")) { + Log.v(TAG, "Removing pebble settings header"); + target.remove(i); + i = i-1; + } + } + if (h.title.toString().equals("Network Datasource")) { + Log.v(TAG, "found Network Datasource Header"); + if (!dataSourceStr.equals("network")) { + Log.v(TAG, "Removing network settings header"); + target.remove(i); + i = i -1; + } + } + if (h.title.toString().equals("Camera Settings")) { + Log.v(TAG, "found Camera Settings Header"); + if (!cameraEnabled) { + Log.v(TAG, "Removing camera settings header"); + target.remove(i); + i = i-1; + } + } + } + + } + + @Override + public void onStart() { + super.onStart(); + invalidateHeaders(); + Log.v(TAG, "onStart()"); + } + + @Override + public void onResume() { + super.onResume(); + Log.v(TAG, "onStart()"); + } + + /** + * This fragment shows the preferences for the first header. + */ + public static class GeneralPrefsFragment extends PreferenceFragment { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // Load the preferences from an XML resource + addPreferencesFromResource(R.xml.general_prefs); + } + } + + /** + * This fragment contains a second-level set of preference that you + * can get to by tapping an item in the first preferences fragment. + */ + public static class AlarmPrefsFragment extends PreferenceFragment { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Load the preferences from an XML resource + addPreferencesFromResource(R.xml.alarm_prefs); + } + } + + public static class PebbleDatasourcePrefsFragment extends PreferenceFragment { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Load the preferences from an XML resource + addPreferencesFromResource(R.xml.pebble_datasource_prefs); + } + } + + public static class NetworkDatasourcePrefsFragment extends PreferenceFragment { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Load the preferences from an XML resource + addPreferencesFromResource(R.xml.network_datasource_prefs); + } + } + + public static class CameraPrefsFragment extends PreferenceFragment { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Load the preferences from an XML resource + addPreferencesFromResource(R.xml.camera_prefs); + } + } + } diff --git a/app/src/main/res/values/datasource_list.xml b/app/src/main/res/values/datasource_list.xml new file mode 100644 index 0000000..481cace --- /dev/null +++ b/app/src/main/res/values/datasource_list.xml @@ -0,0 +1,12 @@ + + + + "Pebble Watch" + "Network" + + + "pebble" + "network" + + + \ No newline at end of file diff --git a/app/src/main/res/xml/alarm_prefs.xml b/app/src/main/res/xml/alarm_prefs.xml new file mode 100644 index 0000000..69c746e --- /dev/null +++ b/app/src/main/res/xml/alarm_prefs.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/camera_prefs.xml b/app/src/main/res/xml/camera_prefs.xml new file mode 100644 index 0000000..c047d49 --- /dev/null +++ b/app/src/main/res/xml/camera_prefs.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/general_prefs.xml b/app/src/main/res/xml/general_prefs.xml new file mode 100644 index 0000000..b2b349f --- /dev/null +++ b/app/src/main/res/xml/general_prefs.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/xml/network_datasource_prefs.xml b/app/src/main/res/xml/network_datasource_prefs.xml new file mode 100644 index 0000000..f7041b3 --- /dev/null +++ b/app/src/main/res/xml/network_datasource_prefs.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/pebble_datasource_prefs.xml b/app/src/main/res/xml/pebble_datasource_prefs.xml new file mode 100644 index 0000000..692b907 --- /dev/null +++ b/app/src/main/res/xml/pebble_datasource_prefs.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/preference_headers.xml b/app/src/main/res/xml/preference_headers.xml new file mode 100644 index 0000000..f1c6deb --- /dev/null +++ b/app/src/main/res/xml/preference_headers.xml @@ -0,0 +1,31 @@ + + + +
+ +
+ +
+ +
+ +
+ + + \ No newline at end of file