diff --git a/ui/StatusQ/src/StatusQ/Components/StatusTimeStampLabel.qml b/ui/StatusQ/src/StatusQ/Components/StatusTimeStampLabel.qml
index 9b7ad9cc4b..8881570eef 100644
--- a/ui/StatusQ/src/StatusQ/Components/StatusTimeStampLabel.qml
+++ b/ui/StatusQ/src/StatusQ/Components/StatusTimeStampLabel.qml
@@ -1,4 +1,5 @@
-import QtQuick 2.14
+import QtQuick 2.15
+import QtQml 2.15
import StatusQ.Controls 0.1
import StatusQ.Core 0.1
@@ -12,7 +13,24 @@ StatusBaseText {
color: Theme.palette.baseColor1
font.pixelSize: 10
visible: !!text
- text: showFullTimestamp ? LocaleUtils.formatDateTime(timestamp) : LocaleUtils.formatRelativeTimestamp(timestamp)
+ text: d.formattedLabel
+
+ QtObject {
+ id: d
+ // initial value
+ property string formattedLabel: root.showFullTimestamp ? LocaleUtils.formatDateTime(root.timestamp) : LocaleUtils.formatRelativeTimestamp(root.timestamp)
+
+ // updates
+ Binding on formattedLabel {
+ when: !root.showFullTimestamp && root.timestamp && root.visible
+ value: {
+ StatusSharedUpdateTimer.secondsActive
+ return LocaleUtils.formatRelativeTimestamp(root.timestamp)
+ }
+ restoreMode: Binding.RestoreBinding
+ }
+ }
+
StatusToolTip {
id: tooltip
visible: hhandler.hovered && !!text
@@ -22,8 +40,8 @@ StatusBaseText {
id: hhandler
enabled: !root.showFullTimestamp
onHoveredChanged: {
- if(hhandler.hovered && timestamp) {
- tooltip.text = LocaleUtils.formatDateTime(timestamp)
+ if(hhandler.hovered && root.timestamp) {
+ tooltip.text = LocaleUtils.formatDateTime(root.timestamp)
}
}
}
diff --git a/ui/StatusQ/src/StatusQ/Core/StatusSharedUpdateTimer.qml b/ui/StatusQ/src/StatusQ/Core/StatusSharedUpdateTimer.qml
new file mode 100644
index 0000000000..f1177b1482
--- /dev/null
+++ b/ui/StatusQ/src/StatusQ/Core/StatusSharedUpdateTimer.qml
@@ -0,0 +1,29 @@
+pragma Singleton
+
+import QtQml 2.15
+
+QtObject {
+ id: root
+
+ readonly property alias secondsActive: d.secondsActive
+
+ signal triggered()
+
+ readonly property Timer d: Timer {
+ id: d
+ property int secondsActive: 0
+ interval: 1000
+ running: Qt.application.state === Qt.ApplicationActive
+ repeat: true
+ onTriggered: {
+ d.secondsActive++
+ root.triggered()
+ }
+ onRunningChanged: {
+ if (running) {
+ d.secondsActive++
+ root.triggered()
+ }
+ }
+ }
+}
diff --git a/ui/StatusQ/src/StatusQ/Core/qmldir b/ui/StatusQ/src/StatusQ/Core/qmldir
index 6e91506c3e..af754c9716 100644
--- a/ui/StatusQ/src/StatusQ/Core/qmldir
+++ b/ui/StatusQ/src/StatusQ/Core/qmldir
@@ -13,5 +13,6 @@ StatusModalHeaderSettings 0.1 StatusModalHeaderSettings.qml
StatusProfileImageSettings 0.1 StatusProfileImageSettings.qml
StatusRollArea 0.1 StatusRollArea.qml
StatusScrollView 0.1 StatusScrollView.qml
+singleton StatusSharedUpdateTimer 0.1 StatusSharedUpdateTimer.qml
StatusTooltipSettings 0.1 StatusTooltipSettings.qml
singleton LocaleUtils 0.1 LocaleUtils.qml
diff --git a/ui/StatusQ/src/statusq.qrc b/ui/StatusQ/src/statusq.qrc
index 86ec46c6b4..04a7af60e8 100644
--- a/ui/StatusQ/src/statusq.qrc
+++ b/ui/StatusQ/src/statusq.qrc
@@ -170,6 +170,7 @@
StatusQ/Core/StatusModalHeaderSettings.qml
StatusQ/Core/StatusProfileImageSettings.qml
StatusQ/Core/StatusRollArea.qml
+ StatusQ/Core/StatusSharedUpdateTimer.qml
StatusQ/Core/StatusScrollView.qml
StatusQ/Core/StatusTooltipSettings.qml
StatusQ/Core/Theme/StatusColors.qml