diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f0db859..acc3f37 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -72,12 +72,12 @@
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name"
- android:theme="@android:style/Theme.Translucent.NoTitleBar">
+ android:theme="@android:style/Theme.Translucent.NoTitleBar" />
+ android:screenOrientation="portrait" />
+ android:screenOrientation="portrait" />
+ android:screenOrientation="portrait" />
+ android:screenOrientation="portrait" />
+ android:screenOrientation="portrait" />
+ android:label="@string/title_activity_report_wf" />
diff --git a/app/src/main/java/org/deke/risk/riskahead/SettingsActivity.java b/app/src/main/java/org/deke/risk/riskahead/SettingsActivity.java
index f488dc7..04e61c6 100644
--- a/app/src/main/java/org/deke/risk/riskahead/SettingsActivity.java
+++ b/app/src/main/java/org/deke/risk/riskahead/SettingsActivity.java
@@ -1,168 +1,24 @@
package org.deke.risk.riskahead;
-import android.app.AlertDialog;
-import android.content.DialogInterface;
import android.os.Bundle;
-import android.text.method.PasswordTransformationMethod;
-import android.util.Log;
-import android.util.Patterns;
-import android.view.View;
-import android.widget.EditText;
-import android.widget.TextView;
-import com.android.volley.Request;
-import com.android.volley.Response;
-import com.android.volley.VolleyError;
-import com.android.volley.toolbox.StringRequest;
-
-import org.deke.risk.riskahead.helper.AppConfig;
-import org.deke.risk.riskahead.helper.AppController;
+import org.deke.risk.riskahead.fragment.SettingsFragment;
import org.deke.risk.riskahead.helper.BaseActivity;
-import org.deke.risk.riskahead.helper.SessionManager;
-import org.deke.risk.riskahead.helper.TextValidator;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.HashMap;
-import java.util.Map;
public class SettingsActivity extends BaseActivity {
private final static String mActivityTitle = "Account Settings";
private final static String TAG = SettingsActivity.class.getSimpleName();
- private TextView txtUsername;
- private TextView txtSurname;
- private TextView txtName;
- private TextView txtEmail;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
userHasToBeLoggedIn();
- txtUsername = (TextView) findViewById(R.id.txt_settings_username);
- txtName = (TextView) findViewById(R.id.txt_settings_name);
- txtSurname = (TextView) findViewById(R.id.txt_settings_surname);
- txtEmail = (TextView) findViewById(R.id.txt_settings_email);
-
- findViewById(R.id.btn_settings_req_password).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- new AlertDialog.Builder(SettingsActivity.this)
- .setTitle("Send password reset E-Mail")
- .setMessage("Do you really want to reset your password? An E-Mail will be send to your address. Please follow the instructions to reset your password.")
- .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- String tag_string_req = "requestpwreset";
- StringRequest strReq = getStringRequestResetPW(txtEmail.getText().toString());
- AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
-
- showMessage("E-Mail was sent to your address");
- }
- })
- .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- // do nothing
- }
- })
- .setIcon(android.R.drawable.ic_dialog_alert)
- .show();
- }
- });
-
- findViewById(R.id.btn_settings_change).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (txtUsername.getError() != null || txtEmail.getError() != null) {
- showMessage("Entered fields not valid\n" +
- "Please check errors first.");
- } else {
- showAlert();
-
- }
- }
- });
-
- txtUsername.setText(user.get("username"));
- txtName.setText(user.get("name"));
- txtSurname.setText(user.get("surname"));
- txtEmail.setText(user.get("email"));
-
- txtUsername.addTextChangedListener(new TextValidator(txtUsername, getApplicationContext()) {
- @Override
- public void validate(TextView textView, String text) {
- if (text.length() < 5) {
- textView.setError("Your username must be at least\n" +
- "5 characters in length.");
- }
- }
- });
-
- txtEmail.addTextChangedListener(new TextValidator(txtEmail, getApplicationContext()) {
- @Override
- public void validate(TextView textView, String text) {
- if (!Patterns.EMAIL_ADDRESS.matcher(text).matches()) {
- textView.setError("Please enter a valid email address\n" +
- "e.g.: text@abc.de");
- }
- }
- });
-
- if(user.get("providerType") != null && user.get("providerType").equals("local")){
- findViewById(R.id.btn_settings_req_password).setVisibility(View.VISIBLE);
- }else{
- findViewById(R.id.btn_settings_req_password).setVisibility(View.INVISIBLE);
- }
+ getFragmentManager().beginTransaction().replace(R.id.fragment_content, new SettingsFragment()).commit();
}
- private void showAlert() {
- AlertDialog.Builder alert = new AlertDialog.Builder(SettingsActivity.this);
-
- if(user.get("providerType") != null && user.get("providerType").equals("local")) {
- final EditText input = new EditText(this);
- input.setTransformationMethod(PasswordTransformationMethod.getInstance());
-
- alert.setView(input);
-
- alert.setTitle("Change settings")
- .setMessage("Enter your password to confirm changes: ")
- .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- String value = input.getText().toString();
-
- String tag_string_req = "updateuser";
- StringRequest strReq = getStringChangeUserSettings(value);
- AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
- }
- })
- .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- // do nothing
- }
- })
- .setIcon(android.R.drawable.ic_dialog_alert)
- .show();
- }else{
- alert.setTitle("Change settings")
- .setMessage("Do you really want to confirm changes?")
- .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
-
- String tag_string_req = "updateuser";
- StringRequest strReq = getStringChangeUserSettings("");
- AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
- }
- })
- .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- // do nothing
- }
- })
- .setIcon(android.R.drawable.ic_dialog_alert)
- .show();
- }
- }
@Override
@@ -179,105 +35,7 @@ public class SettingsActivity extends BaseActivity {
@Override
protected String getActivityName() { return mActivityTitle; }
- private StringRequest getStringChangeUserSettings(final String value) {
- showDialog();
- return new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener() {
- @Override
- public void onResponse(String response) {
- Log.d(TAG, "Change user settings: " + response);
- hideDialog();
- try {
- JSONObject jObj = new JSONObject(response);
- boolean error = jObj.getBoolean("error");
- if (!error) {
- showMessage(jObj.getString("msg"));
- JSONObject tmpuser = jObj.getJSONObject("user");
- session.addUser(tmpuser.getString("id"), tmpuser.getString("username"), tmpuser.getString("name"), tmpuser.getString("surname"), tmpuser.getString("email"), tmpuser.getString("status"), user.get("providerType"), tmpuser.getString("created_at"), tmpuser.getString("updated_at"), tmpuser.getString("lastlogin_at"), tmpuser.getString("accesskey"));
- finish();
- startActivity(getIntent());
- } else {
- String errorMsg = jObj.getString("error_msg");
- Log.e(TAG, "Error getting user settings (Server returned error): " + errorMsg);
- showMessage(errorMsg);
- }
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- }, new Response.ErrorListener() {
-
- @Override
- public void onErrorResponse(VolleyError error) {
- Log.e(TAG, "Error getting user settings: " + error.getMessage());
- showMessage(getString(R.string.errormsg_couldnotretrieve));
- hideDialog();
- }
- }) {
-
- @Override
- protected Map getParams() {
- // Posting params to register url
- Map params = new HashMap<>();
- params.put("tag", "updateuser");
- params.put("uid", user.get(SessionManager.KEY_UID));
- params.put("token", user.get(SessionManager.TOKEN));
- params.put("username", txtUsername.getText().toString());
- params.put("name", txtName.getText().toString());
- params.put("surname", txtSurname.getText().toString());
- params.put("email", txtEmail.getText().toString());
- params.put("providerType", user.get("providerType"));
- params.put("password", value);
-
- return params;
- }
- };
- }
-
- private StringRequest getStringRequestResetPW(final String email) {
- showDialog();
- return new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener() {
-
- @Override
- public void onResponse(String response) {
- Log.d(TAG, "Resend E-Mail Response: " + response);
- hideDialog();
-
- try {
- JSONObject jObj = new JSONObject(response);
- boolean error = jObj.getBoolean("error");
- if (!error) {
- //do nothing
- } else {
- String errorMsg = jObj.getString("error_msg");
- Log.e(TAG, "Error request email reset (Server returned error): " + errorMsg);
- showMessage(errorMsg);
- }
- } catch (JSONException e) {
- e.printStackTrace();
- }
-
- }
- }, new Response.ErrorListener() {
-
- @Override
- public void onErrorResponse(VolleyError error) {
- Log.e(TAG, "Error request email reset: " + error.getMessage());
- showMessage(getString(R.string.errormsg_couldnotretrieve));
- hideDialog();
- }
- }) {
-
- @Override
- protected Map getParams() {
- Map params = new HashMap<>();
- params.put("tag", "requestpwreset");
- params.put("email", email);
-
- return params;
- }
- };
- }
}
diff --git a/app/src/main/java/org/deke/risk/riskahead/fragment/SettingsFragment.java b/app/src/main/java/org/deke/risk/riskahead/fragment/SettingsFragment.java
new file mode 100644
index 0000000..3a9d450
--- /dev/null
+++ b/app/src/main/java/org/deke/risk/riskahead/fragment/SettingsFragment.java
@@ -0,0 +1,287 @@
+package org.deke.risk.riskahead.fragment;
+
+import android.content.Context;
+import android.content.DialogInterface;
+import android.net.Uri;
+import android.os.Bundle;
+import android.preference.EditTextPreference;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.preference.SwitchPreference;
+import android.support.v4.app.Fragment;
+import android.support.v7.app.AlertDialog;
+import android.text.method.PasswordTransformationMethod;
+import android.util.Log;
+import android.util.Patterns;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import com.android.volley.Request;
+import com.android.volley.Response;
+import com.android.volley.VolleyError;
+import com.android.volley.toolbox.StringRequest;
+
+import org.deke.risk.riskahead.R;
+import org.deke.risk.riskahead.SettingsActivity;
+import org.deke.risk.riskahead.helper.AppConfig;
+import org.deke.risk.riskahead.helper.AppController;
+import org.deke.risk.riskahead.helper.SessionManager;
+import org.deke.risk.riskahead.helper.TextValidator;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Dennis Thießen
+ */
+public class SettingsFragment extends PreferenceFragment {
+
+ private final static String TAG = SettingsFragment.class.getSimpleName();
+
+ private EditTextPreference prefUsername;
+ private EditTextPreference prefSurname;
+ private EditTextPreference prefName;
+ private EditTextPreference prefEmail;
+
+ private SwitchPreference prefNotifications;
+ private ListPreference prefRadius;
+ private ListPreference prefFrequency;
+
+ private Preference btnRequestPW;
+
+ HashMap user;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ addPreferencesFromResource(R.xml.settings);
+
+ prefUsername = (EditTextPreference) getPreferenceManager().findPreference("usernamePref");
+ prefSurname = (EditTextPreference) getPreferenceManager().findPreference("surnamePref");
+ prefName = (EditTextPreference) getPreferenceManager().findPreference("namePref");
+ prefEmail = (EditTextPreference) getPreferenceManager().findPreference("emailPref");
+
+ btnRequestPW = (Preference) getPreferenceManager().findPreference("resetPassword");
+
+ prefRadius = (ListPreference) getPreferenceManager().findPreference("notifyRadius");
+ prefNotifications = (SwitchPreference) getPreferenceManager().findPreference("notifyEnable");
+ prefFrequency = (ListPreference) getPreferenceManager().findPreference("notifyFrequency");
+
+ prefUsername.getEditText().addTextChangedListener(new TextValidator(prefUsername.getEditText(), getActivity().getApplicationContext()) {
+ @Override
+ public void validate(TextView textView, String text) {
+ if (text.length() < 5) {
+ textView.setError("Your username must be at least\n" +
+ "5 characters in length.");
+ }
+ }
+ });
+ prefEmail.getEditText().addTextChangedListener(new TextValidator(prefEmail.getEditText(), getActivity().getApplicationContext()) {
+ @Override
+ public void validate(TextView textView, String text) {
+ if (!Patterns.EMAIL_ADDRESS.matcher(text).matches()) {
+ textView.setError("Please enter a valid email address\n" +
+ "e.g.: text@abc.de");
+ }
+ }
+ });
+
+ Preference.OnPreferenceChangeListener changeListener = new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ requestUpdateUserSettings(preference,newValue.toString());
+ return true;
+ }
+ };
+
+ prefUsername.setOnPreferenceChangeListener(changeListener);
+ prefSurname.setOnPreferenceChangeListener(changeListener);
+ prefName.setOnPreferenceChangeListener(changeListener);
+ prefEmail.setOnPreferenceChangeListener(changeListener);
+
+ btnRequestPW.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ new AlertDialog.Builder(getActivity())
+ .setTitle("Send password reset E-Mail")
+ .setMessage("Do you really want to reset your password? An E-Mail will be send to your address. Please follow the instructions to reset your password.")
+ .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ requestPasswordReset();
+ }
+ })
+ .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ // do nothing
+ }
+ })
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .show();
+
+ return true;
+ }
+ });
+
+ updatePrefs();
+
+ if(!user.get(SessionManager.PROVIDER_TYPE).equals("local")){
+ btnRequestPW.setEnabled(false);
+ }else{
+ btnRequestPW.setEnabled(true);
+ }
+
+
+ }
+
+ private void updatePrefs() {
+ user = ((SettingsActivity) getActivity()).getUser();
+
+ prefUsername.setText(user.get(SessionManager.KEY_USERNAME));
+ prefSurname.setText(user.get(SessionManager.KEY_SURNAME));
+ prefName.setText(user.get(SessionManager.KEY_NAME));
+ prefEmail.setText(user.get(SessionManager.KEY_EMAIL));
+
+ prefUsername.setSummary(user.get(SessionManager.KEY_USERNAME));
+ prefSurname.setSummary(user.get(SessionManager.KEY_SURNAME));
+ prefName.setSummary(user.get(SessionManager.KEY_NAME));
+ prefEmail.setSummary(user.get(SessionManager.KEY_EMAIL));
+ }
+
+ private void requestPasswordReset() {
+ String tag_string_req = "requestpwreset";
+ StringRequest strReq = getStringRequestResetPW(user.get(SessionManager.KEY_EMAIL));
+ AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
+
+ ((SettingsActivity) getActivity()).showMessage("E-Mail was sent to your address");
+ }
+
+ private StringRequest getStringRequestResetPW(final String email) {
+ ((SettingsActivity) getActivity()).showDialog();
+ return new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener() {
+
+ @Override
+ public void onResponse(String response) {
+ Log.d(TAG, "Resend E-Mail Response: " + response);
+ ((SettingsActivity) getActivity()).hideDialog();
+
+ try {
+ JSONObject jObj = new JSONObject(response);
+ boolean error = jObj.getBoolean("error");
+ if (!error) {
+ //do nothing
+ } else {
+ String errorMsg = jObj.getString("error_msg");
+ Log.e(TAG, "Error request email reset (Server returned error): " + errorMsg);
+ ((SettingsActivity) getActivity()).showMessage(errorMsg);
+ }
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ }
+ }, new Response.ErrorListener() {
+
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ Log.e(TAG, "Error request email reset: " + error.getMessage());
+ ((SettingsActivity) getActivity()).showMessage(getString(R.string.errormsg_couldnotretrieve));
+ ((SettingsActivity) getActivity()).hideDialog();
+ }
+ }) {
+
+ @Override
+ protected Map getParams() {
+ Map params = new HashMap<>();
+ params.put("tag", "requestpwreset");
+ params.put("email", email);
+
+ return params;
+ }
+ };
+ }
+
+ private void requestUpdateUserSettings(Preference pref, String newValue) {
+ String username = prefUsername.getText(),name = prefName.getText(),surname = prefSurname.getText(),email = prefEmail.getText();
+
+ if(pref.getKey().equals("usernamePref")){
+ username = newValue;
+ }else if(pref.getKey().equals("namePref")){
+ name = newValue;
+ }else if(pref.getKey().equals("surnamePref")){
+ surname = newValue;
+ }else if(pref.getKey().equals("emailPref")){
+ email = newValue;
+ }
+
+ String tag_string_req = "updateuser";
+ StringRequest strReq = getStringChangeUserSettings(username,name,surname,email);
+ AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
+
+ }
+
+ private StringRequest getStringChangeUserSettings(final String username, final String name, final String surname, final String email) {
+ ((SettingsActivity) getActivity()).showDialog();
+ return new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener() {
+
+ @Override
+ public void onResponse(String response) {
+ Log.d(TAG, "Change user settings: " + response);
+ ((SettingsActivity) getActivity()).hideDialog();
+
+ try {
+ JSONObject jObj = new JSONObject(response);
+ boolean error = jObj.getBoolean("error");
+ if (!error) {
+ ((SettingsActivity) getActivity()).showMessage(jObj.getString("msg"));
+ JSONObject tmpuser = jObj.getJSONObject("user");
+ ((SettingsActivity) getActivity()).session.addUser(tmpuser.getString("id"), tmpuser.getString("username"), tmpuser.getString("name"), tmpuser.getString("surname"), tmpuser.getString("email"), tmpuser.getString("status"), user.get("providerType"), tmpuser.getString("created_at"), tmpuser.getString("updated_at"), tmpuser.getString("lastlogin_at"), tmpuser.getString("accesskey"));
+
+ } else {
+ String errorMsg = jObj.getString("error_msg");
+ Log.e(TAG, "Error getting user settings (Server returned error): " + errorMsg);
+ ((SettingsActivity) getActivity()).showMessage(errorMsg);
+ }
+ } catch (JSONException e) {
+ e.printStackTrace();
+ } finally {
+ updatePrefs();
+ }
+
+
+ }
+ }, new Response.ErrorListener() {
+
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ Log.e(TAG, "Error getting user settings: " + error.getMessage());
+ ((SettingsActivity) getActivity()).showMessage(getString(R.string.errormsg_couldnotretrieve));
+ ((SettingsActivity) getActivity()).hideDialog();
+ updatePrefs();
+ }
+ }) {
+
+ @Override
+ protected Map getParams() {
+ // Posting params to register url
+ Map params = new HashMap<>();
+ params.put("tag", "updateuser");
+ params.put("uid", user.get(SessionManager.KEY_UID));
+ params.put("token", user.get(SessionManager.TOKEN));
+ params.put("username", username);
+ params.put("name", name);
+ params.put("surname", surname);
+ params.put("email", email);
+
+ return params;
+ }
+ };
+ }
+
+}
diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java b/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java
index 021ef2f..5d6c891 100644
--- a/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java
+++ b/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java
@@ -20,7 +20,6 @@ import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.ads.AdListener;
@@ -91,6 +90,7 @@ public abstract class BaseActivity extends AppCompatActivity {
}
public HashMap getUser(){
+ user = session.getUserDetails();
return user;
}
diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/TextValidator.java b/app/src/main/java/org/deke/risk/riskahead/helper/TextValidator.java
index 4aa95b8..418218a 100644
--- a/app/src/main/java/org/deke/risk/riskahead/helper/TextValidator.java
+++ b/app/src/main/java/org/deke/risk/riskahead/helper/TextValidator.java
@@ -18,7 +18,7 @@ public abstract class TextValidator implements TextWatcher {
public TextValidator(TextView textView, Context context) {
this.textView = textView;
- if(this.textView.getText().length() == 0) this.textView.setError(context.getResources().getString(R.string.error_enter_value));
+ //if(this.textView.getText().length() == 0) this.textView.setError(context.getResources().getString(R.string.error_enter_value));
}
public abstract void validate(TextView textView, String text);
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index 54d9d07..fa75c1c 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -16,130 +16,13 @@
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
-
+ android:layout_gravity="center_horizontal"
+ android:layout_below="@id/toolbar">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ 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 588009e..82ccc0a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -313,6 +313,96 @@
- Tiere
- Sonstiges…
+ Settings
+
+
+
+
+ General
+
+ Enable social recommendations
+ Recommendations for people to contact
+ based on your message history
+
+
+ Display name
+ John Smith
+
+ Add friends to messages
+
+ - Always
+ - When possible
+ - Never
+
+
+ - 1
+ - 0
+ - -1
+
+
+
+ Data & sync
+
+ Sync frequency
+
+ - 15 minutes
+ - 30 minutes
+ - 1 hour
+ - 3 hours
+ - 6 hours
+ - Never
+
+
+ - 15
+ - 30
+ - 60
+ - 180
+ - 360
+ - -1
+
+
+ System sync settings
+
+
+ Notifications
+
+ New message notifications
+
+ Ringtone
+ Silent
+
+ Vibrate
+ Settings
+
+
+ - 1 KM
+ - 5 KM
+ - 10 KM
+ - 15 KM
+
+
+
+ - 1
+ - 5
+ - 10
+ - 15
+
+
+
+ - Every 5 Minutes
+ - Every 10 Minutes
+ - Every 15 Minutes
+ - Every 30 Minutes
+ - Every hour
+
+
+
+ - 5
+ - 10
+ - 15
+ - 30
+ - 60
+
diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml
new file mode 100644
index 0000000..d7a0a6f
--- /dev/null
+++ b/app/src/main/res/xml/settings.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file