2019-08-18 17:27:00 +10:00
|
|
|
import QtQuick 2.12
|
|
|
|
import QtQuick.Layouts 1.12
|
|
|
|
import "../Base"
|
2019-09-10 02:57:40 +10:00
|
|
|
import "../utils.js" as Utils
|
2019-08-18 17:27:00 +10:00
|
|
|
|
2019-08-21 18:39:07 +10:00
|
|
|
HTileDelegate {
|
2019-08-18 17:27:00 +10:00
|
|
|
id: accountDelegate
|
2019-08-21 18:39:07 +10:00
|
|
|
spacing: 0
|
|
|
|
topPadding: model.index > 0 ? sidePane.currentSpacing / 2 : 0
|
|
|
|
bottomPadding: topPadding
|
|
|
|
backgroundColor: theme.sidePane.account.background
|
|
|
|
opacity: collapsed && ! forceExpand ?
|
|
|
|
theme.sidePane.account.collapsedOpacity : 1
|
2019-08-18 17:27:00 +10:00
|
|
|
|
2019-08-21 20:02:00 +10:00
|
|
|
shouldBeCurrent:
|
|
|
|
window.uiState.page == "Pages/EditAccount/EditAccount.qml" &&
|
|
|
|
window.uiState.pageProperties.userId == model.data.user_id
|
2019-08-20 04:28:12 +10:00
|
|
|
|
2019-08-31 00:56:38 +10:00
|
|
|
setCurrentTimer.running:
|
2019-08-31 01:05:11 +10:00
|
|
|
! sidePaneList.activateLimiter.running && ! sidePane.hasFocus
|
2019-08-24 00:53:54 +10:00
|
|
|
|
2019-08-18 17:27:00 +10:00
|
|
|
|
2019-08-21 18:39:07 +10:00
|
|
|
Behavior on opacity { HNumberAnimation {} }
|
|
|
|
|
|
|
|
|
2019-08-22 07:45:05 +10:00
|
|
|
property bool disconnecting: false
|
2019-08-31 01:05:11 +10:00
|
|
|
readonly property bool forceExpand: Boolean(sidePaneList.filter)
|
2019-08-20 00:28:49 +10:00
|
|
|
|
2019-08-20 04:06:11 +10:00
|
|
|
// Hide harmless error when a filter matches nothing
|
|
|
|
readonly property bool collapsed: try {
|
2019-08-31 01:05:11 +10:00
|
|
|
return sidePaneList.collapseAccounts[model.data.user_id] || false
|
2019-08-20 04:06:11 +10:00
|
|
|
} catch (err) {}
|
2019-08-20 00:28:49 +10:00
|
|
|
|
2019-08-18 17:27:00 +10:00
|
|
|
|
2019-08-22 07:45:05 +10:00
|
|
|
onActivated: if (! disconnecting) {
|
|
|
|
pageLoader.showPage(
|
|
|
|
"EditAccount/EditAccount", { "userId": model.data.user_id }
|
|
|
|
)
|
|
|
|
}
|
2019-08-20 03:09:05 +10:00
|
|
|
|
|
|
|
|
2019-08-18 17:27:00 +10:00
|
|
|
function toggleCollapse() {
|
|
|
|
window.uiState.collapseAccounts[model.data.user_id] = ! collapsed
|
|
|
|
window.uiStateChanged()
|
|
|
|
}
|
|
|
|
|
2019-08-20 03:09:05 +10:00
|
|
|
|
2019-08-21 18:39:07 +10:00
|
|
|
image: HUserAvatar {
|
2019-11-04 04:48:12 +11:00
|
|
|
clientUserId: model.data.user_id
|
2019-08-21 18:39:07 +10:00
|
|
|
userId: model.data.user_id
|
|
|
|
displayName: model.data.display_name
|
2019-11-04 04:48:12 +11:00
|
|
|
mxc: model.data.avatar_url
|
2019-08-21 04:29:03 +10:00
|
|
|
}
|
|
|
|
|
2019-08-21 18:39:07 +10:00
|
|
|
title.color: theme.sidePane.account.name
|
|
|
|
title.text: model.data.display_name || model.data.user_id
|
|
|
|
title.font.pixelSize: theme.fontSize.big
|
|
|
|
title.leftPadding: sidePane.currentSpacing
|
|
|
|
|
2019-11-07 21:44:53 +11:00
|
|
|
HButton {
|
|
|
|
id: addChat
|
|
|
|
iconItem.dimension: 16
|
2019-11-10 02:10:00 +11:00
|
|
|
icon.name: "add-chat"
|
2019-11-07 21:44:53 +11:00
|
|
|
backgroundColor: "transparent"
|
|
|
|
toolTip.text: qsTr("Add new chat")
|
2019-11-08 02:08:47 +11:00
|
|
|
onClicked: pageLoader.showPage(
|
|
|
|
"AddChat/AddChat", {userId: model.data.user_id},
|
|
|
|
)
|
2019-11-07 21:44:53 +11:00
|
|
|
|
|
|
|
leftPadding: theme.spacing / 2
|
|
|
|
rightPadding: leftPadding
|
|
|
|
|
|
|
|
visible: opacity > 0
|
|
|
|
opacity: expand.loading ? 0 : 1
|
|
|
|
|
|
|
|
Layout.fillHeight: true
|
|
|
|
|
|
|
|
Behavior on opacity { HNumberAnimation {} }
|
|
|
|
}
|
|
|
|
|
2019-08-21 18:39:07 +10:00
|
|
|
HButton {
|
|
|
|
id: expand
|
2019-08-28 05:00:50 +10:00
|
|
|
loading: ! model.data.first_sync_done || ! model.data.profile_updated
|
2019-11-10 02:10:00 +11:00
|
|
|
iconItem.dimension: addChat.iconItem.dimension
|
2019-08-22 05:45:13 +10:00
|
|
|
icon.name: "expand"
|
2019-08-21 18:39:07 +10:00
|
|
|
backgroundColor: "transparent"
|
2019-08-22 23:27:26 +10:00
|
|
|
toolTip.text: collapsed ? qsTr("Expand") : qsTr("Collapse")
|
2019-08-21 18:39:07 +10:00
|
|
|
onClicked: accountDelegate.toggleCollapse()
|
|
|
|
|
2019-11-07 21:44:53 +11:00
|
|
|
leftPadding: theme.spacing / 2
|
|
|
|
rightPadding: leftPadding
|
|
|
|
|
2019-08-21 18:39:07 +10:00
|
|
|
visible: opacity > 0
|
2019-08-28 05:00:50 +10:00
|
|
|
opacity: ! loading && accountDelegate.forceExpand ? 0 : 1
|
2019-08-21 18:39:07 +10:00
|
|
|
|
2019-11-07 21:44:53 +11:00
|
|
|
Layout.fillHeight: true
|
|
|
|
|
2019-08-22 05:45:13 +10:00
|
|
|
iconItem.transform: Rotation {
|
2019-11-07 21:44:53 +11:00
|
|
|
origin.x: expand.iconItem.width / 2
|
|
|
|
origin.y: expand.iconItem.height / 2
|
2019-08-28 05:00:50 +10:00
|
|
|
angle: expand.loading ? 0 : collapsed ? 180 : 90
|
2019-08-21 18:39:07 +10:00
|
|
|
|
|
|
|
Behavior on angle { HNumberAnimation {} }
|
2019-08-20 08:32:43 +10:00
|
|
|
}
|
2019-08-18 17:27:00 +10:00
|
|
|
|
2019-08-21 18:39:07 +10:00
|
|
|
Behavior on opacity { HNumberAnimation {} }
|
2019-08-18 17:27:00 +10:00
|
|
|
}
|
2019-08-22 07:45:05 +10:00
|
|
|
|
|
|
|
contextMenu: HMenu {
|
|
|
|
HMenuItem {
|
|
|
|
icon.name: "logout"
|
2019-08-29 08:21:13 +10:00
|
|
|
icon.color: theme.colors.negativeBackground
|
2019-08-22 07:45:05 +10:00
|
|
|
text: qsTr("Logout")
|
2019-09-10 02:57:40 +10:00
|
|
|
onTriggered: Utils.makePopup(
|
|
|
|
"Popups/LogoutPopup.qml",
|
|
|
|
mainUI,
|
|
|
|
{ "userId": model.data.user_id },
|
|
|
|
popup => { popup.ok.connect(() => { disconnecting = true }) },
|
|
|
|
)
|
2019-08-22 07:45:05 +10:00
|
|
|
}
|
|
|
|
}
|
2019-08-18 17:27:00 +10:00
|
|
|
}
|