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 @@
-
-