diff --git a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java index de188b1e8..39414cdb1 100644 --- a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java @@ -2,12 +2,15 @@ package fr.free.nrw.commons.settings; import android.Manifest; import android.app.AlertDialog; +import android.content.SharedPreferences; import android.net.Uri; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.SwitchPreference; +import android.text.Editable; +import android.text.TextWatcher; import com.karumi.dexter.Dexter; import com.karumi.dexter.listener.PermissionGrantedResponse; @@ -24,12 +27,15 @@ import fr.free.nrw.commons.logging.CommonsLogSender; import fr.free.nrw.commons.utils.PermissionUtils; import fr.free.nrw.commons.utils.ViewUtil; +import static android.R.*; + public class SettingsFragment extends PreferenceFragment { @Inject @Named("default_preferences") BasicKvStore defaultKvStore; - @Inject CommonsLogSender commonsLogSender; + @Inject + CommonsLogSender commonsLogSender; @Override public void onCreate(Bundle savedInstanceState) { @@ -61,32 +67,48 @@ public class SettingsFragment extends PreferenceFragment { int uploads = defaultKvStore.getInt(Prefs.UPLOADS_SHOWING, 100); uploadLimit.setText(uploads + ""); uploadLimit.setSummary(uploads + ""); - uploadLimit.setOnPreferenceChangeListener((preference, newValue) -> { - int value; - try { - value = Integer.parseInt(newValue.toString()); - } catch(Exception e) { - value = 100; //Default number - } - if (value > 500) { - new AlertDialog.Builder(getActivity()) - .setTitle(R.string.maximum_limit) - .setMessage(R.string.maximum_limit_alert) - .setPositiveButton(android.R.string.yes, (dialog, which) -> {}) - .setIcon(android.R.drawable.ic_dialog_alert) - .show(); - defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, 500); - defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true); - uploadLimit.setSummary(500 + ""); - uploadLimit.setText(500 + ""); - } else { - defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, value); - defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true); - uploadLimit.setSummary(String.valueOf(value)); - } - return true; - }); + uploadLimit.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) { + } + + @Override + public void afterTextChanged(Editable s) { + int value; + if (s.length()>0) + try { + value = Integer.parseInt(s.toString()); + if (value > 500) { + uploadLimit.getEditText().setError(getString((R.string.maximum_limit_alert))); + defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, 500); + defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true); + uploadLimit.setSummary(500 + ""); + uploadLimit.setText(500 + ""); + } else if (value == 0) { + uploadLimit.getEditText().setError(getString(R.string.cannot_be_zero)); + defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, 100); + defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true); + uploadLimit.setSummary(100 + ""); + uploadLimit.setText(100 + ""); + } else { + defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, value); + defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true); + uploadLimit.setSummary(String.valueOf(value)); + } + } catch (Exception e) { + uploadLimit.getEditText().setError(getString(R.string.enter_valid)); + defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, 100); + defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true); + uploadLimit.setSummary(100 + ""); + uploadLimit.setText(100 + ""); + } + } + }); Preference betaTesterPreference = findPreference("becomeBetaTester"); betaTesterPreference.setOnPreferenceClickListener(preference -> { Utils.handleWebUrl(getActivity(), Uri.parse(getResources().getString(R.string.beta_opt_in_link))); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1b2caf037..5ca1000e1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -193,7 +193,11 @@ 2FA Code My Recent Upload Limit Maximum Limit + Zero is not valid + Invalid Input Unable to display more than 500 + Enter a valid number + Upload limit cannot be 0 Set Recent Upload Limit Two factor authentication is currently not supported. Do you really want to logout?