Warning, /pim/merkuro/src/mail/qml/MailComposer.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2023 Aakarsh MJ <mj.akarsh@gmail.com>
0002 // SPDX-FileCopyrightText: 2021 Carl Schwan <carlschwan@kde.org>
0003 // SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0004 
0005 import QtQuick 2.15
0006 import QtQuick.Layouts 1.15
0007 import org.kde.kirigami 2.14 as Kirigami
0008 import QtQuick.Controls 2.15 as QQC2
0009 import org.kde.kitemmodels 1.0 as KItemModels
0010 import org.kde.merkuro.mail 1.0
0011 import org.kde.akonadi 1.0 as Akonadi
0012 import org.kde.kidentitymanagement 1.0 as KIdentityManagement
0013 
0014 Kirigami.ScrollablePage {
0015     id: mailComposition
0016     title: i18nc("@title:window", "New Message")
0017     leftPadding: 0
0018     rightPadding: 0
0019     bottomPadding: 0
0020     topPadding: Kirigami.Units.largeSpacing
0021 
0022     property MailHeaderModel mailHeaderModel: MailHeaderModel {}
0023 
0024     GridLayout {
0025         columns: 2
0026         anchors.fill: parent
0027 
0028         QQC2.Label {
0029             text: i18n("From:")
0030             Layout.leftMargin: Kirigami.Units.largeSpacing
0031         }
0032 
0033         QQC2.TextField {
0034             id: from
0035             Layout.fillWidth: true
0036             Layout.rightMargin: Kirigami.Units.largeSpacing
0037         }
0038 
0039         QQC2.Label {
0040             text: i18n("Identity:")
0041             Layout.leftMargin: Kirigami.Units.largeSpacing
0042         }
0043 
0044         QQC2.ComboBox {
0045             id: identity
0046             model: KIdentityManagement.IdentityModel {}
0047             textRole: "display"
0048             valueRole: "uoid"
0049             onCurrentIndexChanged: from.text = model.email(currentValue)
0050             Layout.rightMargin: Kirigami.Units.largeSpacing
0051             Layout.fillWidth: true
0052         }
0053 
0054         Repeater {
0055             model: mailHeaderModel
0056             QQC2.ComboBox {
0057                 id: control
0058                 Layout.row: index + 2
0059                 Layout.column: 0
0060                 Layout.leftMargin: Kirigami.Units.largeSpacing
0061                 textRole: "text"
0062                 valueRole: "value"
0063                 Component.onCompleted: currentIndex = Math.min(mailHeaderModel.rowCount() - 1, 1);
0064                 onCurrentIndexChanged: mailHeaderModel.updateHeaderType(index, currentValue);
0065                 model: [
0066                     { value: MailHeaderModel.To, text: i18n("To:") },
0067                     { value: MailHeaderModel.CC, text: i18n("CC:") },
0068                     { value: MailHeaderModel.BCC, text: i18n("BCC:") },
0069                     { value: MailHeaderModel.ReplyTo, text: i18n("Reply-To:") },
0070                 ]
0071             }
0072         }
0073         Repeater {
0074             model: mailHeaderModel
0075             QQC2.TextField {
0076                 id: controlsText
0077                 Layout.row: index + 2
0078                 Layout.column: 1
0079                 Layout.fillWidth: true
0080                 Layout.rightMargin: Kirigami.Units.largeSpacing
0081                 wrapMode: Text.Wrap
0082                 KeyNavigation.priority: KeyNavigation.BeforeItem
0083                 onTextChanged: mailHeaderModel.updateModel(index, text);
0084             }
0085         }
0086 
0087         QQC2.Label {
0088             id: subject
0089             text: i18n("Subject:")
0090             Layout.leftMargin: Kirigami.Units.largeSpacing
0091         }
0092         QQC2.TextField {
0093             id: subjectText
0094             Layout.fillWidth: true
0095             Layout.rightMargin: Kirigami.Units.largeSpacing
0096             wrapMode: Text.Wrap
0097             KeyNavigation.priority: KeyNavigation.BeforeItem
0098             KeyNavigation.tab: mailContent
0099         }
0100 
0101         QQC2.TextArea {
0102             id: mailContent
0103             Layout.columnSpan: 2
0104             Layout.fillWidth: true
0105             Layout.fillHeight: true
0106             background: Rectangle {
0107                 color: Kirigami.Theme.backgroundColor
0108             }
0109 
0110             Kirigami.Theme.colorSet: Kirigami.Theme.View
0111             Kirigami.Theme.inherit: false
0112 
0113             textFormat: TextEdit.PlainText
0114             textMargin: 10
0115             wrapMode: TextEdit.Wrap
0116             KeyNavigation.priority: KeyNavigation.BeforeItem
0117             KeyNavigation.tab: attachment
0118         }
0119     }
0120 
0121     footer: QQC2.ToolBar {
0122         contentItem: RowLayout {
0123             QQC2.ToolButton {
0124                 id: attachment
0125                 icon.name: 'document-import'
0126                 KeyNavigation.priority: KeyNavigation.BeforeItem
0127                 KeyNavigation.tab: discardDraft
0128             }
0129             QQC2.ToolButton {
0130                 id: discardDraft
0131                 icon.name: 'user-trash'
0132             }
0133             Item {
0134                 Layout.fillWidth: true
0135             }
0136             QQC2.ToolButton {
0137                 id: sendButton
0138                 text: i18n("Send")
0139                 icon.name: 'document-send'
0140                 onClicked: {
0141                     MailClient.send(identity.model, mailComposition.mailHeaderModel, subjectText.text, mailContent.text);  
0142                     close()
0143                 }
0144             }
0145         }
0146     }
0147 }