diff --git a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/History/HistoryBrowser.qml b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/History/HistoryBrowser.qml index 40b7690..bebaa02 100644 --- a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/History/HistoryBrowser.qml +++ b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/History/HistoryBrowser.qml @@ -18,6 +18,7 @@ import QtQuick.Controls 2.12 import QtQuick 2.12 +import eu.ad5001.LogarithmPlotter.Setting 1.0 as Setting import "../js/utils.js" as Utils @@ -32,11 +33,9 @@ import "../js/utils.js" as Utils \sa LogarithmPlotter, Settings, ObjectLists */ -ScrollView { +Item { id: historyBrowser - ScrollBar.horizontal.visible: false - /*! \qmlproperty int HistoryBrowser::actionWidth Width of the actions. @@ -49,89 +48,108 @@ ScrollView { */ property bool darkTheme: isDarkTheme() - Flickable { - width: parent.width - height: parent.height - contentHeight: redoColumn.height + nowRect.height + undoColumn.height - contentWidth: parent.width + Setting.TextSetting { + id: filterInput + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + placeholderText: "Filter..." + } + + ScrollView { + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + anchors.top: filterInput.bottom + + ScrollBar.horizontal.visible: false - Column { - id: redoColumn - anchors.right: parent.right - anchors.top: parent.top - width: actionWidth - - Repeater { - model: history.redoCount - - HistoryItem { - id: redoButton - width: actionWidth - //height: actionHeight - isRedo: true - idx: index - darkTheme: historyBrowser.darkTheme - } - } - } - - Text { - anchors.left: parent.left - anchors.bottom: nowRect.top - text: qsTr("Redo >") - color: sysPaletteIn.windowText - transform: Rotation { origin.x: 30; origin.y: 30; angle: 270} - height: 70 - width: 20 - visible: history.redoCount > 0 - } - - Rectangle { - id: nowRect - anchors.right: parent.right - anchors.top: redoColumn.bottom - width: actionWidth - height: 40 - color: sysPalette.highlight - Text { - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - anchors.leftMargin: 5 - text: qsTr("> Now") - color: sysPalette.windowText - } - } - - Column { - id: undoColumn - anchors.right: parent.right - anchors.top: nowRect.bottom - width: actionWidth - - Repeater { - model: history.undoCount + Flickable { + width: parent.width + height: parent.height + contentHeight: redoColumn.height + nowRect.height + undoColumn.height + contentWidth: parent.width + Column { + id: redoColumn + anchors.right: parent.right + anchors.top: parent.top + width: actionWidth - HistoryItem { - id: undoButton - width: actionWidth - //height: actionHeight - isRedo: false - idx: index - darkTheme: historyBrowser.darkTheme + Repeater { + model: history.redoCount + + HistoryItem { + id: redoButton + width: actionWidth + //height: actionHeight + isRedo: true + idx: index + darkTheme: historyBrowser.darkTheme + hidden: !(filterInput.value == "" || content.includes(filterInput.value)) + } } } - } - - Text { - anchors.left: parent.left - anchors.top: undoColumn.top - text: qsTr("< Undo") - color: sysPaletteIn.windowText - transform: Rotation { origin.x: 30; origin.y: 30; angle: 270} - height: 60 - width: 20 - visible: history.undoCount > 0 + + Text { + anchors.left: parent.left + anchors.bottom: nowRect.top + text: qsTr("Redo >") + color: sysPaletteIn.windowText + transform: Rotation { origin.x: 30; origin.y: 30; angle: 270} + height: 70 + width: 20 + visible: history.redoCount > 0 + } + + Rectangle { + id: nowRect + anchors.right: parent.right + anchors.top: redoColumn.bottom + width: actionWidth + height: 40 + color: sysPalette.highlight + Text { + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + anchors.leftMargin: 5 + text: qsTr("> Now") + color: sysPalette.windowText + } + } + + Column { + id: undoColumn + anchors.right: parent.right + anchors.top: nowRect.bottom + width: actionWidth + + Repeater { + model: history.undoCount + + + HistoryItem { + id: undoButton + width: actionWidth + //height: actionHeight + isRedo: false + idx: index + darkTheme: historyBrowser.darkTheme + hidden: !(filterInput.value == "" || content.includes(filterInput.value)) + } + } + } + + Text { + anchors.left: parent.left + anchors.top: undoColumn.top + text: qsTr("< Undo") + color: sysPaletteIn.windowText + transform: Rotation { origin.x: 30; origin.y: 30; angle: 270} + height: 60 + width: 20 + visible: history.undoCount > 0 + } } } diff --git a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/History/HistoryItem.qml b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/History/HistoryItem.qml index 7a1ac60..81a7803 100644 --- a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/History/HistoryItem.qml +++ b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/History/HistoryItem.qml @@ -49,10 +49,15 @@ Button { */ property int idx /*! - \qmlproperty int HistoryItem::idx + \qmlproperty bool HistoryItem::darkTheme true when the system is running with a dark theme, false otherwise. */ property bool darkTheme + /*! + \qmlproperty bool HistoryItem::hidden + true when the item is filtered out, false otherwise. + */ + property bool hidden: false /*! \qmlproperty int HistoryItem::historyAction Associated history action. @@ -69,12 +74,18 @@ Button { Color of the history action. */ readonly property color clr: historyAction.color(darkTheme) + /*! + \qmlproperty string HistoryItem::clr + Label description of the history item. + */ + readonly property string content: historyAction.getReadableString() - height: Math.max(actionHeight, label.height + 15) + height: hidden ? 8 : Math.max(actionHeight, label.height + 15) LinearGradient { anchors.fill: parent + visible: !hidden start: Qt.point(0, 0) end: Qt.point(parent.width, 0) gradient: Gradient { @@ -85,11 +96,12 @@ Button { Setting.Icon { id: icon - width: 18 - height: 18 anchors.left: parent.left anchors.leftMargin: 6 anchors.verticalCenter: parent.verticalCenter + visible: !hidden + width: 18 + height: 18 color: sysPalette.windowText source: `../icons/history/${historyAction.icon()}.svg` @@ -102,6 +114,7 @@ Button { anchors.leftMargin: 6 anchors.rightMargin: 20 anchors.verticalCenter: parent.verticalCenter + visible: !hidden font.pixelSize: 14 text: historyAction.getHTMLString().replace(/\$\{tag_color\}/g, clr) textFormat: Text.RichText @@ -109,11 +122,21 @@ Button { wrapMode: Text.WordWrap } - //text: historyAction.getReadableString() + Rectangle { + id: hiddenDot + anchors.centerIn: parent + visible: hidden + width: 5 + height: 5 + radius: 5 + color: sysPalette.windowText + } + + //text: content ToolTip.visible: hovered ToolTip.delay: 200 - ToolTip.text: historyAction.getReadableString() + ToolTip.text: content onClicked: { if(isRedo) diff --git a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/ObjectLists/ObjectLists.qml b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/ObjectLists/ObjectLists.qml index 4c5dc44..ca3af19 100644 --- a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/ObjectLists/ObjectLists.qml +++ b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/ObjectLists/ObjectLists.qml @@ -77,7 +77,7 @@ ListView { Label { id: typeHeaderText verticalAlignment: TextInput.AlignVCenter - text: Objects.types[objType].displayTypeMultiple() + ":" + text: qsTranslate("control", "%1: ").arg(Objects.types[objType].displayTypeMultiple()) font.pixelSize: 20 } } diff --git a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/Setting/TextSetting.qml b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/Setting/TextSetting.qml index cb2bc45..6c1c355 100644 --- a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/Setting/TextSetting.qml +++ b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/Setting/TextSetting.qml @@ -63,6 +63,11 @@ Item { Value of the input. */ property alias value: input.text + /*! + \qmlproperty string TextSetting::placeholderText + Value of the input. + */ + property alias placeholderText: input.placeholderText /*! \qmlproperty string TextSetting::label Label of the setting. @@ -92,7 +97,8 @@ Item { anchors.top: parent.top verticalAlignment: TextInput.AlignVCenter //color: sysPalette.windowText - text: qsTranslate("control", "%1: ").arg(control.label) + text: visible ? qsTranslate("control", "%1: ").arg(control.label) : "" + visible: control.label != "" } @@ -101,10 +107,10 @@ Item { anchors.top: parent.top anchors.left: labelItem.right anchors.leftMargin: 5 - width: control.width - labelItem.width - iconLabel.width - 10 + width: control.width - (labelItem.visible ? labelItem.width + 5 : 0) - iconLabel.width - 5 height: parent.height verticalAlignment: TextInput.AlignVCenter - horizontalAlignment: TextInput.AlignHCenter + horizontalAlignment: control.label == "" ? TextInput.AlignLeft : TextInput.AlignHCenter color: sysPalette.windowText focus: true text: control.defValue