]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - src/tim/prune/tips/TipDefinition.java
Moved source into separate src directory due to popular request
[GpsPrune.git] / src / tim / prune / tips / TipDefinition.java
diff --git a/src/tim/prune/tips/TipDefinition.java b/src/tim/prune/tips/TipDefinition.java
new file mode 100644 (file)
index 0000000..c58fe5c
--- /dev/null
@@ -0,0 +1,66 @@
+package tim.prune.tips;
+
+/**
+ * Definition of a tip, including key and whether the tip
+ * has already been shown or not.
+ * This class is only visible within this package
+ */
+class TipDefinition
+{
+       /** Key of message to show when fired */
+       private String _messageKey = null;
+       /** Threshold of calls before tip is shown */
+       private int _threshold = 0;
+       /** Number of times this tip has been hit */
+       private int _hitCount = 0;
+       /** Flag whether tip is active or has already been shown */
+       private boolean _active = true;
+
+       /**
+        * Constructor
+        * @param inKey key for message to show
+        */
+       TipDefinition(String inKey)
+       {
+               this(inKey, 0);
+       }
+
+       /**
+        * Constructor
+        * @param inKey message key
+        * @param inThreshold threshold
+        */
+       TipDefinition(String inKey, int inThreshold)
+       {
+               _messageKey = inKey;
+               _threshold  = inThreshold;
+       }
+
+       /**
+        * Hit this definition and check the threshold
+        * @return true if the message should be shown
+        */
+       boolean shouldShowMessage()
+       {
+               if (_active)
+               {
+                       boolean overThreshold = (_hitCount >= _threshold);
+                       if (!overThreshold) {
+                               _hitCount++;
+                       }
+                       else {
+                               _active = false; // only fire once
+                       }
+                       return overThreshold;
+               }
+               // not active
+               return false;
+       }
+
+       /**
+        * @return message key
+        */
+       String getMessageKey() {
+               return _messageKey;
+       }
+}