summaryrefslogtreecommitdiff
path: root/src/rateapp.cpp
diff options
context:
space:
mode:
authorLibravatar Mubashshir <[email protected]>2023-03-07 21:11:06 +0600
committerLibravatar Mubashshir <[email protected]>2023-03-07 21:11:06 +0600
commitd830bfc8ce7c6763d074beafdde7cab1835d31f9 (patch)
tree179f81f3b42779b1f6fb69deed6b69dab39f4f89 /src/rateapp.cpp
downloadwhatsie-d830bfc8ce7c6763d074beafdde7cab1835d31f9.tar.gz
whatsie-d830bfc8ce7c6763d074beafdde7cab1835d31f9.zip
Import Upstream version 4.12.0upstream/4.12.0
Diffstat (limited to 'src/rateapp.cpp')
-rw-r--r--src/rateapp.cpp133
1 files changed, 133 insertions, 0 deletions
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 <QDebug>
+#include <QMetaEnum>
+
+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();
+}