diff --git a/src/constant/JamiTheme.qml b/src/constant/JamiTheme.qml index b9a3707f2f107a5128aa237512226d63801c1f86..ec7c48752d98f815f61c5c38f083e6892258895e 100644 --- a/src/constant/JamiTheme.qml +++ b/src/constant/JamiTheme.qml @@ -91,6 +91,7 @@ Item { property int menuFontSize: 12 property int maximumWidthSettingsView: 600 + property int settingsHeaderpreferredHeight: 64 property int preferredFieldWidth: 256 property int preferredFieldHeight: 32 property int preferredMarginSize: 16 diff --git a/src/settingsview/SettingsView.qml b/src/settingsview/SettingsView.qml index dc41ecd0b75a4a474bc6a5bf8bd48156d56ca404..1e5b95b5411aef1a5e9e0d2e02991881ac1669be 100644 --- a/src/settingsview/SettingsView.qml +++ b/src/settingsview/SettingsView.qml @@ -134,6 +134,7 @@ Rectangle { Rectangle { id: settingsViewRect + anchors.fill: root signal stopAudioMeter @@ -151,79 +152,132 @@ Rectangle { } } - StackLayout { - id: rightSettingsWidget + SettingsHeader { + id: settingsHeader - anchors.fill: parent + anchors.top: settingsViewRect.top + anchors.left: settingsViewRect.left + anchors.leftMargin: { + var pageWidth = rightSettingsStackLayout.itemAt( + rightSettingsStackLayout.currentIndex).contentWidth + return (settingsViewRect.width - pageWidth) / 2 + JamiTheme.preferredMarginSize + } - property int pageIdCurrentAccountSettingsPage: 0 - property int pageIdGeneralSettingsPage: 1 - property int pageIdAvSettingPage: 2 - property int pageIdPluginSettingsPage: 3 + height: JamiTheme.settingsHeaderpreferredHeight - currentIndex: { + title: { switch(selectedMenu){ case SettingsView.Account: - return pageIdCurrentAccountSettingsPage + return qsTr("Account Settings") case SettingsView.General: - return pageIdGeneralSettingsPage + return qsTr("General") case SettingsView.Media: - return pageIdAvSettingPage + return JamiStrings.avSettingsTitle case SettingsView.Plugin: - return pageIdPluginSettingsPage + return qsTr("Plugin") } } - // current account setting scroll page, index 0 - CurrentAccountSettings { - id: pageIdCurrentAccountSettings + onBackArrowClicked: root.settingsBackArrowClicked() + } + + ScrollView { + id: settingsViewScrollView + + property ScrollBar vScrollBar: ScrollBar.vertical + + anchors.top: settingsHeader.bottom + anchors.horizontalCenter: settingsViewRect.horizontalCenter + + height: settingsViewRect.height - settingsHeader.height + width: settingsViewRect.width - Layout.fillHeight: true - Layout.fillWidth: true + ScrollBar.horizontal.policy: ScrollBar.AlwaysOff + ScrollBar.vertical.policy: ScrollBar.AsNeeded - isSIP: settingsViewRect.isSIP + clip: true + contentHeight: rightSettingsStackLayout.height - onNavigateToMainView: { - leaveSettingsSlot(true) + StackLayout { + id: rightSettingsStackLayout + + anchors.centerIn: parent + + width: settingsViewScrollView.width + + property int pageIdCurrentAccountSettingsPage: 0 + property int pageIdGeneralSettingsPage: 1 + property int pageIdAvSettingPage: 2 + property int pageIdPluginSettingsPage: 3 + + currentIndex: { + switch(selectedMenu){ + case SettingsView.Account: + return pageIdCurrentAccountSettingsPage + case SettingsView.General: + return pageIdGeneralSettingsPage + case SettingsView.Media: + return pageIdAvSettingPage + case SettingsView.Plugin: + return pageIdPluginSettingsPage + } } - onNavigateToNewWizardView: { - leaveSettingsSlot(false) + Component.onCompleted: { + // avoid binding loop + height = Qt.binding(function (){ + return Math.max( + rightSettingsStackLayout.itemAt(currentIndex).preferredHeight, + settingsViewScrollView.height) + }) } - } - // general setting page, index 1 - GeneralSettingsPage { - id: generalSettings + // current account setting scroll page, index 0 + CurrentAccountSettings { + id: pageIdCurrentAccountSettings - Layout.fillHeight: true - Layout.fillWidth: true - } + Layout.alignment: Qt.AlignCenter - // av setting page, index 2 - AvSettingPage { - id: avSettings + isSIP: settingsViewRect.isSIP - Layout.fillHeight: true - Layout.fillWidth: true - } + onNavigateToMainView: { + leaveSettingsSlot(true) + } - // plugin setting page, index 3 - PluginSettingsPage { - id: pluginSettings + onNavigateToNewWizardView: { + leaveSettingsSlot(false) + } - Layout.fillHeight: true - Layout.fillWidth: true - } - } - } + onAdvancedSettingsToggled: { + if (settingsVisible) + settingsViewScrollView.vScrollBar.position = + getAdvancedSettingsScrollPosition() + else + settingsViewScrollView.vScrollBar.position = 0 + } + } + + // general setting page, index 1 + GeneralSettingsPage { + id: generalSettings + + Layout.alignment: Qt.AlignCenter + } + // av setting page, index 2 + AvSettingPage { + id: avSettings - // Back button signal redirection - Component.onCompleted: { - pageIdCurrentAccountSettings.backArrowClicked.connect(settingsBackArrowClicked) - generalSettings.backArrowClicked.connect(settingsBackArrowClicked) - avSettings.backArrowClicked.connect(settingsBackArrowClicked) - pluginSettings.backArrowClicked.connect(settingsBackArrowClicked) + Layout.alignment: Qt.AlignCenter + } + + // plugin setting page, index 3 + PluginSettingsPage { + id: pluginSettings + + Layout.alignment: Qt.AlignCenter + } + } + } } } diff --git a/src/settingsview/components/AdvancedCallSettings.qml b/src/settingsview/components/AdvancedCallSettings.qml index 28afeb89b920d8b83ce7da51712e737b91636184..066a618c10faa27e0e6a3a5c01d079f638c69be0 100644 --- a/src/settingsview/components/AdvancedCallSettings.qml +++ b/src/settingsview/components/AdvancedCallSettings.qml @@ -123,7 +123,7 @@ ColumnLayout { SettingMaterialButton { id: btnRingtone Layout.fillWidth: true - Layout.preferredHeight: JamiTheme.preferredFieldHeight + Layout.minimumHeight: JamiTheme.preferredFieldHeight titleField: JamiStrings.selectCustomRingtone source: "qrc:/images/icons/round-folder-24px.svg" @@ -143,4 +143,4 @@ ColumnLayout { } } } -} \ No newline at end of file +} diff --git a/src/settingsview/components/AdvancedJamiSecuritySettings.qml b/src/settingsview/components/AdvancedJamiSecuritySettings.qml index 59c8a99b2f1ae62934b6dbdaca4bd2f77a0461d3..f436c3d949653a0f643b52be3bf464a02b9d51ec 100644 --- a/src/settingsview/components/AdvancedJamiSecuritySettings.qml +++ b/src/settingsview/components/AdvancedJamiSecuritySettings.qml @@ -136,7 +136,7 @@ ColumnLayout { SettingMaterialButton { id: btnCACert Layout.fillWidth: true - Layout.preferredHeight: JamiTheme.preferredFieldHeight + Layout.minimumHeight: JamiTheme.preferredFieldHeight titleField: JamiStrings.caCertificate source: "qrc:/images/icons/round-folder-24px.svg" @@ -147,7 +147,7 @@ ColumnLayout { SettingMaterialButton { id: btnUserCert Layout.fillWidth: true - Layout.preferredHeight: JamiTheme.preferredFieldHeight + Layout.minimumHeight: JamiTheme.preferredFieldHeight titleField: JamiStrings.userCertificate source: "qrc:/images/icons/round-folder-24px.svg" @@ -158,7 +158,7 @@ ColumnLayout { SettingMaterialButton { id: btnPrivateKey Layout.fillWidth: true - Layout.preferredHeight: JamiTheme.preferredFieldHeight + Layout.minimumHeight: JamiTheme.preferredFieldHeight titleField: JamiStrings.privateKey source: "qrc:/images/icons/round-folder-24px.svg" @@ -175,4 +175,4 @@ ColumnLayout { titleField: JamiStrings.privateKeyPassword } } -} \ No newline at end of file +} diff --git a/src/settingsview/components/AdvancedSIPSecuritySettings.qml b/src/settingsview/components/AdvancedSIPSecuritySettings.qml index fbb3c64ba62885f4a1cb9e7a8842c51c9f6c2972..cc612ca61e7822aed86fe86499900320cea5ed19 100644 --- a/src/settingsview/components/AdvancedSIPSecuritySettings.qml +++ b/src/settingsview/components/AdvancedSIPSecuritySettings.qml @@ -202,7 +202,7 @@ ColumnLayout { SettingMaterialButton { id: btnSIPCACert Layout.fillWidth: true - Layout.preferredHeight: JamiTheme.preferredFieldHeight + Layout.minimumHeight: JamiTheme.preferredFieldHeight titleField: JamiStrings.caCertificate source: "qrc:/images/icons/round-folder-24px.svg" @@ -213,7 +213,7 @@ ColumnLayout { SettingMaterialButton { id: btnSIPUserCert Layout.fillWidth: true - Layout.preferredHeight: JamiTheme.preferredFieldHeight + Layout.minimumHeight: JamiTheme.preferredFieldHeight titleField: JamiStrings.userCertificate source: "qrc:/images/icons/round-folder-24px.svg" @@ -224,7 +224,7 @@ ColumnLayout { SettingMaterialButton { id: btnSIPPrivateKey Layout.fillWidth: true - Layout.preferredHeight: JamiTheme.preferredFieldHeight + Layout.minimumHeight: JamiTheme.preferredFieldHeight titleField: JamiStrings.privateKey source: "qrc:/images/icons/round-folder-24px.svg" @@ -282,7 +282,6 @@ ColumnLayout { Layout.fillWidth: true Layout.preferredHeight: JamiTheme.preferredFieldHeight - Layout.rightMargin: JamiTheme.preferredMarginSize labelText: JamiStrings.tlsProtocol fontPointSize: JamiTheme.settingsFontSize @@ -326,4 +325,4 @@ ColumnLayout { onNewValue: SettingsAdapter.negotiationTimeoutSpinBoxValueChanged(valueField) } } -} \ No newline at end of file +} diff --git a/src/settingsview/components/AdvancedSettings.qml b/src/settingsview/components/AdvancedSettings.qml index fe1ed5b28e6e542043857e0570f70156379af862..6d8a0cca3831166afb00fdf24002e9259b9a28f6 100644 --- a/src/settingsview/components/AdvancedSettings.qml +++ b/src/settingsview/components/AdvancedSettings.qml @@ -34,8 +34,7 @@ ColumnLayout { property bool isSIP property int itemWidth - - signal scrolled + property alias settingsVisible: advancedSettingsView.visible function updateAdvancedAccountInfos() { advancedCallSettings.updateCallSettingsInfos() @@ -90,77 +89,87 @@ ColumnLayout { advancedSettingsView.visible = !advancedSettingsView.visible if(advancedSettingsView.visible) updateAdvancedAccountInfos() - scrolled() } } } ColumnLayout { id: advancedSettingsView + + Layout.fillWidth: true + visible: false AdvancedCallSettings { id: advancedCallSettings - isSIP: root.isSIP - itemWidth: root.itemWidth Layout.fillWidth: true + + isSIP: root.isSIP + itemWidth: root.itemWidth } AdvancedVoiceMailSettings { id: advancedVoiceMailSettings - visible: root.isSIP - itemWidth: root.itemWidth Layout.fillWidth: true + + visible: root.isSIP + itemWidth: root.itemWidth } AdvancedSIPSecuritySettings { id: advancedSIPSecuritySettings - visible: root.isSIP - itemWidth: root.itemWidth Layout.fillWidth: true + + visible: root.isSIP + itemWidth: root.itemWidth } AdvancedNameServerSettings { id: advancedNameServerSettings - visible: !root.isSIP - itemWidth: root.itemWidth Layout.fillWidth: true + + visible: !root.isSIP + itemWidth: root.itemWidth } AdvancedOpenDHTSettings { id: advancedOpenDHTSettings - visible: !root.isSIP - itemWidth: root.itemWidth Layout.fillWidth: true + + visible: !root.isSIP + itemWidth: root.itemWidth } AdvancedJamiSecuritySettings { id: advancedJamiSecuritySettings - visible: !root.isSIP - itemWidth: root.itemWidth Layout.fillWidth: true + + visible: !root.isSIP + itemWidth: root.itemWidth } AdvancedConnectivitySettings { id: advancedConnectivitySettings - itemWidth: root.itemWidth - isSIP: root.isSIP Layout.fillWidth: true + + itemWidth: root.itemWidth + isSIP: root.isSIP } AdvancedPublicAddressSettings { id: advancedPublicAddressSettings - visible: isSIP - itemWidth: root.itemWidth Layout.fillWidth: true + + visible: isSIP + itemWidth: root.itemWidth } AdvancedMediaSettings { @@ -171,10 +180,11 @@ ColumnLayout { AdvancedSDPSettings { id: advancedSDPStettings - visible: isSIP - itemWidth: root.itemWidth Layout.fillWidth: true + + visible: isSIP + itemWidth: root.itemWidth } } -} \ No newline at end of file +} diff --git a/src/settingsview/components/AudioSettings.qml b/src/settingsview/components/AudioSettings.qml index 4e57bf1463e6e9a01b24f705034cf84ddcdd10d1..9ac0b1f0da4c3cbb3a191289425ccddf88612d33 100644 --- a/src/settingsview/components/AudioSettings.qml +++ b/src/settingsview/components/AudioSettings.qml @@ -106,7 +106,7 @@ ColumnLayout { id: inputComboBoxSetting Layout.fillWidth: true - Layout.maximumHeight: JamiTheme.preferredFieldHeight + Layout.preferredHeight: JamiTheme.preferredFieldHeight Layout.leftMargin: JamiTheme.preferredMarginSize labelText: JamiStrings.microphone @@ -118,7 +118,9 @@ ColumnLayout { onIndexChanged: { stopAudioMeter(false) - var selectedInputDeviceName = comboModel.data(comboModel.index( modelIndex, 0), AudioInputDeviceModel.Device_ID) + var selectedInputDeviceName = comboModel.data( + comboModel.index(modelIndex, 0), + AudioInputDeviceModel.Device_ID) AVModel.setInputDevice(selectedInputDeviceName) startAudioMeter(false) } @@ -141,7 +143,7 @@ ColumnLayout { id: outputComboBoxSetting Layout.fillWidth: true - Layout.maximumHeight: JamiTheme.preferredFieldHeight + Layout.preferredHeight: JamiTheme.preferredFieldHeight Layout.leftMargin: JamiTheme.preferredMarginSize labelText: JamiStrings.outputDevice @@ -153,7 +155,9 @@ ColumnLayout { onIndexChanged: { stopAudioMeter(false) - var selectedOutputDeviceName = audioOutputDeviceModel.data(audioOutputDeviceModel.index( modelIndex, 0), AudioOutputDeviceModel.Device_ID) + var selectedOutputDeviceName = audioOutputDeviceModel.data( + audioOutputDeviceModel.index(modelIndex, 0), + AudioOutputDeviceModel.Device_ID) AVModel.setOutputDevice(selectedOutputDeviceName) startAudioMeter(false) } @@ -163,7 +167,7 @@ ColumnLayout { id: ringtoneDeviceComboBoxSetting Layout.fillWidth: true - Layout.maximumHeight: JamiTheme.preferredFieldHeight + Layout.preferredHeight: JamiTheme.preferredFieldHeight Layout.leftMargin: JamiTheme.preferredMarginSize labelText: JamiStrings.ringtoneDevice @@ -175,7 +179,9 @@ ColumnLayout { onIndexChanged: { stopAudioMeter(false) - var selectedRingtoneDeviceName = audioOutputDeviceModel.data(audioOutputDeviceModel.index( modelIndex, 0), AudioOutputDeviceModel.Device_ID) + var selectedRingtoneDeviceName = audioOutputDeviceModel.data( + audioOutputDeviceModel.index(modelIndex, 0), + AudioOutputDeviceModel.Device_ID) AVModel.setRingtoneDevice(selectedRingtoneDeviceName) startAudioMeter(false) } @@ -185,7 +191,7 @@ ColumnLayout { id: audioManagerComboBoxSetting Layout.fillWidth: true - Layout.maximumHeight: JamiTheme.preferredFieldHeight + Layout.preferredHeight: JamiTheme.preferredFieldHeight Layout.leftMargin: JamiTheme.preferredMarginSize labelText: JamiStrings.audioManager @@ -196,7 +202,8 @@ ColumnLayout { onIndexChanged: { stopAudioMeter(false) - var selectedAudioManager = comboModel.data(comboModel.index( modelIndex, 0), AudioManagerListModel.AudioManagerID) + var selectedAudioManager = comboModel.data( + comboModel.index(modelIndex, 0), AudioManagerListModel.AudioManagerID) AVModel.setAudioManager(selectedAudioManager) startAudioMeter(false) populateAudioSettings() diff --git a/src/settingsview/components/AvSettingPage.qml b/src/settingsview/components/AvSettingPage.qml index 4ba74194ac3ed2c7d67c158a87f95201ff4132d5..eba0c1e4176db141a1bac1be77a4cb2d1fad3ccf 100644 --- a/src/settingsview/components/AvSettingPage.qml +++ b/src/settingsview/components/AvSettingPage.qml @@ -32,8 +32,8 @@ Rectangle { id: root property int preferredColumnWidth: Math.min(root.width / 2 - 50, 275) - - signal backArrowClicked + property int contentWidth: avSettingsColumnLayout.width + property int preferredHeight: avSettingsColumnLayout.implicitHeight onVisibleChanged: { if (!visible) { @@ -48,60 +48,33 @@ Rectangle { } ColumnLayout { + id: avSettingsColumnLayout + anchors.centerIn: root height: root.height width: Math.min(JamiTheme.maximumWidthSettingsView, root.width) - SettingsHeader { - Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.fillWidth: true - Layout.preferredHeight: 64 + // Audio + AudioSettings { + id: audioSettings - title: JamiStrings.avSettingsTitle + Layout.fillWidth: true + Layout.leftMargin: JamiTheme.preferredMarginSize + Layout.rightMargin: JamiTheme.preferredMarginSize - onBackArrowClicked: root.backArrowClicked() + itemWidth: preferredColumnWidth } - ScrollView { - id: avSettingsScrollView + // Video + VideoSettings { + id: videoSettings - property ScrollBar vScrollBar: ScrollBar.vertical - ScrollBar.horizontal.policy: ScrollBar.AlwaysOff - ScrollBar.vertical.policy: ScrollBar.AsNeeded - - Layout.fillHeight: true Layout.fillWidth: true + Layout.leftMargin: JamiTheme.preferredMarginSize + Layout.rightMargin: JamiTheme.preferredMarginSize - focus: true - clip: true - - ColumnLayout { - width: avSettingsScrollView.width - - // Audio - AudioSettings { - id: audioSettings - - Layout.fillWidth: true - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.rightMargin: JamiTheme.preferredMarginSize - - itemWidth: preferredColumnWidth - } - - // Video - VideoSettings { - id: videoSettings - - Layout.fillWidth: true - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.rightMargin: JamiTheme.preferredMarginSize - - itemWidth: preferredColumnWidth - } - } + itemWidth: preferredColumnWidth } } } diff --git a/src/settingsview/components/CurrentAccountSettings.qml b/src/settingsview/components/CurrentAccountSettings.qml index 36a2fd87f22043201770649a0b32986b8ec2eabf..04696be95c7402f4f7b204189b8c968ef19223cd 100644 --- a/src/settingsview/components/CurrentAccountSettings.qml +++ b/src/settingsview/components/CurrentAccountSettings.qml @@ -36,11 +36,13 @@ Rectangle { property bool isSIP + property int contentWidth: currentAccountSettingsColumnLayout.width + property int preferredHeight: currentAccountSettingsColumnLayout.implicitHeight property int preferredColumnWidth : Math.min(root.width / 2 - 50, 350) signal navigateToMainView signal navigateToNewWizardView - signal backArrowClicked + signal advancedSettingsToggled(bool settingsVisible) function isPhotoBoothOpened() { return accountProfile.isPhotoBoothOpened() @@ -86,6 +88,9 @@ Rectangle { bannedContacts.connectCurrentAccount(false) } + function getAdvancedSettingsScrollPosition() { + return advancedSettings.y / currentAccountSettingsColumnLayout.height + } function setPasswordButtonText() { var hasPassword = AccountAdapter.hasPassword() @@ -175,176 +180,148 @@ Rectangle { } ColumnLayout { + id: currentAccountSettingsColumnLayout + anchors.centerIn: root height: root.height width: Math.min(JamiTheme.maximumWidthSettingsView, root.width) - SettingsHeader { - Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter + ToggleSwitch { + id: accountEnableCheckBox + + Layout.topMargin: JamiTheme.preferredMarginSize Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.fillWidth: true - Layout.preferredHeight: 64 + Layout.rightMargin: JamiTheme.preferredMarginSize - title: qsTr("Account Settings") + labelText: JamiStrings.enableAccount + fontPointSize: JamiTheme.headerFontSize - onBackArrowClicked: root.backArrowClicked() + onSwitchToggled: AccountAdapter.model.setAccountEnabled( + AccountAdapter.currentAccountId, checked) } - ScrollView { - id: scrollView - - property ScrollBar vScrollBar: ScrollBar.vertical - ScrollBar.horizontal.policy: ScrollBar.AlwaysOff - ScrollBar.vertical.policy: ScrollBar.AsNeeded + AccountProfile { + id: accountProfile - Layout.fillHeight: true Layout.fillWidth: true + Layout.topMargin: JamiTheme.preferredMarginSize + Layout.leftMargin: JamiTheme.preferredMarginSize + Layout.rightMargin: JamiTheme.preferredMarginSize + } - focus: true - clip: true - - ColumnLayout { - id: accountLayout - - width: scrollView.width - - ToggleSwitch { - id: accountEnableCheckBox - - Layout.topMargin: JamiTheme.preferredMarginSize - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.rightMargin: JamiTheme.preferredMarginSize - - labelText: JamiStrings.enableAccount - fontPointSize: JamiTheme.headerFontSize - - onSwitchToggled: AccountAdapter.model.setAccountEnabled( - AccountAdapter.currentAccountId, checked) - } - - AccountProfile { - id: accountProfile - - Layout.fillWidth: true - Layout.topMargin: JamiTheme.preferredMarginSize - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.rightMargin: JamiTheme.preferredMarginSize - } - - UserIdentity { - id: userIdentity - isSIP: root.isSIP + UserIdentity { + id: userIdentity + isSIP: root.isSIP - Layout.fillWidth: true - Layout.alignment: Qt.AlignHCenter - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.rightMargin: JamiTheme.preferredMarginSize + Layout.fillWidth: true + Layout.alignment: Qt.AlignHCenter + Layout.leftMargin: JamiTheme.preferredMarginSize + Layout.rightMargin: JamiTheme.preferredMarginSize - itemWidth: preferredColumnWidth - } + itemWidth: preferredColumnWidth + } - MaterialButton { - id: passwdPushButton + MaterialButton { + id: passwdPushButton - visible: !isSIP && SettingsAdapter.getAccountConfig_Manageruri() === "" - Layout.alignment: Qt.AlignHCenter - Layout.preferredWidth: JamiTheme.preferredFieldWidth - Layout.preferredHeight: JamiTheme.preferredFieldHeight + visible: !isSIP && SettingsAdapter.getAccountConfig_Manageruri() === "" + Layout.alignment: Qt.AlignHCenter + Layout.preferredWidth: JamiTheme.preferredFieldWidth + Layout.preferredHeight: JamiTheme.preferredFieldHeight - color: JamiTheme.buttonTintedBlack - hoveredColor: JamiTheme.buttonTintedBlackHovered - pressedColor: JamiTheme.buttonTintedBlackPressed - outlined: true + color: JamiTheme.buttonTintedBlack + hoveredColor: JamiTheme.buttonTintedBlackHovered + pressedColor: JamiTheme.buttonTintedBlackPressed + outlined: true - toolTipText: AccountAdapter.hasPassword() ? - JamiStrings.changeCurrentPassword : JamiStrings.setAPassword - text: AccountAdapter.hasPassword() ? JamiStrings.changePassword : JamiStrings.setPassword + toolTipText: AccountAdapter.hasPassword() ? + JamiStrings.changeCurrentPassword : JamiStrings.setAPassword + text: AccountAdapter.hasPassword() ? JamiStrings.changePassword : JamiStrings.setPassword - source: "qrc:/images/icons/round-edit-24px.svg" + source: "qrc:/images/icons/round-edit-24px.svg" - onClicked: { - passwordClicked() - } - } + onClicked: { + passwordClicked() + } + } - MaterialButton { - id: btnExportAccount + MaterialButton { + id: btnExportAccount - visible: !isSIP && SettingsAdapter.getAccountConfig_Manageruri() === "" - Layout.alignment: Qt.AlignHCenter - Layout.preferredWidth: JamiTheme.preferredFieldWidth - Layout.preferredHeight: JamiTheme.preferredFieldHeight + visible: !isSIP && SettingsAdapter.getAccountConfig_Manageruri() === "" + Layout.alignment: Qt.AlignHCenter + Layout.preferredWidth: JamiTheme.preferredFieldWidth + Layout.preferredHeight: JamiTheme.preferredFieldHeight - color: JamiTheme.buttonTintedBlack - hoveredColor: JamiTheme.buttonTintedBlackHovered - pressedColor: JamiTheme.buttonTintedBlackPressed - outlined: true + color: JamiTheme.buttonTintedBlack + hoveredColor: JamiTheme.buttonTintedBlackHovered + pressedColor: JamiTheme.buttonTintedBlackPressed + outlined: true - toolTipText: JamiStrings.tipBackupAccount - text: JamiStrings.backupAccountBtn + toolTipText: JamiStrings.tipBackupAccount + text: JamiStrings.backupAccountBtn - source: "qrc:/images/icons/round-save_alt-24px.svg" + source: "qrc:/images/icons/round-save_alt-24px.svg" - onClicked: { - exportAccountSlot() - } - } + onClicked: { + exportAccountSlot() + } + } - MaterialButton { - Layout.alignment: Qt.AlignHCenter - Layout.preferredWidth: JamiTheme.preferredFieldWidth - Layout.preferredHeight: JamiTheme.preferredFieldHeight - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.rightMargin: JamiTheme.preferredMarginSize + MaterialButton { + Layout.alignment: Qt.AlignHCenter + Layout.preferredWidth: JamiTheme.preferredFieldWidth + Layout.preferredHeight: JamiTheme.preferredFieldHeight + Layout.topMargin: isSIP ? JamiTheme.preferredMarginSize : 0 + Layout.leftMargin: JamiTheme.preferredMarginSize + Layout.rightMargin: JamiTheme.preferredMarginSize - color: JamiTheme.buttonTintedRed - hoveredColor: JamiTheme.buttonTintedRedHovered - pressedColor: JamiTheme.buttonTintedRedPressed + color: JamiTheme.buttonTintedRed + hoveredColor: JamiTheme.buttonTintedRedHovered + pressedColor: JamiTheme.buttonTintedRedPressed - text: JamiStrings.deleteAccount + text: JamiStrings.deleteAccount - source: "qrc:/images/icons/delete_forever-24px.svg" + source: "qrc:/images/icons/delete_forever-24px.svg" - onClicked: { - delAccountSlot() - } - } + onClicked: { + delAccountSlot() + } + } - LinkedDevices { - id: linkedDevices - visible: !isSIP && SettingsAdapter.getAccountConfig_Manageruri() === "" + LinkedDevices { + id: linkedDevices + visible: !isSIP && SettingsAdapter.getAccountConfig_Manageruri() === "" - Layout.fillWidth: true - Layout.alignment: Qt.AlignHCenter - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.rightMargin: JamiTheme.preferredMarginSize - } + Layout.fillWidth: true + Layout.alignment: Qt.AlignHCenter + Layout.leftMargin: JamiTheme.preferredMarginSize + Layout.rightMargin: JamiTheme.preferredMarginSize + } - BannedContacts { - id: bannedContacts - isSIP: root.isSIP + BannedContacts { + id: bannedContacts + isSIP: root.isSIP - Layout.fillWidth: true - Layout.alignment: Qt.AlignHCenter - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.rightMargin: JamiTheme.preferredMarginSize - } + Layout.fillWidth: true + Layout.alignment: Qt.AlignHCenter + Layout.leftMargin: JamiTheme.preferredMarginSize + Layout.rightMargin: JamiTheme.preferredMarginSize + } - AdvancedSettings { - id: advancedSettings + AdvancedSettings { + id: advancedSettings - Layout.fillWidth: true - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.rightMargin: JamiTheme.preferredMarginSize - Layout.bottomMargin: 8 + Layout.fillWidth: true + Layout.leftMargin: JamiTheme.preferredMarginSize + Layout.rightMargin: JamiTheme.preferredMarginSize + Layout.bottomMargin: 8 - itemWidth: preferredColumnWidth - isSIP: root.isSIP + itemWidth: preferredColumnWidth + isSIP: root.isSIP - onScrolled: scrollView.vScrollBar.position = advancedSettings.y / accountLayout.height - } - } + onHeightChanged: advancedSettingsToggled(settingsVisible) } } } diff --git a/src/settingsview/components/GeneralSettingsPage.qml b/src/settingsview/components/GeneralSettingsPage.qml index be925d8266acfc0903f1818023b4cee2c2849d81..f6ae17928e84a8965a5dbca5e40dc67f134ba394 100644 --- a/src/settingsview/components/GeneralSettingsPage.qml +++ b/src/settingsview/components/GeneralSettingsPage.qml @@ -32,66 +32,43 @@ Rectangle { id: root property int preferredColumnWidth : Math.min(root.width / 2 - 50, 350) - - signal backArrowClicked + property int contentWidth: generalSettingsColumnLayout.width + property int preferredHeight: generalSettingsColumnLayout.implicitHeight ColumnLayout { + id: generalSettingsColumnLayout + anchors.centerIn: root height: root.height width: Math.min(JamiTheme.maximumWidthSettingsView, root.width) - SettingsHeader { - Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter - Layout.leftMargin: JamiTheme.preferredMarginSize + // system setting panel + SystemSettings { Layout.fillWidth: true - Layout.preferredHeight: 64 - - title: qsTr("General") + Layout.topMargin: JamiTheme.preferredMarginSize + Layout.leftMargin: JamiTheme.preferredMarginSize + Layout.rightMargin: JamiTheme.preferredMarginSize - onBackArrowClicked: root.backArrowClicked() + itemWidth: preferredColumnWidth } - ScrollView { - id: generalSettingsScrollView - - Layout.fillHeight: true + // call recording setting panel + RecordingSettings { Layout.fillWidth: true + Layout.leftMargin: JamiTheme.preferredMarginSize + Layout.rightMargin: JamiTheme.preferredMarginSize - focus: true - clip: true - - ColumnLayout { - width: generalSettingsScrollView.width - - // system setting panel - SystemSettings { - Layout.fillWidth: true - Layout.topMargin: JamiTheme.preferredMarginSize - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.rightMargin: JamiTheme.preferredMarginSize - - itemWidth: preferredColumnWidth - } - - // call recording setting panel - RecordingSettings { - Layout.fillWidth: true - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.rightMargin: JamiTheme.preferredMarginSize - - itemWidth: preferredColumnWidth - } + itemWidth: preferredColumnWidth + } - // update setting panel - UpdateSettings { - Layout.fillWidth: true - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.rightMargin: JamiTheme.preferredMarginSize - Layout.bottomMargin: JamiTheme.preferredMarginSize - visible: Qt.platform.os == "windows"? true : false - } - } + // update setting panel + UpdateSettings { + Layout.fillWidth: true + Layout.leftMargin: JamiTheme.preferredMarginSize + Layout.rightMargin: JamiTheme.preferredMarginSize + Layout.bottomMargin: JamiTheme.preferredMarginSize + visible: Qt.platform.os == "windows"? true : false } } } diff --git a/src/settingsview/components/PluginSettingsPage.qml b/src/settingsview/components/PluginSettingsPage.qml index e8f94e78ba43b36df661f507158146e9846b0806..df8e5fb1062dc3281a97e81ceadff98c29ce340a 100644 --- a/src/settingsview/components/PluginSettingsPage.qml +++ b/src/settingsview/components/PluginSettingsPage.qml @@ -29,6 +29,9 @@ import "../../commoncomponents" Rectangle { id: root + property int contentWidth: pluginSettingsColumnLayout.width + property int preferredHeight: pluginSettingsColumnLayout.implicitHeight + function populatePluginSettings() { enabledplugin.checked = PluginModel.getPluginsEnabled() pluginListSettingsView.visible = enabledplugin.checked @@ -38,82 +41,62 @@ Rectangle { PluginModel.setPluginsEnabled(state) } - signal backArrowClicked - ColumnLayout { + id: pluginSettingsColumnLayout + anchors.centerIn: root height: root.height width: Math.min(JamiTheme.maximumWidthSettingsView, root.width) - SettingsHeader { - Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.fillWidth: true - Layout.preferredHeight: 64 - - title: qsTr("Plugin") + ToggleSwitch { + id: enabledplugin - onBackArrowClicked: root.backArrowClicked() - } - - ScrollView { - id: pluginScrollView - - Layout.fillHeight: true + Layout.alignment: Qt.AlignTop | Qt.AlignHCenter Layout.fillWidth: true + Layout.topMargin: JamiTheme.preferredMarginSize + Layout.leftMargin: JamiTheme.preferredMarginSize + Layout.rightMargin: JamiTheme.preferredMarginSize - focus: true - clip: true - - ColumnLayout { - width: pluginScrollView.width + labelText: "Enable" + fontPointSize: JamiTheme.headerFontSize - ToggleSwitch { - id: enabledplugin - Layout.fillWidth: true - Layout.topMargin: JamiTheme.preferredMarginSize - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.rightMargin: JamiTheme.preferredMarginSize + onSwitchToggled: { + slotSetPluginEnabled(checked) - labelText: "Enable" - fontPointSize: JamiTheme.headerFontSize + pluginListSettingsView.visible = checked + if (!pluginListSettingsView.visible) { + PluginModel.toggleCallMediaHandler("", true) + pluginListSettingsView.hidePreferences() + } + } + } - onSwitchToggled: { - slotSetPluginEnabled(checked) + PluginListSettingsView { + id: pluginListSettingsView - pluginListSettingsView.visible = checked - if (!pluginListSettingsView.visible) { - PluginModel.toggleCallMediaHandler("", true) - pluginListSettingsView.hidePreferences() - } - } - } + Layout.alignment: Qt.AlignTop | Qt.AlignHCenter + Layout.fillWidth: true + Layout.leftMargin: JamiTheme.preferredMarginSize + Layout.rightMargin: JamiTheme.preferredMarginSize - PluginListSettingsView { - id: pluginListSettingsView - Layout.fillWidth: true - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.rightMargin: JamiTheme.preferredMarginSize - Layout.alignment: Qt.AlignHCenter + pluginListPreferencesView: pluginListPreferencesView - pluginListPreferencesView: pluginListPreferencesView + Layout.topMargin: JamiTheme.preferredMarginSize + Layout.minimumHeight: 0 + Layout.preferredHeight: childrenRect.height + } - Layout.topMargin: JamiTheme.preferredMarginSize - Layout.minimumHeight: 0 - Layout.preferredHeight: childrenRect.height - } + PluginListPreferencesView { + id: pluginListPreferencesView - PluginListPreferencesView { - id: pluginListPreferencesView - Layout.fillWidth: true - Layout.leftMargin: JamiTheme.preferredMarginSize - Layout.rightMargin: JamiTheme.preferredMarginSize - Layout.bottomMargin: JamiTheme.preferredMarginSize - Layout.minimumHeight: 0 - Layout.preferredHeight: childrenRect.height - } - } + Layout.alignment: Qt.AlignTop | Qt.AlignHCenter + Layout.fillWidth: true + Layout.leftMargin: JamiTheme.preferredMarginSize + Layout.rightMargin: JamiTheme.preferredMarginSize + Layout.bottomMargin: JamiTheme.preferredMarginSize + Layout.minimumHeight: 0 + Layout.preferredHeight: childrenRect.height } } } diff --git a/src/settingsview/components/RecordingSettings.qml b/src/settingsview/components/RecordingSettings.qml index 897163d49076738ea2d3fa78c2aea9173085d9b6..b8bdc516283ab8dd22f3f09efb2f07258b69228c 100644 --- a/src/settingsview/components/RecordingSettings.qml +++ b/src/settingsview/components/RecordingSettings.qml @@ -174,7 +174,7 @@ ColumnLayout { id: recordPathButton Layout.alignment: Qt.AlignRight - Layout.fillHeight: true + Layout.preferredHeight: JamiTheme.preferredFieldHeight Layout.preferredWidth: itemWidth toolTipText: JamiStrings.tipRecordFolder diff --git a/src/settingsview/components/SettingsComboBox.qml b/src/settingsview/components/SettingsComboBox.qml index f69ab51d5c3ccc660900ec7344635661a7cd23a9..b6b10dc96470721b59f2d1283355a3498c0d6f79 100644 --- a/src/settingsview/components/SettingsComboBox.qml +++ b/src/settingsview/components/SettingsComboBox.qml @@ -52,17 +52,19 @@ RowLayout { ElidedTextLabel { id: label + Layout.fillWidth: true Layout.preferredHeight: heightOfLayout - Layout.rightMargin: JamiTheme.preferredMarginSize + Layout.rightMargin: JamiTheme.preferredMarginSize / 2 eText: qsTr(labelText) fontSize: JamiTheme.settingsFontSize - maxWidth: width + maxWidth: widthOfComboBox } SettingParaCombobox { id: comboBoxOfLayout + Layout.preferredWidth: widthOfComboBox Layout.preferredHeight: JamiTheme.preferredFieldHeight diff --git a/src/settingsview/components/SystemSettings.qml b/src/settingsview/components/SystemSettings.qml index eb32463e0a2a6031d62fb64628e50f3f97b368aa..84470d6f8d91413f04aa1dd338ce4e4d0af9d55a 100644 --- a/src/settingsview/components/SystemSettings.qml +++ b/src/settingsview/components/SystemSettings.qml @@ -127,7 +127,7 @@ ColumnLayout { Layout.alignment: Qt.AlignRight Layout.preferredWidth: itemWidth - Layout.fillHeight: true + Layout.preferredHeight: JamiTheme.preferredFieldHeight toolTipText: JamiStrings.tipChooseDownloadFolder text: downloadPath diff --git a/src/settingsview/components/VideoSettings.qml b/src/settingsview/components/VideoSettings.qml index c2f12d70968ad9efd74c1e62aa1ce97313865555..16c5c96e8ee86c8c68ee70aafc6da411b037d74e 100644 --- a/src/settingsview/components/VideoSettings.qml +++ b/src/settingsview/components/VideoSettings.qml @@ -155,7 +155,7 @@ ColumnLayout { id: deviceComboBoxSetting Layout.fillWidth: true - Layout.maximumHeight: JamiTheme.preferredFieldHeight + Layout.preferredHeight: JamiTheme.preferredFieldHeight Layout.leftMargin: JamiTheme.preferredMarginSize labelText: JamiStrings.device @@ -174,7 +174,7 @@ ColumnLayout { id: resolutionComboBoxSetting Layout.fillWidth: true - Layout.maximumHeight: JamiTheme.preferredFieldHeight + Layout.preferredHeight: JamiTheme.preferredFieldHeight Layout.leftMargin: JamiTheme.preferredMarginSize labelText: JamiStrings.resolution @@ -193,7 +193,7 @@ ColumnLayout { id: fpsComboBoxSetting Layout.fillWidth: true - Layout.maximumHeight: JamiTheme.preferredFieldHeight + Layout.preferredHeight: JamiTheme.preferredFieldHeight Layout.leftMargin: JamiTheme.preferredMarginSize labelText: JamiStrings.fps @@ -227,22 +227,21 @@ ColumnLayout { // video Preview Rectangle { id: rectBox + Layout.alignment: Qt.AlignHCenter - Layout.maximumHeight: width * aspectRatio - Layout.minimumHeight: width * aspectRatio Layout.preferredHeight: width * aspectRatio Layout.minimumWidth: 200 Layout.maximumWidth: 400 Layout.preferredWidth: itemWidth * 2 Layout.bottomMargin: JamiTheme.preferredMarginSize + color: "white" radius: 5 PreviewRenderer { id: previewWidget anchors.fill: rectBox - anchors.centerIn: rectBox layer.enabled: true layer.effect: OpacityMask {