diff --git a/src/appsettingsmanager.h b/src/appsettingsmanager.h index 5c6586b1924e573bde4ac83401f48f26d45ad434..f316d9b74f832d78bf1d71d4083253c4f606dc45 100644 --- a/src/appsettingsmanager.h +++ b/src/appsettingsmanager.h @@ -44,6 +44,7 @@ extern const QString defaultDownloadPath; X(EnableDarkTheme, false) \ X(AutoUpdate, true) \ X(StartMinimized, false) \ + X(ShowChatviewHorizontally, true) \ X(NeverShowMeAgain, false) \ X(WindowGeometry, QRectF(qQNaN(), qQNaN(), 0., 0.)) \ X(WindowState, QWindow::AutomaticVisibility) diff --git a/src/constant/JamiStrings.qml b/src/constant/JamiStrings.qml index 0c7c73af938b93cd745e65b04fb6ee0edf1bb7f9..5359dfdb9cc2011d0da90ddb085c6383a0e3affd 100644 --- a/src/constant/JamiStrings.qml +++ b/src/constant/JamiStrings.qml @@ -375,6 +375,9 @@ Item { property string chatview: qsTr("Chatview") property string enableTypingIndicator: qsTr("Enable typing indicators") property string displayHyperlinkPreviews: qsTr("Display hyperlink previews in the chatview") + property string chatviewPositionInCall: qsTr("Chatview's position in calls") + property string bottomOpt: qsTr("Bottom") + property string rightOpt: qsTr("Right") // File transfer settings property string fileTransfer: qsTr("File transfer") diff --git a/src/mainview/components/OngoingCallPage.qml b/src/mainview/components/OngoingCallPage.qml index 2fedf07c5907294ecbc81ff8024a1f5a93527d81..13f6ded2f3adbecfb2a910d8e958e3cee18bdb3a 100644 --- a/src/mainview/components/OngoingCallPage.qml +++ b/src/mainview/components/OngoingCallPage.qml @@ -25,6 +25,7 @@ import Qt5Compat.GraphicalEffects import net.jami.Models 1.1 import net.jami.Adapters 1.1 +import net.jami.Enums 1.1 import net.jami.Constants 1.1 import "../../commoncomponents" @@ -64,6 +65,7 @@ Rectangle { } function openInCallConversation() { + mainColumnLayout.isHorizontal = UtilsAdapter.getAppValue(Settings.Key.ShowChatviewHorizontally) inCallMessageWebViewStack.visible = true inCallMessageWebViewStack.push(linkedWebview) } @@ -127,11 +129,12 @@ Rectangle { anchors.fill: parent - orientation: Qt.Vertical + property bool isHorizontal: false // Calculated when showing the stack view + orientation: isHorizontal ? Qt.Horizontal : Qt.Vertical handle: Rectangle { - implicitWidth: root.width - implicitHeight: JamiTheme.splitViewHandlePreferredWidth + implicitWidth: isHorizontal ? JamiTheme.splitViewHandlePreferredWidth : root.width + implicitHeight: isHorizontal ? root.height : JamiTheme.splitViewHandlePreferredWidth color: SplitHandle.pressed ? JamiTheme.pressColor : (SplitHandle.hovered ? JamiTheme.hoverColor : JamiTheme.tabbarBorderColor) @@ -139,9 +142,11 @@ Rectangle { Rectangle { id: callPageMainRect - SplitView.preferredHeight: (root.height / 3) * 2 + SplitView.preferredHeight: mainColumnLayout.isHorizontal ? root.height : (root.height / 3) * 2 + SplitView.preferredWidth: mainColumnLayout.isHorizontal ? (root.width / 3) * 2 : root.width SplitView.minimumHeight: root.height / 2 + 20 - SplitView.fillWidth: true + SplitView.minimumWidth: root.width / 2 + 20 + SplitView.fillWidth: !mainColumnLayout.isHorizontal MouseArea { anchors.fill: parent @@ -379,8 +384,9 @@ Rectangle { StackView { id: inCallMessageWebViewStack - SplitView.preferredHeight: root.height / 3 - SplitView.fillWidth: true + SplitView.preferredHeight: mainColumnLayout.isHorizontal ? root.height : root.height / 3 + SplitView.preferredWidth: mainColumnLayout.isHorizontal ? root.width / 3 : root.width + SplitView.fillWidth: false visible: false diff --git a/src/settingsview/components/ChatviewSettings.qml b/src/settingsview/components/ChatviewSettings.qml index ba5c13fec3b64fff7a91a69c3b01e6a33f761784..214ff3fcb9960788c2b5d979c997eddd7c93c9f7 100644 --- a/src/settingsview/components/ChatviewSettings.qml +++ b/src/settingsview/components/ChatviewSettings.qml @@ -77,4 +77,32 @@ ColumnLayout { UtilsAdapter.setAppValue(Settings.Key.DisplayHyperlinkPreviews, checked) } } + + SettingsComboBox { + id: outputComboBoxSetting + + Layout.fillWidth: true + Layout.preferredHeight: JamiTheme.preferredFieldHeight + Layout.leftMargin: JamiTheme.preferredMarginSize + + labelText: JamiStrings.chatviewPositionInCall + fontPointSize: JamiTheme.settingsFontSize + comboModel: ListModel { + Component.onCompleted: { + append({ textDisplay: JamiStrings.bottomOpt }) + append({ textDisplay: JamiStrings.rightOpt }) + } + } + widthOfComboBox: itemWidth + role: "textDisplay" + + modelIndex: UtilsAdapter.getAppValue(Settings.Key.ShowChatviewHorizontally) ? 1 : 0 + + onActivated: { + UtilsAdapter.setAppValue( + Settings.Key.ShowChatviewHorizontally, + comboModel.get(modelIndex).textDisplay === JamiStrings.rightOpt + ) + } + } }