20 import Lomiri.Components 1.3
21 import Lomiri.Components.Popups 1.3
22 import
Dekko.Components 1.0
24 import
Dekko.Mail.API 1.0
25 import
Dekko.Mail.Stores.Composer 1.0
26 import
Dekko.Lomiri.Constants 1.0
27 import
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
57 text:
MailUtils.recipientTypeToString(recipientType) +
":"
63 implicitHeight: height
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))