diff --git a/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java b/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java index 3ba14eaf..e924d6ce 100644 --- a/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java +++ b/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java @@ -1,16 +1,17 @@ package org.odk.share.views.ui.settings; +import android.app.Dialog; import android.bluetooth.BluetoothAdapter; import android.content.DialogInterface; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; -import android.preference.CheckBoxPreference; import android.preference.EditTextPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; +import android.preference.SwitchPreference; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; @@ -19,6 +20,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; +import android.widget.Button; import android.widget.Toast; import androidx.appcompat.app.AlertDialog; @@ -39,8 +41,8 @@ public class SettingsActivity extends PreferenceActivity { EditTextPreference hotspotNamePreference; EditTextPreference bluetoothNamePreference; Preference hotspotPasswordPreference; - CheckBoxPreference passwordRequirePreference; - CheckBoxPreference btSecureModePreference; + SwitchPreference passwordRequirePreference; + SwitchPreference btSecureModePreference; EditTextPreference odkDestinationDirPreference; ListPreference defaultMethodPreference; private SharedPreferences prefs; @@ -72,16 +74,20 @@ private void addPreferences() { hotspotNamePreference = (EditTextPreference) findPreference(PreferenceKeys.KEY_HOTSPOT_NAME); bluetoothNamePreference = (EditTextPreference) findPreference(PreferenceKeys.KEY_BLUETOOTH_NAME); hotspotPasswordPreference = findPreference(PreferenceKeys.KEY_HOTSPOT_PASSWORD); - passwordRequirePreference = (CheckBoxPreference) findPreference(PreferenceKeys.KEY_HOTSPOT_PWD_REQUIRE); - btSecureModePreference = (CheckBoxPreference) findPreference(PreferenceKeys.KEY_BLUETOOTH_SECURE_MODE); + passwordRequirePreference = (SwitchPreference) findPreference(PreferenceKeys.KEY_HOTSPOT_PWD_REQUIRE); + btSecureModePreference = (SwitchPreference) findPreference(PreferenceKeys.KEY_BLUETOOTH_SECURE_MODE); odkDestinationDirPreference = (EditTextPreference) findPreference(PreferenceKeys.KEY_ODK_DESTINATION_DIR); prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); defaultMethodPreference.setSummary(prefs.getString(PreferenceKeys.KEY_DEFAULT_TRANSFER_METHOD, getString(R.string.default_hotspot_ssid))); - hotspotNamePreference.setSummary(prefs.getString(PreferenceKeys.KEY_HOTSPOT_NAME, - getString(R.string.default_hotspot_ssid))); + + String defaultHotspotName = getString(R.string.app_name) + getString(R.string.one_space) + Build.MODEL; + hotspotNamePreference.setSummary(prefs.getString(PreferenceKeys.KEY_HOTSPOT_NAME, defaultHotspotName)); + hotspotNamePreference.setDefaultValue(defaultHotspotName); + hotspotNamePreference.setText(prefs.getString(PreferenceKeys.KEY_HOTSPOT_NAME, defaultHotspotName)); + String defaultBluetoothName = BluetoothAdapter.getDefaultAdapter().getName(); bluetoothNamePreference.setText(defaultBluetoothName); bluetoothNamePreference.setDefaultValue(defaultBluetoothName); @@ -103,6 +109,10 @@ private void addPreferences() { defaultMethodPreference.setOnPreferenceChangeListener(preferenceChangeListener()); hotspotPasswordPreference.setOnPreferenceClickListener(preferenceClickListener()); + + checkNullEditTextPreference(odkDestinationDirPreference); + checkNullEditTextPreference(hotspotNamePreference); + checkNullEditTextPreference(bluetoothNamePreference); } private Preference.OnPreferenceClickListener preferenceClickListener() { @@ -116,28 +126,49 @@ private Preference.OnPreferenceClickListener preferenceClickListener() { }; } + private void checkNullEditTextPreference(EditTextPreference editTextPreference) { + editTextPreference.getEditText().addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + Dialog dlg = editTextPreference.getDialog(); + if (dlg instanceof android.app.AlertDialog) { + android.app.AlertDialog alertDlg = (android.app.AlertDialog) dlg; + Button positiveButton = alertDlg.getButton(AlertDialog.BUTTON_POSITIVE); + + if (editTextPreference.getEditText().getText().toString().trim().equals("")) { + positiveButton.setEnabled(false); + } else { + positiveButton.setEnabled(true); + } + } + + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + + } + private Preference.OnPreferenceChangeListener preferenceChangeListener() { return (preference, newValue) -> { switch (preference.getKey()) { case PreferenceKeys.KEY_HOTSPOT_NAME: String name = newValue.toString(); - if (name.length() == 0) { - Toast.makeText(getBaseContext(), getString(R.string.hotspot_name_error), Toast.LENGTH_LONG).show(); - return false; - } else { - hotspotNamePreference.setSummary(name); - } + hotspotNamePreference.setSummary(name); break; case PreferenceKeys.KEY_BLUETOOTH_NAME: String bluetoothName = newValue.toString(); - if (bluetoothName.length() == 0) { - Toast.makeText(getBaseContext(), getString(R.string.bluetooth_name_error), Toast.LENGTH_LONG).show(); - return false; - } else { - bluetoothNamePreference.setSummary(bluetoothName); - BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); - bluetoothAdapter.setName(bluetoothName); - } + bluetoothNamePreference.setSummary(bluetoothName); + BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + bluetoothAdapter.setName(bluetoothName); break; case PreferenceKeys.KEY_HOTSPOT_PASSWORD: String password = newValue.toString(); @@ -156,12 +187,7 @@ private Preference.OnPreferenceChangeListener preferenceChangeListener() { break; case PreferenceKeys.KEY_ODK_DESTINATION_DIR: String dir = newValue.toString(); - if (dir.length() == 0) { - Toast.makeText(getApplicationContext(), getString(R.string.odk_destination_dir_error), Toast.LENGTH_LONG).show(); - return false; - } else { - odkDestinationDirPreference.setSummary(dir); - } + odkDestinationDirPreference.setSummary(dir); break; case PreferenceKeys.KEY_DEFAULT_TRANSFER_METHOD: String method = newValue.toString(); @@ -218,16 +244,16 @@ public void onShow(DialogInterface dialog) { edtpass.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { - + } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (edtpass.getText().toString().length() >= 8) { - ((AlertDialog) dialog) .getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true); + ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true); } else { - ((AlertDialog) dialog) .getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); } } diff --git a/skunkworks_crow/src/main/res/values/strings.xml b/skunkworks_crow/src/main/res/values/strings.xml index 3e82f597..aa05ddb0 100644 --- a/skunkworks_crow/src/main/res/values/strings.xml +++ b/skunkworks_crow/src/main/res/values/strings.xml @@ -45,8 +45,6 @@ Set Password Enable Secure Mode Password required to connect with hotspot - Hotspot name should not be empty - Bluetooth name should not be empty Password length should be atleast 8 characters long Waiting for connection to accept Waiting for hotspot to connect @@ -141,7 +139,6 @@ \/sdcard\/odk ODK Destination Directory - The destination should not be empty Location Permission Needed Enable location from the settings. @@ -184,4 +181,6 @@ \'Finalized on\' EEE, MMM dd, yyyy \'at\' HH:mm \'Sent on\' EEE, MMM dd, yyyy \'at\' HH:mm \'Sending failed on\' EEE, MMM dd, yyyy \'at\' HH:mm + + \u0020 diff --git a/skunkworks_crow/src/main/res/xml/preferences_menu.xml b/skunkworks_crow/src/main/res/xml/preferences_menu.xml index b7ac7d23..a13e8371 100644 --- a/skunkworks_crow/src/main/res/xml/preferences_menu.xml +++ b/skunkworks_crow/src/main/res/xml/preferences_menu.xml @@ -23,10 +23,8 @@ - -