mirror of
https://github.com/M66B/FairEmail.git
synced 2025-03-04 10:39:25 +00:00
LT: added option to check every sentence
This commit is contained in:
parent
828fff6298
commit
b584ef3874
5 changed files with 59 additions and 9 deletions
|
@ -292,6 +292,7 @@ public class FragmentCompose extends FragmentBase {
|
|||
private int zoom = 0;
|
||||
private boolean nav_color;
|
||||
private boolean lt_enabled;
|
||||
private boolean lt_sentence;
|
||||
private boolean lt_auto;
|
||||
|
||||
private long working = -1;
|
||||
|
@ -359,6 +360,7 @@ public class FragmentCompose extends FragmentBase {
|
|||
nav_color = prefs.getBoolean("send_nav_color", false);
|
||||
|
||||
lt_enabled = LanguageTool.isEnabled(context);
|
||||
lt_sentence = LanguageTool.isSentence(context);
|
||||
lt_auto = LanguageTool.isAuto(context);
|
||||
|
||||
if (compose_color != Color.TRANSPARENT && Helper.isDarkTheme(context))
|
||||
|
@ -670,7 +672,7 @@ public class FragmentCompose extends FragmentBase {
|
|||
etBody.addTextChangedListener(StyleHelper.getTextWatcher(etBody));
|
||||
|
||||
etBody.addTextChangedListener(new TextWatcher() {
|
||||
private boolean save = false;
|
||||
private Integer save = null;
|
||||
private Integer added = null;
|
||||
private boolean inserted = false;
|
||||
private Pair<Integer, Integer> lt = null;
|
||||
|
@ -692,10 +694,11 @@ public class FragmentCompose extends FragmentBase {
|
|||
char c = text.charAt(index);
|
||||
char b = text.charAt(index - 1);
|
||||
|
||||
save = (auto_save_paragraph && c == '\n' && b != '\n') ||
|
||||
(auto_save_dot && Helper.isEndChar(c) && !Helper.isEndChar(b));
|
||||
if (save)
|
||||
if ((auto_save_paragraph && c == '\n' && b != '\n') ||
|
||||
(auto_save_dot && Helper.isEndChar(c) && !Helper.isEndChar(b))) {
|
||||
Log.i("Save=" + index);
|
||||
save = index;
|
||||
}
|
||||
|
||||
if (c == '\n') {
|
||||
Log.i("Added=" + index);
|
||||
|
@ -734,15 +737,30 @@ public class FragmentCompose extends FragmentBase {
|
|||
added = null;
|
||||
}
|
||||
|
||||
if (save)
|
||||
if (save != null)
|
||||
try {
|
||||
if (lt == null && lt_sentence) {
|
||||
int start = save;
|
||||
while (start > 0 &&
|
||||
text.charAt(start - 1) != '\n' &&
|
||||
!Helper.isEndChar(text.charAt(start - 1)))
|
||||
start--;
|
||||
while (start < save)
|
||||
if (Character.isWhitespace(text.charAt(start)))
|
||||
start++;
|
||||
else
|
||||
break;
|
||||
if (start < save)
|
||||
lt = new Pair<>(start, save + 1);
|
||||
}
|
||||
|
||||
if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) {
|
||||
Bundle extras = new Bundle();
|
||||
extras.putBoolean("silent", true);
|
||||
onAction(R.id.action_save, extras, "paragraph");
|
||||
}
|
||||
} finally {
|
||||
save = false;
|
||||
save = null;
|
||||
}
|
||||
|
||||
if (lt != null)
|
||||
|
@ -7625,7 +7643,7 @@ public class FragmentCompose extends FragmentBase {
|
|||
if (postShow != null)
|
||||
getMainHandler().post(postShow);
|
||||
|
||||
if (lt_auto)
|
||||
if (lt_sentence || lt_auto)
|
||||
onLanguageTool(0, etBody.length(), true);
|
||||
}
|
||||
|
||||
|
|
|
@ -144,6 +144,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
|
||||
private SwitchCompat swLanguageTool;
|
||||
private TextView tvLanguageToolPrivacy;
|
||||
private SwitchCompat swLanguageToolSentence;
|
||||
private SwitchCompat swLanguageToolAuto;
|
||||
private SwitchCompat swLanguageToolPicky;
|
||||
private EditText etLanguageTool;
|
||||
|
@ -285,7 +286,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
"classification", "class_min_probability", "class_min_difference",
|
||||
"show_filtered",
|
||||
"language",
|
||||
"lt_enabled", "lt_auto", "lt_picky", "lt_uri", "lt_user", "lt_key",
|
||||
"lt_enabled", "lt_sentence", "lt_auto", "lt_picky", "lt_uri", "lt_user", "lt_key",
|
||||
"deepl_enabled",
|
||||
"vt_enabled", "vt_apikey",
|
||||
"send_enabled", "send_host", "send_dlimit", "send_tlimit",
|
||||
|
@ -399,6 +400,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
|
||||
swLanguageTool = view.findViewById(R.id.swLanguageTool);
|
||||
tvLanguageToolPrivacy = view.findViewById(R.id.tvLanguageToolPrivacy);
|
||||
swLanguageToolSentence = view.findViewById(R.id.swLanguageToolSentence);
|
||||
swLanguageToolAuto = view.findViewById(R.id.swLanguageToolAuto);
|
||||
swLanguageToolPicky = view.findViewById(R.id.swLanguageToolPicky);
|
||||
etLanguageTool = view.findViewById(R.id.etLanguageTool);
|
||||
|
@ -858,6 +860,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
|
||||
prefs.edit().putBoolean("lt_enabled", checked).apply();
|
||||
swLanguageToolSentence.setEnabled(checked);
|
||||
swLanguageToolAuto.setEnabled(checked);
|
||||
swLanguageToolPicky.setEnabled(checked);
|
||||
}
|
||||
|
@ -871,6 +874,13 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
}
|
||||
});
|
||||
|
||||
swLanguageToolSentence.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
|
||||
prefs.edit().putBoolean("lt_sentence", checked).apply();
|
||||
}
|
||||
});
|
||||
|
||||
swLanguageToolAuto.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
|
||||
|
@ -2538,6 +2548,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
spLanguage.setSelection(selected);
|
||||
|
||||
swLanguageTool.setChecked(prefs.getBoolean("lt_enabled", false));
|
||||
swLanguageToolSentence.setChecked(prefs.getBoolean("lt_sentence", false));
|
||||
swLanguageToolSentence.setEnabled(swLanguageTool.isChecked());
|
||||
swLanguageToolAuto.setChecked(prefs.getBoolean("lt_auto", true));
|
||||
swLanguageToolAuto.setEnabled(swLanguageTool.isChecked());
|
||||
swLanguageToolPicky.setChecked(prefs.getBoolean("lt_picky", false));
|
||||
|
|
|
@ -71,6 +71,13 @@ public class LanguageTool {
|
|||
return (lt_enabled && lt_auto);
|
||||
}
|
||||
|
||||
static boolean isSentence(Context context) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
boolean lt_enabled = prefs.getBoolean("lt_enabled", false);
|
||||
boolean lt_sentence = prefs.getBoolean("lt_sentence", false);
|
||||
return (lt_enabled && lt_sentence);
|
||||
}
|
||||
|
||||
static JSONArray getLanguages(Context context) throws IOException, JSONException {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
String lt_uri = prefs.getString("lt_uri", LT_URI_PLUS);
|
||||
|
|
|
@ -648,6 +648,18 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvLanguageToolHint" />
|
||||
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
android:id="@+id/swLanguageToolSentence"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginTop="12dp"
|
||||
android:text="@string/title_advanced_lt_sentence"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvLanguageToolPrivacy"
|
||||
app:switchPadding="12dp" />
|
||||
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
android:id="@+id/swLanguageToolAuto"
|
||||
android:layout_width="0dp"
|
||||
|
@ -657,7 +669,7 @@
|
|||
android:text="@string/title_advanced_lt_auto"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvLanguageToolPrivacy"
|
||||
app:layout_constraintTop_toBottomOf="@id/swLanguageToolSentence"
|
||||
app:switchPadding="12dp" />
|
||||
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
|
|
|
@ -824,6 +824,7 @@
|
|||
<string name="title_advanced_language">Language</string>
|
||||
<string name="title_advanced_language_system">System</string>
|
||||
<string name="title_advanced_lt">LanguageTool integration</string>
|
||||
<string name="title_advanced_lt_sentence">Check every sentence</string>
|
||||
<string name="title_advanced_lt_auto">Check paragraph after a new line</string>
|
||||
<string name="title_advanced_lt_user">Username (optional)</string>
|
||||
<string name="title_advanced_lt_key">API key (optional)</string>
|
||||
|
|
Loading…
Add table
Reference in a new issue