Warning, /maui/mauikit-imagetools/src/controls.6/ImageInfoDialog.qml is written in an unsupported language. File is not indexed.

0001 // Copyright 2018-2020 Camilo Higuita <milo.h@aol.com>
0002 // Copyright 2018-2020 Nitrux Latinoamericana S.C.
0003 //
0004 // SPDX-License-Identifier: GPL-3.0-or-later
0005 
0006 
0007 import QtQuick
0008 
0009 import QtQuick.Layouts
0010 import QtQuick.Controls 
0011 
0012 import QtLocation
0013 import QtPositioning 
0014 
0015 import org.mauikit.controls 1.3 as Maui
0016 import org.mauikit.filebrowsing 1.3 as FB
0017 import org.mauikit.imagetools 1.3 as IT
0018 
0019 /**
0020  * @inherit org::mauikit::controls::PopupPage
0021  * @brief A popup view presenting with metadata information about a given image file.
0022  * 
0023  * @image html imageinfodialog.png "Image information dialog"
0024  * 
0025  * @code
0026  * IT.ImageInfoDialog
0027  * {
0028  *  id: _dialog
0029  *  url: "file:///home/camiloh/maui-demo-files/Pictures/4416d027-9fa4-4762-8eb6-31de331623a1.jpg"
0030  * }
0031  * @endcode
0032  */
0033 Maui.PopupPage
0034 {
0035     id: control
0036 
0037     /**
0038      * @brief
0039      */
0040     property alias url : _infoModel.url
0041 
0042     maxHeight: 800
0043     maxWidth: 500
0044     hint: 1
0045 
0046     title: _infoModel.fileName
0047     headBar.visible: true
0048     spacing: Maui.Style.space.huge
0049     
0050     footBar.rightContent: [
0051         ToolButton
0052         {
0053             icon.name: "list-add"
0054             text: "Add Exif tag"
0055             onClicked: _editTagDialog.open()
0056         },
0057         
0058         ToolButton
0059         {
0060             icon.name: "file-open"
0061             text: "Open"
0062         }        
0063     ]
0064 
0065     Rectangle
0066     {
0067         Layout.fillWidth: true
0068         Layout.preferredHeight: 200
0069         color: Qt.darker(Maui.Theme.backgroundColor, 1.1)
0070 
0071         Image
0072         {
0073             id: _img
0074             anchors.fill: parent
0075             source: control.url
0076             fillMode: Image.PreserveAspectCrop
0077 //            sourceSize.width: width
0078 //            sourceSize.height: height
0079 
0080             Rectangle
0081             {
0082                 color: "#333"
0083                 opacity: 0.5
0084                 anchors.fill: parent
0085             }
0086 
0087             Rectangle
0088             {
0089                 anchors.centerIn: parent
0090                 color: "#333"
0091                 radius: Maui.Style.radiusV
0092                 width: 100
0093                 height: 32
0094                 Label
0095                 {
0096                     anchors.centerIn: parent
0097                     text: _img.implicitWidth + " x " + _img.implicitHeight
0098                     color: "white"
0099                 }
0100             }
0101         }
0102     }
0103 
0104     FB.TagsBar
0105     {
0106         Layout.fillWidth: true
0107         visible: count > 0
0108         allowEditMode: false
0109         list.urls: [control.url]
0110         list.strict: false
0111     }
0112     
0113     Maui.InfoDialog
0114     {
0115         id: _editTagDialog
0116         property alias key : _keyField.text
0117         property alias value : _valueField.text
0118         
0119         title: i18n ("Edit")
0120         message: i18nd("mauikitimagetools","Editing Exif tag")
0121         
0122                  standardButtons: Dialog.Save | Dialog.Cancel
0123         
0124         TextField
0125         {
0126             id: _keyField
0127             Layout.fillWidth: true
0128             placeholderText: i18nd("mauikitimagetools","Tag key")
0129         }        
0130         
0131         TextField
0132         {
0133             id: _valueField
0134             Layout.fillWidth: true
0135             placeholderText: i18nd("mauikitimagetools","Tag value")
0136         }
0137         
0138         onAccepted:
0139         {
0140             console.log(_editTagDialog.key, _editTagDialog.value)
0141              if(_infoModel.editTag(_editTagDialog.key, _editTagDialog.value))
0142             {
0143                 _editTagDialog.close()
0144             }else
0145             {
0146                 _editTagDialog.alert(i18nd("mauikitimagetools","Could not edit the tag"), 2)
0147             }
0148         }
0149         
0150         onRejected:
0151         {
0152             _editTagDialog.close()
0153         }
0154         
0155         function set(key, value)
0156         {
0157             _editTagDialog.key = key
0158             _editTagDialog.value = value
0159             _editTagDialog.open()
0160         }
0161     }
0162     
0163      Maui.InfoDialog
0164     {
0165         id: _removeTagDialog
0166         property string key
0167         property string value
0168         
0169         title: i18n ("Remove")
0170         message: i18nd("mauikitimagetools","Are you sure you want to remove the Exif tag %1?", _removeTagDialog.value)
0171          
0172          standardButtons: Dialog.Yes | Dialog.Cancel
0173          
0174         onAccepted:
0175         {
0176             if(_infoModel.removeTag(_removeTagDialog.key))
0177             {
0178                 _removeTagDialog.close()
0179             }else
0180             {
0181                 _removeTagDialog.alert(i18nd("mauikitimagetools","Could not remove the tag"), 2)
0182             }
0183         }
0184         
0185         onRejected:
0186         {
0187             _removeTagDialog.close()
0188         }
0189         
0190         function set(key, value)
0191         {
0192             _removeTagDialog.key = key
0193             _removeTagDialog.value = value
0194             _removeTagDialog.open()
0195         }
0196     }
0197     
0198     Maui.SectionGroup
0199     {
0200         Layout.fillWidth: true
0201 
0202         title: i18nd("mauikitimagetools","Details")
0203         description: i18nd("mauikitimagetools","File information")
0204 
0205         Repeater
0206         {
0207             model: Maui.BaseModel
0208             {
0209                 list: IT.PicInfoModel
0210                 {
0211                     id:_infoModel
0212                 }
0213             }
0214 
0215             delegate: Maui.FlexSectionItem
0216             {
0217                 visible: model.value && String(model.value).length > 0
0218                 label1.text: model.name
0219                 label2.text: model.value
0220                 
0221                 ToolButton
0222                 {
0223                     visible: model.key
0224                     icon.name: "document-edit"
0225                     onClicked: _editTagDialog.set(model.key, model.value)
0226                 }
0227                 
0228                   ToolButton
0229                 {
0230                     visible: model.key
0231                     icon.name: "edit-delete"
0232                     onClicked: _removeTagDialog.set(model.key, model.value)
0233                 }
0234             }
0235         }
0236     }
0237 
0238     Maui.Separator
0239     {
0240         Layout.fillWidth: true
0241         visible: map.visible
0242     }
0243 
0244     Map
0245     {
0246         id: map
0247         visible: _infoModel.lat !== 0 &&  _infoModel.lon !== 0
0248         color: Maui.Theme.backgroundColor
0249         Layout.fillWidth: true
0250         Layout.preferredHeight: 400
0251         // gesture.acceptedGestures: MapGestureArea.NoGesture
0252         // gesture.flickDeceleration: 3000
0253         // gesture.enabled: true
0254 
0255         plugin: Plugin
0256         {
0257             id: mapPlugin
0258             name: "osm" // "mapboxgl", "esri", ...
0259             // specify plugin parameters if necessary
0260             // PluginParameter {
0261             //     name:
0262             //     value:
0263             // }
0264         }
0265 //        center: QtPositioning.coordinate(_infoModel.lat, _infoModel.lon) // Oslo
0266         zoomLevel: 16
0267         center
0268         {
0269             latitude: _infoModel.lat
0270             longitude:_infoModel.lon
0271         }
0272         
0273         MapCircle
0274         {
0275             center: map.center
0276             radius: 50.0
0277             color: Maui.Theme.highlightColor
0278         }
0279         
0280         Component.onCompleted: 
0281         {            
0282             map.addMapItem(map.circle)
0283         }
0284     }
0285 }