From 55415d6062e8cfaff3abeb98a45d612b031928c2 Mon Sep 17 00:00:00 2001 From: lcoursodon <liam.coursodon@savoirfairelinux.com> Date: Wed, 27 Sep 2023 11:34:30 -0400 Subject: [PATCH] Donation campaign: add toggleswitch setting GitLab: #1334 Change-Id: Ic0e2a4b08db7228e4a4bdab665f53adfa581e16c --- src/app/appsettingsmanager.h | 5 ++- src/app/constant/JamiQmlUtils.qml | 8 +++- src/app/constant/JamiStrings.qml | 1 + .../mainview/components/DonationBanner.qml | 3 +- .../components/SystemSettingsPage.qml | 37 +++++++++++++++---- 5 files changed, 41 insertions(+), 13 deletions(-) diff --git a/src/app/appsettingsmanager.h b/src/app/appsettingsmanager.h index 69344ac6c..0473a3dd6 100644 --- a/src/app/appsettingsmanager.h +++ b/src/app/appsettingsmanager.h @@ -64,7 +64,10 @@ extern const QString defaultDownloadPath; X(ShowMardownOption, false) \ X(ChatViewEnterIsNewLine, false) \ X(ShowSendOption, false) \ - X(DonateVisibleDate, "2999-02-01 05:00") + X(DonationVisibleDate, "2023-11-01 05:00") \ + X(IsDonationVisible, true) \ + X(DonationEndDate, "2024-01-01 00:00") + /* * A class to expose settings keys in both c++ and QML. * Note: this is using a non-constructable class instead of a diff --git a/src/app/constant/JamiQmlUtils.qml b/src/app/constant/JamiQmlUtils.qml index 4b5aa62bd..71e736ce5 100644 --- a/src/app/constant/JamiQmlUtils.qml +++ b/src/app/constant/JamiQmlUtils.qml @@ -72,7 +72,11 @@ Item { } function isDonationBannerVisible() { - // The banner is visible if the current date is after the date set in the settings - return new Date() > new Date(Date.parse(UtilsAdapter.getAppValue(Settings.Key.DonateVisibleDate))); + // The banner is visible if the current date is after the date set in the settings and before the end date + // And if the donation toggle is checked + var isDonationVisible = UtilsAdapter.getAppValue(Settings.Key.IsDonationVisible); + var endDonationDate = new Date(Date.parse(UtilsAdapter.getAppValue(Settings.Key.DonationEndDate))); + var donationVisibleDate = new Date(Date.parse(UtilsAdapter.getAppValue(Settings.Key.DonationVisibleDate))); + return new Date() < endDonationDate && new Date() > donationVisibleDate && isDonationVisible; } } diff --git a/src/app/constant/JamiStrings.qml b/src/app/constant/JamiStrings.qml index eadba1a32..086d0fc79 100644 --- a/src/app/constant/JamiStrings.qml +++ b/src/app/constant/JamiStrings.qml @@ -843,4 +843,5 @@ Item { property string donation: qsTr("Donate") property string donationText: qsTr("If you enjoy using Jami and believe in our mission, would you make a donation?") property string notNow: qsTr("Not now") + property string enableDonation: qsTr("Enable donation campaign") } diff --git a/src/app/mainview/components/DonationBanner.qml b/src/app/mainview/components/DonationBanner.qml index b7538878f..afc74e47c 100644 --- a/src/app/mainview/components/DonationBanner.qml +++ b/src/app/mainview/components/DonationBanner.qml @@ -109,8 +109,7 @@ Rectangle { anchors.fill: parent onClicked: { // When the user clicks on "Not now", we set the donation date to 7 days from now (1 for the test) - // TODO reset to 7 days - UtilsAdapter.setAppValue(Settings.Key.DonateVisibleDate, new Date(new Date().getTime() + 1 * 24 * 60 * 60 * 1000).toISOString().slice(0, 16).replace("T", " ")); + UtilsAdapter.setAppValue(Settings.Key.DonationVisibleDate, new Date(new Date().getTime() + 7 * 24 * 60 * 60 * 1000).toISOString().slice(0, 16).replace("T", " ")); donation.donationVisible = Qt.binding(() => JamiQmlUtils.isDonationBannerVisible()); } } diff --git a/src/app/settingsview/components/SystemSettingsPage.qml b/src/app/settingsview/components/SystemSettingsPage.qml index 32e58d058..abc472136 100644 --- a/src/app/settingsview/components/SystemSettingsPage.qml +++ b/src/app/settingsview/components/SystemSettingsPage.qml @@ -49,11 +49,13 @@ SettingsPageBase { anchors.left: parent.left anchors.leftMargin: JamiTheme.preferredSettingsMarginSize - ColumnLayout { + Column { id: enableAccount width: parent.width + spacing: 10 + FolderDialog { id: downloadPathDialog @@ -71,7 +73,7 @@ SettingsPageBase { ToggleSwitch { id: notificationCheckBox - Layout.fillWidth: true + width: parent.width checked: UtilsAdapter.getAppValue(Settings.EnableNotifications) labelText: JamiStrings.showNotifications @@ -79,9 +81,25 @@ SettingsPageBase { onSwitchToggled: UtilsAdapter.setAppValue(Settings.Key.EnableNotifications, checked) } + ToggleSwitch { + id: enableDonation + width: parent.width + visible: new Date() >= new Date(Date.parse("2023-11-01")) + + checked: UtilsAdapter.getAppValue(Settings.Key.IsDonationVisible) + labelText: JamiStrings.enableDonation + tooltipText: JamiStrings.enableDonation + onSwitchToggled: { + UtilsAdapter.setAppValue(Settings.Key.IsDonationVisible, checked); + if (checked) { + UtilsAdapter.setToDefault(Settings.Key.DonationVisibleDate); + } + } + } + ToggleSwitch { id: closeOrMinCheckBox - Layout.fillWidth: true + width: parent.width visible: UtilsAdapter.isSystemTrayIconVisible() checked: UtilsAdapter.getAppValue(Settings.MinimizeOnClose) && UtilsAdapter.isSystemTrayIconVisible() @@ -91,7 +109,7 @@ SettingsPageBase { ToggleSwitch { id: applicationOnStartUpCheckBox - Layout.fillWidth: true + width: parent.width checked: UtilsAdapter.checkStartupLink() labelText: JamiStrings.runStartup @@ -100,8 +118,8 @@ SettingsPageBase { } RowLayout { - Layout.fillWidth: true - Layout.minimumHeight: JamiTheme.preferredFieldHeight + width: parent.width + height: JamiTheme.preferredFieldHeight Text { Layout.fillWidth: true @@ -138,8 +156,8 @@ SettingsPageBase { SettingsComboBox { id: langComboBoxSetting - Layout.fillWidth: true - Layout.preferredHeight: JamiTheme.preferredFieldHeight + width: parent.width + height: JamiTheme.preferredFieldHeight labelText: JamiStrings.language tipText: JamiStrings.language @@ -245,6 +263,9 @@ SettingsPageBase { UtilsAdapter.setToDefault(Settings.Key.MinimizeOnClose); UtilsAdapter.setToDefault(Settings.Key.LANG); UtilsAdapter.setToDefault(Settings.Key.EnableExperimentalSwarm); + UtilsAdapter.setToDefault(Settings.Key.IsDonationVisible); + UtilsAdapter.setToDefault(Settings.Key.DonationVisibleDate); + enableDonation.checked = Qt.binding(() => UtilsAdapter.getAppValue(Settings.Key.IsDonationVisible)); } } } -- GitLab