Warning, /maui/communicator/src/views/contacts/ContactPage.qml is written in an unsupported language. File is not indexed.

0001 import QtQuick 2.10
0002 import QtQuick.Controls 2.10
0003 import QtQuick.Layouts 1.3
0004 import QtGraphicalEffects 1.0
0005 
0006 import org.mauikit.controls 1.3 as Maui
0007 
0008 Maui.PopupPage
0009 {
0010     id: control
0011     autoClose: false
0012 
0013     maxWidth: 500
0014     maxHeight: 800
0015 
0016     property var contact : ({})
0017 
0018     property bool editing : Object.keys(contact).length === 0
0019 
0020     signal contactEdited(var contact)
0021     signal editCanceled()
0022 
0023     actionBar.visible: control.editing
0024 
0025     filling: !isWide
0026 
0027     page.footBar.visible: control.editing
0028     page.headBar.visible: true
0029 
0030     Maui.Theme.colorSet: Maui.Theme.Window
0031     Maui.Theme.inherit: false
0032 
0033     headBar.background: null
0034 
0035     headBar.rightContent: [
0036         ToolButton
0037         {
0038             icon.name: "draw-star"
0039             text: i18n("Fav")
0040             checked: contact.fav == "1"
0041             checkable: false
0042             //                Maui.Theme.textColor: checked ? "#FFD700" : Maui.Theme.textColor
0043             //                Maui.Theme.backgroundColor: checked ? "#FFD700" : Maui.Theme.textColor
0044             onClicked:
0045             {
0046                 contact["fav"] = contact.fav == "1" ? "0" : "1"
0047                 list.update(contact, listModel.mappedToSource(_contactsPage.currentIndex))
0048                 control.contact = contact;
0049                 _favsView.list.refresh()
0050             }
0051         },
0052 
0053         Maui.ToolButtonMenu
0054         {
0055             icon.name: "overflow-menu"
0056             MenuItem
0057             {
0058                 icon.name: "document-edit"
0059                 text: i18n("Edit")
0060                 onTriggered: control.editing = !control.editing
0061             }
0062 
0063             MenuItem
0064             {
0065                 text: i18n("Delete")
0066                 icon.name: "user-trash"
0067                 icon.color: Maui.Theme.negativeTextColor
0068                 onTriggered: _removeDialog.open()
0069             }
0070         }
0071     ]
0072 
0073 
0074     actions: [
0075         Action
0076         {
0077             text: i18n("Save")
0078             onTriggered:
0079             {
0080                 var contact = control.contact
0081                 contact.n = _nameField.text
0082                 contact.tel =_telField.text
0083                 contact.email = _emailField.text
0084                 contact.org = _orgField.text
0085                 //                          adr: _adrField.text,
0086                 contact.photo = control.contact.photo
0087                 contact.account = Maui.Handy.isAndroid ? _accountsCombobox.model[_accountsCombobox.currentIndex] :({})
0088 
0089                 control.contactEdited(contact)
0090                 control.contact = contact
0091                 control.editing = false
0092             }
0093         },
0094         Action
0095         {
0096             text: i18n("Cancel")
0097             onTriggered:
0098             {
0099                 control.editing = false
0100                 editCanceled()
0101             }
0102         }
0103     ]
0104 
0105     Maui.InfoDialog
0106     {
0107         id: _removeDialog
0108 
0109         title: i18n("Remove contact...")
0110         message: i18n("Are you sure you want to remove this contact? This action can not be undone.")
0111 
0112         standardButtons: Dialog.Yes | Dialog.No
0113 
0114         onRejected: close()
0115         onAccepted:
0116         {
0117             list.remove(listModel.mappedToSource(_contactsPage.currentIndex))
0118             close()
0119         }
0120     }
0121 
0122 
0123 
0124     Item
0125     {
0126         id: _contactPic
0127         Layout.fillWidth: true
0128         Layout.preferredHeight: 160
0129 
0130         Rectangle
0131         {
0132             id: _contactPhotoColor
0133             height: Maui.Style.iconSizes.huge * 1.5
0134             width: height
0135             anchors.centerIn: parent
0136             radius: Maui.Style.radiusV
0137             color: Qt.rgba(Math.random(),Math.random(),Math.random(),1);
0138 
0139             MouseArea
0140             {
0141                 visible: control.editing
0142                 anchors.fill: parent
0143                 onClicked:
0144                 {
0145                     _dialogLoader.sourceComponent = _fileDialogComponent
0146 
0147                     dialog.show(function(paths)
0148                     {
0149                         console.log("selected image", paths)
0150                         contact.photo = paths[0]
0151                         _contactPicLoader.sourceComponent = _imgComponent
0152                         _contactPicLoader.item.source = contact.photo
0153                     })
0154                 }
0155             }
0156 
0157             Loader
0158             {
0159                 id: _contactPicLoader
0160                 asynchronous: true
0161                 anchors.fill: parent
0162                 sourceComponent: contact.photo ? _imgComponent : _iconComponent
0163             }
0164 
0165             Component
0166             {
0167                 id: _imgComponent
0168 
0169                 Image
0170                 {
0171                     id: _img
0172 
0173                     sourceSize.width: parent.width
0174                     sourceSize.height: parent.height
0175 
0176                     fillMode: Image.PreserveAspectCrop
0177                     cache: true
0178                     antialiasing: true
0179                     smooth: true
0180                     asynchronous: true
0181 
0182                     source: "image://contact/"+ contact.id
0183 
0184                     layer.enabled: true
0185                     layer.effect: OpacityMask
0186                     {
0187                         maskSource: Item
0188                         {
0189                             width: _img.width
0190                             height: _img.height
0191 
0192                             Rectangle
0193                             {
0194                                 anchors.centerIn: parent
0195                                 width: _img.width
0196                                 height: _img.height
0197                                 radius: Maui.Style.radiusV
0198                             }
0199                         }
0200                     }
0201                 }
0202             }
0203 
0204             Component
0205             {
0206                 id: _iconComponent
0207 
0208                 //                    Maui.ToolButton
0209                 //                    {
0210                 //                        iconName: "view-media-artist"
0211                 //                        size: iconSizes.big
0212                 //                        iconColor: "white"
0213                 //                    }
0214 
0215                 Label
0216                 {
0217                     anchors.fill: parent
0218                     horizontalAlignment: Qt.AlignHCenter
0219                     verticalAlignment: Qt.AlignVCenter
0220 
0221                     color: "white"
0222                     font.pointSize: Maui.Style.fontSizes.huge * 1.5
0223                     font.bold: true
0224                     font.weight: Font.Bold
0225                     text: contact.n ? contact.n[0] : "+"
0226                 }
0227             }
0228 
0229         }
0230     }
0231 
0232 
0233     ContactField
0234     {
0235         visible: contact.account || control.editing
0236         editing: control.editing
0237 
0238         Layout.maximumWidth: 500
0239         Layout.minimumWidth: 100
0240         Layout.alignment: Qt.AlignHCenter
0241         Layout.fillWidth: true
0242         label1.text: i18n("Account")
0243         label2.text: contact.account || ""
0244 
0245         iconSource: "password-show-on"
0246 
0247         content: ComboBox
0248         {
0249             id: _accountsCombobox
0250             visible: control.editing
0251             textRole: "account"
0252             popup.z: control.z +1
0253             width: parent.width
0254         }
0255     }
0256 
0257     ContactField
0258     {
0259         visible: contact.n || control.editing
0260         editing: control.editing
0261 
0262         Layout.maximumWidth: 500
0263         Layout.minimumWidth: 100
0264         Layout.alignment: Qt.AlignHCenter
0265         Layout.fillWidth: true
0266         label1.text: i18n("Name")
0267         label2.text: contact.n || ""
0268 
0269         iconSource: "im-user"
0270 
0271         content: TextField
0272         {
0273             id: _nameField
0274             visible: control.editing
0275             Layout.fillWidth: true
0276             text: contact.n || ""
0277         }
0278     }
0279 
0280     ContactField
0281     {
0282         visible: contact.tel || control.editing
0283 
0284         editing: control.editing
0285         Layout.maximumWidth: 500
0286         Layout.minimumWidth: 100
0287         Layout.alignment: Qt.AlignHCenter
0288         Layout.fillWidth: true
0289 
0290         label1.text: i18n("Phone")
0291         label2.text: contact.tel || ""
0292         iconSource: "call-start"
0293 
0294         content: TextField
0295         {
0296             visible: control.editing
0297             id: _telField
0298             Layout.fillWidth: true
0299             text: contact.tel || ""
0300         }
0301 
0302         Action
0303         {
0304             icon.name: "message-new"
0305             text: i18n("Message")
0306             icon.color: Maui.Theme.textColor
0307             onTriggered:
0308             {
0309                 _dialogLoader.sourceComponent =  _messageComposerComponent
0310                 dialog.contact = control.contact
0311                 dialog.open()
0312             }
0313         }
0314 
0315         Action
0316         {
0317             enabled: Maui.Handy.isMobile
0318             icon.name: "call-start"
0319             text: i18n("Call")
0320             icon.color: Maui.Theme.textColor
0321 
0322             onTriggered:
0323             {
0324                 _communicator.call(control.contact.tel)
0325             }
0326         }
0327 
0328         Action
0329         {
0330             icon.name: "edit-copy"
0331             text: i18n("Copy")
0332             icon.color: Maui.Theme.textColor
0333             onTriggered:
0334             {
0335                 Maui.Handy.copyTextToClipboard(control.contact.tel)
0336             }
0337         }
0338     }
0339 
0340     ContactField
0341     {
0342         visible: contact.email || control.editing
0343         editing: control.editing
0344 
0345         Layout.maximumWidth: 500
0346         Layout.minimumWidth: 100
0347         Layout.alignment: Qt.AlignHCenter
0348         Layout.fillWidth: true
0349 
0350         label1.text: i18n("Email")
0351         label2.text: contact.email || ""
0352         iconSource: "mail-message"
0353 
0354         content: TextField
0355         {
0356             id: _emailField
0357             visible: control.editing
0358             Layout.fillWidth: true
0359             text: contact.email || ""
0360         }
0361 
0362         Action
0363         {
0364             icon.name: "message-new"
0365             text: i18n("Message")
0366             icon.color: Maui.Theme.textColor
0367             onTriggered:
0368             {
0369                 _dialogLoader.sourceComponent =  _messageComposerComponent
0370                 dialog.contact = control.contact
0371                 dialog.open()
0372             }
0373         }
0374 
0375         Action
0376         {
0377             icon.name: "edit-copy"
0378             text: i18n("Copy")
0379             icon.color: Maui.Theme.textColor
0380             onTriggered:
0381             {
0382                 Maui.Handy.copyTextToClipboard(control.contact.tel)
0383             }
0384         }
0385     }
0386 
0387 
0388     ContactField
0389     {
0390         visible: contact.org || control.editing
0391         editing: control.editing
0392 
0393         Layout.maximumWidth: 500
0394         Layout.minimumWidth: 100
0395         Layout.alignment: Qt.AlignHCenter
0396         Layout.fillWidth: true
0397         label1.text: i18n("Organization")
0398         label2.text: contact.org || ""
0399 
0400         iconSource: "roll"
0401 
0402         content: TextField
0403         {
0404             id: _orgField
0405             visible: control.editing
0406             Layout.fillWidth: true
0407             text: contact.org || ""
0408         }
0409     }
0410 
0411     ContactField
0412     {
0413         visible: contact.title || control.editing
0414         editing: control.editing
0415 
0416         Layout.maximumWidth: 500
0417         Layout.minimumWidth: 100
0418         Layout.alignment: Qt.AlignHCenter
0419         Layout.fillWidth: true
0420         label1.text: i18n("Title")
0421         label2.text: contact.title || ""
0422 
0423         iconSource: "actor"
0424 
0425         content: TextField
0426         {
0427             visible: control.editing
0428             Layout.fillWidth: true
0429             text: contact.title || ""
0430         }
0431     }
0432 
0433     function clear()
0434     {
0435         _nameField.clear()
0436         _telField.clear()
0437         _emailField.clear()
0438         _orgField.clear()
0439         //        _adrField.clear()
0440         //        _img.source = ""
0441         _contactPicLoader.sourceComponent = _iconComponent
0442         control.close()
0443 
0444     }
0445 
0446     Component.onCompleted:
0447     {
0448         var androidAccounts = _contacsView.list.getAccounts();
0449         _accountsCombobox.model = androidAccounts;
0450     }
0451 
0452     onClosed:
0453     {
0454         control.contact = ({})
0455         _dialogLoader.sourceComponent = null
0456     }
0457 }