112 lines
3.0 KiB
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
|
|
}
|
|
}
|