diff --git a/src/qml/elements/RosterListItem.qml b/src/qml/elements/RosterListItem.qml index 0011f53..a3c0f4c 100644 --- a/src/qml/elements/RosterListItem.qml +++ b/src/qml/elements/RosterListItem.qml @@ -1,185 +1,154 @@ /* * Kaidan - A user-friendly XMPP client for every device! * * Copyright (C) 2016-2019 Kaidan developers and contributors * (see the LICENSE file for a full list of copyright authors) * * Kaidan is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * In addition, as a special exception, the author of Kaidan gives * permission to link the code of its release with the OpenSSL * project's "OpenSSL" library (or with modified versions of it that * use the same license as the "OpenSSL" library), and distribute the * linked executables. You must obey the GNU General Public License in * all respects for all of the code used other than "OpenSSL". If you * modify this file, you may extend this exception to your version of * the file, but you are not obligated to do so. If you do not wish to * do so, delete this exception statement from your version. * * Kaidan is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Kaidan. If not, see . */ import QtQuick 2.7 import QtQuick.Layouts 1.3 import QtQuick.Controls 2.3 as Controls import QtGraphicalEffects 1.0 import org.kde.kirigami 2.8 as Kirigami import im.kaidan.kaidan 1.0 Kirigami.SwipeListItem { id: listItem property string name property string jid property string lastMessage property int unreadMessages property string avatarImagePath property int presenceType property string statusMsg topPadding: 0 leftPadding: 0 bottomPadding: 0 height: Kirigami.Units.gridUnit * 3.5 RowLayout { spacing: Kirigami.Units.gridUnit * 0.5 // left border: presence Rectangle { id: presenceIndicator visible: presenceType !== Enums.PresInvisible width: Kirigami.Units.gridUnit * 0.3 height: parent.height color: Utils.presenceTypeToColor(presenceType) } // left: avatar Item { id: avatarSpace Layout.preferredHeight: parent.height - Kirigami.Units.gridUnit * 0.8 Layout.preferredWidth: parent.height - Kirigami.Units.gridUnit * 0.8 - Controls.ToolTip { - visible: hovered && !Kirigami.Settings.isMobile - delay: Qt.styleHints.mousePressAndHoldInterval - text: generateToolTipText(listItem.name, listItem.jid, - listItem.presenceType, listItem.statusMsg) - } - Avatar { id: avatar anchors.fill: parent avatarUrl: avatarImagePath name: listItem.name width: height } } // right side ColumnLayout { spacing: Kirigami.Units.smallSpacing Layout.fillWidth: true // contact name RowLayout { Kirigami.Heading { text: name textFormat: Text.PlainText elide: Text.ElideRight maximumLineCount: 1 level: 3 Layout.fillWidth: true Layout.maximumHeight: Kirigami.Units.gridUnit * 1.5 } // muted-icon Kirigami.Icon { id: muteIcon source: "audio-volume-muted-symbolic" width: 16 height: 16 visible: kaidan.notificationsMuted(jid) } Item { Layout.fillWidth: true } } // bottom RowLayout { Layout.fillWidth: true Controls.Label { Layout.fillWidth: true elide: Text.ElideRight maximumLineCount: 1 text: { presenceType === Enums.PresError ? // error presence type qsTr("Error: Please check the JID.") : Utils.removeNewLinesFromString(lastMessage) } textFormat: Text.PlainText font.pixelSize: Kirigami.Units.gridUnit * 0.8 } } } // unread message counter MessageCounter { id: counter visible: unreadMessages > 0 counter: unreadMessages muted: kaidan.notificationsMuted(jid) Layout.preferredHeight: Kirigami.Units.gridUnit * 1.25 Layout.preferredWidth: Kirigami.Units.gridUnit * 1.25 } } - /** - * Generates a styled text telling some basic information about the contact, - * is used for a tooltip - */ - function generateToolTipText(name, jid, statusType, statusMsg) { - // header (contact name) - var string = "

" + name + "

" - // in small: JID (only if differs name) - if (name !== jid) { - string += "
" + jid + "
" - } - - // presence status type - string += "" - string += Utils.presenceTypeToText(statusType) - string += "" - - // presence status message - if (statusMsg !== "") { - string += ": " + statusMsg - } - return string - } - function handleNotificationsMuted(mutedContact) { counter.muted = kaidan.notificationsMuted(jid) muteIcon.visible = kaidan.notificationsMuted(jid) } Component.onCompleted: { kaidan.notificationsMutedChanged.connect(handleNotificationsMuted) } Component.onDestruction: { kaidan.notificationsMutedChanged.disconnect(handleNotificationsMuted) } }