moment/src/gui/Pages/Chat/RoomPane/RoomPane.qml

112 lines
3.0 KiB
QML

// SPDX-License-Identifier: LGPL-3.0-or-later
import QtQuick 2.12
import "../../../Base"
import "../../.."
import "MemberView"
MultiviewPane {
id: roomPane
readonly property QtObject accountModel:
ModelStore.get("accounts").find(chat.roomInfo.for_account)
function toggleFocus() {
if (roomPane.activeFocus) {
if (roomPane.collapse) roomPane.close()
pageLoader.takeFocus()
return
}
roomPane.forceCollapse = false
roomPane.open()
swipeView.currentItem.keybindFocusItem.forceActiveFocus()
}
saveName: "roomPane"
edge: Qt.RightEdge
defaultSize:
(buttonRepeater.count - (roomPane.collapse ? 0 : 1)) * buttonWidth
buttonWidth:
buttonRepeater.count >= 1 ? buttonRepeater.itemAt(1).implicitWidth : 0
requireDefaultSize:
swipeView.currentIndex !== 0 ||
swipeView.currentItem.viewDepth > 1 ||
swipeView.currentItem.filterField.activeFocus
buttonsBackgroundColor: theme.chat.roomPane.topBar.background
background: Rectangle { color: theme.chat.roomPane.background }
buttonRepeater.model: [
"back", "members", "files", "notifications", "history", "settings"
]
buttonRepeater.delegate: HButton {
visible: width > 0
width: modelData === "back" && ! roomPane.collapse ? 0 : implicitWidth
height: theme.baseElementsHeight
backgroundColor: "transparent"
icon.name:
modelData === "back" ?
"go-back-to-chat-from-room-pane" : "room-view-" + modelData
toolTip.text:
modelData === "back" ?
qsTr("Go back to chat") :
qsTr(modelData.charAt(0).toUpperCase() + modelData.slice(1))
autoExclusive: true
checked: swipeView.currentIndex === 0 && index === 1 ||
swipeView.currentIndex === 1 && index === 5
enabled: ["back", "members", "settings"].includes(modelData)
onClicked:
modelData === "back" ?
roomPane.toggleFocus() :
(modelData === "members" && swipeView.currentIndex === 0) ||
(modelData === "settings" && swipeView.currentIndex === 1) ?
roomPane.forceCollapse = true :
modelData === "members" ?
swipeView.currentIndex = 0 :
swipeView.currentIndex = 1
Behavior on width {
enabled: modelData === "back"
HNumberAnimation {}
}
}
Connections {
target: swipeView
function onCurrentItemChanged() {
swipeView.currentItem.keybindFocusItem.forceActiveFocus()
}
}
MemberView {}
SettingsView {
enabled: accountModel.presence !== "offline"
}
HShortcut {
sequences: window.settings.keys.toggleFocusRoomPane
onActivated: roomPane.toggleFocus()
}
HShortcut {
sequences: window.settings.keys.toggleHideRoomPane
onActivated: roomPane.forceCollapse = ! roomPane.forceCollapse
}
}