@@ -1583,13 +1583,91 @@ ToolBar {
15831583 font .family : iconFont .name
15841584 font .pointSize : 13
15851585 }
1586- Label {
1587- text: qsTr (" Step speed <pre>%1</pre>" , " Step speed 1.00" ).arg ((baseSpeedSlider .value / 100 ).toFixed (2 ))
1588- color: Kirigami .Theme .textColor
1589- Layout .topMargin : 4
1590- Layout .bottomMargin : - 14
1591- Layout .rightMargin : 3
1592- Layout .leftMargin : showSliderIcons ? 1 : 8
1586+ MouseArea {
1587+ id: baseSpeedDirectInput
1588+ property bool editText: false
1589+ height: baseSpeedLabel .height
1590+ width: baseSpeedDirectInput .editText ? baseSpeedTextField .width : baseSpeedLabel .width
1591+ onDoubleClicked: {
1592+ if (Qt .platform .os !== " android" )
1593+ enterEditMode ()
1594+ }
1595+ onPressAndHold: {
1596+ if (Qt .platform .os === " android" )
1597+ enterEditMode ();
1598+ }
1599+ function enterEditMode () {
1600+ baseSpeedDirectInput .editText = true ;
1601+ // baseSpeedTextField.selectAll(); // Uncomment to autoselect when entering edit mode.
1602+ }
1603+ TextField {
1604+ id: baseSpeedTextField
1605+ anchors .fill : parent
1606+ anchors .leftMargin : - 2
1607+ anchors .rightMargin : - 2
1608+ visible: baseSpeedDirectInput .editText
1609+ readOnly: ! visible
1610+ text: " "
1611+ onVisibleChanged: {
1612+ if (visible) {
1613+ text = baseSpeedSlider .value / 100 ;
1614+ forceActiveFocus ();
1615+ }
1616+ }
1617+ onAccepted: {
1618+ if (text !== " " ) {
1619+ const value = Number (text) * 100 ;
1620+ if (value < baseSpeedSlider .from )
1621+ baseSpeedSlider .value = baseSpeedSlider .from ;
1622+ else if (value > baseSpeedSlider .to )
1623+ baseSpeedSlider .value = baseSpeedSlider .to ;
1624+ else
1625+ baseSpeedSlider .value = Math .round (value / baseSpeedSlider .stepSize ) * baseSpeedSlider .stepSize ;
1626+ text = baseSpeedSlider .value ;
1627+ baseSpeedSlider .update ();
1628+ }
1629+ }
1630+ onEditingFinished: {
1631+ baseSpeedDirectInput .editText = false ;
1632+ }
1633+ Material .theme : Material .Dark
1634+ Keys .onUpPressed : {
1635+ const value = Number (text) * 100 + baseSpeedSlider .stepSize
1636+ if (value > baseSpeedSlider .to )
1637+ baseSpeedSlider .value = baseSpeedSlider .to ;
1638+ else {
1639+ if (value < baseSpeedSlider .from )
1640+ baseSpeedSlider .value = baseSpeedSlider .from ;
1641+ else
1642+ baseSpeedSlider .value = Math .round (value / baseSpeedSlider .stepSize ) * baseSpeedSlider .stepSize ;
1643+ }
1644+ text = baseSpeedSlider .value / 100 ;
1645+ baseSpeedSlider .update ();
1646+ }
1647+ Keys .onDownPressed : {
1648+ const value = Number (text) * 100 - baseSpeedSlider .stepSize ;
1649+ if (value < baseSpeedSlider .from )
1650+ baseSpeedSlider .value = baseSpeedSlider .from ;
1651+ else {
1652+ if (value > baseSpeedSlider .to )
1653+ baseSpeedSlider .value = baseSpeedSlider .to ;
1654+ else
1655+ baseSpeedSlider .value = Math .round (value / baseSpeedSlider .stepSize ) * baseSpeedSlider .stepSize ;
1656+ }
1657+ text = baseSpeedSlider .value / 100 ;
1658+ baseSpeedSlider .update ();
1659+ }
1660+ }
1661+ Label {
1662+ id: baseSpeedLabel
1663+ text: qsTr (" Step speed <pre>%1</pre>" , " Step speed 1.00" ).arg ((baseSpeedSlider .value / 100 ).toFixed (2 ))
1664+ visible: ! baseSpeedDirectInput .editText
1665+ color: Kirigami .Theme .textColor
1666+ Layout .topMargin : 4
1667+ Layout .bottomMargin : - 14
1668+ Layout .rightMargin : 3
1669+ Layout .leftMargin : showSliderIcons ? 1 : 8
1670+ }
15931671 }
15941672 Slider {
15951673 id: baseSpeedSlider
@@ -1624,13 +1702,91 @@ ToolBar {
16241702 font .family : iconFont .name
16251703 font .pointSize : 13
16261704 }
1627- Label {
1628- text: qsTr (" Step acceleration <pre>%1</pre>" , " Step acceleration 1.15" ).arg ((baseAccelerationSlider .value / 100 ).toFixed (2 ))
1629- color: Kirigami .Theme .textColor
1630- Layout .topMargin : 4
1631- Layout .bottomMargin : - 14
1632- Layout .rightMargin : 3
1633- Layout .leftMargin : showSliderIcons ? 1 : 8
1705+ MouseArea {
1706+ id: baseAccelerationDirectInput
1707+ property bool editText: false
1708+ height: baseAccelerationLabel .height
1709+ width: baseAccelerationDirectInput .editText ? baseAccelerationTextField .width : baseAccelerationLabel .width
1710+ onDoubleClicked: {
1711+ if (Qt .platform .os !== " android" )
1712+ enterEditMode ()
1713+ }
1714+ onPressAndHold: {
1715+ if (Qt .platform .os === " android" )
1716+ enterEditMode ();
1717+ }
1718+ function enterEditMode () {
1719+ baseAccelerationDirectInput .editText = true ;
1720+ // baseAccelerationTextField.selectAll(); // Uncomment to autoselect when entering edit mode.
1721+ }
1722+ TextField {
1723+ id: baseAccelerationTextField
1724+ anchors .fill : parent
1725+ anchors .leftMargin : - 2
1726+ anchors .rightMargin : - 2
1727+ visible: baseAccelerationDirectInput .editText
1728+ readOnly: ! visible
1729+ text: " "
1730+ onVisibleChanged: {
1731+ if (visible) {
1732+ text = baseAccelerationSlider .value / 100 ;
1733+ forceActiveFocus ();
1734+ }
1735+ }
1736+ onAccepted: {
1737+ if (text !== " " ) {
1738+ const value = Number (text) * 100 ;
1739+ if (value < baseAccelerationSlider .from )
1740+ baseAccelerationSlider .value = baseAccelerationSlider .from ;
1741+ else if (value > baseAccelerationSlider .to )
1742+ baseAccelerationSlider .value = baseAccelerationSlider .to ;
1743+ else
1744+ baseAccelerationSlider .value = Math .round (value / baseAccelerationSlider .stepSize ) * baseAccelerationSlider .stepSize ;
1745+ text = baseAccelerationSlider .value ;
1746+ baseAccelerationSlider .update ();
1747+ }
1748+ }
1749+ onEditingFinished: {
1750+ baseAccelerationDirectInput .editText = false ;
1751+ }
1752+ Material .theme : Material .Dark
1753+ Keys .onUpPressed : {
1754+ const value = Number (text) * 100 + baseAccelerationSlider .stepSize
1755+ if (value > baseAccelerationSlider .to )
1756+ baseAccelerationSlider .value = baseAccelerationSlider .to ;
1757+ else {
1758+ if (value < baseAccelerationSlider .from )
1759+ baseAccelerationSlider .value = baseAccelerationSlider .from ;
1760+ else
1761+ baseAccelerationSlider .value = Math .round (value / baseAccelerationSlider .stepSize ) * baseAccelerationSlider .stepSize ;
1762+ }
1763+ text = baseAccelerationSlider .value / 100 ;
1764+ baseAccelerationSlider .update ();
1765+ }
1766+ Keys .onDownPressed : {
1767+ const value = Number (text) * 100 - baseAccelerationSlider .stepSize ;
1768+ if (value < baseAccelerationSlider .from )
1769+ baseAccelerationSlider .value = baseAccelerationSlider .from ;
1770+ else {
1771+ if (value > baseAccelerationSlider .to )
1772+ baseAccelerationSlider .value = baseAccelerationSlider .to ;
1773+ else
1774+ baseAccelerationSlider .value = Math .round (value / baseAccelerationSlider .stepSize ) * baseAccelerationSlider .stepSize ;
1775+ }
1776+ text = baseAccelerationSlider .value / 100 ;
1777+ baseAccelerationSlider .update ();
1778+ }
1779+ }
1780+ Label {
1781+ id: baseAccelerationLabel
1782+ text: qsTr (" Step acceleration <pre>%1</pre>" , " Step acceleration 1.15" ).arg ((baseAccelerationSlider .value / 100 ).toFixed (2 ))
1783+ visible: ! baseAccelerationDirectInput .editText
1784+ color: Kirigami .Theme .textColor
1785+ Layout .topMargin : 4
1786+ Layout .bottomMargin : - 14
1787+ Layout .rightMargin : 3
1788+ Layout .leftMargin : showSliderIcons ? 1 : 8
1789+ }
16341790 }
16351791 Slider {
16361792 id: baseAccelerationSlider
0 commit comments