Skip to content

Commit

Permalink
fix: timestamp shows yesterday for a message received 3 days ago
Browse files Browse the repository at this point in the history
- introduce one global update timer, to be used in various components
for date/time sensitive updates (StatusSharedUpdateTimer)
- this timer runs only when the app is/becomes active
- use the timer's `triggered()` signal to update the timestamp label
when needed; ie. if it's to display a relative timestamp and it's
currently visible

Fixes #11460
  • Loading branch information
caybro committed Feb 12, 2024
1 parent 4b24497 commit 62e0568
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 4 deletions.
26 changes: 22 additions & 4 deletions ui/StatusQ/src/StatusQ/Components/StatusTimeStampLabel.qml
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand All @@ -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)
}
}
}
Expand Down
24 changes: 24 additions & 0 deletions ui/StatusQ/src/StatusQ/Core/StatusSharedUpdateTimer.qml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
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
triggeredOnStart: true
onTriggered: {
d.secondsActive++
root.triggered()
}
}
}
1 change: 1 addition & 0 deletions ui/StatusQ/src/StatusQ/Core/qmldir
Original file line number Diff line number Diff line change
Expand Up @@ -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
1 change: 1 addition & 0 deletions ui/StatusQ/src/statusq.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@
<file>StatusQ/Core/StatusModalHeaderSettings.qml</file>
<file>StatusQ/Core/StatusProfileImageSettings.qml</file>
<file>StatusQ/Core/StatusRollArea.qml</file>
<file>StatusQ/Core/StatusSharedUpdateTimer.qml</file>
<file>StatusQ/Core/StatusScrollView.qml</file>
<file>StatusQ/Core/StatusTooltipSettings.qml</file>
<file>StatusQ/Core/Theme/StatusColors.qml</file>
Expand Down

0 comments on commit 62e0568

Please sign in to comment.