|
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