mirror of
https://git.jami.net/savoirfairelinux/jami-client-qt.git
synced 2025-09-10 12:03:18 +02:00
mainview: change settings responsive behavior and stacklayout page arrangement
Change-Id: I3f7e2050be74cd8cc9f6d732cc96b0f218cd1676
This commit is contained in:
parent
b685b8f8bc
commit
4e01784158
5 changed files with 88 additions and 107 deletions
|
@ -119,7 +119,6 @@ ConversationsAdapter::deselectConversation()
|
|||
return;
|
||||
}
|
||||
|
||||
currentConversationModel->selectConversation("");
|
||||
LRCInstance::setSelectedConvId();
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ import "../settingsview/components"
|
|||
Window {
|
||||
id: mainViewWindow
|
||||
|
||||
property int minWidth: 400
|
||||
property int minWidth: settingsViewPreferredWidth
|
||||
property int minHeight: aboutPopUpDialog.contentHeight
|
||||
|
||||
property int mainViewWindowPreferredWidth: 650
|
||||
|
@ -41,12 +41,14 @@ Window {
|
|||
property int sidePanelViewStackPreferredWidth: 250
|
||||
property int mainViewStackPreferredWidth: 250
|
||||
property int aboutPopUpPreferredWidth: 400
|
||||
property int settingsViewPreferredWidth: 445
|
||||
property int onWidthChangedTriggerDistance: 5
|
||||
|
||||
property int savedSidePanelViewMinWidth: 0
|
||||
property int savedSidePanelViewMaxWidth: 0
|
||||
property int savedWelcomeViewMinWidth: 0
|
||||
property int savedWelcomeViewMaxWidth: 0
|
||||
property bool sidePanelHidden: !mainViewStack.visible
|
||||
property bool sidePanelOnly: !mainViewStack.visible
|
||||
|
||||
// To calculate tab bar bottom border hidden rect left margin.
|
||||
property int tabBarLeftMargin: 8
|
||||
|
@ -60,7 +62,7 @@ Window {
|
|||
mainViewWindowSidePanel.deselectConversationSmartList()
|
||||
if (communicationPageMessageWebView.visible || callStackView.visible) {
|
||||
sidePanelViewStack.pop(StackView.Immediate)
|
||||
if (!sidePanelHidden) {
|
||||
if (!sidePanelOnly) {
|
||||
mainViewStack.pop(welcomePage, StackView.Immediate)
|
||||
}
|
||||
}
|
||||
|
@ -92,8 +94,6 @@ Window {
|
|||
}
|
||||
}
|
||||
|
||||
pushCallStackView()
|
||||
|
||||
callStackView.responsibleAccountId = currentAccount
|
||||
callStackView.responsibleConvUid = currentCallConv
|
||||
callStackView.updateCorrespondingUI()
|
||||
|
@ -101,20 +101,21 @@ Window {
|
|||
|
||||
|
||||
function pushCallStackView() {
|
||||
if (sidePanelHidden) {
|
||||
if (sidePanelOnly) {
|
||||
sidePanelViewStack.push(callStackView, StackView.Immediate)
|
||||
} else {
|
||||
sidePanelViewStack.pop(StackView.Immediate)
|
||||
mainViewStack.pop(null, StackView.Immediate)
|
||||
mainViewStack.pop(welcomePage, StackView.Immediate)
|
||||
mainViewStack.push(callStackView, StackView.Immediate)
|
||||
}
|
||||
}
|
||||
|
||||
function pushCommunicationMessageWebView() {
|
||||
if (sidePanelHidden) {
|
||||
if (sidePanelOnly) {
|
||||
sidePanelViewStack.pop(StackView.Immediate)
|
||||
sidePanelViewStack.push(communicationPageMessageWebView, StackView.Immediate)
|
||||
} else {
|
||||
mainViewStack.pop(null, StackView.Immediate)
|
||||
mainViewStack.pop(welcomePage, StackView.Immediate)
|
||||
mainViewStack.push(communicationPageMessageWebView, StackView.Immediate)
|
||||
}
|
||||
}
|
||||
|
@ -128,7 +129,6 @@ Window {
|
|||
}
|
||||
|
||||
function recursionStackViewItemMove(stackOne, stackTwo, depth=1) {
|
||||
|
||||
// Move all items (expect the bottom item) to stacktwo by the same order in stackone.
|
||||
if (stackOne.depth === depth) {
|
||||
return
|
||||
|
@ -140,39 +140,27 @@ Window {
|
|||
}
|
||||
|
||||
function toggleSettingsView() {
|
||||
|
||||
if (!inSettingsView) {
|
||||
if (sidePanelOnly)
|
||||
sidePanelViewStack.push(leftPanelSettingsView, StackView.Immediate)
|
||||
else {
|
||||
mainViewStack.pop(welcomePage, StackView.Immediate)
|
||||
mainViewStack.push(settingsView, StackView.Immediate)
|
||||
sidePanelViewStack.push(leftPanelSettingsView, StackView.Immediate)
|
||||
|
||||
if (sidePanelHidden){
|
||||
recursionStackViewItemMove(sidePanelViewStack, mainViewStack, 1)
|
||||
mainViewStack.push(settingsView, StackView.Immediate)
|
||||
sidePanelViewStack.push(leftPanelSettingsView, StackView.Immediate)
|
||||
recursionStackViewItemMove(mainViewStack, sidePanelViewStack, 1)
|
||||
} else {
|
||||
mainViewStack.push(settingsView, StackView.Immediate)
|
||||
sidePanelViewStack.push(leftPanelSettingsView, StackView.Immediate)
|
||||
mainViewWindow.width = settingsViewPreferredWidth
|
||||
+ sidePanelViewStackPreferredWidth + onWidthChangedTriggerDistance
|
||||
}
|
||||
|
||||
} else {
|
||||
sidePanelViewStack.pop(StackView.Immediate)
|
||||
mainViewStack.pop(StackView.Immediate)
|
||||
|
||||
if (sidePanelHidden) {
|
||||
recursionStackViewItemMove(sidePanelViewStack, mainViewStack, 2)
|
||||
sidePanelViewStack.pop(StackView.Immediate)
|
||||
mainViewStack.pop(StackView.Immediate)
|
||||
recursionStackViewItemMove(mainViewStack, sidePanelViewStack, 1)
|
||||
}
|
||||
|
||||
if (currentAccountIsCalling()) {
|
||||
if (currentAccountIsCalling())
|
||||
setCallStackView()
|
||||
} else {
|
||||
else
|
||||
mainViewWindowSidePanel.deselectConversationSmartList()
|
||||
|
||||
sidePanelViewStack.pop(StackView.Immediate)
|
||||
if (!sidePanelHidden) {
|
||||
mainViewStack.pop(welcomePage, StackView.Immediate)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inSettingsView = !inSettingsView
|
||||
}
|
||||
|
||||
|
@ -222,8 +210,8 @@ Window {
|
|||
|
||||
// Set up the call stack view that is needed by call overlay.
|
||||
if (!inSettingsView) {
|
||||
mainViewStack.pop(null, StackView.Immediate)
|
||||
sidePanelViewStack.pop(null, StackView.Immediate)
|
||||
mainViewStack.pop(welcomePage, StackView.Immediate)
|
||||
sidePanelViewStack.pop(mainViewWindowSidePanel, StackView.Immediate)
|
||||
} else {
|
||||
toggleSettingsView()
|
||||
}
|
||||
|
@ -248,28 +236,6 @@ Window {
|
|||
}
|
||||
}
|
||||
|
||||
WizardView {
|
||||
id: wizardView
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
onNeedToShowMainViewWindow: {
|
||||
mainViewLoader.newAddedAccountIndex = accountIndex
|
||||
if (mainViewLoader.source.toString() !== "qrc:/src/mainview/MainView.qml") {
|
||||
mainViewLoader.loaded.disconnect(slotNewAccountAdded)
|
||||
mainViewLoader.loaded.connect(slotNewAccountAdded)
|
||||
mainViewLoader.setSource("qrc:/src/mainview/MainView.qml")
|
||||
} else {
|
||||
slotNewAccountAdded()
|
||||
}
|
||||
mainViewStackLayout.currentIndex = 0
|
||||
}
|
||||
|
||||
onWizardViewIsClosed: {
|
||||
mainViewStackLayout.currentIndex = 0
|
||||
}
|
||||
}
|
||||
|
||||
StackLayout {
|
||||
id: mainViewStackLayout
|
||||
|
||||
|
@ -303,11 +269,10 @@ Window {
|
|||
id: mainViewSidePanelRect
|
||||
|
||||
SplitView.minimumWidth: sidePanelViewStackPreferredWidth
|
||||
SplitView.maximumWidth: (sidePanelHidden ? splitView.width :
|
||||
splitView.width - sidePanelViewStackPreferredWidth)
|
||||
SplitView.maximumWidth: (sidePanelOnly ? splitView.width :
|
||||
splitView.width - sidePanelViewStackPreferredWidth)
|
||||
SplitView.fillHeight: true
|
||||
|
||||
|
||||
// AccountComboBox is always visible
|
||||
AccountComboBox {
|
||||
id: accountComboBox
|
||||
|
@ -388,24 +353,48 @@ Window {
|
|||
|
||||
initialItem: welcomePage
|
||||
|
||||
SplitView.maximumWidth: sidePanelHidden ? splitView.width :
|
||||
splitView.width - sidePanelViewStackPreferredWidth
|
||||
SplitView.maximumWidth: sidePanelOnly ? splitView.width :
|
||||
splitView.width - sidePanelViewStackPreferredWidth
|
||||
SplitView.minimumWidth: sidePanelViewStackPreferredWidth
|
||||
SplitView.fillHeight: true
|
||||
|
||||
clip: true
|
||||
}
|
||||
}
|
||||
|
||||
WizardView {
|
||||
id: wizardView
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
||||
onNeedToShowMainViewWindow: {
|
||||
mainViewLoader.newAddedAccountIndex = accountIndex
|
||||
if (mainViewLoader.source.toString() !== "qrc:/src/mainview/MainView.qml") {
|
||||
mainViewLoader.loaded.disconnect(slotNewAccountAdded)
|
||||
mainViewLoader.loaded.connect(slotNewAccountAdded)
|
||||
mainViewLoader.setSource("qrc:/src/mainview/MainView.qml")
|
||||
} else {
|
||||
slotNewAccountAdded()
|
||||
}
|
||||
mainViewStackLayout.currentIndex = 0
|
||||
}
|
||||
|
||||
onWizardViewIsClosed: {
|
||||
mainViewStackLayout.currentIndex = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AccountListModel {
|
||||
id: accountListModel
|
||||
}
|
||||
|
||||
|
||||
LeftPanelView {
|
||||
id: leftPanelSettingsView
|
||||
|
||||
objectName: "leftPanelSettingsView"
|
||||
|
||||
visible: false
|
||||
contentViewportWidth: mainViewSidePanelRect.width
|
||||
contentViewPortHeight: mainViewSidePanelRect.height
|
||||
|
@ -414,36 +403,32 @@ Window {
|
|||
target: leftPanelSettingsView.btnAccountSettings
|
||||
function onCheckedToggledForRightPanel(checked) {
|
||||
settingsView.setSelected(SettingsView.Account)
|
||||
if (sidePanelHidden) {
|
||||
recursionStackViewItemMove(mainViewStack, sidePanelViewStack, 1)
|
||||
}
|
||||
if (sidePanelOnly)
|
||||
sidePanelViewStack.push(settingsView, StackView.Immediate)
|
||||
}
|
||||
}
|
||||
Connections {
|
||||
target: leftPanelSettingsView.btnGeneralSettings
|
||||
function onCheckedToggledForRightPanel(checked) {
|
||||
settingsView.setSelected(SettingsView.General)
|
||||
if (sidePanelHidden) {
|
||||
recursionStackViewItemMove(mainViewStack, sidePanelViewStack, 1)
|
||||
}
|
||||
if (sidePanelOnly)
|
||||
sidePanelViewStack.push(settingsView, StackView.Immediate)
|
||||
}
|
||||
}
|
||||
Connections {
|
||||
target: leftPanelSettingsView.btnMediaSettings
|
||||
function onCheckedToggledForRightPanel(checked) {
|
||||
settingsView.setSelected(SettingsView.Media)
|
||||
if (sidePanelHidden) {
|
||||
recursionStackViewItemMove(mainViewStack, sidePanelViewStack, 1)
|
||||
}
|
||||
if (sidePanelOnly)
|
||||
sidePanelViewStack.push(settingsView, StackView.Immediate)
|
||||
}
|
||||
}
|
||||
Connections {
|
||||
target: leftPanelSettingsView.btnPluginSettings
|
||||
function onCheckedToggledForRightPanel(checked) {
|
||||
settingsView.setSelected(SettingsView.Plugin)
|
||||
if (sidePanelHidden) {
|
||||
recursionStackViewItemMove(mainViewStack, sidePanelViewStack, 1)
|
||||
}
|
||||
if (sidePanelOnly)
|
||||
sidePanelViewStack.push(settingsView, StackView.Immediate)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -493,8 +478,8 @@ Window {
|
|||
}
|
||||
|
||||
// Push messageWebView or callStackView onto the correct stackview
|
||||
mainViewStack.pop(null, StackView.Immediate)
|
||||
sidePanelViewStack.pop(null, StackView.Immediate)
|
||||
mainViewStack.pop(welcomePage, StackView.Immediate)
|
||||
sidePanelViewStack.pop(mainViewWindowSidePanel, StackView.Immediate)
|
||||
|
||||
if (sidePanelViewStack.visible && mainViewStack.visible) {
|
||||
if (callStackViewShouldShow) {
|
||||
|
@ -537,7 +522,7 @@ Window {
|
|||
}
|
||||
|
||||
onNeedToAddNewAccount: {
|
||||
mainViewStackLayout.currentIndex = 2
|
||||
mainViewStackLayout.currentIndex = 1
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -559,9 +544,6 @@ Window {
|
|||
|
||||
visible: false
|
||||
|
||||
width: Math.max(mainViewStackPreferredWidth, mainViewStack.width - 100)
|
||||
height: mainViewWindow.minimumHeight
|
||||
|
||||
onSettingsViewWindowNeedToShowMainViewWindow: {
|
||||
mainViewWindowSidePanel.refreshAccountComboBox(0)
|
||||
toggleSettingsView()
|
||||
|
@ -571,10 +553,7 @@ Window {
|
|||
mainViewWindow.noAccountIsAvailable()
|
||||
}
|
||||
|
||||
onSettingsBackArrowClicked: {
|
||||
mainViewStack.pop(StackView.Immediate)
|
||||
recursionStackViewItemMove(sidePanelViewStack, mainViewStack, 2)
|
||||
}
|
||||
onSettingsBackArrowClicked: sidePanelViewStack.pop(StackView.Immediate)
|
||||
}
|
||||
|
||||
MessageWebView {
|
||||
|
@ -602,11 +581,6 @@ Window {
|
|||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
mainViewSidePanelRect.SplitView.maximumWidth = Qt.binding(function() {
|
||||
return sidePanelHidden ? splitView.width :
|
||||
splitView.width - sidePanelViewStackPreferredWidth
|
||||
})
|
||||
|
||||
recordBox.x = Qt.binding(function() {
|
||||
var i = ((mainViewStack.visible && mainViewStack.width > 1000) ?
|
||||
Math.round((mainViewStack.width-1000)*0.5) :
|
||||
|
@ -629,8 +603,10 @@ Window {
|
|||
|
||||
onWidthChanged: {
|
||||
// Hide unnecessary stackview when width is changed.
|
||||
if (mainViewWindow.width < sidePanelViewStackPreferredWidth
|
||||
+ mainViewStackPreferredWidth - 5
|
||||
var widthToCompare = sidePanelViewStackPreferredWidth +
|
||||
(inSettingsView ? settingsViewPreferredWidth : mainViewStackPreferredWidth)
|
||||
|
||||
if (mainViewWindow.width < widthToCompare - onWidthChangedTriggerDistance
|
||||
&& mainViewStack.visible) {
|
||||
mainViewStack.visible = false
|
||||
|
||||
|
@ -640,13 +616,15 @@ Window {
|
|||
return index > 0
|
||||
})
|
||||
|
||||
if (inWelcomeViewStack) {
|
||||
recursionStackViewItemMove(mainViewStack, sidePanelViewStack)
|
||||
if (inSettingsView) {
|
||||
mainViewStack.pop(StackView.Immediate)
|
||||
sidePanelViewStack.push(settingsView, StackView.Immediate)
|
||||
}
|
||||
else if (inWelcomeViewStack)
|
||||
recursionStackViewItemMove(mainViewStack, sidePanelViewStack)
|
||||
|
||||
mainViewWindow.update()
|
||||
} else if (mainViewWindow.width >= sidePanelViewStackPreferredWidth
|
||||
+ mainViewStackPreferredWidth + 5
|
||||
} else if (mainViewWindow.width >= widthToCompare + onWidthChangedTriggerDistance
|
||||
&& !mainViewStack.visible) {
|
||||
mainViewStack.visible = true
|
||||
|
||||
|
@ -654,12 +632,16 @@ Window {
|
|||
function (item, index) {
|
||||
return index > 0
|
||||
})
|
||||
if (inSidePanelViewStack) {
|
||||
recursionStackViewItemMove(sidePanelViewStack, mainViewStack, (inSettingsView ? 2 : 1))
|
||||
}
|
||||
|
||||
if (!inSettingsView && currentAccountIsCalling())
|
||||
pushCallStackView()
|
||||
if (inSettingsView) {
|
||||
if (sidePanelViewStack.currentItem.objectName !== leftPanelSettingsView.objectName)
|
||||
sidePanelViewStack.pop(StackView.Immediate)
|
||||
mainViewStack.push(settingsView, StackView.Immediate)
|
||||
} else if (inSidePanelViewStack) {
|
||||
recursionStackViewItemMove(sidePanelViewStack, mainViewStack)
|
||||
if (currentAccountIsCalling())
|
||||
pushCallStackView()
|
||||
}
|
||||
|
||||
mainViewWindow.update()
|
||||
}
|
||||
|
|
|
@ -169,7 +169,7 @@ Rectangle {
|
|||
toolTipText: qsTr("Toggle to display side panel")
|
||||
hoverEnabled: true
|
||||
|
||||
visible: mainViewWindow.sidePanelHidden
|
||||
visible: mainViewWindow.sidePanelOnly
|
||||
|
||||
onClicked: {
|
||||
mainViewWindow.showWelcomeView() // TODO: refactor with msg manager
|
||||
|
|
|
@ -66,7 +66,7 @@ Rectangle {
|
|||
toolTipText: qsTr("Toggle to display side panel")
|
||||
hoverEnabled: true
|
||||
|
||||
visible: mainViewWindow.sidePanelHidden
|
||||
visible: mainViewWindow.sidePanelOnly
|
||||
|
||||
onClicked: {
|
||||
mainViewWindow.showWelcomeView() // TODO: refactor with msg manager
|
||||
|
|
|
@ -45,7 +45,7 @@ RowLayout {
|
|||
toolTipText: JamiStrings.back
|
||||
hoverEnabled: true
|
||||
|
||||
visible: mainViewWindow.sidePanelHidden
|
||||
visible: mainViewWindow.sidePanelOnly
|
||||
|
||||
onClicked: {
|
||||
backArrowClicked()
|
||||
|
|
Loading…
Add table
Reference in a new issue