diff --git a/qml/Sidebar.qml b/qml/Sidebar.qml index a8585d751f..3ae4adfde6 100644 --- a/qml/Sidebar.qml +++ b/qml/Sidebar.qml @@ -13,6 +13,16 @@ UM.AngledCornerRectangle { cornerSize: UM.Theme.sizes.default_margin.width; + function showTooltip(item, position, text) { + tooltip.text = text; + position = item.mapToItem(base, position.x, position.y); + tooltip.show(position); + } + + function hideTooltip() { + tooltip.hide(); + } + MouseArea { anchors.fill: parent acceptedButtons: Qt.AllButtons; @@ -25,7 +35,7 @@ UM.AngledCornerRectangle { ColumnLayout { anchors.fill: parent; anchors.topMargin: UM.Theme.sizes.default_margin.height; - anchors.bottomMargin: UM.Theme.sizes.default_margin.height; + anchors.bottomMargin: UM.Theme.sizes.window_margin.height; spacing: UM.Theme.sizes.default_margin.height; @@ -45,6 +55,10 @@ UM.AngledCornerRectangle { Layout.fillHeight: true; source: header.currentModeFile; + + property Item sidebar: base; + + onLoaded: item.configureSettings = base.configureMachinesAction } OutputGCodeButton { @@ -53,4 +67,8 @@ UM.AngledCornerRectangle { Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter; } } + + SidebarTooltip { + id: tooltip; + } } diff --git a/qml/SidebarAdvanced.qml b/qml/SidebarAdvanced.qml index 386c82aa15..40373f94e8 100644 --- a/qml/SidebarAdvanced.qml +++ b/qml/SidebarAdvanced.qml @@ -70,6 +70,8 @@ ScrollView { model: delegateItem.settingsModel; delegate: UM.SettingItem { + id: item; + width: UM.Theme.sizes.setting.width; height: model.visible ? UM.Theme.sizes.setting.height : 0; @@ -95,6 +97,12 @@ ScrollView { onItemValueChanged: delegateItem.settingsModel.setSettingValue(index, model.key, value); onContextMenuRequested: contextMenu.popup(); + onShowTooltip: { + position = { x: UM.Theme.sizes.default_margin.width, y: item.height } + sidebar.showTooltip(item, position, model.description); + } + onHideTooltip: sidebar.hideTooltip(); + Menu { id: contextMenu; @@ -102,7 +110,6 @@ ScrollView { //: Settings context menu action text: qsTr("Hide this setting"); onTriggered: delegateItem.settingsModel.hideSetting(model.key); -// onTriggered: settingsList.model.setVisibility(model.key, false); } MenuItem { //: Settings context menu action diff --git a/qml/SidebarTooltip.qml b/qml/SidebarTooltip.qml new file mode 100644 index 0000000000..04d92609c1 --- /dev/null +++ b/qml/SidebarTooltip.qml @@ -0,0 +1,44 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.1 +import QtQuick.Controls.Styles 1.1 +import QtQuick.Layouts 1.1 + +import UM 1.0 as UM + +Rectangle { + id: base; + + width: UM.Theme.sizes.tooltip.width; + height: label.height + UM.Theme.sizes.tooltip_margins.height * 2; + color: UM.Theme.colors.tooltip; + + opacity: 0; + Behavior on opacity { NumberAnimation { duration: 100; } } + + property alias text: label.text; + + function show(position) { + x = position.x; + y = position.y; + base.opacity = 1; + } + + function hide() { + base.opacity = 0; + } + + Label { + id: label; + anchors { + top: parent.top; + topMargin: UM.Theme.sizes.tooltip_margins.height; + left: parent.left; + leftMargin: UM.Theme.sizes.tooltip_margins.width; + right: parent.right; + rightMargin: UM.Theme.sizes.tooltip_margins.width; + } + +// horizontalAlignment: Qt.AlignJustify; + wrapMode: Text.Wrap; + } +}