Fix changes requested (#101)
- Fix code formatting issues. - Document `Presence`. - Improve `Presence.__lt__()` performance by defining a dict outside the method. - Make presence ball radius relative to uiScale and configurable from theme.
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Shapes 1.12
|
||||
|
||||
HAvatar {
|
||||
name: displayName || userId.substring(1) // no leading @
|
||||
@@ -62,8 +61,10 @@ HAvatar {
|
||||
opacity: theme.controls.presence.opacity
|
||||
z: 100
|
||||
|
||||
property bool small: window.settings.compactMode
|
||||
property int diameter: small ? 10 : 15
|
||||
property int diameter:
|
||||
window.settings.compactMode ?
|
||||
theme.controls.presence.radius * 2 :
|
||||
theme.controls.presence.radius * 2.5
|
||||
|
||||
sourceComponent: Rectangle {
|
||||
width: diameter
|
||||
@@ -83,7 +84,7 @@ HAvatar {
|
||||
theme.controls.presence.offline
|
||||
|
||||
border.color: theme.controls.presence.border
|
||||
border.width: diameter / 10
|
||||
border.width: Math.ceil(diameter / 10)
|
||||
|
||||
Behavior on color { HColorAnimation {} }
|
||||
Behavior on opacity { HNumberAnimation {} }
|
||||
@@ -91,8 +92,8 @@ HAvatar {
|
||||
HoverHandler { id: presenceHover }
|
||||
|
||||
HToolTip {
|
||||
visible: presenceHover.hovered
|
||||
text: presence.replace(/^\w/, c => c.toUpperCase())
|
||||
visible: presenceHover.hovered && ! presence.includes("echo")
|
||||
text: qsTr(presence.replace(/^\w/, c => c.toUpperCase()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -16,7 +16,7 @@ HMenu {
|
||||
onOpened: statusText.forceActiveFocus()
|
||||
|
||||
|
||||
function setPresence(presence, statusMsg = undefined) {
|
||||
function setPresence(presence, statusMsg=undefined) {
|
||||
py.callClientCoro(userId, "set_presence", [presence, statusMsg])
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ HMenu {
|
||||
}
|
||||
|
||||
defaultText: statusMsg
|
||||
placeholderText: ! presence ? "Unsupported server" : ""
|
||||
placeholderText: presence ? "" : "Unsupported server"
|
||||
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
@@ -66,7 +66,7 @@ HMenu {
|
||||
HMenuSeparator { }
|
||||
|
||||
HMenuItem {
|
||||
icon.name: "presence"
|
||||
icon.name: "presence-online"
|
||||
icon.color: theme.controls.presence.online
|
||||
text: qsTr("Online")
|
||||
onTriggered: setPresence("online")
|
||||
|
@@ -163,11 +163,11 @@ HTile {
|
||||
|
||||
contextMenu: AccountContextMenu {
|
||||
userId: model.id
|
||||
statusMsg: model.status_msg
|
||||
presence:
|
||||
model.presence_support || model.presence === "offline" ?
|
||||
model.presence :
|
||||
null
|
||||
statusMsg: model.status_msg
|
||||
}
|
||||
|
||||
|
||||
|
@@ -185,7 +185,7 @@ HTile {
|
||||
readonly property ListModel eventModel:
|
||||
ModelStore.get(model.for_account, model.id, "events")
|
||||
|
||||
// TODO: binding loop
|
||||
// FIXME: binding loop
|
||||
readonly property QtObject accountModel:
|
||||
ModelStore.get("accounts").find(model.for_account)
|
||||
|
||||
|
@@ -43,26 +43,9 @@ HTile {
|
||||
}
|
||||
|
||||
TitleRightInfoLabel {
|
||||
id: lastActiveAt
|
||||
tile: member
|
||||
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
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,6 +67,20 @@ HTile {
|
||||
""
|
||||
)
|
||||
}
|
||||
|
||||
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: lastActiveAt.text = Qt.binding(() =>
|
||||
utils.formatRelativeTime(new Date() - model.last_active_at)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user