LT: added option to check every sentence

This commit is contained in:
M66B 2023-09-02 16:22:56 +02:00
parent 828fff6298
commit b584ef3874
5 changed files with 59 additions and 9 deletions

View File

@ -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);
}

View File

@ -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));

View File

@ -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);

View File

@ -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

View File

@ -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>