fix: timestamp shows yesterday for a message received 3 days ago
- 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
This commit is contained in:
parent
a463c335ae
commit
f7781525ff
|
@ -1,4 +1,5 @@
|
||||||
import QtQuick 2.14
|
import QtQuick 2.15
|
||||||
|
import QtQml 2.15
|
||||||
|
|
||||||
import StatusQ.Controls 0.1
|
import StatusQ.Controls 0.1
|
||||||
import StatusQ.Core 0.1
|
import StatusQ.Core 0.1
|
||||||
|
@ -12,7 +13,24 @@ StatusBaseText {
|
||||||
color: Theme.palette.baseColor1
|
color: Theme.palette.baseColor1
|
||||||
font.pixelSize: 10
|
font.pixelSize: 10
|
||||||
visible: !!text
|
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 {
|
StatusToolTip {
|
||||||
id: tooltip
|
id: tooltip
|
||||||
visible: hhandler.hovered && !!text
|
visible: hhandler.hovered && !!text
|
||||||
|
@ -22,8 +40,8 @@ StatusBaseText {
|
||||||
id: hhandler
|
id: hhandler
|
||||||
enabled: !root.showFullTimestamp
|
enabled: !root.showFullTimestamp
|
||||||
onHoveredChanged: {
|
onHoveredChanged: {
|
||||||
if(hhandler.hovered && timestamp) {
|
if(hhandler.hovered && root.timestamp) {
|
||||||
tooltip.text = LocaleUtils.formatDateTime(timestamp)
|
tooltip.text = LocaleUtils.formatDateTime(root.timestamp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,5 +13,6 @@ StatusModalHeaderSettings 0.1 StatusModalHeaderSettings.qml
|
||||||
StatusProfileImageSettings 0.1 StatusProfileImageSettings.qml
|
StatusProfileImageSettings 0.1 StatusProfileImageSettings.qml
|
||||||
StatusRollArea 0.1 StatusRollArea.qml
|
StatusRollArea 0.1 StatusRollArea.qml
|
||||||
StatusScrollView 0.1 StatusScrollView.qml
|
StatusScrollView 0.1 StatusScrollView.qml
|
||||||
|
singleton StatusSharedUpdateTimer 0.1 StatusSharedUpdateTimer.qml
|
||||||
StatusTooltipSettings 0.1 StatusTooltipSettings.qml
|
StatusTooltipSettings 0.1 StatusTooltipSettings.qml
|
||||||
singleton LocaleUtils 0.1 LocaleUtils.qml
|
singleton LocaleUtils 0.1 LocaleUtils.qml
|
||||||
|
|
|
@ -170,6 +170,7 @@
|
||||||
<file>StatusQ/Core/StatusModalHeaderSettings.qml</file>
|
<file>StatusQ/Core/StatusModalHeaderSettings.qml</file>
|
||||||
<file>StatusQ/Core/StatusProfileImageSettings.qml</file>
|
<file>StatusQ/Core/StatusProfileImageSettings.qml</file>
|
||||||
<file>StatusQ/Core/StatusRollArea.qml</file>
|
<file>StatusQ/Core/StatusRollArea.qml</file>
|
||||||
|
<file>StatusQ/Core/StatusSharedUpdateTimer.qml</file>
|
||||||
<file>StatusQ/Core/StatusScrollView.qml</file>
|
<file>StatusQ/Core/StatusScrollView.qml</file>
|
||||||
<file>StatusQ/Core/StatusTooltipSettings.qml</file>
|
<file>StatusQ/Core/StatusTooltipSettings.qml</file>
|
||||||
<file>StatusQ/Core/Theme/StatusColors.qml</file>
|
<file>StatusQ/Core/Theme/StatusColors.qml</file>
|
||||||
|
|
Loading…
Reference in New Issue