/* * Copyright (c) 2014. The Trustees of Indiana University. * * This version of the code is licensed under the MPL 2.0 Open Source license with additional * healthcare disclaimer. If the user is an entity intending to commercialize any application * that uses this code in a for-profit venture, please contact the copyright holder. */ package com.muzima.view.preferences; import android.content.Intent; import android.os.CountDownTimer; import com.muzima.MuzimaApplication; import com.muzima.service.TimeoutPreferenceService; import com.muzima.service.WizardFinishPreferenceService; import com.muzima.view.login.LoginActivity; public class MuzimaTimer extends CountDownTimer { private MuzimaApplication muzimaApplication; private static MuzimaTimer muzimaTimer; private MuzimaTimer(long millisInFuture, long countDownInterval, MuzimaApplication muzimaApplication) { super(millisInFuture, countDownInterval); this.muzimaApplication = muzimaApplication; } public static MuzimaTimer getTimer(MuzimaApplication muzimaApplication) { if (muzimaTimer == null) { int timeout = new TimeoutPreferenceService(muzimaApplication).getTimeout(); muzimaTimer = new MuzimaTimer(getTimeInMillis(timeout) , getTimeInMillis(timeout), muzimaApplication); } return muzimaTimer; } public MuzimaTimer resetTimer(int timeOutInMin) { muzimaTimer.cancel(); muzimaTimer = new MuzimaTimer(getTimeInMillis(timeOutInMin), getTimeInMillis(timeOutInMin), muzimaApplication); muzimaTimer.start(); return muzimaTimer; } @Override public void onTick(long l) { } @Override public void onFinish() { logOut(); } public void restart() { this.cancel(); this.start(); } private void logOut() { boolean isRunningInBackground = muzimaApplication.isRunningInBackground(); boolean isWizardComplete = new WizardFinishPreferenceService(muzimaApplication).isWizardFinished(); if (isWizardComplete) { muzimaApplication.logOut(); } if(!isRunningInBackground && isWizardComplete) { launchLoginActivity(); } } private void launchLoginActivity() { Intent intent = new Intent(muzimaApplication, LoginActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(LoginActivity.isFirstLaunch, false); intent.putExtra(LoginActivity.sessionTimeOut, true); muzimaApplication.startActivity(intent); } private static long getTimeInMillis(int timeOutInMin) { return timeOutInMin * 60 * 1000; } }