From 7f0a94dd48cdabab914f52711c9b7966cccd5512 Mon Sep 17 00:00:00 2001 From: Fadi Shehadeh Date: Fri, 14 Mar 2025 16:09:43 -0400 Subject: [PATCH] RTL: AboutPopUp fix Fixed the alignment problem with RTL languages on the About Jami PopUp. GitLab: #1952 Change-Id: I8262cb658ac3099a113e04574df3e93bd7993f0b --- src/app/mainview/components/AboutPopUp.qml | 354 +++++++++++---------- 1 file changed, 179 insertions(+), 175 deletions(-) diff --git a/src/app/mainview/components/AboutPopUp.qml b/src/app/mainview/components/AboutPopUp.qml index 2793960e..ba258f4b 100644 --- a/src/app/mainview/components/AboutPopUp.qml +++ b/src/app/mainview/components/AboutPopUp.qml @@ -32,219 +32,223 @@ BaseModalDialog { button1.text: JamiStrings.contribute button2.text: JamiStrings.feedback - button1.onClicked: { Qt.openUrlExternally("https://jami.net/contribute/")} - button2.onClicked: { Qt.openUrlExternally("mailto:jami@gnu.org")} + button1.onClicked: { + Qt.openUrlExternally("https://jami.net/contribute/"); + } + button2.onClicked: { + Qt.openUrlExternally("mailto:jami@gnu.org"); + } popupContent: JamiFlickable { - id: aboutPopUpScrollView + id: aboutPopUpScrollView - width: aboutPopUpContentRectColumnLayout.implicitWidth - height: Math.min(root.implicitHeight, aboutPopUpContentRectColumnLayout.implicitHeight) + width: aboutPopUpContentRectColumnLayout.implicitWidth + height: Math.min(root.implicitHeight, aboutPopUpContentRectColumnLayout.implicitHeight) - contentHeight: aboutPopUpContentRectColumnLayout.implicitHeight + contentHeight: aboutPopUpContentRectColumnLayout.implicitHeight - ColumnLayout { - id: aboutPopUpContentRectColumnLayout - anchors.centerIn: parent + ColumnLayout { + id: aboutPopUpContentRectColumnLayout + anchors.centerIn: parent + + RowLayout { + Layout.fillWidth: true + Layout.alignment: Qt.AlignCenter + spacing: 10 + + ResponsiveImage { + id: aboutPopUPJamiLogoImage - RowLayout{ - Layout.fillWidth: true Layout.alignment: Qt.AlignCenter - spacing: 10 + Layout.margins: 10 + Layout.preferredWidth: 150 + Layout.preferredHeight: 50 - ResponsiveImage { - id: aboutPopUPJamiLogoImage - - Layout.alignment: Qt.AlignCenter - Layout.margins: 10 - Layout.preferredWidth: 150 - Layout.preferredHeight: 50 - - source: JamiTheme.darkTheme ? JamiResources.logo_jami_standard_coul_white_svg : JamiResources.logo_jami_standard_coul_svg - } - - Control { - Layout.fillHeight: true - Layout.fillWidth: true - - background: Rectangle { - color: JamiTheme.backgroundRectangleColor - radius: 5 - } - - padding: 10 - contentItem: ColumnLayout { - spacing: 4 - TextEdit { - id: jamiSlogansText - Layout.alignment: Qt.AlignLeft - - wrapMode: Text.WordWrap - font.pixelSize: JamiTheme.menuFontSize - font.bold: true - - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - - text: textMetricsjamiSlogansText.text - selectByMouse: true - readOnly: true - color: JamiTheme.textColor - - TextMetrics { - id: textMetricsjamiSlogansText - font: jamiSlogansText.font - text: JamiStrings.slogan - } - } - TextEdit { - Layout.alignment: Qt.AlignLeft - - font.pixelSize: JamiTheme.textFontSize - padding: 0 - readonly property bool isBeta: AppVersionManager.isCurrentVersionBeta() - text: { - // HACK: Only display the version string if it has been constructed properly. - // This is a workaround for an issue that occurs due to the way Linux - // packaging is done, where the git repository is not available in the - // build source at configure time, which is when the version files are - // generated, so we prevent a "." from being displayed if the version - // string is not available. - var contentStr = JamiStrings.buildID + ": " + UtilsAdapter.getBuildIDStr(); - const versionStr = UtilsAdapter.getVersionStr() - if (versionStr.length > 1) { - contentStr += "\n" + JamiStrings.version + ": " + (isBeta ? "(Beta) " : "") + versionStr - } - return contentStr - } - - selectByMouse: true - readOnly: true - - color: JamiTheme.faddedFontColor - } - } - } + source: JamiTheme.darkTheme ? JamiResources.logo_jami_standard_coul_white_svg : JamiResources.logo_jami_standard_coul_svg } - TextEdit { - id: jamiDeclarationHyperText - - Layout.alignment: Qt.AlignLeft + Control { + Layout.fillHeight: true Layout.fillWidth: true - // Strangely, hoveredLink works badly when width grows too large - Layout.maximumWidth: JamiTheme.preferredDialogWidth - 2*JamiTheme.preferredMarginSize - Layout.topMargin: 15 - - color: JamiTheme.textColor - - font.pixelSize: JamiTheme.menuFontSize - verticalAlignment: Text.AlignVCenter - - text: textMetricsjamiDeclarationHyperText.text - textFormat: TextEdit.RichText - wrapMode: TextEdit.WordWrap - selectByMouse: true - readOnly: true - onLinkActivated: Qt.openUrlExternally(link) - - TextMetrics { - id: textMetricsjamiDeclarationHyperText - font: jamiDeclarationHyperText.font - text: JamiStrings.declaration + background: Rectangle { + color: JamiTheme.backgroundRectangleColor + radius: 5 } - MouseArea { - anchors.fill: parent + padding: 10 + contentItem: ColumnLayout { + spacing: 4 + TextEdit { + id: jamiSlogansText + Layout.alignment: Qt.AlignLeft - // We don't want to eat clicks on the Text. - acceptedButtons: Qt.NoButton - cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor + wrapMode: Text.WordWrap + font.pixelSize: JamiTheme.menuFontSize + font.bold: true + + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + + text: textMetricsjamiSlogansText.text + selectByMouse: true + readOnly: true + color: JamiTheme.textColor + + TextMetrics { + id: textMetricsjamiSlogansText + font: jamiSlogansText.font + text: JamiStrings.slogan + } + } + TextEdit { + Layout.alignment: Qt.AlignLeft + + font.pixelSize: JamiTheme.textFontSize + padding: 0 + readonly property bool isBeta: AppVersionManager.isCurrentVersionBeta() + text: { + // HACK: Only display the version string if it has been constructed properly. + // This is a workaround for an issue that occurs due to the way Linux + // packaging is done, where the git repository is not available in the + // build source at configure time, which is when the version files are + // generated, so we prevent a "." from being displayed if the version + // string is not available. + var contentStr = JamiStrings.buildID + ": " + UtilsAdapter.getBuildIDStr(); + const versionStr = UtilsAdapter.getVersionStr(); + if (versionStr.length > 1) { + contentStr += "\n" + JamiStrings.version + ": " + (isBeta ? "(Beta) " : "") + versionStr; + } + return contentStr; + } + + selectByMouse: true + readOnly: true + + color: JamiTheme.faddedFontColor + } } } + } - TextEdit { - id: jamiNoneWarrantyHyperText + TextEdit { + id: jamiDeclarationHyperText - Layout.alignment: Qt.AlignLeft - Layout.maximumWidth: JamiTheme.preferredDialogWidth - 2*JamiTheme.preferredMarginSize - Layout.topMargin: 15 - wrapMode: Text.WordWrap - font.pixelSize: JamiTheme.menuFontSize + Layout.alignment: Qt.AlignLeft + Layout.fillWidth: true - verticalAlignment: Text.AlignTop - color: JamiTheme.textColor + // Strangely, hoveredLink works badly when width grows too large + Layout.maximumWidth: JamiTheme.preferredDialogWidth - 2 * JamiTheme.preferredMarginSize + Layout.topMargin: 15 - text: textMetricsjamiNoneWarrantyHyperText.text - textFormat: TextEdit.RichText - selectByMouse: true - readOnly: true - onLinkActivated: Qt.openUrlExternally(link) + color: JamiTheme.textColor - TextMetrics { - id: textMetricsjamiNoneWarrantyHyperText - font: jamiDeclarationHyperText.font - text: JamiStrings.noWarranty - } + font.pixelSize: JamiTheme.menuFontSize + verticalAlignment: Text.AlignVCenter - MouseArea { - anchors.fill: parent - acceptedButtons: Qt.NoButton - cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor - } + text: textMetricsjamiDeclarationHyperText.text + textFormat: TextEdit.RichText + wrapMode: TextEdit.WordWrap + selectByMouse: true + readOnly: true + onLinkActivated: Qt.openUrlExternally(link) + + TextMetrics { + id: textMetricsjamiDeclarationHyperText + font: jamiDeclarationHyperText.font + text: JamiStrings.declaration } - TextEdit { - id: jamiYears + MouseArea { + anchors.fill: parent - Layout.alignment: Qt.AlignLeft - Layout.maximumWidth: JamiTheme.preferredDialogWidth - 2*JamiTheme.preferredMarginSize - Layout.topMargin: 15 + // We don't want to eat clicks on the Text. + acceptedButtons: Qt.NoButton + cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor + } + } - wrapMode: Text.WordWrap - font.pixelSize: JamiTheme.menuFontSize - verticalAlignment: Text.AlignTop + TextEdit { + id: jamiNoneWarrantyHyperText - color: JamiTheme.textColor + Layout.alignment: Qt.AlignLeft + Layout.maximumWidth: JamiTheme.preferredDialogWidth - 2 * JamiTheme.preferredMarginSize + Layout.topMargin: 15 + wrapMode: Text.WordWrap + font.pixelSize: JamiTheme.menuFontSize - text: textMetricsYears.text - textFormat: TextEdit.RichText - selectByMouse: true - readOnly: true + verticalAlignment: Text.AlignTop + color: JamiTheme.textColor - onLinkActivated: Qt.openUrlExternally(link) + text: textMetricsjamiNoneWarrantyHyperText.text + textFormat: TextEdit.RichText + selectByMouse: true + readOnly: true + onLinkActivated: Qt.openUrlExternally(link) - TextMetrics { - id: textMetricsYears - font: jamiDeclarationHyperText.font - text: JamiStrings.declarationYear + " " + 'Savoir-faire Linux Inc.
' - } - - MouseArea { - anchors.fill: parent - acceptedButtons: Qt.NoButton - cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor - } + TextMetrics { + id: textMetricsjamiNoneWarrantyHyperText + font: jamiDeclarationHyperText.font + text: JamiStrings.noWarranty } - Rectangle { - width: projectCreditsScrollView.width + 20 - height: projectCreditsScrollView.height + 20 + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.NoButton + cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor + } + } - color: JamiTheme.backgroundRectangleColor - radius: 5 + TextEdit { + id: jamiYears - ProjectCreditsScrollView { - id: projectCreditsScrollView + Layout.alignment: Qt.AlignLeft + Layout.maximumWidth: JamiTheme.preferredDialogWidth - 2 * JamiTheme.preferredMarginSize + Layout.topMargin: 15 - anchors.centerIn: parent - width: JamiTheme.preferredDialogWidth - 2*JamiTheme.preferredMarginSize - height: 140 - anchors.margins: 10 - } + wrapMode: Text.WordWrap + font.pixelSize: JamiTheme.menuFontSize + verticalAlignment: Text.AlignTop + + color: JamiTheme.textColor + + text: textMetricsYears.text + textFormat: TextEdit.RichText + selectByMouse: true + readOnly: true + + onLinkActivated: Qt.openUrlExternally(link) + + TextMetrics { + id: textMetricsYears + font: jamiDeclarationHyperText.font + text: JamiStrings.declarationYear + " " + 'Savoir-faire Linux Inc.
' } + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.NoButton + cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor + } + } + + Rectangle { + + width: JamiTheme.preferredDialogWidth - 2 * JamiTheme.preferredMarginSize + height: 160 + + color: JamiTheme.backgroundRectangleColor + radius: 5 + + ProjectCreditsScrollView { + id: projectCreditsScrollView + + anchors.fill: parent + anchors.topMargin: JamiTheme.preferredMarginSize + anchors.bottomMargin: JamiTheme.preferredMarginSize + anchors.leftMargin: JamiTheme.preferredMarginSize / 2 + } + } } } }