aboutsummaryrefslogtreecommitdiff
path: root/src/rateapp.cpp
diff options
context:
space:
mode:
authorLibravatar keshavbhatt <keshavnrj@gmail.com>2021-05-05 02:47:48 +0530
committerLibravatar keshavbhatt <keshavnrj@gmail.com>2021-05-05 02:47:48 +0530
commit45f7260d85197a6d6fc82f9058bdb00941e471ab (patch)
treef4e90a89a3207b7528cf95cd6ac6307174f9c6ce /src/rateapp.cpp
parenta11a1df736dc275f6df57a2a4ff007090f89ace2 (diff)
downloadwhatsie-45f7260d85197a6d6fc82f9058bdb00941e471ab.tar.gz
whatsie-45f7260d85197a6d6fc82f9058bdb00941e471ab.zip
added rate app dialog
Diffstat (limited to 'src/rateapp.cpp')
-rw-r--r--src/rateapp.cpp120
1 files changed, 120 insertions, 0 deletions
diff --git a/src/rateapp.cpp b/src/rateapp.cpp
new file mode 100644
index 0000000..03926e2
--- /dev/null
+++ b/src/rateapp.cpp
@@ -0,0 +1,120 @@
+#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
+ 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();
+
+ shouldShow = (((currentDateTime - installed_date_time > app_install_days * 86400) ||
+ app_launched_count >= this->app_launch_count)
+ && ratedAlready == false);
+
+ return shouldShow;
+}
+
+RateApp::~RateApp()
+{
+ qDebug()<<"RateApp Obj deleted";
+ showTimer->disconnect();
+ showTimer->deleteLater();
+ delete ui;
+}
+
+
+void RateApp::on_rateNowBtn_clicked()
+{
+ QDesktopServices::openUrl(QUrl(app_rating_url));
+ settings.setValue("app_launched_count",0);
+ settings.setValue("app_install_time",QDateTime::currentSecsSinceEpoch());
+ this->close();
+}
+
+void RateApp::on_alreadyDoneBtn_clicked()
+{
+ settings.setValue("rated_already",true);
+ this->close();
+}
+
+void RateApp::on_laterBtn_clicked()
+{
+ settings.setValue("rated_already",false);
+ settings.setValue("app_launched_count",0);
+ settings.setValue("app_install_time",QDateTime::currentSecsSinceEpoch());
+ this->close();
+}
+
+void RateApp::closeEvent(QCloseEvent *event)
+{
+ settings.setValue("rated_already",false);
+ settings.setValue("app_launched_count",0);
+ settings.setValue("app_install_time",QDateTime::currentSecsSinceEpoch());
+ QWidget::closeEvent(event);
+}