moment/src/qml/Chat/RoomHeader.qml

105 lines
2.9 KiB
QML
Raw Normal View History

2019-07-08 13:52:41 +10:00
// Copyright 2019 miruka
// This file is part of harmonyqml, licensed under LGPLv3.
import QtQuick 2.12
import QtQuick.Layouts 1.12
import "../Base"
2019-03-22 14:28:14 +11:00
HRectangle {
2019-07-07 07:58:59 +10:00
property string displayName: ""
property string topic: ""
property alias buttonsImplicitWidth: viewButtons.implicitWidth
property int buttonsWidth: viewButtons.Layout.preferredWidth
property var activeButton: "members"
property bool collapseButtons:
viewButtons.implicitWidth > width * 0.33 ||
width - viewButtons.implicitWidth <
theme.minimumSupportedWidthPlusSpacing
2019-05-13 03:17:42 +10:00
id: roomHeader
color: theme.chat.roomHeader.background
2019-07-17 07:08:06 +10:00
implicitHeight: theme.baseElementsHeight
2019-03-22 14:28:14 +11:00
HRowLayout {
id: row
2019-07-16 19:29:47 +10:00
spacing: theme.spacing
2019-03-26 09:29:46 +11:00
anchors.fill: parent
2019-03-22 14:28:14 +11:00
HRoomAvatar {
id: avatar
2019-07-18 16:36:08 +10:00
userId: chatPage.userId
roomId: chatPage.roomId
Layout.alignment: Qt.AlignTop
2019-03-26 09:29:46 +11:00
}
HLabel {
id: roomName
text: displayName
font.pixelSize: theme.fontSize.big
2019-03-26 09:29:46 +11:00
elide: Text.ElideRight
2019-05-13 03:17:42 +10:00
Layout.maximumWidth: Math.max(
0,
2019-05-17 05:50:14 +10:00
row.width - row.totalSpacing - avatar.width -
2019-05-13 03:17:42 +10:00
viewButtons.width -
(expandButton.visible ? expandButton.width : 0)
)
2019-03-26 09:29:46 +11:00
}
2019-03-22 14:28:14 +11:00
HLabel {
id: roomTopic
text: topic
font.pixelSize: theme.fontSize.small
2019-03-26 09:29:46 +11:00
elide: Text.ElideRight
2019-05-13 03:17:42 +10:00
Layout.maximumWidth: Math.max(
0,
row.width - row.totalSpacing - avatar.width -
2019-05-13 03:17:42 +10:00
roomName.width - viewButtons.width -
(expandButton.visible ? expandButton.width : 0)
)
2019-03-22 14:28:14 +11:00
}
2019-03-26 09:29:46 +11:00
2019-04-29 05:22:53 +10:00
HSpacer {}
2019-05-13 03:17:42 +10:00
Row {
id: viewButtons
Layout.preferredWidth: collapseButtons ? 0 : implicitWidth
Layout.fillHeight: true
Repeater {
model: [
"members", "files", "notifications", "history", "settings"
]
2019-07-11 05:03:05 +10:00
HUIButton {
2019-07-18 18:23:23 +10:00
iconName: "room-view-" + modelData
iconDimension: 22
autoExclusive: true
checked: activeButton == modelData
onClicked: activeButton = activeButton == modelData ?
null : modelData
}
2019-05-13 03:17:42 +10:00
}
Behavior on Layout.preferredWidth {
HNumberAnimation { id: buttonsAnimation }
2019-05-13 03:17:42 +10:00
}
}
}
2019-07-11 05:03:05 +10:00
HUIButton {
2019-05-13 03:17:42 +10:00
id: expandButton
z: 1
anchors.right: parent.right
opacity: collapseButtons ? 1 : 0
visible: opacity > 0
2019-07-18 18:23:23 +10:00
iconName: "reduced-room-buttons"
2019-05-13 03:17:42 +10:00
Behavior on opacity {
HNumberAnimation { duration: buttonsAnimation.duration * 2 }
2019-05-13 03:17:42 +10:00
}
2019-03-22 14:28:14 +11:00
}
}