From 5d13c37301ad5747c5100088218aa951bd7b4797 Mon Sep 17 00:00:00 2001 From: Maxim Alov Date: Tue, 20 Feb 2018 14:08:39 +0300 Subject: [PATCH] Added options to choose from AND / OR conditions while applying standard criteria to decide, whether to show dialog --- .../ratethisapp/RateConditionsEnum.java | 3 ++ .../com/kobakei/ratethisapp/RateThisApp.java | 32 ++++++++++++------- 2 files changed, 24 insertions(+), 11 deletions(-) create mode 100644 ratethisapp/src/main/java/com/kobakei/ratethisapp/RateConditionsEnum.java diff --git a/ratethisapp/src/main/java/com/kobakei/ratethisapp/RateConditionsEnum.java b/ratethisapp/src/main/java/com/kobakei/ratethisapp/RateConditionsEnum.java new file mode 100644 index 0000000..79c86d2 --- /dev/null +++ b/ratethisapp/src/main/java/com/kobakei/ratethisapp/RateConditionsEnum.java @@ -0,0 +1,3 @@ +package com.kobakei.ratethisapp; + +public enum RateConditionsEnum { AND, OR } diff --git a/ratethisapp/src/main/java/com/kobakei/ratethisapp/RateThisApp.java b/ratethisapp/src/main/java/com/kobakei/ratethisapp/RateThisApp.java index bd00812..3ff046f 100644 --- a/ratethisapp/src/main/java/com/kobakei/ratethisapp/RateThisApp.java +++ b/ratethisapp/src/main/java/com/kobakei/ratethisapp/RateThisApp.java @@ -15,10 +15,6 @@ */ package com.kobakei.ratethisapp; -import java.lang.ref.WeakReference; -import java.util.Date; -import java.util.concurrent.TimeUnit; - import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; @@ -36,6 +32,10 @@ import android.util.Log; import android.view.KeyEvent; +import java.lang.ref.WeakReference; +import java.util.Date; +import java.util.concurrent.TimeUnit; + /** * RateThisApp
* A library to show the app rate dialog @@ -161,15 +161,20 @@ public static boolean shouldShowRateDialog() { if (mOptOut) { return false; } else { - if (mLaunchTimes >= sConfig.mCriteriaLaunchTimes) { - return true; - } + boolean launchTimesFulfilled = mLaunchTimes >= sConfig.mCriteriaLaunchTimes; + long threshold = TimeUnit.DAYS.toMillis(sConfig.mCriteriaInstallDays); // msec - if (new Date().getTime() - mInstallDate.getTime() >= threshold && - new Date().getTime() - mAskLaterDate.getTime() >= threshold) { - return true; + boolean installThresholdFulfilled = + new Date().getTime() - mInstallDate.getTime() >= threshold && + new Date().getTime() - mAskLaterDate.getTime() >= threshold; + + boolean answer = false; + switch (sConfig.mCondition) { + case AND: answer = launchTimesFulfilled && installThresholdFulfilled; break; + case OR: answer = launchTimesFulfilled || installThresholdFulfilled; break; } - return false; + + return answer; } } @@ -400,6 +405,7 @@ public static class Config { private int mNoButtonId = 0; private int mCancelButton = 0; private int mCancelMode = CANCEL_MODE_BACK_KEY_OR_TOUCH_OUTSIDE; + private RateConditionsEnum mCondition = RateConditionsEnum.OR; /** * Constructor with default criteria. @@ -474,6 +480,10 @@ public void setUrl(String url) { public void setCancelMode(int cancelMode) { this.mCancelMode = cancelMode; } + + public void setOrCondition() { this.mCondition = RateConditionsEnum.OR; } + + public void setAndCondition(){ this.mCondition = RateConditionsEnum.AND; } } /**