Warning, /rolisteam/rolisteam/src/libraries/mindmap/resources/qml/MindMap.qml is written in an unsupported language. File is not indexed.

0001 import QtQuick
0002 import QtQuick.Controls
0003 import QtQuick.Layouts
0004 import Customization
0005 import mindmap
0006 
0007 Flickable {
0008     id: _flick
0009     property real zoomLevel: 1
0010     required property MindMapController ctrl
0011     property QtObject styleSheet: Theme.styleSheet("mindmapinteral")
0012     property string selectedNodeId:""
0013     property bool addSubLink: false
0014     property alias innerItem: inner
0015     property real marginW: 100
0016 
0017 
0018     onZoomLevelChanged: {
0019         updateZoom()
0020     }
0021 
0022     function updateZoom(){
0023         var zoomPoint = Qt.point(_flick.width/2 + _flick.contentX,
0024                              _flick.height/2 + _flick.contentY);
0025         _flick.resizeContent((inner.width * _flick.zoomLevel), (inner.height * _flick.zoomLevel), zoomPoint);
0026         _flick.returnToBounds();
0027     }
0028 
0029     signal openImage(var id)
0030     signal pressed(var mouse)
0031     signal positionChanged(var mouse)
0032     signal released(var mouse)
0033 
0034     function makeScreenShot(path){
0035         inner.grabToImage(function(result){
0036             result.saveToFile(path)
0037         });
0038     }
0039 
0040     contentHeight: inner.height
0041     contentWidth: inner.width
0042     interactive: true
0043     boundsBehavior: Flickable.StopAtBounds
0044 
0045     Shortcut {
0046         sequences: [StandardKey.Undo]
0047         onActivated:  ctrl.undo();
0048         onActivatedAmbiguously: ctrl.undo()
0049     }
0050     Shortcut {
0051         sequences: [StandardKey.Redo]
0052         onActivated: ctrl.redo();
0053         onActivatedAmbiguously: ctrl.redo()
0054     }
0055     Component {
0056         id: linkComp
0057         Link {
0058             id: linkItem
0059             x: objectItem.topLeftCorner.x
0060             y: objectItem.topLeftCorner.y
0061             width: objectItem.normalizedWidth
0062             height: objectItem.normalizedHeight
0063             color: _flick.styleSheet.linkColor
0064             opacity: objectItem.constraint ? 1.0 : 0.4
0065             controller: objectItem
0066             visible: objectItem.visible
0067             text: objectItem.text ?  objectItem.text : qsTr("is linked")
0068             visibleLabel: _flick.ctrl.linkLabelVisibility
0069 
0070             onSelected: {
0071                 _flick.ctrl.selectionCtrl.clearSelection()
0072                 _flick.ctrl.selectionCtrl.addToSelection(objectItem)
0073             }
0074 
0075             Rectangle {
0076                 border.width: 1
0077                 border.color: "red"
0078                 color: "transparent"
0079                 visible: objectItem.selected
0080                 anchors.fill: parent
0081             }
0082 
0083         }
0084     }
0085 
0086     Component {
0087         id: packComp
0088         PackageItem {
0089             packageItem: objectItem
0090             width: objectItem.width
0091             height: objectItem.height
0092             visible: objectItem.visible
0093             selected: objectItem.selected
0094             title: objectItem.title
0095             onAddItem: (itemid)=>{
0096                            _flick.ctrl.addItemIntoPackage(itemid, objectItem.id)
0097                        }
0098             onClicked: (mouse) => {
0099                if(_flick.addSubLink)
0100                {
0101                    if(_flick.selectedNodeId.length > 0)
0102                    {
0103                        _flick.ctrl.addLink(_flick.selectedNodeId, objectItem.id)
0104                        _flick.selectedNodeId = ""
0105                    }
0106                    else
0107                    _flick.selectedNodeId = objectItem.id
0108 
0109                }
0110                else if(mouse.modifiers & Qt.ControlModifier) {
0111                    if(selected)
0112                    _flick.ctrl.selectionCtrl.removeFromSelection(objectItem)
0113                    else
0114                    _flick.ctrl.selectionCtrl.addToSelection(objectItem)
0115                }
0116                else if(!selected){
0117                    _flick.ctrl.selectionCtrl.clearSelection()
0118                    _flick.ctrl.selectionCtrl.addToSelection(objectItem)
0119                }
0120 
0121            }
0122 
0123         }
0124     }
0125 
0126 
0127     Component {
0128         id: nodeComp
0129         Node {
0130             id: nodeItem
0131             currentNode: objectItem
0132             nodeStyle: _flick.ctrl.style(objectItem.styleIndex)
0133             readWrite: _flick.ctrl.hasNetwork ? _flick.ctrl.readWrite : true
0134             focus: true
0135             text : objectItem.text ? objectItem.text : "new node"
0136             source: hasAvatar ? "image://nodeImages/%1".arg(objectItem.id) : ""
0137             visible: objectItem.visible
0138             selected: objectItem.selected
0139             onTextEdited: {
0140                 objectItem.text = nodeItem.text
0141             }
0142 
0143             //color: _flick.styleSheet.linkColor
0144             buttonColor: _flick.styleSheet.textColor
0145             onAddChild: {
0146                 _flick.ctrl.addNode(objectItem.id)
0147                 updateZoom()
0148             }
0149             onOpenChanged: _flick.ctrl.itemModel.openItem(objectItem.id, open)
0150             onReparenting: (id) => {_flick.ctrl.reparenting(objectItem,id)}
0151             onAddImage: (img, data)=>{ _flick.ctrl.addImageFor(objectItem.id, img, data)}
0152             onSelectStyle: {
0153                 _stylePopup.parent = nodeItem
0154                 _stylePopup.node = objectItem
0155                 _stylePopup.open()
0156             }
0157 
0158             onClicked: (mouse) => {
0159                            if(_flick.addSubLink)
0160                            {
0161                                if(_flick.selectedNodeId.length > 0)
0162                                {
0163                                    _flick.ctrl.addLink(_flick.selectedNodeId, objectItem.id)
0164                                    _flick.selectedNodeId = ""
0165                                }
0166                                else
0167                                _flick.selectedNodeId = objectItem.id
0168 
0169                            }
0170                            else if(mouse.modifiers & Qt.ControlModifier) {
0171                                if(selected)
0172                                _flick.ctrl.selectionCtrl.removeFromSelection(objectItem)
0173                                else
0174                                _flick.ctrl.selectionCtrl.addToSelection(objectItem)
0175                            }
0176                            else if(!selected){
0177                                _flick.ctrl.selectionCtrl.clearSelection()
0178                                _flick.ctrl.selectionCtrl.addToSelection(objectItem)
0179                            }
0180                        }
0181 
0182         }
0183     }
0184 
0185     NodeSettingPopup {
0186         id: _stylePopup
0187         ctrl: _flick.ctrl
0188     }
0189 
0190     Item {
0191         id: inner
0192         width: _flick.ctrl.contentRect.width+_flick.marginW
0193         height: _flick.ctrl.contentRect.height
0194         anchors.centerIn: parent
0195         scale: _flick.zoomLevel
0196 
0197         MouseArea {
0198             anchors.fill:parent
0199             acceptedButtons:Qt.LeftButton
0200             preventStealing: true
0201 
0202             onPressed: (mouse)=>{
0203                 _flick.pressed(mouse)
0204                ctrl.selectionCtrl.clearSelection()
0205                _stylePopup.node = null
0206             }
0207             onPositionChanged: (mouse)=> {
0208                 _flick.positionChanged(mouse)
0209             }
0210             onReleased: (mouse)=>{
0211                 _flick.released(mouse)
0212             }
0213         }
0214 
0215         Repeater {
0216             id: itemLoop
0217             anchors.fill: parent
0218 
0219             model: _flick.ctrl.itemModel
0220 
0221 
0222             delegate: Loader {
0223                 property string text: label
0224                 property QtObject objectItem:  object
0225                 property bool isSelected: selected
0226                 property bool isVisible: visible
0227                 property bool hasAvatar: hasPicture
0228 
0229 
0230                 sourceComponent: type == MindItem.PackageType ? packComp : type == MindItem.LinkType ? linkComp : nodeComp
0231             }
0232         }
0233     }
0234 }