Proper display name retrieval implementation
For any name not found in rooms data, rely on new nio.HttpClient.get_displayname() function to get and cache it, e.g. for our own name if no room is joined and past events from users who left the room. @futurize now returns PyQtFuture objects, wrapper for the concurrent.futures.Future objects that can be used from QML, to ensure name retrieval does not block the GUI.
This commit is contained in:
@@ -4,10 +4,15 @@ import QtQuick.Layouts 1.4
|
||||
|
||||
Item {
|
||||
property bool invisible: false
|
||||
property var name: null
|
||||
property var name: null // null, string or PyQtFuture
|
||||
property var imageSource: null
|
||||
property int dimmension: 48
|
||||
|
||||
readonly property string resolved_name:
|
||||
! name ? "?" :
|
||||
typeof(name) == "string" ? name :
|
||||
(name.value ? name.value : "?")
|
||||
|
||||
id: "root"
|
||||
width: dimmension
|
||||
height: invisible ? 1 : dimmension
|
||||
@@ -16,13 +21,13 @@ Item {
|
||||
id: "letterRectangle"
|
||||
anchors.fill: parent
|
||||
visible: ! invisible && imageSource === null
|
||||
color: name ?
|
||||
Qt.hsla(Backend.hueFromString(name), 0.22, 0.5, 1) :
|
||||
Qt.hsla(0, 0, 0.22, 1)
|
||||
color: resolved_name === "?" ?
|
||||
Qt.hsla(0, 0, 0.22, 1) :
|
||||
Qt.hsla(Backend.hueFromString(resolved_name), 0.22, 0.5, 1)
|
||||
|
||||
HLabel {
|
||||
anchors.centerIn: parent
|
||||
text: name ? name.charAt(0) : "?"
|
||||
text: resolved_name.charAt(0)
|
||||
color: "white"
|
||||
font.pixelSize: letterRectangle.height / 1.4
|
||||
}
|
||||
|
Reference in New Issue
Block a user