Filtering on history!
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Ad5001 2022-02-01 09:59:31 +01:00
parent 600027a707
commit 3f107f1ba4
Signed by: Ad5001
GPG key ID: EF45F9C6AFE20160
4 changed files with 138 additions and 91 deletions

View file

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

View file

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

View file

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

View file

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