From 3814f63ac041f71acbaf0de9146c0f1267266222 Mon Sep 17 00:00:00 2001 From: Michael Lemaire Date: Wed, 27 Aug 2014 17:23:59 +0200 Subject: [PATCH] Experiments on toolbars --- .gitignore | 1 + .../modeler/quickapp/images/images.qrc | 10 -- .../modeler/quickapp/qml/Toolbar.qml | 21 +++ .../modeler/quickapp/qml/ToolbarButton.qml | 36 +++++- .../modeler/quickapp/qml/Tooltip.qml | 16 +++ src/interface/modeler/quickapp/qml/app.qrc | 5 + .../quickapp/qml/images/display_topdown.png | Bin 0 -> 7781 bytes .../modeler/quickapp/qml/images/help.png | Bin 0 -> 13448 bytes .../quickapp/qml/images/tab_display.png | Bin 0 -> 6077 bytes src/interface/modeler/quickapp/qml/main.qml | 121 +++++++++--------- src/interface/modeler/quickapp/quickapp.pro | 4 +- 11 files changed, 141 insertions(+), 73 deletions(-) delete mode 100644 src/interface/modeler/quickapp/images/images.qrc create mode 100644 src/interface/modeler/quickapp/qml/Toolbar.qml create mode 100644 src/interface/modeler/quickapp/qml/Tooltip.qml create mode 100644 src/interface/modeler/quickapp/qml/images/display_topdown.png create mode 100644 src/interface/modeler/quickapp/qml/images/help.png create mode 100644 src/interface/modeler/quickapp/qml/images/tab_display.png diff --git a/.gitignore b/.gitignore index 8d7a6b3..df7cc34 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ ui_*.h /paysages3d-linux/ /paysages3d-linux.tar.bz2 /config.vim +/callgrind.out.* diff --git a/src/interface/modeler/quickapp/images/images.qrc b/src/interface/modeler/quickapp/images/images.qrc deleted file mode 100644 index d3a2921..0000000 --- a/src/interface/modeler/quickapp/images/images.qrc +++ /dev/null @@ -1,10 +0,0 @@ - - - tab_water.png - tab_atmosphere.png - tab_clouds.png - tab_render.png - tab_terrain.png - tab_textures.png - - diff --git a/src/interface/modeler/quickapp/qml/Toolbar.qml b/src/interface/modeler/quickapp/qml/Toolbar.qml new file mode 100644 index 0000000..46838d6 --- /dev/null +++ b/src/interface/modeler/quickapp/qml/Toolbar.qml @@ -0,0 +1,21 @@ +import QtQuick 2.0 + +Rectangle { + + default property alias children : inner_space.children + width: 70 + height: parent.height + color: "#50000000" + + Column { + id: inner_space + spacing: (parent.height - children.length * tool_terrain.height) / (children.length + 1) + anchors.centerIn: parent + } + + Behavior on opacity { + PropertyAnimation { + duration: 200 + } + } +} diff --git a/src/interface/modeler/quickapp/qml/ToolbarButton.qml b/src/interface/modeler/quickapp/qml/ToolbarButton.qml index ae703b5..23c8edb 100644 --- a/src/interface/modeler/quickapp/qml/ToolbarButton.qml +++ b/src/interface/modeler/quickapp/qml/ToolbarButton.qml @@ -4,6 +4,8 @@ Item { property string picture property bool selected: false property bool hovered: false + property string helptext + property string hovertext width: image.width + 10 height: image.height + 10 @@ -26,14 +28,42 @@ Item { id: image source: parent.picture anchors.centerIn: parent + width: 32 + height: 32 } MouseArea { anchors.fill: parent hoverEnabled: true + cursorShape: Qt.PointingHandCursor - onEntered: parent.hovered = true - onExited: parent.hovered = false - onClicked: parent.selected = true + onEntered: { + parent.hovered = true; + tooltip_widget.hovertext = hovertext; + } + onExited: { + parent.hovered = false; + tooltip_widget.hovertext = ""; + } + onClicked: { + parent.selected = !parent.selected; + if (parent.selected) + { + var toolbar = parent.parent; + for (var i = 0; i < toolbar.children.length; ++i) + { + var child = toolbar.children[i] + if (child !== parent) + { + child.selected = false; + } + } + tooltip_widget.helptext = helptext; + } + else + { + tooltip_widget.helptext = ""; + } + } } } diff --git a/src/interface/modeler/quickapp/qml/Tooltip.qml b/src/interface/modeler/quickapp/qml/Tooltip.qml new file mode 100644 index 0000000..0ec4c3c --- /dev/null +++ b/src/interface/modeler/quickapp/qml/Tooltip.qml @@ -0,0 +1,16 @@ +import QtQuick 2.0 + +Rectangle { + property string helptext + property string hovertext + width: content.width + height: content.height + + color: "#99000000" + + Text { + id: content + color: "white" + text: parent.helptext || parent.hovertext + } +} diff --git a/src/interface/modeler/quickapp/qml/app.qrc b/src/interface/modeler/quickapp/qml/app.qrc index 86302af..aa09ee8 100644 --- a/src/interface/modeler/quickapp/qml/app.qrc +++ b/src/interface/modeler/quickapp/qml/app.qrc @@ -8,5 +8,10 @@ images/tab_terrain.png images/tab_textures.png images/tab_water.png + images/tab_display.png + Toolbar.qml + images/display_topdown.png + images/help.png + Tooltip.qml diff --git a/src/interface/modeler/quickapp/qml/images/display_topdown.png b/src/interface/modeler/quickapp/qml/images/display_topdown.png new file mode 100644 index 0000000000000000000000000000000000000000..442706b510185d2523c42cacefd6685bc484f7b9 GIT binary patch literal 7781 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 literal 0 HcmV?d00001 diff --git a/src/interface/modeler/quickapp/qml/images/help.png b/src/interface/modeler/quickapp/qml/images/help.png new file mode 100644 index 0000000000000000000000000000000000000000..fa42c5aae2f7cf7f2e81c2de0b686b7a1e304012 GIT binary patch literal 13448 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 PmIt&o4AeiX+K2x?98wP9 literal 0 HcmV?d00001 diff --git a/src/interface/modeler/quickapp/qml/main.qml b/src/interface/modeler/quickapp/qml/main.qml index 2087bd4..ceee3b9 100644 --- a/src/interface/modeler/quickapp/qml/main.qml +++ b/src/interface/modeler/quickapp/qml/main.qml @@ -2,76 +2,79 @@ import QtQuick 2.2 import Paysages 1.0 OpenGLView { + id: main_ui + state: "Init" - width: 640 - height: 480 + width: 800 + height: 600 - Item { + Tooltip { + id: tooltip_widget + + anchors.top: parent.top + anchors.right: parent.right + } + + Toolbar { id: primary_toolbar - x: 0 - y: 0 - width: 70 - height: parent.height + color: "#90000000" - Rectangle { - width: parent.height - height: parent.width - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - transformOrigin: Item.Center - rotation: -90 - gradient: Gradient { - GradientStop { position: 0.0; color: "#605055FF" } - GradientStop { position: 1.0; color: "#005055FF" } - } + anchors.left: parent.left + + ToolbarButton { + id: tool_display + picture: "images/tab_display.png" + hovertext: qsTr("Display options") } - - Column { - - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - spacing: (parent.height - 6 * tool_terrain.height) / 7 - - ToolbarButton { - id: tool_terrain - picture: "images/tab_terrain.png" - } - ToolbarButton { - id: tool_textures - picture: "images/tab_textures.png" - } - ToolbarButton { - id: tool_water - picture: "images/tab_water.png" - } - ToolbarButton { - id: tool_atmosphere - picture: "images/tab_atmosphere.png" - } - ToolbarButton { - id: tool_clouds - picture: "images/tab_clouds.png" - } - ToolbarButton { - id: tool_render - picture: "images/tab_render.png" - } + ToolbarButton { + id: tool_terrain + picture: "images/tab_terrain.png" + } + ToolbarButton { + id: tool_textures + picture: "images/tab_textures.png" + } + ToolbarButton { + id: tool_water + picture: "images/tab_water.png" + } + ToolbarButton { + id: tool_atmosphere + picture: "images/tab_atmosphere.png" + } + ToolbarButton { + id: tool_clouds + picture: "images/tab_clouds.png" + } + ToolbarButton { + id: tool_render + picture: "images/tab_render.png" } } - Rectangle { - id: toolbar_render - anchors.top: primary_toolbar.top + Toolbar { + id: display_toolbar + opacity: 0 anchors.left: primary_toolbar.right - width: primary_toolbar.width - height: primary_toolbar.height - color: "#8800FF00" - SequentialAnimation on width { - loops: Animation.Infinite - PropertyAnimation { to: 0; duration: 1000 } - PropertyAnimation { to: primary_toolbar.width; duration: 1000 } + ToolbarButton { + id: tool_display_topdown + picture: "images/display_topdown.png" + hovertext: qsTr("Top-down view") + helptext: qsTr("Drag the mouse on the map to change the viewpoint.") } } + states: [ + State { + name: "Display Mode" + when: tool_display.selected + + PropertyChanges { + target: display_toolbar + opacity: 1 + } + } + ] + } diff --git a/src/interface/modeler/quickapp/quickapp.pro b/src/interface/modeler/quickapp/quickapp.pro index 61ee72a..2b227cf 100644 --- a/src/interface/modeler/quickapp/quickapp.pro +++ b/src/interface/modeler/quickapp/quickapp.pro @@ -53,4 +53,6 @@ DEPENDPATH += $$PWD/../../../render/opengl OTHER_FILES += \ qml/main.qml \ qml/ToolbarButton.qml \ - qml/OpenGLView.qml + qml/OpenGLView.qml \ + qml/Toolbar.qml \ + qml/Tooltip.qml