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:
vslg
2020-07-10 11:59:26 -03:00
committed by miruka
parent 43df8fd60b
commit 5abdc1f779
13 changed files with 111 additions and 81 deletions

View File

@@ -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()))
}
}
}

View File

@@ -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")

View File

@@ -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
}

View File

@@ -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)

View File

@@ -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)
)
}
}
}