Bug fix and minor improvements
Improvements: - Add instant feedback upon setting a different presence for account (local echo) - Sort room members by power level and then presence - Periodically update members' `last_acitve_at` field on the room pane - Move status message field up on account context menu, and put invisible before offline again Bug fix: - Do not try to override presence set from another client, accept it
This commit is contained in:
@@ -71,12 +71,13 @@ HAvatar {
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.right: parent.right
|
||||
radius: diameter / 2
|
||||
opacity: presence.includes("echo") ? 0.4 : 1
|
||||
|
||||
color:
|
||||
presence === "online" ?
|
||||
presence.includes("online") ?
|
||||
theme.controls.presence.online :
|
||||
|
||||
presence === "unavailable" ?
|
||||
presence.includes("unavailable") ?
|
||||
theme.controls.presence.unavailable :
|
||||
|
||||
theme.controls.presence.offline
|
||||
@@ -84,6 +85,9 @@ HAvatar {
|
||||
border.color: theme.controls.presence.border
|
||||
border.width: diameter / 10
|
||||
|
||||
Behavior on color { HColorAnimation {} }
|
||||
Behavior on opacity { HNumberAnimation {} }
|
||||
|
||||
HoverHandler { id: presenceHover }
|
||||
|
||||
HToolTip {
|
||||
|
@@ -21,38 +21,6 @@ HMenu {
|
||||
}
|
||||
|
||||
|
||||
HMenuItem {
|
||||
icon.name: "presence"
|
||||
icon.color: theme.controls.presence.online
|
||||
text: qsTr("Online")
|
||||
onTriggered: setPresence("online")
|
||||
}
|
||||
|
||||
HMenuItem {
|
||||
enabled: presence
|
||||
icon.name: "presence-busy"
|
||||
icon.color: theme.controls.presence.unavailable
|
||||
text: qsTr("Unavailable")
|
||||
onTriggered: setPresence("unavailable")
|
||||
}
|
||||
|
||||
HMenuItem {
|
||||
icon.name: "presence-offline"
|
||||
icon.color: theme.controls.presence.offline
|
||||
text: qsTr("Offline")
|
||||
onTriggered: setPresence("offline")
|
||||
}
|
||||
|
||||
HMenuItem {
|
||||
enabled: presence
|
||||
icon.name: "presence-invisible"
|
||||
icon.color: theme.controls.presence.offline
|
||||
text: qsTr("Invisible")
|
||||
onTriggered: setPresence("invisible")
|
||||
}
|
||||
|
||||
HMenuSeparator { }
|
||||
|
||||
HLabeledItem {
|
||||
id: statusMsgLabel
|
||||
enabled: presence && presence !== "offline"
|
||||
@@ -95,6 +63,38 @@ HMenu {
|
||||
}
|
||||
}
|
||||
|
||||
HMenuSeparator { }
|
||||
|
||||
HMenuItem {
|
||||
icon.name: "presence"
|
||||
icon.color: theme.controls.presence.online
|
||||
text: qsTr("Online")
|
||||
onTriggered: setPresence("online")
|
||||
}
|
||||
|
||||
HMenuItem {
|
||||
enabled: presence
|
||||
icon.name: "presence-busy"
|
||||
icon.color: theme.controls.presence.unavailable
|
||||
text: qsTr("Unavailable")
|
||||
onTriggered: setPresence("unavailable")
|
||||
}
|
||||
|
||||
HMenuItem {
|
||||
enabled: presence
|
||||
icon.name: "presence-invisible"
|
||||
icon.color: theme.controls.presence.offline
|
||||
text: qsTr("Invisible")
|
||||
onTriggered: setPresence("invisible")
|
||||
}
|
||||
|
||||
HMenuItem {
|
||||
icon.name: "presence-offline"
|
||||
icon.color: theme.controls.presence.offline
|
||||
text: qsTr("Offline")
|
||||
onTriggered: setPresence("offline")
|
||||
}
|
||||
|
||||
HMenuSeparator {
|
||||
visible: statusMsgLabel.visible
|
||||
height: visible ? implicitHeight : 0
|
||||
|
@@ -44,11 +44,25 @@ HTile {
|
||||
|
||||
TitleRightInfoLabel {
|
||||
tile: member
|
||||
text:
|
||||
model.presence !== "online" &&
|
||||
model.last_active_ago !== -1 ?
|
||||
utils.formatRelativeTime(model.last_active_ago) :
|
||||
""
|
||||
visible: presenceTimer.running
|
||||
|
||||
Timer {
|
||||
id: presenceTimer
|
||||
running:
|
||||
! model.currently_active &&
|
||||
model.last_active_at > new Date(1)
|
||||
repeat: true
|
||||
interval:
|
||||
new Date() - model.last_active_at < 60000 ?
|
||||
10000 :
|
||||
60000
|
||||
triggeredOnStart: true
|
||||
onTriggered: parent.text = Qt.binding(() =>
|
||||
utils.formatRelativeTime(
|
||||
new Date() - model.last_active_at
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user