From d830bfc8ce7c6763d074beafdde7cab1835d31f9 Mon Sep 17 00:00:00 2001 From: Mubashshir Date: Tue, 7 Mar 2023 21:11:06 +0600 Subject: Import Upstream version 4.12.0 --- src/rateapp.cpp | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 src/rateapp.cpp (limited to 'src/rateapp.cpp') diff --git a/src/rateapp.cpp b/src/rateapp.cpp new file mode 100644 index 0000000..5c370a9 --- /dev/null +++ b/src/rateapp.cpp @@ -0,0 +1,133 @@ +#include "rateapp.h" +#include "ui_rateapp.h" +#include +#include + +RateApp::RateApp(QWidget *parent, QString app_rating_url, int app_launch_count, + int app_install_days, int present_delay) + : QWidget(parent), ui(new Ui::RateApp) { + ui->setupUi(this); + + this->app_rating_url = + app_rating_url; // Url to open when rating button clicked + this->app_launch_count = + app_launch_count; // How many time the app must be launched by user to + // show this dialog + this->app_install_days = + app_install_days; // How many days the app must be installed by user to + // show this dialog + this->present_delay = + present_delay; // Delay after which this dialog should be shown to use if + // all conditions matched + + showTimer = new QTimer(this); + showTimer->setInterval(this->present_delay); + connect(showTimer, &QTimer::timeout, [=]() { + qDebug() << "Rate timer timeout"; + emit showRateDialog(); + if (this->isVisible()) + showTimer->stop(); + }); + + // increase the app_launched_count by one + int app_launched = settings.value("app_launched_count", 0).toInt(); + settings.setValue("app_launched_count", app_launched + 1); + + // check if app install time is set in settings + if (settings.value("app_install_time").isNull()) { + settings.setValue("app_install_time", QDateTime::currentSecsSinceEpoch()); + + } else if (settings.value("app_install_time").isValid()) { + //qDebug() << "RATEAPP should show:" << shouldShow(); + if (shouldShow()) { + showTimer->start(); + } else { + // if shouldshow is false, delete this obj to free resources + showTimer->stop(); + this->deleteLater(); + } + } + + // if already reated delete this obj to free resources + if (settings.value("rated_already", false).toBool()) { + this->deleteLater(); + } +} + +void RateApp::delayShowEvent() { + showTimer->start(); + + qDebug() << "Timer running" << showTimer->isActive() << showTimer->interval() + << showTimer->isSingleShot(); + qDebug() << "App was minimized and was not visible, " + "hence delaying the showevent of RateApp dialog by " + << this->showTimer->interval() / 1000 << "seconds"; +} + +/** + * @brief RateApp::shouldShow + * @return true, if the dialog should be shown to user + */ +bool RateApp::shouldShow() { + bool shouldShow = false; + int app_launched_count = settings.value("app_launched_count", 0).toInt(); + qint64 currentDateTime = QDateTime::currentSecsSinceEpoch(); + qint64 installed_date_time = settings.value("app_install_time").toLongLong(); + bool ratedAlready = settings.value("rated_already", false).toBool(); + + if (ratedAlready) // return false if already reated; + return false; + + shouldShow = + (((currentDateTime - installed_date_time > app_install_days * 86400) || + app_launched_count >= this->app_launch_count) && + ratedAlready == false); + + return shouldShow; +} + +RateApp::~RateApp() { + showTimer->disconnect(); + showTimer->deleteLater(); + delete ui; +} + +void RateApp::on_rateNowBtn_clicked() { + QDesktopServices::openUrl(QUrl(app_rating_url)); + this->reset(); + this->close(); +} + +void RateApp::on_alreadyDoneBtn_clicked() { + settings.setValue("rated_already", true); + this->close(); +} + +void RateApp::on_laterBtn_clicked() { + this->reset(); + this->close(); +} + +void RateApp::reset() { + settings.setValue("rated_already", false); + settings.setValue("app_launched_count", 0); + settings.setValue("app_install_time", QDateTime::currentSecsSinceEpoch()); +} + +void RateApp::on_rateOnGithub_clicked() { + QDesktopServices::openUrl(QUrl("https://github.com/keshavbhatt/whatsie")); + this->reset(); + this->close(); +} + +void RateApp::on_donate_clicked() { + QDesktopServices::openUrl(QUrl("https://paypal.me/keshavnrj/5.00")); + this->reset(); + this->close(); +} + +void RateApp::on_donate_2_clicked() { + QDesktopServices::openUrl(QUrl("https://opencollective.com/whatsie")); + this->reset(); + this->close(); +} -- cgit v1.2.3