chore: fixed qr code display

This commit is contained in:
vladimir.kuznetsov 2025-02-19 14:56:53 +07:00
parent c128ba981c
commit a5254ac238
3 changed files with 17 additions and 12 deletions

View file

@ -99,8 +99,7 @@ void ApiConfigsController::prepareVpnKeyExport()
auto vpnKey = apiConfigObject.value(apiDefs::key::vpnKey).toString(); auto vpnKey = apiConfigObject.value(apiDefs::key::vpnKey).toString();
auto qr = qrCodeUtils::generateQrCode(vpnKey.toUtf8()); m_qrCodes = qrCodeUtils::generateQrCodeImageSeries(vpnKey.toUtf8());
m_qrCodes << qrCodeUtils::svgToBase64(QString::fromStdString(toSvgString(qr, 1)));
emit vpnKeyExportReady(); emit vpnKeyExportReady();
} }
@ -214,6 +213,7 @@ bool ApiConfigsController::updateServiceFromGateway(const int serverIndex, const
newApiConfig.insert(configKey::userCountryCode, apiConfig.value(configKey::userCountryCode)); newApiConfig.insert(configKey::userCountryCode, apiConfig.value(configKey::userCountryCode));
newApiConfig.insert(configKey::serviceType, apiConfig.value(configKey::serviceType)); newApiConfig.insert(configKey::serviceType, apiConfig.value(configKey::serviceType));
newApiConfig.insert(configKey::serviceProtocol, apiConfig.value(configKey::serviceProtocol)); newApiConfig.insert(configKey::serviceProtocol, apiConfig.value(configKey::serviceProtocol));
newApiConfig.insert(apiDefs::key::vpnKey, apiConfig.value(apiDefs::key::vpnKey));
newServerConfig.insert(configKey::apiConfig, newApiConfig); newServerConfig.insert(configKey::apiConfig, newApiConfig);
newServerConfig.insert(configKey::authData, authData); newServerConfig.insert(configKey::authData, authData);

View file

@ -24,7 +24,7 @@ DrawerType2 {
property string configContentHeaderText property string configContentHeaderText
property string shareButtonText: qsTr("Share") property string shareButtonText: qsTr("Share")
property string copyButtonText: qsTr("Copy") property string copyButtonText: qsTr("Copy")
property bool showSettingsButtonVisible: true property bool isSelfHostedConfig: true
property string configExtension: ".vpn" property string configExtension: ".vpn"
property string configCaption: qsTr("Save AmneziaVPN config") property string configCaption: qsTr("Save AmneziaVPN config")
@ -153,7 +153,7 @@ DrawerType2 {
Layout.leftMargin: 16 Layout.leftMargin: 16
Layout.rightMargin: 16 Layout.rightMargin: 16
visible: root.showSettingsButtonVisible visible: root.isSelfHostedConfig
defaultColor: AmneziaStyle.color.transparent defaultColor: AmneziaStyle.color.transparent
hoveredColor: AmneziaStyle.color.translucentWhite hoveredColor: AmneziaStyle.color.translucentWhite
@ -285,6 +285,8 @@ DrawerType2 {
delegate: ColumnLayout { delegate: ColumnLayout {
width: listView.width width: listView.width
property bool isQrCodeVisible: root.isSelfHostedConfig ? ExportController.qrCodesCount > 0 : ApiConfigsController.qrCodesCount > 0
Rectangle { Rectangle {
id: qrCodeContainer id: qrCodeContainer
@ -294,7 +296,7 @@ DrawerType2 {
Layout.leftMargin: 16 Layout.leftMargin: 16
Layout.rightMargin: 16 Layout.rightMargin: 16
visible: ExportController.qrCodesCount > 0 visible: isQrCodeVisible
color: "white" color: "white"
@ -302,7 +304,8 @@ DrawerType2 {
anchors.fill: parent anchors.fill: parent
smooth: false smooth: false
source: ExportController.qrCodesCount ? ExportController.qrCodes[0] : "" source: root.isSelfHostedConfig ? (isQrCodeVisible ? ExportController.qrCodes[0] : "") :
(isQrCodeVisible ? ApiConfigsController.qrCodes[0] : "")
property bool isFocusable: true property bool isFocusable: true
@ -333,15 +336,17 @@ DrawerType2 {
Timer { Timer {
property int index: 0 property int index: 0
interval: 1000 interval: 1000
running: ExportController.qrCodesCount > 0 running: isQrCodeVisible
repeat: true repeat: true
onTriggered: { onTriggered: {
if (ExportController.qrCodesCount > 0) { if (isQrCodeVisible) {
index++ index++
if (index >= ExportController.qrCodesCount) { let qrCodesCount = root.isSelfHostedConfig ? ExportController.qrCodesCount : ApiConfigsController.qrCodesCount
if (index >= qrCodesCount) {
index = 0 index = 0
} }
parent.source = ExportController.qrCodes[index]
parent.source = root.isSelfHostedConfig ? ExportController.qrCodes[index] : ApiConfigsController.qrCodes[index]
} }
} }
} }
@ -359,7 +364,7 @@ DrawerType2 {
Layout.leftMargin: 16 Layout.leftMargin: 16
Layout.rightMargin: 16 Layout.rightMargin: 16
visible: ExportController.qrCodesCount > 0 visible: isQrCodeVisible
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
text: qsTr("To read the QR code in the Amnezia app, select \"Add server\" → \"I have data to connect\" → \"QR code, key or settings file\"") text: qsTr("To read the QR code in the Amnezia app, select \"Add server\" → \"I have data to connect\" → \"QR code, key or settings file\"")

View file

@ -163,7 +163,7 @@ PageType {
shareConnectionDrawer.headerText = qsTr("Amnezia Premium subscription key") shareConnectionDrawer.headerText = qsTr("Amnezia Premium subscription key")
shareConnectionDrawer.openTriggered() shareConnectionDrawer.openTriggered()
shareConnectionDrawer.showSettingsButtonVisible = false; shareConnectionDrawer.isSelfHostedConfig = false;
shareConnectionDrawer.shareButtonText = qsTr("Save VPN key to file") shareConnectionDrawer.shareButtonText = qsTr("Save VPN key to file")
shareConnectionDrawer.copyButtonText = qsTr("Copy VPN key") shareConnectionDrawer.copyButtonText = qsTr("Copy VPN key")