diff --git a/app/src/main/java/org/iilab/pb/BaseFragmentActivity.java b/app/src/main/java/org/iilab/pb/BaseFragmentActivity.java index a43d134e..f6706587 100644 --- a/app/src/main/java/org/iilab/pb/BaseFragmentActivity.java +++ b/app/src/main/java/org/iilab/pb/BaseFragmentActivity.java @@ -5,10 +5,10 @@ import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; -import android.support.v4.app.FragmentActivity; +import android.support.v7.app.AppCompatActivity; import android.util.Log; -public class BaseFragmentActivity extends FragmentActivity { +public class BaseFragmentActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/app/src/main/java/org/iilab/pb/MainActivity.java b/app/src/main/java/org/iilab/pb/MainActivity.java index c899012f..c1cb2769 100644 --- a/app/src/main/java/org/iilab/pb/MainActivity.java +++ b/app/src/main/java/org/iilab/pb/MainActivity.java @@ -7,6 +7,8 @@ import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; +import android.support.v7.preference.PreferenceFragmentCompat; +import android.support.v7.preference.PreferenceScreen; import android.util.Log; import android.view.View; import android.widget.TextView; @@ -31,7 +33,7 @@ /** * Created by aoe on 2/15/14. */ -public class MainActivity extends BaseFragmentActivity { +public class MainActivity extends BaseFragmentActivity implements PreferenceFragmentCompat.OnPreferenceStartScreenCallback { TextView tvToastMessage; @@ -143,7 +145,7 @@ else if (currentPage.getComponent().equals(PAGE_COMPONENT_ADVANCED_SETTINGS)) { private void changeAppIcontoPB() { - Log.d(TAG," changeAppIcontoPB"); + Log.d(TAG, " changeAppIcontoPB"); getPackageManager().setComponentEnabledSetting( new ComponentName("org.iilab.pb", "org.iilab.pb.HomeActivity-setup"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); @@ -234,7 +236,13 @@ public void onBackPressed() { } - + @Override + public boolean onPreferenceStartScreen(PreferenceFragmentCompat preferenceFragmentCompat, + PreferenceScreen preferenceScreen) { + Log.d(TAG,"g----------------------------------------------"); + preferenceFragmentCompat.setPreferenceScreen(preferenceScreen); + return true; + } } diff --git a/app/src/main/java/org/iilab/pb/common/ApplicationSettings.java b/app/src/main/java/org/iilab/pb/common/ApplicationSettings.java index a3514df5..a903fa6a 100644 --- a/app/src/main/java/org/iilab/pb/common/ApplicationSettings.java +++ b/app/src/main/java/org/iilab/pb/common/ApplicationSettings.java @@ -223,10 +223,10 @@ public static String getConfirmationWaitVibrationDuration(Context context) { } public static void setConfirmationFeedbackVibrationPattern(Context context, String confirmationFeedbackPattern) { - saveString(context,context.getString(R.string.alertSendingConfirmationVibrationKey),confirmationFeedbackPattern); + saveString(context,context.getString(R.string.feedbackAlarmActivationVibrationKey),confirmationFeedbackPattern); } public static String getConfirmationFeedbackVibrationPattern(Context context) { - return sharedPreferences(context).getString(context.getString(R.string.alertSendingConfirmationVibrationKey), ALARM_SENDING_CONFIRMATION_PATTERN_NONE); + return sharedPreferences(context).getString(context.getString(R.string.feedbackAlarmActivationVibrationKey), ALARM_SENDING_CONFIRMATION_PATTERN_NONE); } public static String getAlarmNotConfirmedPattern(Context context) { @@ -235,8 +235,8 @@ public static String getAlarmNotConfirmedPattern(Context context) { public static String getInitialClicksMaxTimeLimit(Context context) { return sharedPreferences(context).getString(context.getString(R.string.initialTimeKey), context.getString(R.string.initialTimeDefault)); } - public static String getTriggerSettings(Context context) { - return sharedPreferences(context).getString(context.getString(R.string.triggerSettingsKey), context.getString(R.string.initialPressesDefault)); + public static boolean getCustomSettings(Context context) { + return sharedPreferences(context).getBoolean(context.getString(R.string.customKey),false); } public static void setTrainingDoneRelease1_5(Context context, Boolean flag) { saveBoolean(context, TRAINING_DONE, flag); diff --git a/app/src/main/java/org/iilab/pb/fragment/AdvancedSettingsFragment.java b/app/src/main/java/org/iilab/pb/fragment/AdvancedSettingsFragment.java index cedb9bc1..89112e59 100644 --- a/app/src/main/java/org/iilab/pb/fragment/AdvancedSettingsFragment.java +++ b/app/src/main/java/org/iilab/pb/fragment/AdvancedSettingsFragment.java @@ -7,6 +7,7 @@ import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationManagerCompat; import android.support.v4.app.TaskStackBuilder; +import android.support.v7.preference.CheckBoxPreference; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceCategory; import android.support.v7.preference.PreferenceFragmentCompat; @@ -25,8 +26,7 @@ import static org.iilab.pb.common.AppConstants.PAGE_SETTINGS; import static org.iilab.pb.common.AppConstants.PAGE_SETUP_ALARM_RETRAINING; import static org.iilab.pb.common.AppConstants.PARENT_ACTIVITY; -import static org.iilab.pb.common.ApplicationSettings.getInitialClicksForAlertTrigger; -import static org.iilab.pb.common.ApplicationSettings.getTriggerSettings; +import static org.iilab.pb.common.ApplicationSettings.getCustomSettings; import static org.iilab.pb.common.ApplicationSettings.isConfirmationFeedback; import static org.iilab.pb.common.ApplicationSettings.setConfirmationFeedback; import static org.iilab.pb.common.ApplicationSettings.setConfirmationFeedbackVibrationPattern; @@ -37,6 +37,8 @@ public class AdvancedSettingsFragment extends PreferenceFragmentCompat { private static final String TAG = AdvancedSettingsFragment.class.getName(); + + public static AdvancedSettingsFragment newInstance(String pageId, int parentActivity) { AdvancedSettingsFragment f = new AdvancedSettingsFragment(); Bundle args = new Bundle(); @@ -51,10 +53,20 @@ public static AdvancedSettingsFragment newInstance(String pageId, int parentActi public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); - if (getString(R.string.custom_modeValue).equals(getTriggerSettings(getActivity()))) { - enableAdvancedSettings(true); + + + final CheckBoxPreference default7RepeatedPress = (CheckBoxPreference) findPreference(getString(R.string.default7RepeatedPressKey)); + final CheckBoxPreference extraConfirmationClick = (CheckBoxPreference) findPreference(getString(R.string.extraConfirmationPressKey)); + final CheckBoxPreference customPreference = (CheckBoxPreference) findPreference(getString(R.string.customKey)); + final Preference customSettings = (Preference) findPreference(getString(R.string.customSettingsKey)); + if (getCustomSettings(getActivity())) { + default7RepeatedPress.setChecked(false); + extraConfirmationClick.setChecked(false); + customPreference.setChecked(true); + customSettings.setEnabled(true); } else { - enableAdvancedSettings(false); + customPreference.setChecked(false); + customSettings.setEnabled(false); } if (isConfirmationFeedback(getActivity())) { enableConfirmationFeedback(true); @@ -66,7 +78,7 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { redoTrainingButton.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { - Log.d(TAG, "Testing redo training redoTrainingBtton"); + Log.d(TAG, "Testing redo training redoTrainingButton"); // During redo exercise of alarm trigger, stop the send alert hardware service. getActivity().stopService(new Intent(getActivity(), HardwareTriggerService.class)); Intent i = new Intent(getActivity(), WizardActivity.class); @@ -85,24 +97,25 @@ public boolean onPreferenceChange(Preference preference, Object selectedValue) { if (selectedValue.equals(getString(R.string.activate_power_button_trigger))) { getActivity().startService(new Intent(getActivity(), HardwareTriggerService.class)); - Log.d(TAG, "Power redoTrainingBtton alarm trigger is enabled"); + Log.d(TAG, "Power redoTraining Button alarm trigger is enabled"); } else { getActivity().stopService(new Intent(getActivity(), HardwareTriggerService.class)); displayNotification(); - Log.d(TAG, "Power redoTrainingBtton alarm trigger is disabled"); + Log.d(TAG, "Power redoTrainingButton alarm trigger is disabled"); } return true; } }); - Preference alertConfirmationSettings = (Preference) findPreference(getString(R.string.confirmationSettingsKey)); + + Preference alertConfirmationSettings = (Preference) findPreference(getString(R.string.confirmationSequenceKey)); alertConfirmationSettings.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object selectedValue) { Log.d(TAG, "Inside of feedback for alarm activation settings"); - if (selectedValue.equals(getString(R.string.confirmationSettingsDefault))) { + if (selectedValue.equals(getString(R.string.confirmationSequenceDefault))) { // disable Confirmation Wait Time/ Confirmation Wait Vibration enableConfirmationFeedback(false); setConfirmationFeedback(getActivity(), false); @@ -116,29 +129,55 @@ public boolean onPreferenceChange(Preference preference, Object selectedValue) { return true; } }); - Preference triggerSettingsPef = (Preference) findPreference(getString(R.string.triggerSettingsKey)); - triggerSettingsPef.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + + default7RepeatedPress.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object selectedValue) { - Log.d(TAG, "Inside on preference change of main trigger setting"); + Log.d(TAG, "Inside on preference change of main trigger setting " + selectedValue.getClass()); - if (selectedValue.equals(getString(R.string.default7RepeatedPressValue))) { + if ((Boolean) selectedValue) { + extraConfirmationClick.setChecked(false); + customPreference.setChecked(false); + customSettings.setEnabled(false); setConfirmationFeedbackVibrationPattern(getActivity(), ALARM_SENDING_CONFIRMATION_PATTERN_NONE); - enableAdvancedSettings(false); - enableRedoTraining(true); - Log.d(TAG, "Extra confirmation click required to trigger alarm"); - } else if (selectedValue.equals(getString(R.string.extraConfirmationPressValue))) { - //make the press 5 + Log.d(TAG, "Default 7 presses to trigger alarm without confirmation click"); + } + return true; + } + }); + extraConfirmationClick.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object selectedValue) { + Log.d(TAG, "Inside on preference change of main trigger setting " + selectedValue.getClass()); + + if ((Boolean) selectedValue) { + default7RepeatedPress.setChecked(false); + customPreference.setChecked(false); + customSettings.setEnabled(false); + // make the press 5 setInitialClicksForAlertTrigger(getActivity(), "5"); setConfirmationFeedbackVibrationPattern(getActivity(), ALARM_SENDING_CONFIRMATION_PATTERN_LONG); - enableAdvancedSettings(false); - enableRedoTraining(true); - Log.d(TAG, "Extra confirmation click required to trigger alarm " + getInitialClicksForAlertTrigger(getActivity())); - } else if (selectedValue.equals(getString(R.string.custom_modeValue))) { - enableAdvancedSettings(true); - // enable all the advanced settings - Log.d(TAG, "Power redoTrainingButton alarm trigger is disabled"); + + Log.d(TAG, "Default 5 presses to trigger alarm with confirmation click"); + } + return true; + } + }); + + customPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object selectedValue) { + Log.d(TAG, "Inside on preference change of main trigger setting " + selectedValue.getClass()); + + if ((Boolean) selectedValue) { + default7RepeatedPress.setChecked(false); + extraConfirmationClick.setChecked(false); + customSettings.setEnabled(true); + setConfirmationFeedbackVibrationPattern(getActivity(), ALARM_SENDING_CONFIRMATION_PATTERN_NONE); +// enableAdvancedSettings(false); +// enableRedoTraining(true); + Log.d(TAG, "Default 7 presses to trigger alarm without confirmation click"); } return true; } @@ -147,28 +186,20 @@ public boolean onPreferenceChange(Preference preference, Object selectedValue) { private void enableAdvancedSettings(boolean flag) { PreferenceCategory prefCatTriggerPatternSettings = (PreferenceCategory) findPreference(getString(R.string.triggerPatternSettingsKey)); - PreferenceCategory prefCatTriggerVibrationSettings = (PreferenceCategory) findPreference(getString(R.string.feedbackAlarmActivationKey)); +// PreferenceCategory prefCatTriggerVibrationSettings = (PreferenceCategory) findPreference(getString(R.string.feedbackAlarmActivationKey)); PreferenceCategory prefCatRedoTraining = (PreferenceCategory) findPreference(getString(R.string.redoTrainingPrefCatKey)); PreferenceCategory prefCatPowerButtonTriggerSettings = (PreferenceCategory) findPreference(getString(R.string.configurePowerButtonPrefCatKey)); prefCatTriggerPatternSettings.setEnabled(flag); - prefCatTriggerVibrationSettings.setEnabled(flag); +// prefCatTriggerVibrationSettings.setEnabled(flag); prefCatRedoTraining.setEnabled(flag); prefCatPowerButtonTriggerSettings.setEnabled(flag); } - private void enableRedoTraining(boolean flag) { - PreferenceCategory prefCatRedoTraining = (PreferenceCategory) findPreference(getString(R.string.redoTrainingPrefCatKey)); - prefCatRedoTraining.setEnabled(flag); - } - private void enableConfirmationFeedback(boolean flag) { Preference confirmationWaitTime = (Preference) findPreference(getString(R.string.confirmationWaitTimeKey)); confirmationWaitTime.setEnabled(flag); Preference confirmationWaitVibration = (Preference) findPreference(getString(R.string.hapticFeedbackVibrationPatternKey)); confirmationWaitVibration.setEnabled(flag); - Preference alertSendingConfirmationPattern = (Preference) findPreference(getString(R.string.alertSendingConfirmationVibrationKey)); - alertSendingConfirmationPattern.setEnabled(flag); - } private void displayNotification() { @@ -203,5 +234,21 @@ private void displayNotification() { // pass the Notification object to the system myNotificationManager.notify(notifyID, mBuilder.build()); } +// +// @Override +// public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, +// String key) { +// Log.d(TAG, "callback called"); +// if (key.equals(R.string.default7RepeatedPressKey)) { +// Log.d(TAG, "callback called"); +// +// Preference connectionPref = findPreference("customSettings"); +// // Set summary to be the user-description for the selected value +// connectionPref.setSummary(sharedPreferences.getString(key, "trying to change this runtime")); +// connectionPref.setDefaultValue(false); +// } +// } + + } diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 9c382fa1..97dbbfe0 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -75,7 +75,6 @@ Change Trigger Pattern Number of first clicks - Guard time duration Number of confirmation clicks 3 1 @@ -93,12 +92,16 @@ initialTime Feedback on Alarm Activation - feedbackAlarmActivation + 5 + Vibration pattern to inform that the alarm has been activated + feedbackAlarmActivationVibration + Confirmation Settings - 1 - Feedback on Alarm Activation confirmationSettings - + Use Confirmation Sequence + confirmationSettings + 1 + Feedback on Alarm Activation Confirmation Wait Time 2 @@ -110,14 +113,7 @@ Vibration pattern during the wait time until the confirmation press hapticFeedbackVibrationPattern - Alarm Sending Confirmation - 5 - Vibration pattern to inform that the alarm has been activated - alertSendingConfirmationVibration - - Feedback on NON Confirmation Alarm - feedbackAlarmActivation - Feedback on NON Confirmation Alarm + Feedback on NON Confirmation Alarm 1 Vibration pattern to inform that the alarm has NOT been activated. This will happen if you make the correct number of initial presses but do NOT confirm. alertNotConfirmed @@ -129,17 +125,21 @@ redoTraining Alarm Trigger Settings - Trigger Settings - Alarm Trigger Settings - triggerSettings + + + - (Default) 7 repeated presses - 5 presses plus confirmation - Custom + (Default) 7 repeated presses + default7Press + 5 presses plus confirmation + extraConfirmation + + Custom + Custom 1 2 - 3 - + customSettings + Custom settings diff --git a/app/src/main/res/values/array.xml b/app/src/main/res/values/array.xml index c0f59261..41e2cd60 100644 --- a/app/src/main/res/values/array.xml +++ b/app/src/main/res/values/array.xml @@ -38,12 +38,12 @@ 7 8 - + (Default) Inactive Active - + 1 2 @@ -69,7 +69,7 @@ 1 2 - + Long Vibration Repeated Short Vibrations Three short - pause - Three short @@ -77,7 +77,7 @@ None - + 1 2 3 @@ -93,15 +93,5 @@ 1 2 - - @string/default7RepeatedPress - @string/extraConfirmationPress - @string/custom_mode - - - @string/default7RepeatedPressValue - @string/extraConfirmationPressValue - @string/custom_modeValue - \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 96e063cb..e1726695 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -94,11 +94,16 @@ initialTime Feedback on Alarm Activation - feedbackAlarmActivation + 5 + Vibration pattern to inform that the alarm has been activated + feedbackAlarmActivationVibration + Confirmation Settings - 1 - Feedback on Alarm Activation confirmationSettings + Use Confirmation Sequence + confirmationSettings + 1 + Feedback on Alarm Activation Confirmation Wait Time 2 @@ -110,13 +115,6 @@ Vibration pattern during the wait time until the confirmation press hapticFeedbackVibrationPattern - Alarm Sending Confirmation - 5 - Vibration pattern to inform that the alarm has been activated - alertSendingConfirmationVibration - - Feedback on NON Confirmation Alarm - feedbackAlarmActivation Feedback on NON Confirmation Alarm 1 Vibration pattern to inform that the alarm has NOT been activated. This will happen if you make the correct number of initial presses but do NOT confirm. @@ -129,14 +127,19 @@ redoTraining Alarm Trigger Settings - Trigger Settings - Alarm Trigger Settings - triggerSettings - - (Default) 7 repeated presses - 5 presses plus confirmation - Custom + + + + + (Default) 7 repeated presses + 5 presses plus confirmation + Custom + Custom 1 2 3 + + customSettings + Custom settings + diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 65417cc3..a55190cc 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -1,90 +1,101 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - + - + + + + + + + - - - + \ No newline at end of file