Add support for displaying setting tooltips with descriptions

This commit is contained in:
Arjen Hiemstra 2015-04-02 13:21:35 +02:00
parent b67a2bff31
commit 0d5e10219c
3 changed files with 71 additions and 2 deletions

View file

@ -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;
}
}

View file

@ -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

44
qml/SidebarTooltip.qml Normal file
View file

@ -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;
}
}