package org.commcare.utils;
import org.commcare.activities.EntitySelectActivity;
import org.commcare.preferences.DeveloperPreferences;
import java.util.Timer;
import java.util.TimerTask;
/**
* Timer to refresh the case list every once in a while. Used in special cases
* (and has to be manually enabled) when case lists contain scheduling info
* that needs updating.
*
* @author Phillip Mates (pmates@dimagi.com).
*/
public class EntitySelectRefreshTimer {
private Timer myTimer;
private final Object timerLock = new Object();
private boolean cancelled;
public EntitySelectRefreshTimer() {
}
public void start(final EntitySelectActivity activity) {
if (DeveloperPreferences.isListRefreshEnabled() && myTimer == null) {
myTimer = new Timer();
synchronized (timerLock) {
myTimer.schedule(new TimerTask() {
@Override
public void run() {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
if (!cancelled) {
activity.loadEntities();
}
}
});
}
}, 15 * 1000, 15 * 1000);
cancelled = false;
}
}
}
public void stop() {
synchronized (timerLock) {
if (myTimer != null) {
myTimer.cancel();
myTimer = null;
cancelled = true;
}
}
}
}