diff --git a/ratethisapp/src/main/java/com/kobakei/ratethisapp/RateThisApp.java b/ratethisapp/src/main/java/com/kobakei/ratethisapp/RateThisApp.java index d0f533d..da007e5 100644 --- a/ratethisapp/src/main/java/com/kobakei/ratethisapp/RateThisApp.java +++ b/ratethisapp/src/main/java/com/kobakei/ratethisapp/RateThisApp.java @@ -28,6 +28,8 @@ import android.support.v7.app.AlertDialog; import android.util.Log; +import com.kobakei.ratethisapp.enums.RateConditionsEnum; + /** * RateThisApp
* A library to show the app rate dialog @@ -140,14 +142,16 @@ public static boolean shouldShowRateDialog() { if (mOptOut) { return false; } else { - if (mLaunchTimes >= sConfig.mCriteriaLaunchTimes) { - return true; - } + boolean launchTimesFulfilled = (mLaunchTimes >= sConfig.mCriteriaLaunchTimes); + long threshold = sConfig.mCriteriaInstallDays * 24 * 60 * 60 * 1000L; // msec - if (new Date().getTime() - mInstallDate.getTime() >= threshold) { - return true; + boolean installThresholdFulfilled = new Date().getTime() - mInstallDate.getTime() >= threshold; + + if (sConfig.mAndCondition){ + return launchTimesFulfilled && installThresholdFulfilled; + } else { + return launchTimesFulfilled || installThresholdFulfilled; } - return false; } } @@ -284,6 +288,7 @@ public static class Config { private int mRateButton = 0; private int mThanksButton = 0; private int mCancelButton = 0; + private boolean mAndCondition = false; /** * Constructor with default criteria. @@ -292,6 +297,11 @@ public Config() { this(7, 10); } + public Config(RateConditionsEnum rateConditionsJoin) { + this(); + this.mAndCondition = rateConditionsJoin == RateConditionsEnum.AND; + } + /** * Constructor. * @param criteriaInstallDays @@ -302,6 +312,18 @@ public Config(int criteriaInstallDays, int criteriaLaunchTimes) { this.mCriteriaLaunchTimes = criteriaLaunchTimes; } + /** + * Constructor. + * @param criteriaInstallDays + * @param criteriaLaunchTimes + * @param rateConditionsJoin + */ + public Config(int criteriaInstallDays, int criteriaLaunchTimes, RateConditionsEnum rateConditionsJoin) { + this.mCriteriaInstallDays = criteriaInstallDays; + this.mCriteriaLaunchTimes = criteriaLaunchTimes; + this.mAndCondition = rateConditionsJoin == RateConditionsEnum.AND; + } + /** * Set title string ID. * @param stringId @@ -317,7 +339,7 @@ public void setTitle(int stringId) { public void setMessage(int stringId) { this.mMessageId = stringId; } - + /** * Set rate now string ID. * @param stringId @@ -325,7 +347,7 @@ public void setMessage(int stringId) { public void setRateButton(int stringId) { this.mRateButton = stringId; } - + /** * Set no thanks string ID. * @param stringId @@ -333,7 +355,7 @@ public void setRateButton(int stringId) { public void setThanksButton(int stringId) { this.mThanksButton = stringId; } - + /** * Set cancel string ID. * @param stringId @@ -341,6 +363,16 @@ public void setThanksButton(int stringId) { public void setCancelButton(int stringId) { this.mCancelButton = stringId; } + + /** + * Set condition to And + */ + public void setOrCondition() { this.mAndCondition = false; } + + /** + * Set condition to Or + */ + public void setAndCondition(){ this.mAndCondition = true; } } public interface Callback { diff --git a/ratethisapp/src/main/java/com/kobakei/ratethisapp/enums/RateConditionsEnum.java b/ratethisapp/src/main/java/com/kobakei/ratethisapp/enums/RateConditionsEnum.java new file mode 100644 index 0000000..ef42629 --- /dev/null +++ b/ratethisapp/src/main/java/com/kobakei/ratethisapp/enums/RateConditionsEnum.java @@ -0,0 +1,9 @@ +package com.kobakei.ratethisapp.enums; + +/** + * Created by eylen + * Enum to choose the join condition to decide if the dialog should be shown + */ +public enum RateConditionsEnum { + AND, OR +}