20import Lomiri.Components 1.3
21import Lomiri.Components.Popups 1.3
22import Dekko.Components 1.0
24import Dekko.Mail.API 1.0
25import Dekko.Mail.Stores.Composer 1.0
26import Dekko.Lomiri.Constants 1.0
27import Dekko.Lomiri.Components 1.0
33 property int recipientType: RecipientType.To
34 property alias text: input.text
35 property alias textDocument: input.textDocument
36 property alias recipientModel: repeater.model
37 property bool isInvalidated:
false
43 leftMargin:
Style.smallSpacing
45 rightMargin:
Style.smallSpacing
47 spacing:
Style.smallSpacing
54 leftMargin:
Style.smallSpacing
55 topMargin:
Style.smallSpacing
57 text:
MailUtils.recipientTypeToString(recipientType) +
":"
63 implicitHeight: height
73 leftMargin:
Style.smallSpacing
75 topMargin: recipientModel.count ? (
Style.smallSpacing / 2) :
Style.smallSpacing
78 spacing:
Style.smallSpacing / 2
98 placeholderText: qsTr(
"Enter an address")
100 onActiveFocusChanged: {
101 if (!activeFocus && input.text && !isInvalidated) {
102 Log.logInfo(
"RecipientFIeld::focusChanged",
"Lost focus adding recipient")
103 ComposerActions.addRecipientIfValid(recipientType, input.text)
106 if (activeFocus && isInvalidated) {
107 isInvalidated =
false
115 Keys.onReturnPressed: {
116 event.accepted =
true
117 Log.logInfo(
"RecipientField::returnPressed",
"Adding recipient");
118 ComposerActions.addRecipientIfValid(recipientType, input.text)
120 Keys.onEnterPressed: {
121 event.accepted =
true
122 Log.logInfo(
"RecipientField::enterPressed",
"Adding recipient");
123 ComposerActions.addRecipientIfValid(recipientType, input.text)
127 onCompletionTokenSeen: {
128 Log.logInfo(
"RecipientField::CompletionTokenSeen",
"Adding recipient");
129 ComposerActions.addRecipientIfValid(recipientType, input.text)
141 topMargin: -units.gu(0.5)
143 visible: !ComposerStore.showCC || !ComposerStore.showBCC
147 implicitHeight: height
148 iconSize: units.gu(2.25)
149 iconColor: LomiriColors.ash
151 iconSource: Paths.actionIconUrl(Icons.ContextMenuIcon)
152 onTriggered: PopupUtils.open(Qt.resolvedUrl(
"./RecipientInputContextMenu.qml"),
155 recipientType: field.recipientType
164 bottom: parent.bottom
170 runWhen: ComposerKeys.addRecipientIfValid
172 if (message.type === recipientType) {
173 ComposerActions.validateAddress(message.type, message.address)
178 once(ComposerKeys.validAddress, function(message) {
179 Log.logInfo(
"RecipientField::validAddress",
"Address is valid, adding to recipients")
180 isInvalidated =
false
181 ComposerActions.addRecipientFromAddress(message.type, message.address)
185 once(ComposerKeys.invalidAddress, function(message) {
186 Log.logInfo(
"RecipientField::invalidAddress",
"Address invalid: %1".arg(message.address))
187 input.cursorPosition = input.length
189 PopupActions.showError(PopupKeys.popupComposer,
"Invalid email address: %1".arg(message.address))