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

0001 import QtQuick
0002 import QtQuick.Window
0003 import QtQuick.Controls
0004 import QtQuick.Layouts
0005 import QtQuick.Dialogs
0006 import mindmap
0007 import Customization
0008 import utils
0009 
0010 Pane {
0011     id: root
0012 
0013     property QtObject styleSheet: Theme.styleSheet("mindmap")
0014     property real viewScale: 1
0015     property int idx: 0
0016     property bool darkMode: false
0017     property alias addPackage: _buttonGrid.addPackage
0018     required property MindMapController ctrl
0019     property alias actions: _buttonGrid.actions
0020 
0021 
0022 
0023     onDarkModeChanged: Theme.nightMode = root.darkMode
0024 
0025     /*Component.onCompleted: {
0026         MindmapManager.ctrl.url = "file:///home/renaud/application/mine/renaudg/rolisteam/src/tests/manual/mindmap/campaign/media/test.rmap"
0027         //MindmapManager.ctrl.loadFile();
0028     }*/
0029 
0030     MindMap {
0031         id: mindMap
0032         anchors.fill: parent
0033         ctrl: root.ctrl
0034         zoomLevel: root.ctrl.zoomLevel
0035         addSubLink: _buttonGrid.addArrow
0036         marginW: _minimized.width
0037         onOpenImage: (id)=>{
0038           imgSelector.uuid = id
0039           imgSelector.open()
0040         }
0041         onPressed:  (mouse)=> {
0042             if(root.addPackage)
0043                 root.ctrl.addPackage(Qt.point(mouse.x, mouse.y))
0044             else
0045                 mouse.accepted = false
0046         }
0047         onPositionChanged: (mouse)=>{
0048             if(root.addPackage)
0049                 root.ctrl.updatePackage(Qt.point(mouse.x, mouse.y))
0050             else
0051                 mouse.accepted = false
0052         }
0053         onReleased: {
0054             if(root.addPackage)
0055                 root.addPackage = false
0056             else
0057                 mouse.accepted = false
0058         }
0059     }
0060     MindMenu {
0061         id: menu
0062         ctrl: root.ctrl
0063     }
0064 
0065     FileDialog {
0066       id: imgSelector
0067       property string uuid
0068       fileMode: FileDialog.OpenFile
0069       nameFilters: [qsTr("Images (*.jpg *.png *.jpeg *.gif *.bmp)")]
0070       onAccepted: {
0071           root.ctrl.openImage(imgSelector.uuid, imgSelector.selectedFile)
0072       }
0073     }
0074 
0075     FileDialog {
0076       id: screenShotSelector
0077       property string uuid
0078       defaultSuffix: "png"
0079       fileMode: FileDialog.SaveFile
0080       nameFilters: [qsTr("Images (*.png)")]
0081       onAccepted: {
0082           mindMap.makeScreenShot(screenShotSelector.selectedFile)
0083       }
0084     }
0085 
0086 
0087      RowLayout{
0088         anchors.top: parent.top
0089         anchors.right: parent.right
0090         anchors.rightMargin: root.styleSheet.margin
0091         anchors.topMargin: root.styleSheet.margin
0092 
0093         IconButton {//undo
0094             source: root.styleSheet.undoIcon
0095             enabled: root.ctrl.canUndo
0096             onClicked: root.ctrl.undo()
0097         }
0098         IconButton {//redo
0099             source: root.styleSheet.redoIcon
0100             enabled: root.ctrl.canRedo
0101             onClicked: root.ctrl.redo()
0102         }
0103         IconButton {
0104             source: root.styleSheet.listIcon
0105             onClicked: drawer.open()
0106         }
0107     }
0108 
0109     ButtonGrid {
0110         id: _buttonGrid
0111         ctrl: root.ctrl
0112         anchors.top: parent.top
0113         anchors.right: parent.right
0114         anchors.rightMargin: 14
0115         anchors.topMargin: 14
0116         onOpenDrawer: drawer.open()
0117         automaticSpacing: root.ctrl.spacing
0118         onAutomaticSpacingChanged: root.ctrl.spacing = _buttonGrid.automaticSpacing
0119         onExportScene: {
0120             screenShotSelector.open()
0121         }
0122     }
0123 
0124     SideMenu {
0125         id: drawer
0126         edge: Qt.RightEdge
0127         width: 0.4 * root.width
0128         height: root.height
0129         mediaCtrl: root.ctrl
0130         linkVisibility: root.ctrl.linkLabelVisibility
0131         darkMode: root.darkMode
0132         onDarkModeChanged: root.darkMode = darkMode
0133         onLinkVisibilityChanged: root.ctrl.linkLabelVisibility = linkVisibility
0134         onDefaultStyleChanged: root.ctrl.defaultStyleIndex = defaultStyle
0135     }
0136 
0137     Rectangle {
0138         anchors.fill: _minimized
0139         anchors.margins: 2
0140         border.width: 2
0141         border.color: root.styleSheet.borderColor
0142         color: root.styleSheet.colorMiniMap
0143         visible: _buttonGrid.showLittleMap
0144     }
0145 
0146     ShaderEffectSource {
0147         id: _minimized
0148         sourceItem: mindMap.innerItem
0149         anchors.bottom: _bottomControl.top
0150         anchors.right: parent.right
0151         live: true
0152         visible: _buttonGrid.showLittleMap
0153         MappingHelper {
0154             id: helper
0155         }
0156         width: _bottomControl.width
0157         height: width/2
0158 
0159         sourceRect: helper.maxRect(Qt.rect(0,0, root.width, root.height), Qt.rect(0,0, mindMap.innerItem.width, mindMap.innerItem.height))
0160 
0161         Rectangle {
0162             border.width: 2
0163             border.color: "blue"
0164             color: "transparent"
0165             x: mindMap.visibleArea.xPosition * _minimized.width
0166             y: mindMap.visibleArea.yPosition * _minimized.height
0167             width: mindMap.visibleArea.widthRatio * _minimized.width
0168             height: mindMap.visibleArea.heightRatio * _minimized.height
0169         }
0170     }
0171     RowLayout {
0172         id: _bottomControl
0173         anchors.bottom: parent.bottom
0174         anchors.right: parent.right
0175         Slider {
0176             id: slider
0177             from: 0.1
0178             to: 3
0179             value: root.ctrl.zoomLevel
0180             onValueChanged: root.ctrl.zoomLevel = value
0181 
0182         }
0183         Button {
0184             text: "reset"
0185             onClicked: slider.value = 1.0
0186         }
0187     }
0188 
0189     MouseArea {
0190         anchors.fill:parent
0191         acceptedButtons:Qt.MiddleButton | Qt.RightButton
0192         propagateComposedEvents: true
0193         onClicked:(mouse)=>{
0194             menu.x = mouse.x
0195             menu.y = mouse.y
0196             menu.open()
0197         }
0198         onWheel: (wheel)=>{
0199             var step = (wheel.modifiers & Qt.ControlModifier) ? 0.1 : 0.01
0200             if(wheel.angleDelta.y>0)
0201             {
0202                 root.viewScale = Math.min(root.viewScale+step,2.0)
0203             }
0204             else
0205                 root.viewScale = Math.max(root.viewScale-step,0.2)
0206         }
0207     }
0208 }