|
2 | 2 |
|
3 | 3 | import android.Manifest; |
4 | 4 | import android.app.AlertDialog; |
| 5 | +import android.content.SharedPreferences; |
5 | 6 | import android.net.Uri; |
6 | 7 | import android.os.Bundle; |
7 | 8 | import android.preference.EditTextPreference; |
8 | 9 | import android.preference.Preference; |
9 | 10 | import android.preference.PreferenceFragment; |
10 | 11 | import android.preference.SwitchPreference; |
| 12 | +import android.text.Editable; |
| 13 | +import android.text.TextWatcher; |
11 | 14 |
|
12 | 15 | import com.karumi.dexter.Dexter; |
13 | 16 | import com.karumi.dexter.listener.PermissionGrantedResponse; |
|
24 | 27 | import fr.free.nrw.commons.utils.PermissionUtils; |
25 | 28 | import fr.free.nrw.commons.utils.ViewUtil; |
26 | 29 |
|
| 30 | +import static android.R.*; |
| 31 | + |
27 | 32 | public class SettingsFragment extends PreferenceFragment { |
28 | 33 |
|
29 | 34 | @Inject |
30 | 35 | @Named("default_preferences") |
31 | 36 | BasicKvStore defaultKvStore; |
32 | | - @Inject CommonsLogSender commonsLogSender; |
| 37 | + @Inject |
| 38 | + CommonsLogSender commonsLogSender; |
33 | 39 |
|
34 | 40 | @Override |
35 | 41 | public void onCreate(Bundle savedInstanceState) { |
@@ -61,32 +67,48 @@ public void onCreate(Bundle savedInstanceState) { |
61 | 67 | int uploads = defaultKvStore.getInt(Prefs.UPLOADS_SHOWING, 100); |
62 | 68 | uploadLimit.setText(uploads + ""); |
63 | 69 | uploadLimit.setSummary(uploads + ""); |
64 | | - uploadLimit.setOnPreferenceChangeListener((preference, newValue) -> { |
65 | | - int value; |
66 | | - try { |
67 | | - value = Integer.parseInt(newValue.toString()); |
68 | | - } catch(Exception e) { |
69 | | - value = 100; //Default number |
| 70 | + uploadLimit.getEditText().addTextChangedListener(new TextWatcher() { |
| 71 | + @Override |
| 72 | + public void beforeTextChanged(CharSequence s, int start, int count, int after) { |
| 73 | + |
70 | 74 | } |
71 | | - if (value > 500) { |
72 | | - new AlertDialog.Builder(getActivity()) |
73 | | - .setTitle(R.string.maximum_limit) |
74 | | - .setMessage(R.string.maximum_limit_alert) |
75 | | - .setPositiveButton(android.R.string.yes, (dialog, which) -> {}) |
76 | | - .setIcon(android.R.drawable.ic_dialog_alert) |
77 | | - .show(); |
78 | | - defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, 500); |
79 | | - defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true); |
80 | | - uploadLimit.setSummary(500 + ""); |
81 | | - uploadLimit.setText(500 + ""); |
82 | | - } else { |
83 | | - defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, value); |
84 | | - defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true); |
85 | | - uploadLimit.setSummary(String.valueOf(value)); |
| 75 | + |
| 76 | + @Override |
| 77 | + public void onTextChanged(CharSequence s, int start, int before, int count) { |
86 | 78 | } |
87 | | - return true; |
88 | | - }); |
89 | 79 |
|
| 80 | + @Override |
| 81 | + public void afterTextChanged(Editable s) { |
| 82 | + int value; |
| 83 | + if (s.length()>0) |
| 84 | + try { |
| 85 | + value = Integer.parseInt(s.toString()); |
| 86 | + if (value > 500) { |
| 87 | + uploadLimit.getEditText().setError(getString((R.string.maximum_limit_alert))); |
| 88 | + defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, 500); |
| 89 | + defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true); |
| 90 | + uploadLimit.setSummary(500 + ""); |
| 91 | + uploadLimit.setText(500 + ""); |
| 92 | + } else if (value == 0) { |
| 93 | + uploadLimit.getEditText().setError(getString(R.string.cannot_be_zero)); |
| 94 | + defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, 100); |
| 95 | + defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true); |
| 96 | + uploadLimit.setSummary(100 + ""); |
| 97 | + uploadLimit.setText(100 + ""); |
| 98 | + } else { |
| 99 | + defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, value); |
| 100 | + defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true); |
| 101 | + uploadLimit.setSummary(String.valueOf(value)); |
| 102 | + } |
| 103 | + } catch (Exception e) { |
| 104 | + uploadLimit.getEditText().setError(getString(R.string.enter_valid)); |
| 105 | + defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, 100); |
| 106 | + defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true); |
| 107 | + uploadLimit.setSummary(100 + ""); |
| 108 | + uploadLimit.setText(100 + ""); |
| 109 | + } |
| 110 | + } |
| 111 | + }); |
90 | 112 | Preference betaTesterPreference = findPreference("becomeBetaTester"); |
91 | 113 | betaTesterPreference.setOnPreferenceClickListener(preference -> { |
92 | 114 | Utils.handleWebUrl(getActivity(), Uri.parse(getResources().getString(R.string.beta_opt_in_link))); |
|
0 commit comments