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 }