TF-2940 Add spell check for subject email
This commit is contained in:
@@ -24,6 +24,7 @@ import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/individual_header_identifier.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:languagetool_textfield/languagetool_textfield.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
@@ -150,7 +151,9 @@ class ComposerController extends BaseController with DragDropFileMixin implement
|
||||
List<EmailAddress> listBccEmailAddress = <EmailAddress>[];
|
||||
ContactSuggestionSource _contactSuggestionSource = ContactSuggestionSource.tMailContact;
|
||||
|
||||
final subjectEmailInputController = TextEditingController();
|
||||
final subjectEmailInputController = LanguageToolController(
|
||||
delay: const Duration(milliseconds: 200),
|
||||
);
|
||||
final toEmailAddressController = TextEditingController();
|
||||
final ccEmailAddressController = TextEditingController();
|
||||
final bccEmailAddressController = TextEditingController();
|
||||
@@ -1942,6 +1945,7 @@ class ComposerController extends BaseController with DragDropFileMixin implement
|
||||
|
||||
void handleOnFocusHtmlEditorWeb() {
|
||||
FocusManager.instance.primaryFocus?.unfocus();
|
||||
subjectEmailInputController.popupWidget?.popupRenderer.dismiss();
|
||||
richTextWebController?.editorController.setFocus();
|
||||
richTextWebController?.closeAllMenuPopup();
|
||||
}
|
||||
|
||||
@@ -19,17 +19,17 @@ class ComposerStyle {
|
||||
static const EdgeInsetsGeometry desktopRecipientPadding = EdgeInsetsDirectional.only(end: 24);
|
||||
static const EdgeInsetsGeometry desktopRecipientMargin = EdgeInsetsDirectional.only(start: 24);
|
||||
static const EdgeInsetsGeometry desktopSubjectMargin = EdgeInsetsDirectional.only(start: 24);
|
||||
static const EdgeInsetsGeometry desktopSubjectPadding = EdgeInsetsDirectional.only(end: 24, top: 12, bottom: 12);
|
||||
static const EdgeInsetsGeometry desktopSubjectPadding = EdgeInsetsDirectional.only(end: 24);
|
||||
static const EdgeInsetsGeometry desktopEditorPadding = EdgeInsetsDirectional.symmetric(horizontal: 20);
|
||||
static const EdgeInsetsGeometry tabletRecipientPadding = EdgeInsetsDirectional.only(end: 24);
|
||||
static const EdgeInsetsGeometry tabletRecipientMargin = EdgeInsetsDirectional.only(start: 24);
|
||||
static const EdgeInsetsGeometry tabletSubjectMargin = EdgeInsetsDirectional.only(start: 24);
|
||||
static const EdgeInsetsGeometry tabletSubjectPadding = EdgeInsetsDirectional.only(end: 24, top: 12, bottom: 12);
|
||||
static const EdgeInsetsGeometry tabletSubjectPadding = EdgeInsetsDirectional.only(end: 24);
|
||||
static const EdgeInsetsGeometry tabletEditorPadding = EdgeInsetsDirectional.symmetric(horizontal: 20);
|
||||
static const EdgeInsetsGeometry mobileRecipientPadding = EdgeInsetsDirectional.only(end: 16);
|
||||
static const EdgeInsetsGeometry mobileRecipientMargin = EdgeInsetsDirectional.only(start: 16);
|
||||
static const EdgeInsetsGeometry mobileSubjectMargin = EdgeInsetsDirectional.only(start: 16);
|
||||
static const EdgeInsetsGeometry mobileSubjectPadding = EdgeInsetsDirectional.only(end: 16, top: 12, bottom: 12);
|
||||
static const EdgeInsetsGeometry mobileSubjectPadding = EdgeInsetsDirectional.only(end: 16);
|
||||
static const EdgeInsetsGeometry mobileEditorPadding = EdgeInsetsDirectional.symmetric(horizontal: 12);
|
||||
static const EdgeInsetsGeometry popupItemPadding = EdgeInsetsDirectional.symmetric(horizontal: 12);
|
||||
static const EdgeInsetsGeometry insertImageLoadingBarPadding = EdgeInsetsDirectional.only(top: 12);
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
import 'package:core/presentation/views/text/text_field_builder.dart';
|
||||
import 'package:core/utils/direction_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:languagetool_textfield/languagetool_textfield.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/styles/subject_composer_widget_style.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
class SubjectComposerWidget extends StatelessWidget {
|
||||
|
||||
final FocusNode? focusNode;
|
||||
final TextEditingController textController;
|
||||
final LanguageToolController textController;
|
||||
final ValueChanged<String>? onTextChange;
|
||||
final EdgeInsetsGeometry? margin;
|
||||
final EdgeInsetsGeometry? padding;
|
||||
@@ -47,9 +48,10 @@ class SubjectComposerWidget extends StatelessWidget {
|
||||
focusNode: focusNode,
|
||||
onTextChange: onTextChange,
|
||||
maxLines: 1,
|
||||
decoration: const InputDecoration(border: InputBorder.none),
|
||||
textDirection: DirectionUtils.getDirectionByLanguage(context),
|
||||
textStyle: SubjectComposerWidgetStyle.inputTextStyle,
|
||||
controller: textController,
|
||||
languageToolController: textController,
|
||||
)
|
||||
)
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user